phys_adiabatic.f90
来自「CCSM Research Tools: Community Atmospher」· F90 代码 · 共 77 行
F90
77 行
#include <misc.h>#include <params.h>subroutine phys_adiabatic (phys_state, phys_tend)!----------------------------------------------------------------------- ! ! Purpose: ! set physics tendencies to zero for adiabatic runs! ! Method: ! ! Author: ! B. A. Boville!----------------------------------------------------------------------- use precision use ppgrid , only: pcols, pver, pverp, begchunk, endchunk use tracers , only: pcnst, pnats use phys_grid , only: get_ncols_p use physics_types, only: physics_state, physics_tend use diagnostics , only: diag_dynvar use geopotential , only: geopotential_t use physconst, only: zvir, rair, gravit!----------------------------------------------------------------------- implicit none!-----------------------------------------------------------------------!! Arguments! type(physics_state), intent(inout), dimension(begchunk:endchunk) :: phys_state type(physics_tend ), intent(out ), dimension(begchunk:endchunk) :: phys_tend!!---------------------------Local workspace-----------------------------! integer :: i,k,lchnk ! indices integer :: ncol ! number of columns real(r8) rpdel(pcols,pver) ! 1./(pintm1(k+1)-pintm1(k))!-----------------------------------------------------------------------!$OMP PARALLEL DO PRIVATE (I, K, LCHNK, NCOL, RPDEL) do lchnk=begchunk,endchunk ncol = get_ncols_p(lchnk)!! Dump dynamics variables to H.T.! do k=1,pver do i=1,ncol rpdel(i,k) = 1./phys_state(lchnk)%pdel(i,k) end do end do call geopotential_t( & phys_state(lchnk)%lnpint , phys_state(lchnk)%lnpmid, phys_state(lchnk)%pint , & phys_state(lchnk)%pmid , phys_state(lchnk)%pdel , rpdel, phys_state(lchnk)%t, & phys_state(lchnk)%q(1,1,1), rair , gravit, zvir , phys_state(lchnk)%zi , & phys_state(lchnk)%zm , ncol ) call diag_dynvar (lchnk, ncol, phys_state(lchnk))!! Set tendencies to 0! do k=1,pver do i=1,ncol phys_tend(lchnk)%dTdt(i,k) = 0. phys_tend(lchnk)%dudt(i,k) = 0. phys_tend(lchnk)%dvdt(i,k) = 0. end do end do do i=1,ncol phys_tend(lchnk)%flx_net(i) = 0. end do end do ! Chunk loop return end subroutine phys_adiabatic
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?