trcmix.f90
来自「CCSM Research Tools: Community Atmospher」· F90 代码 · 共 133 行
F90
133 行
#include <misc.h>#include <params.h>subroutine trcmix(lchnk ,ncol , & pmid ,n2o ,ch4 , & cfc11 , cfc12 )!----------------------------------------------------------------------- ! ! Purpose: ! Specify zonal mean mass mixing ratios of CH4, N2O, CFC11 and! CFC12! ! Method: ! Distributions assume constant mixing ratio in the troposphere! and a decrease of mixing ratio in the stratosphere. Tropopause! defined by ptrop. The scale height of the particular trace gas! depends on latitude. This assumption produces a more realistic! stratospheric distribution of the various trace gases.! ! Author: J. Kiehl! !----------------------------------------------------------------------- use precision use ppgrid use phys_grid, only: get_rlat_all_p use physconst, only: mwdry, mwch4, mwn2o, mwf11, mwf12 use constituents, only: ch4vmr, n2ovmr, f11vmr, f12vmr implicit none!-----------------------------Arguments---------------------------------!! Input! integer, intent(in) :: lchnk ! chunk identifier integer, intent(in) :: ncol ! number of atmospheric columns real(r8), intent(in) :: pmid(pcols,pver) ! model pressures!! Output! real(r8), intent(out) :: n2o(pcols,pver) ! nitrous oxide mass mixing ratio real(r8), intent(out) :: ch4(pcols,pver) ! methane mass mixing ratio real(r8), intent(out) :: cfc11(pcols,pver) ! cfc11 mass mixing ratio real(r8), intent(out) :: cfc12(pcols,pver) ! cfc12 mass mixing ratio!!--------------------------Local Variables------------------------------ real(r8), parameter :: rmwn2o = mwn2o/mwdry ! ratio of molecular weight n2o to dry air real(r8), parameter :: rmwch4 = mwch4/mwdry ! ratio of molecular weight ch4 to dry air real(r8), parameter :: rmwf11 = mwf11/mwdry ! ratio of molecular weight cfc11 to dry air real(r8), parameter :: rmwf12 = mwf12/mwdry ! ratio of molecular weight cfc12 to dry air! integer i ! longitude loop index integer k ! level index! real(r8) clat(pcols) ! latitude in radians for columns real(r8) coslat(pcols) ! cosine of latitude real(r8) dlat ! latitude in degrees real(r8) ptrop ! pressure level of tropopause real(r8) pratio ! pressure divided by ptrop! real(r8) xn2o ! pressure scale height for n2o real(r8) xch4 ! pressure scale height for ch4 real(r8) xcfc11 ! pressure scale height for cfc11 real(r8) xcfc12 ! pressure scale height for cfc12! real(r8) ch40 ! tropospheric mass mixing ratio for ch4 real(r8) n2o0 ! tropospheric mass mixing ratio for n2o real(r8) cfc110 ! tropospheric mass mixing ratio for cfc11 real(r8) cfc120 ! tropospheric mass mixing ratio for cfc12!!-----------------------------------------------------------------------!! get latitudes! call get_rlat_all_p(lchnk, ncol, clat) do i = 1, ncol coslat(i) = cos(clat(i)) end do!! set tropospheric mass mixing ratios! ch40 = rmwch4 * ch4vmr n2o0 = rmwn2o * n2ovmr cfc110 = rmwf11 * f11vmr cfc120 = rmwf12 * f12vmr do i = 1, ncol coslat(i) = cos(clat(i)) end do! do k = 1,pver do i = 1,ncol!! set stratospheric scale height factor for gases dlat = abs(57.2958 * clat(i)) if(dlat.le.45.0) then xn2o = 0.3478 + 0.00116 * dlat xch4 = 0.2353 xcfc11 = 0.7273 + 0.00606 * dlat xcfc12 = 0.4000 + 0.00222 * dlat else xn2o = 0.4000 + 0.013333 * (dlat - 45) xch4 = 0.2353 + 0.0225489 * (dlat - 45) xcfc11 = 1.00 + 0.013333 * (dlat - 45) xcfc12 = 0.50 + 0.024444 * (dlat - 45) end if!! pressure of tropopause ptrop = 250.0e2 - 150.0e2*coslat(i)**2.0!! determine output mass mixing ratios if (pmid(i,k) >= ptrop) then ch4(i,k) = ch40 n2o(i,k) = n2o0 cfc11(i,k) = cfc110 cfc12(i,k) = cfc120 else pratio = pmid(i,k)/ptrop ch4(i,k) = ch40 * (pratio)**xch4 n2o(i,k) = n2o0 * (pratio)**xn2o cfc11(i,k) = cfc110 * (pratio)**xcfc11 cfc12(i,k) = cfc120 * (pratio)**xcfc12 end if end do end do! return!end subroutine trcmix
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?