⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 heryin.f90

📁 CCSM Research Tools: Community Atmosphere Model (CAM)
💻 F90
字号:
#include <misc.h>#include <params.h>subroutine heryin(pf      ,fint    ,fyb     ,fyt     ,y       , &                  dy      ,ydp     ,jdp     ,fdp     ,nlon    )!----------------------------------------------------------------------- ! ! Purpose: ! ! Method: ! For each departure point in the latitude slice to be forecast,! interpolate (using unequally spaced Hermite cubic formulas) the! x interpolants to the y value of the departure point.! ! Author:! Original version:  J. Olson! Standardized:      J. Rosinski, June 1992! Reviewed:          D. Williamson, P. Rasch, August 1992! Reviewed:          D. Williamson, P. Rasch, March 1996!!-----------------------------------------------------------------------!! $Id: heryin.F90,v 1.1 2000/06/02 16:19:42 jet Exp $! $Author: jet $!!-----------------------------------------------------------------------   use precision   use pmgrid!-----------------------------------------------------------------------   implicit none!------------------------------Parameters-------------------------------#include <parslt.h>!------------------------------Arguments--------------------------------!! Input arguments!   integer, intent(in) :: pf                     ! dimension (number of fields)!   real(r8), intent(in) :: fint(plon,plev,ppdy,pf)   ! x-interpolants   real(r8), intent(in) :: fyb (plon,plev,pf)        ! y-derivatives at bottom of interval   real(r8), intent(in) :: fyt (plon,plev,pf)        ! y-derivatives at top    of interval   real(r8), intent(in) :: y   (platd)               ! latitude grid coordinates   real(r8), intent(in) :: dy  (platd)               ! intervals between latitude grid pts.   real(r8), intent(in) :: ydp (plon,plev)           ! lat. coord of departure point.!   integer, intent(in) :: jdp (plon,plev)        ! lat. index of departure point.   integer, intent(in) :: nlon!! Output arguments!   real(r8), intent(out) :: fdp (plon,plev,pf)        ! y-interpolants!!-----------------------------------------------------------------------!!  pf      Number of fields being interpolated.!  fint    (fint(i,k,j,m),j=ppdy/2,ppdy/2 + 1) contains the x!          interpolants at the endpoints of the y-interval that!          contains the departure point for grid point (i,k).  The last!          index of fint allows for interpolation of multiple fields.!          fint is generated by a call to herxin.!  fyb     fyb(i,k,.) is the derivative at the "bottom" of the!          y-interval that contains the departure point of grid!          point (i,k).  fyb is generated by a call to cubydr.!  fyt     fyt(i,k,.) is the derivative at the "top" of the y-interval!          that contains the departure point of grid point (i,k).!          fyt is generated by a call to cubydr.!  y       y-coordinate (latitude) values in the extended array.!  dy      Increment in the y-coordinate value for each interval in the!          extended array.!  ydp     ydp(i,k) is the y-coordinate of the departure point that!          corresponds to global grid point (i,k) in the latitude slice!          being forecasted.!  jdp     jdp(i,k) is the index of the y-interval that contains the!          departure point corresponding to global grid point (i,k) in!          the latitude slice being forecasted.!          Note that!                y(jdp(i,k)) .le. ydp(i,k) .lt. y(jdp(i,k)+1) .!  fdp     Horizontally interpolated field values at the departure point!          for the latitude slice being forecasted.!!---------------------------Local variables-----------------------------!   integer i,k               ! index   integer jb                ! index corresponding to bot of interval   integer jt                ! index corresponding to top of interval   integer m                 ! index!   real(r8) dyj(plon,plev)   ! latitude interval containing dep. pt.   real(r8) yb (plon,plev)   ! |   real(r8) yt (plon,plev)   ! |   real(r8) hb (plon,plev)   ! | -- interpolation coefficients   real(r8) ht (plon,plev)   ! |   real(r8) dhb(plon,plev)   ! |   real(r8) dht(plon,plev)   ! |!!-----------------------------------------------------------------------!   jb = ppdy/2   jt = jb + 1!   do k=1,plev      do i = 1,nlon         dyj(i,k) = dy(jdp(i,k))         yb (i,k) = ( y(jdp(i,k)+1) - ydp(i,k) )/dyj(i,k)         yt (i,k) = 1. - yb(i,k)         hb (i,k) = ( 3.0 - 2.0*yb(i,k) )*yb(i,k)**2         ht (i,k) = ( 3.0 - 2.0*yt(i,k) )*yt(i,k)**2         dhb(i,k) = -dyj(i,k)*( yb(i,k) - 1. )*yb(i,k)**2         dht(i,k) =  dyj(i,k)*( yt(i,k) - 1. )*yt(i,k)**2      end do   end do!! Loop over fields.!   do m = 1,pf      do k=1,plev         do i = 1,nlon            fdp(i,k,m) = fint(i,k,jb,m)*hb(i,k) + fyb(i,k,m)*dhb(i,k) + &               fint(i,k,jt,m)*ht(i,k) + fyt(i,k,m)*dht(i,k)         end do      end do   end do!   returnend subroutine heryin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -