aermix.f90
来自「CCSM Research Tools: Community Atmospher」· F90 代码 · 共 126 行
F90
126 行
#include <misc.h>#include <params.h>subroutine aermix(lchnk, ncol, pint, sulfmix, aermmr, rh)!----------------------------------------------------------------------- ! ! Purpose: ! Set global mean tropospheric aerosol! ! Method: ! Specify aerosol mixing ratio and compute relative humidity for later! adjustment of aerosol optical properties. Aerosol mass mixing ratio! is specified so that the column visible aerosol optical depth is a! specified global number (tauvis). This means that the actual mixing! ratio depends on pressure thickness of the lowest three atmospheric! layers near the surface.!! Optical properties and relative humidity parameterization are from:!! J.T. Kiehl and B.P. Briegleb "The Relative Roles of Sulfate Aerosols! and Greenhouse Gases in Climate Forcing" Science 260 pp311-314! 16 April 1993!! Visible (vis) here means 0.5-0.7 micro-meters! Forward scattering fraction is taken as asymmetry parameter squared! ! Author: J.T. Kiehl! !----------------------------------------------------------------------- use precision use ppgrid!----------------------------------------------------------------------- implicit none!-----------------------------------------------------------------------#include <ptrrgrid.h>!------------------------------Commons----------------------------------#include <crdcon.h>!-----------------------------------------------------------------------#include <comsol.h>!------------------------------Arguments--------------------------------!! Input arguments! integer, intent(in) :: lchnk ! chunk identifier integer, intent(in) :: ncol ! number of atmospheric columns real(r8), intent(in) :: pint(pcols,pverrp) ! Rad level interface press. (dynes/cm2) real(r8), intent(in) :: sulfmix(pcols,pver) ! time interpolated sulfate mass mixing ratio!! Output arguments! real(r8), intent(out) :: aermmr(pcols,pverr) ! Rad level aerosol mass mixing ratio real(r8), intent(out) :: rh(pcols,pverr) ! Rad level relative humidity (fraction)!!---------------------------Local variables-----------------------------! integer i ! Longitude index integer k ! Level index! real(r8) kaervs ! Visible extinction coefficiant of aerosol (m2/g) real(r8) omgvis ! Visible single scattering albedo real(r8) gvis ! Visible scattering asymmetry parameter real(r8) rhcnst ! Constant relative humidity factor!! Relative humidity factor! real(r8) rhfac ! Multiplication factor for kaer real(r8) rhpc ! Level relative humidity in % real(r8) a0 ! Constant in relative humidity mult factor real(r8) a1 ! Constant in relative humidity mult factor real(r8) a2 ! Constant in relative humidity mult factor real(r8) a3 ! Constant in relative humidity mult factor!!--------------------------Data Statements------------------------------! data a0 / -9.2906106183 / data a1 / 0.52570211505 / data a2 / -0.0089285760691 / data a3 / 5.0877212432e-05/! data kaervs / 5.3012 / data omgvis / 0.999999 / data gvis / 0.694889 / data rhcnst / .80 /!!-----------------------------------------------------------------------!! Set relative humidity and factor; then aerosol amount.! do i=1,ncol do k=1,pverr! rh(i,k) = rhcnst!! Compute relative humidity factor for the extinction coefficiant; this! factor accounts for the dependence of size distribution on relative! humidity:! if ( rh(i,k) > .90 ) then rhfac = 2.8 else if (rh(i,k) < .60 ) then rhfac = 1.0 else rhpc = 100. * rh(i,k) rhfac = (a0 + a1*rhpc + a2*rhpc**2 + a3*rhpc**3) endif!! Compute aerosol mass mixing ratio for specified levels (1.e4 factor is! for units conversion of the extinction coefficiant from m2/g to cm2/g)! if ( k >= pverrp-mxaerl ) then aermmr(i,k) = gravit*tauvis / & (1.e4*kaervs*rhfac*(1.-omgvis*gvis*gvis) * & (pint(i,pverrp)-pint(i,pverrp-mxaerl))) + & sulfmix(i,k) else aermmr(i,k) = sulfmix(i,k) endif! enddo enddo! returnend subroutine aermix
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?