GFS Operational Physics Documentation  gsm/branches/DTC/phys-doc-all phys-doc-all R82971

This module contains climatological atmospheric aerosol schemes for radiation computations. More...

Detailed Description

This module contains climatological atmospheric aerosol schemes for radiation computations.

Version
NCEP-Radiation_aerosols v5.2 Jan 2013


This module has three externally callable subroutines:


References:

Collaboration diagram for module_radiation_aerosols:

Data Types

type  module_radiation_aerosols::gocart_index_type
 index for gocart aerosol species to be included in the calculations of aerosol optical properties (ext, ssa, asy) More...
 
type  module_radiation_aerosols::tracer_index_type
 index for gocart aerosols from prognostic tracer fields More...
 

Variables

integer, parameter, public module_radiation_aerosols::nf_aesw = 3
 num of output fields for SW rad
 
integer, parameter, public module_radiation_aerosols::nf_aelw = 3
 num of output fields for LW rad
 
integer, parameter, public module_radiation_aerosols::nlwstr = 1
 starting band number in ir region
 
integer, parameter, public module_radiation_aerosols::nspc = 5
 num of species for output aod (opnl)
 
integer, parameter, public module_radiation_aerosols::nspc1 = NSPC + 1
 total+species
 
real(kind=kind_phys), parameter module_radiation_aerosols::f_zero = 0.0
 
real(kind=kind_phys), parameter module_radiation_aerosols::f_one = 1.0
 
integer, save module_radiation_aerosols::nswbnd = NBDSW
 number of actual bands for sw aerosols; calculated according to laswflg setting
 
integer, save module_radiation_aerosols::nlwbnd = NBDLW
 number of actual bands for lw aerosols; calculated according to lalwflg and lalw1bd settings
 
integer, save module_radiation_aerosols::nswlwbd = NBDSW+NBDLW
 total number of bands for sw+lw aerosols
 
integer, parameter, public module_radiation_aerosols::nwvsol = 151
 num of wvnum regions where solar flux is constant
 
integer, parameter, public module_radiation_aerosols::nwvtot = 57600
 total num of wvnum included
 
integer, parameter, public module_radiation_aerosols::nwvtir = 4000
 total num of wvnum in ir range
 
integer, dimension(nwvsol), save module_radiation_aerosols::nwvns0
 number of wavenumbers in each region where the solar flux is constant
 
real(kind=kind_phys), dimension(nwvsol), save module_radiation_aerosols::s0intv
 solar flux \(w/m^2\) in each wvnumb region where it is constant
 
integer, parameter module_radiation_aerosols::minvyr = 1850
 lower limit (year) data available
 
integer, parameter module_radiation_aerosols::maxvyr = 1999
 upper limit (year) data available
 
integer, dimension(:,:,:), allocatable, save module_radiation_aerosols::ivolae
 monthly, 45-deg lat-zone aerosols data set in subroutine 'aer_init'
 
integer module_radiation_aerosols::kyrstr
 starting year of data in the input file
 
integer module_radiation_aerosols::kyrend
 ending year of data in the input file
 
integer module_radiation_aerosols::kyrsav
 the year of data in use in the input file
 
integer module_radiation_aerosols::kmonsav
 the month of data in use in the input file
 
integer, parameter module_radiation_aerosols::nxc = 5
 num of max componets in a profile
 
integer, parameter module_radiation_aerosols::nae = 7
 num of aerosols profile structures
 
integer, parameter module_radiation_aerosols::ndm = 5
 num of atmos aerosols domains
 
integer, parameter module_radiation_aerosols::imxae = 72
 num of lon-points in glb aeros data set
 
integer, parameter module_radiation_aerosols::jmxae = 37
 num of lat-points in glb aeros data set
 
integer, parameter module_radiation_aerosols::naerbnd =61
 num of bands for clim aer data (opac)
 
integer, parameter module_radiation_aerosols::nrhlev =8
 num of rh levels for rh-dep components
 
integer, parameter module_radiation_aerosols::ncm1 = 6
 num of rh independent aeros species
 
integer, parameter module_radiation_aerosols::ncm2 = 4
 num of rh dependent aeros species
 
integer, parameter module_radiation_aerosols::ncm = NCM1+NCM2
 
real(kind=kind_phys), dimension(nrhlev), save module_radiation_aerosols::rhlev
 predefined relative humidity levels
 
real(kind=kind_phys), dimension(ndm, nae), save module_radiation_aerosols::haer
 scale height of aerosols (km)
 
real(kind=kind_phys), dimension(ndm, nae), save module_radiation_aerosols::prsref
 ref pressure lev (sfc to toa) in mb (100Pa)
 
real(kind=kind_phys), dimension(ndm, nae), save module_radiation_aerosols::sigref
 ref sigma lev (sfc to toa)
 
real(kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::extrhi
 
real(kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::scarhi
 
real(kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::ssarhi
 
real(kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::asyrhi
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::extrhd
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::scarhd
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::ssarhd
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::asyrhd
 
real(kind=kind_phys), dimension(:), allocatable, save module_radiation_aerosols::extstra
 

topospheric aerosol profile distribution

real(kind=kind_phys), dimension(nxc, imxae, jmxae), save module_radiation_aerosols::cmixg
 aeros component mixing ratio
 
real(kind=kind_phys), dimension(2,imxae, jmxae), save module_radiation_aerosols::denng
 aeros number density
 
integer, dimension(nxc, imxae, jmxae), save module_radiation_aerosols::idxcg
 aeros component index
 
integer, dimension( imxae, jmxae), save module_radiation_aerosols::kprfg
 aeros profile index
 

module variables for gocart aerosol optical properties

integer, parameter module_radiation_aerosols::kaerbnd =61
 num of bands for aer data (gocart)
 
integer, parameter module_radiation_aerosols::krhlev =36
 num of rh levels for rh-dep components
 
integer, save module_radiation_aerosols::kcm1 = 0
 num of rh indep aerosols (set in subr set_aerspc)
 
integer, save module_radiation_aerosols::kcm2 = 0
 num of rh dep aerosols (set in subr set_aerspc)
 
integer, save module_radiation_aerosols::kcm
 =KCM1+KCM2 (set in subr set_aerspc)
 
real(kind=kind_phys), dimension(:) module_radiation_aerosols::rhlev_grt
 
real(kind=kind_phys), dimension(krhlev) module_radiation_aerosols::data
 
integer, dimension(:), allocatable module_radiation_aerosols::iendwv_grt
 spectral band structure: ending wavenumber ( \(cm^-1\)) for each band
 

relative humidity independent aerosol optical properties:

species : dust (8 bins)

real(kind=kind_phys), dimension(:,:), allocatable module_radiation_aerosols::rhidext0_grt
 extinction coefficient
 
real(kind=kind_phys), dimension(:,:), allocatable module_radiation_aerosols::rhidssa0_grt
 single scattering albedo
 
real(kind=kind_phys), dimension(:,:), allocatable module_radiation_aerosols::rhidasy0_grt
 asymmetry parameter
 

relative humidity dependent aerosol optical properties:

species : soot, suso, waso, ssam, sscm

real(kind=kind_phys), dimension(:,:,:), allocatable module_radiation_aerosols::rhdpext0_grt
 extinction coefficient
 
real(kind=kind_phys), dimension(:,:,:), allocatable module_radiation_aerosols::rhdpssa0_grt
 single scattering albedo
 
real(kind=kind_phys), dimension(:,:,:), allocatable module_radiation_aerosols::rhdpasy0_grt
 asymmetry parameter
 

relative humidity independent aerosol optical properties

real(kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::extrhi_grt
 extinction coefficient for SW+LW spectral band
 
real(kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::ssarhi_grt
 single scattering albedo for SW+LW spectral band
 
real(kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::asyrhi_grt
 asymmetry parameter for SW+LW spectral band
 

relative humidity dependent aerosol optical properties

real(kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::extrhd_grt
 extinction coefficient for SW+LW spectral band
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::ssarhd_grt
 single scattering albedo for SW+LW band
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::asyrhd_grt
 asymmetry parameter for SW+LW band
 

module variables for gocart aerosol clim data set

integer, parameter module_radiation_aerosols::imxg = 144
 num of lon-points in geos dataset
 
integer, parameter module_radiation_aerosols::jmxg = 91
 num of lat-points in geos dataset
 
integer, parameter module_radiation_aerosols::kmxg = 30
 num of vertical layers in geos dataset
 
integer, save module_radiation_aerosols::nmxg
 to be determined by set_aerspc
 
real(kind=kind_phys), parameter module_radiation_aerosols::dltx = 360.0 / float(IMXG)
 
real(kind=kind_phys), parameter module_radiation_aerosols::dlty = 180.0 / float(JMXG-1)
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::psclmg
 pressure in cb
 
real(kind=kind_phys), dimension(:,:,:,:), allocatable, save module_radiation_aerosols::dmclmg
 aerosol dry mass in g/m3 or aerosol mixing ration in mol/mol or Kg/Kg
 
real(kind=kind_phys), dimension(:), allocatable, save module_radiation_aerosols::geos_rlon
 geos-gocart longitude arrays
 
real(kind=kind_phys), dimension(:), allocatable, save module_radiation_aerosols::geos_rlat
 geos-gocart latitude arrays
 
character *4, save module_radiation_aerosols::gocart_climo = 'xxxx'
 control flag for gocart climo data set: xxxx as default; ver3 for geos3; ver4 for geos4; 0000 for unknown data
 
real(kind=kind_io4), dimension(:), allocatable module_radiation_aerosols::molwgt
 molecular wght of gocart aerosol species
 
logical, save module_radiation_aerosols::lgrtint = .true.
 logical parameter for gocart initialization control
 
logical, save module_radiation_aerosols::lckprnt = .false.
 logical parameter for gocart debug print control
 
real(kind=kind_phys), save module_radiation_aerosols::ctaer = f_zero
 merging coefficients for fcst/clim; determined from fdaer
 
logical, save module_radiation_aerosols::get_fcst = .true.
 option to get fcst gocart aerosol field
 
logical, save module_radiation_aerosols::get_clim = .true.
 option to get clim gocart aerosol field
 
integer, save module_radiation_aerosols::isoot
 index for rh dependent aerosol optical properties (2nd dimension for extrhd_grt, ssarhd_grt, and asyrhd_grt)
 
integer, save module_radiation_aerosols::iwaso
 
integer, save module_radiation_aerosols::isuso
 
integer, save module_radiation_aerosols::issam
 
integer, save module_radiation_aerosols::isscm
 
integer module_radiation_aerosols::gocart_index_type::dust1
 
integer module_radiation_aerosols::gocart_index_type::dust2
 
integer module_radiation_aerosols::gocart_index_type::dust3
 
integer module_radiation_aerosols::gocart_index_type::dust4
 
integer module_radiation_aerosols::gocart_index_type::dust5
 
integer module_radiation_aerosols::gocart_index_type::ssam
 
integer module_radiation_aerosols::gocart_index_type::sscm
 
integer module_radiation_aerosols::gocart_index_type::suso
 
integer module_radiation_aerosols::gocart_index_type::waso_phobic
 
integer module_radiation_aerosols::gocart_index_type::waso_philic
 
integer module_radiation_aerosols::gocart_index_type::soot_phobic
 
integer module_radiation_aerosols::gocart_index_type::soot_philic
 
type(gocart_index_type), save module_radiation_aerosols::dm_indx
 
integer module_radiation_aerosols::tracer_index_type::du001
 
integer module_radiation_aerosols::tracer_index_type::du002
 
integer module_radiation_aerosols::tracer_index_type::du003
 
integer module_radiation_aerosols::tracer_index_type::du004
 
integer module_radiation_aerosols::tracer_index_type::du005
 
integer module_radiation_aerosols::tracer_index_type::ss001
 
integer module_radiation_aerosols::tracer_index_type::ss002
 
integer module_radiation_aerosols::tracer_index_type::ss003
 
integer module_radiation_aerosols::tracer_index_type::ss004
 
integer module_radiation_aerosols::tracer_index_type::ss005
 
integer module_radiation_aerosols::tracer_index_type::so4
 
integer module_radiation_aerosols::tracer_index_type::ocphobic
 
integer module_radiation_aerosols::tracer_index_type::ocphilic
 
integer module_radiation_aerosols::tracer_index_type::bcphobic
 
integer module_radiation_aerosols::tracer_index_type::bcphilic
 
type(tracer_index_type), save module_radiation_aerosols::dmfcs_indx
 
integer, save module_radiation_aerosols::num_gridcomp = 0
 number of aerosol grid components
 
character, dimension(:), allocatable, save module_radiation_aerosols::gridcomp
 aerosol grid components
 
integer, parameter module_radiation_aerosols::max_num_gridcomp = 5
 default full-package setting
 
character *2, dimension(max_num_gridcomp) module_radiation_aerosols::max_gridcomp
 data max_gridcomp /'DU', 'BC', 'OC', 'SU', 'SS'/
 
integer, dimension(ncm) module_radiation_aerosols::idxspc
 index conversion array:data idxspc / 1, 2, 1, 1, 1, 1, 3, 5, 5, 4 /
 
real(kind=kind_phys), parameter module_radiation_aerosols::wvn550 = 1.0e4/0.55
 the wavenumber ( \(cm^-1\)) of wavelength 550nm for diagnostic aod output
 
integer, save module_radiation_aerosols::nv_aod = 1
 the sw spectral band covering wvn550 (comp in aer_init)
 
subroutine, public module_radiation_aerosols::aer_init (NLAY, me)
 The initialization program is to set up necessary parameters and working arrays. More...
 
subroutine wrt_aerlog
 This subroutine writes aerosol parameter configuration to run log file.
 
subroutine set_spectrum
 This subroutine defines the one wavenumber solar fluxes based on toa solar spectral distribution, and define the one wavenumber IR fluxes based on black-body emission distribution at a predefined temperature. More...
 
subroutine set_volcaer
 The initialization program for stratospheric volcanic aerosols.
 
subroutine module_radiation_aerosols::clim_aerinit (solfwv, eirfwv, me )
 This subroutine is the opac-climatology aerosol initialization program to set up necessary parameters and working arrays. More...
 
subroutine set_aercoef
 The initialization program for climatological aerosols. The program reads and maps the pre-tabulated aerosol optical spectral data onto corresponding SW radiation spectral bands. More...
 
subroutine optavg
 This subroutine computes mean aerosols optical properties over each SW radiation spectral band for each of the species components. This program follows GFDL's approach for thick cloud optical property in SW radiation scheme (2000).
 
subroutine, public module_radiation_aerosols::aer_update (iyear, imon, me)
 This subroutine checks and updates time varying climatology aerosol data sets. More...
 
subroutine trop_update
 This subroutine updates the monthly global distribution of aerosol profiles in five degree horizontal resolution.
 
subroutine volc_update
 This subroutine searches historical volcanic data sets to find and read in monthly 45-degree lat-zone band of optical depth.
 
subroutine, public module_radiation_aerosols::setaer (prsi, prsl, prslk, tvly, rhlay, slmsk, tracer, xlon, xlat, IMAX, NLAY, NLP1, lsswr, lslwr, aerosw, aerolw , aerodp )
 This subroutine computes aerosols optical properties. More...
 
subroutine module_radiation_aerosols::aer_property (prsi, prsl, prslk, tvly, rhlay, dz, hz, tracer, alon, alat, slmsk, laersw, laerlw, IMAX, NLAY, NLP1, aerosw, aerolw, aerodp )
 This subroutine maps the 5 degree global climatological aerosol data set onto model grids, and compute aerosol optical properties for SW and LW radiations. More...
 
subroutine radclimaer
 This subroutine computes aerosols optical properties in NSWLWBD bands. there are seven different vertical profile structures. in the troposphere, aerosol distribution at each grid point is composed from up to six components out of ten different substances.
 
subroutine module_radiation_aerosols::gocart_init (NWVTOT, solfwv, soltot, NWVTIR, eirfwv, NBDSW, NLWBND, NSWLWBD, imon, me, raddt, fdaer )
 The initialization program for gocart aerosols. More...
 
subroutine set_aerspc (raddt, fdaer)
 This subroutine determines merging coefficients ctaer; setup aerosol specification.
 
subroutine rd_gocart_luts
 This subroutine reads input gocart aerosol optical data from Mie code calculations.
 
subroutine optavg_grt
 This subroutine computes mean aerosols optical properties over each SW/LW radiation spectral band for each of the species components. This program follows GFDL's approach for thick cloud optical property in SW radiation scheme (2000).
 
subroutine rd_gocart_clim
 This subroutine: More...
 
subroutine module_radiation_aerosols::setgocartaer (alon, alat, prslk, rhlay, dz, hz, NSWLWBD, prsl, tvly, trcly, IMAX, NLAY, NLP1, ivflip, lsswr, lslwr, aerosw, aerolw )
 This subroutine computes SW + LW aerosol optical properties for gocart aerosol species (merged from fcst and clim fields). More...
 
subroutine map_aermr
 This subroutine maps input tracer fields (trcly) to local tracer array (aermr).
 
subroutine aeropt_grt
 This subroutine computes aerosols optical properties in NSWLWBD SW/LW bands. Aerosol distribution at each grid point is composed from up to NMXG aerosol species (from NUM_GRIDCOMP components).
 

Function/Subroutine Documentation

subroutine, public module_radiation_aerosols::aer_init ( integer, intent(in)  NLAY,
integer, intent(in)  me 
)

The initialization program is to set up necessary parameters and working arrays.

Parameters
NLAYnumber of model vertical layers (not used)
meprint message control flag

General Algorithm

  1. Call wrt_aerlog() to write aerosol parameter configuration to output logs.
  2. Call set_spectrum() to set up spectral one wavenumber solar/IR fluxes.
  3. Call clim_aerinit() to invoke tropospheric aerosol initialization.
  4. Call set_volcaer() to invoke stratospheric volcanic aerosol initialization.

Definition at line 687 of file radiation_aerosols.f.

References clim_aerinit(), physparam::iaerflg, physparam::iaermdl, kmonsav, kyrend, kyrsav, kyrstr, physparam::lalw1bd, physparam::lalwflg, physparam::laswflg, physparam::lavoflg, nlwbnd, nswbnd, nswlwbd, set_spectrum(), set_volcaer(), and wrt_aerlog().

Referenced by module_radiation_driver::radinit().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_radiation_aerosols::aer_property ( real (kind=kind_phys), dimension(:,:), intent(in)  prsi,
real (kind=kind_phys), dimension(:,:), intent(in)  prsl,
real (kind=kind_phys), dimension(:,:), intent(in)  prslk,
real (kind=kind_phys), dimension(:,:), intent(in)  tvly,
real (kind=kind_phys), dimension(:,:), intent(in)  rhlay,
real (kind=kind_phys), dimension(:,:), intent(in)  dz,
real (kind=kind_phys), dimension(:,:), intent(in)  hz,
real (kind=kind_phys), dimension(:,:,:), intent(in)  tracer,
real (kind=kind_phys), dimension(:), intent(in)  alon,
real (kind=kind_phys), dimension(:), intent(in)  alat,
real (kind=kind_phys), dimension(:), intent(in)  slmsk,
logical, intent(in)  laersw,
logical, intent(in)  laerlw,
integer, intent(in)  IMAX,
integer, intent(in)  NLAY,
integer, intent(in)  NLP1,
real (kind=kind_phys), dimension(:,:,:,:), intent(out)  aerosw,
real (kind=kind_phys), dimension(:,:,:,:), intent(out)  aerolw,
real (kind=kind_phys), dimension(:,:), intent(out)  aerodp 
)
private

This subroutine maps the 5 degree global climatological aerosol data set onto model grids, and compute aerosol optical properties for SW and LW radiations.

Parameters
prsi(IMAX,NLP1), pressure at interface in mb
prsl(IMAX,NLAY), layer mean pressure(not used)
prslk(IMAX,NLAY), exner function= \((p/p0)^{rocp}\) (not used)
tvly(IMAX,NLAY), layer virtual temperature (not used)
rhlay(IMAX,NLAY), layer mean relative humidity
dz(IMAX,NLAY), layer thickness in m
hz(IMAX,NLP1), level high in m
tracer(IMAX,NLAY,NTRAC), aer tracer concentrations (not used)
alon,alat(IMAX), longitude and latitude of given points in degree
slmsk(IMAX), sea/land mask (sea:0,land:1,sea-ice:2)
laersw,laerlwlogical flag for sw/lw aerosol calculations
IMAXhorizontal dimension of arrays
NLAY,NLP1vertical dimensions of arrays
NSPCnum of species for optional aod output fields
aerosw(IMAX,NLAY,NBDSW,NF_AESW), aeros opt properties for sw
(:,:,:,1): optical depth
(:,:,:,2): single scattering albedo
(:,:,:,3): asymmetry parameter
aerolw(IMAX,NLAY,NBDLW,NF_AELW), aeros opt properties for lw
(:,:,:,1): optical depth
(:,:,:,2): single scattering albedo
(:,:,:,3): asymmetry parameter
aerodp(IMAX,NSPC+1), vertically integrated aer-opt-depth

General Algorithm

  1. Map aerosol data to model grids
    • Map grid in longitude direction, lon from 0 to 355 deg resolution
    • Map grid in latitude direction, lat from 90n to 90s in 5 deg resolution
  2. Determin the type of aerosol profile (kp) and scale hight for domain 1 (h1) to be used at this grid point.
  3. Compute horizontal bi-linear interpolation weights
  4. Do horizontal bi-linear interpolation on aerosol partical density (denn)
  5. Do horizontal bi-linear interpolation on mixing ratios
  6. Prepare to setup domain index array and effective layer thickness, also convert pressure level to sigma level to follow the terrain.
  7. Call radclimaer() to calculate SW/LW aerosol optical properties for the corresponding frequency bands.

Definition at line 2774 of file radiation_aerosols.f.

References cmixg, denng, haer, idxcg, imxae, physparam::ivflip, jmxae, kprfg, nlwbnd, nspc, nswbnd, nv_aod, nxc, prsref, radclimaer(), and sigref.

Referenced by setaer().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine, public module_radiation_aerosols::aer_update ( integer, intent(in)  iyear,
integer, intent(in)  imon,
integer, intent(in)  me 
)

This subroutine checks and updates time varying climatology aerosol data sets.

Parameters
iyear4-digit calender year
imonmonth of the year
meprint message control flag

General Algorithm

  1. Call trop_update() to update monthly tropospheric aerosol data.
  2. Call volc_update() to update yearly stratospheric volcanic aerosol data.

Definition at line 1806 of file radiation_aerosols.f.

References physparam::lalwflg, physparam::laswflg, physparam::lavoflg, trop_update(), and volc_update().

Referenced by module_radiation_driver::radupdate().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_radiation_aerosols::clim_aerinit ( real (kind=kind_phys), dimension(:)  solfwv,
real (kind=kind_phys), dimension(:)  eirfwv,
integer, intent(in)  me 
)
private

This subroutine is the opac-climatology aerosol initialization program to set up necessary parameters and working arrays.

Parameters
solfwv(NWVTOT), solar flux for each individual wavenumber \((w/m^2)\)
eirfwv(NWVTIR), IR flux(273k) for each individual wavenumber \((w/m^2)\)
meprint message control flag

General Algorithm

  • call set_aercoef() to invoke tropospheric aerosol initialization.

Definition at line 1083 of file radiation_aerosols.f.

References set_aercoef().

Referenced by aer_init().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_radiation_aerosols::gocart_init ( integer, intent(in)  NWVTOT,
real (kind=kind_phys), dimension(:), intent(in)  solfwv,
real (kind=kind_phys), intent(in)  soltot,
integer, intent(in)  NWVTIR,
real (kind=kind_phys), dimension(:), intent(in)  eirfwv,
integer, intent(in)  NBDSW,
integer, intent(in)  NLWBND,
integer, intent(in)  NSWLWBD,
integer, intent(in)  imon,
integer, intent(in)  me,
real (kind=kind_phys), intent(in)  raddt,
real (kind=kind_phys), intent(in)  fdaer 
)
private

The initialization program for gocart aerosols.

  • determine weight and index for aerosol composition/luts
  • read in monthly global distribution of gocart aerosols
  • read and map the tabulated aerosol optical spectral data onto corresponding SW/LW radiation spectral bands.
Parameters
NWVTOTtotal num of wave numbers used in sw spectrum
solfwv(NWVTOT), solar flux for each individual wavenumber (w/m2)
soltottotal solar flux for the spectrual range (w/m2)
NWVTIRtotal num of wave numbers used in the ir region
eirfwv(NWVTIR), ir flux(273k) for each individual wavenumber (w/m2)
NBDSWnum of bands calculated for sw aeros opt prop
NLWBNDnum of bands calculated for lw aeros opt prop
NSWLWBDtotal num of bands calc for sw+lw aeros opt prop
imonmonth of the year
meprint message control flag
raddt
fdaer

General Algorithm

Definition at line 3533 of file radiation_aerosols.f.

References extrhd_grt, extrhi_grt, get_clim, iendwv_grt, kaerbnd, krhlev, lckprnt, lgrtint, module_radsw_parameters::nswstr, nv_aod, optavg_grt(), rd_gocart_clim(), rd_gocart_luts(), rhdpasy0_grt, rhdpext0_grt, rhdpssa0_grt, rhidasy0_grt, rhidext0_grt, rhidssa0_grt, and set_aerspc().

Here is the call graph for this function:

subroutine gocart_init::rd_gocart_clim ( )
private

This subroutine:

  • 1. read in aerosol dry mass and surface pressure from GEOS3-GOCART C3.1 2000 monthly dataset or aerosol mixing ratio and surface pressure from GEOS4-GOCART 2000-2007 averaged monthly data set.
  • 2. compute goes lat/lon array (for horizontal mapping)

Definition at line 4543 of file radiation_aerosols.f.

References dmclmg, geos_rlat, geos_rlon, gocart_climo, gridcomp, imxg, physparam::ivflip, jmxg, kmxg, molwgt, nmxg, nswlwbd, num_gridcomp, and psclmg.

Referenced by gocart_init().

Here is the caller graph for this function:

subroutine clim_aerinit::set_aercoef ( )
private

The initialization program for climatological aerosols. The program reads and maps the pre-tabulated aerosol optical spectral data onto corresponding SW radiation spectral bands.

General Algorithm

  1. Reading climatological aerosols optical data from aeros_file, including:
    • ending wave num for 61 aerosol spectral bands
    • atmos scale height for 5 domains, 7 profs
    • reference pressure for 5 domains, 7 profs
    • rh independent ext coef for 61 bands, 6 species
    • rh independent sca coef for 61 bands, 6 species
    • rh independent ssa coef for 61 bands, 6 species
    • rh independent asy coef for 61 bands, 6 species
    • rh dependent ext coef for 61 bands, 8 rh lev, 4 species
    • rh dependent sca coef for 61 bands, 8 rh lev, 4 species
    • rh dependent ssa coef for 61 bands, 8 rh lev, 4 species
    • rh dependent asy coef for 61 bands, 8 rh lev, 4 species
    • stratospheric background aeros for 61 bands
  2. Convert pressure reference level (in mb) to sigma reference level assume an 1000mb reference surface pressure.
  3. Compute solar flux weights and interval indices for mapping spectral bands between SW radiation and aerosol data.
  4. Compute LW flux weights and interval indices for mapping spectral bands between lw radiation and aerosol data.
  5. Call optavg() to compute spectral band mean properties for each species.

Definition at line 1172 of file radiation_aerosols.f.

References physparam::aeros_file, haer, imxae, jmxae, physparam::lalwflg, physparam::laswflg, naerbnd, ncm1, ncm2, nlwbnd, nlwstr, nrhlev, nswbnd, nswlwbd, module_radsw_parameters::nswstr, nv_aod, optavg(), prsref, sigref, and wvn550.

Referenced by clim_aerinit().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine aer_init::set_spectrum ( )
private

This subroutine defines the one wavenumber solar fluxes based on toa solar spectral distribution, and define the one wavenumber IR fluxes based on black-body emission distribution at a predefined temperature.

  • inputs: (module constants)
    • NWVTOT: total num of wave numbers used in sw spectrum
    • NWVTIR: total num of wave numbers used in the ir region
  • outputs: (in-scope variables)
    • solfwv(NWVTOT): solar flux for each individual wavenumber ( \(W/m^2\))
    • eirfwv(NWVTIR): ir flux(273k) for each individual wavenumber ( \(W/m^2\))

Definition at line 933 of file radiation_aerosols.f.

References physcons::con_boltz, physcons::con_c, physcons::con_pi, physcons::con_plnk, physcons::con_t0c, nwvns0, nwvsol, nwvtir, and s0intv.

Referenced by aer_init().

Here is the caller graph for this function:

subroutine, public module_radiation_aerosols::setaer ( real (kind=kind_phys), dimension(:,:), intent(in)  prsi,
real (kind=kind_phys), dimension(:,:), intent(in)  prsl,
real (kind=kind_phys), dimension(:,:), intent(in)  prslk,
real (kind=kind_phys), dimension(:,:), intent(in)  tvly,
real (kind=kind_phys), dimension(:,:), intent(in)  rhlay,
real (kind=kind_phys), dimension(:), intent(in)  slmsk,
real (kind=kind_phys), dimension(:,:,:), intent(in)  tracer,
real (kind=kind_phys), dimension(:), intent(in)  xlon,
real (kind=kind_phys), dimension(:), intent(in)  xlat,
integer, intent(in)  IMAX,
integer, intent(in)  NLAY,
integer, intent(in)  NLP1,
logical, intent(in)  lsswr,
logical, intent(in)  lslwr,
real (kind=kind_phys), dimension(:,:,:,:), intent(out)  aerosw,
real (kind=kind_phys), dimension(:,:,:,:), intent(out)  aerolw,
real (kind=kind_phys), dimension(:,:), intent(out)  aerodp 
)

This subroutine computes aerosols optical properties.

Parameters
prsi(IMAX,NLP1), pressure at interface in mb
prsl(IMAX,NLAY), layer mean pressure in mb
prslk(IMAX,NLAY), exner function = \((p/p0)^{rocp}\)
tvly(IMAX,NLAY), layer virtual temperature in K
rhlay(IMAX,NLAY), layer mean relative humidity
slmsk(IMAX), sea/land mask (sea:0,land:1,sea-ice:2)
tracer(IMAX,NLAY,NTRAC), aerosol tracer concentration
xlon(IMAX), longitude of given points in radiance, ok for both 0->2pi or -pi->+pi ranges
xlat(IMAX), latitude of given points in radiance, default to pi/2 -> -pi/2, otherwise see in-line comment
IMAX1, horizontal dimension of arrays
NLAY,NLP11, vertical dimensions of arrays
lsswr,lslwrlogical flags for sw/lw radiation calls
aerosw(IMAX,NLAY,NBDSW,NF_AESW), aeros opt properties for sw
(:,:,:,1): optical depth
(:,:,:,2): single scattering albedo
(:,:,:,3): asymmetry parameter
aerolw(IMAX,NLAY,NBDLW,NF_AELW), aeros opt properties for lw
(:,:,:,1): optical depth
(:,:,:,2): single scattering albedo
(:,:,:,3): asymmetry parameter
aerodp(IMAX,NSPC1), vertically integrated optical depth

General Algorithm

  1. Convert lat/lon from radiance to degree.
  2. Compute level height and layer thickness.
  3. Calculate SW aerosol optical properties for the corresponding frequency bands:
    • if opac aerosol climatology is used, call aer_property(): this subroutine maps the 5 degree global climatological aerosol data set onto model grids, and compute aerosol optical properties for SW and LW radiations.
    • if gocart aerosol scheme is used, call setgocartaer(): this subroutine computes sw + lw aerosol optical properties for gocart aerosol species (merged from fcst and clim fields).
  4. Compute stratosphere volcanic forcing:
    • select data in 4 lat bands, interpolation at the boundaries
    • Find lower boundary of stratosphere: polar, fixed at 25000pa (250mb); tropic, fixed at 15000pa (150mb); mid-lat, interpolation
    • SW: add volcanic aerosol optical depth to the background value
    • Smoothing profile at boundary if needed
    • LW: add volcanic aerosol optical depth to the background value

Definition at line 2186 of file radiation_aerosols.f.

References aer_property(), physcons::con_g, physparam::iaerflg, physparam::iaermdl, physparam::ivflip, ivolae, kmonsav, kyrsav, physparam::lalwflg, physparam::laswflg, physparam::lavoflg, nf_aelw, nf_aesw, nlwbnd, nspc1, nswlwbd, module_radsw_parameters::nswstr, and setgocartaer().

Referenced by module_radiation_driver::grrad().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_radiation_aerosols::setgocartaer ( real (kind=kind_phys), dimension(:), intent(in)  alon,
real (kind=kind_phys), dimension(:), intent(in)  alat,
real (kind=kind_phys), dimension(:,:), intent(in)  prslk,
real (kind=kind_phys), dimension(:,:), intent(in)  rhlay,
real (kind=kind_phys), dimension(:,:), intent(in)  dz,
real (kind=kind_phys), dimension(:,:), intent(in)  hz,
integer, intent(in)  NSWLWBD,
real (kind=kind_phys), dimension(:,:), intent(in)  prsl,
real (kind=kind_phys), dimension(:,:), intent(in)  tvly,
real (kind=kind_phys), dimension(:,:,:), intent(in)  trcly,
integer, intent(in)  IMAX,
integer, intent(in)  NLAY,
integer, intent(in)  NLP1,
integer, intent(in)  ivflip,
logical, intent(in)  lsswr,
logical, intent(in)  lslwr,
real (kind=kind_phys), dimension(:,:,:,:), intent(out)  aerosw,
real (kind=kind_phys), dimension(:,:,:,:), intent(out)  aerolw 
)
private

This subroutine computes SW + LW aerosol optical properties for gocart aerosol species (merged from fcst and clim fields).

Parameters
alonIMAX, longitude of given points in degree
alatIMAX, latitude of given points in degree
prslk(IMAX,NLAY), pressure in cb
rhlay(IMAX,NLAY), layer mean relative humidity
dz(IMAX,NLAY), layer thickness in m
hz(IMAX,NLP1), level high in m
NSWLWBDtotal number of sw+ir bands for aeros opt prop
prsl(IMAX,NLAY), layer mean pressure in mb
tvly(IMAX,NLAY), layer mean virtual temperature in K
trcly(IMAX,NLAY,NTRAC), layer mean specific tracer in g/g
IMAXhorizontal dimension of arrays
NLAY,NLP1vertical dimensions of arrays
ivflipcontrol flag for direction of vertical index
=0: index from toa to surface
=1: index from surface to toa
lsswr,lslwrlogical flag for sw/lw radiation calls
aerosw(IMAX,NLAY,NBDSW,NF_AESW), aeros opt properties for SW
(:,:,:,1): optical depth
(:,:,:,2): single scattering albedo
(:,:,:,3): asymmetry parameter
aerolw(IMAX,NLAY,NBDLW,NF_AELW), aeros opt properties for LW
(:,:,:,1): optical depth
(:,:,:,2): single scattering albedo
(:,:,:,3): asymmetry parameter

General Algorithm

  1. Call map_aermr() to map input tracer array (trcly) to local tracer array (aermr).
  2. Map geos-gocart climo (dmclmg) to gfs grids (dmclm).
  3. Call aeropt_grt() to alculate sw/lw aerosol optical properties for the corresponding frequency bands.

Definition at line 4898 of file radiation_aerosols.f.

References aeropt_grt(), physcons::con_amd, physcons::con_rd, ctaer, dmclmg, geos_rlat, geos_rlon, get_clim, get_fcst, gocart_climo, imxg, jmxg, kmxg, physparam::lalwflg, physparam::laswflg, map_aermr(), molwgt, nlwbnd, nmxg, and psclmg.

Referenced by setaer().

Here is the call graph for this function:

Here is the caller graph for this function: