Radiation Scheme in CCPP
module_radiation_aerosols Module Reference

This module contains climatological atmospheric aerosol schemes for radiation computations.

Data Types

type  gocart_index_type
 
type  tracer_index_type
 

Functions/Subroutines

subroutine, public aer_init
 The initialization program to set up necessary parameters and working arrays. More...
 
subroutine clim_aerinit
 the opac-climatology aerosol initialization program to set up necessary parameters and working arrays. More...
 
subroutine, public aer_update
 This subroutine checks and updates time varying climatology aerosol data sets. More...
 
subroutine 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. More...
 
subroutine gocart_init
 the initialization program for gocart aerosols More...
 
subroutine setgocartaer
 This subroutine computes SW + LW aerosol optical properties for gocart aerosol species (merged from fcst and clim fields). More...
 
subroutine, public setaer
 This subroutine computes aerosols optical properties. More...
 

Variables

character(40), parameter vtagaer ='NCEP-Radiation_aerosols v5.2 Jan 2013 '
 
integer, parameter, public nf_aesw = 3
 num of output fields for sw rad More...
 
integer, parameter, public nf_aelw = 3
 num of output fields for lw rad More...
 
integer, parameter, public nlwstr = 1
 starting band number in ir region More...
 
integer, parameter, public nspc = 5
 num of species for output aod (opnl) More...
 
integer, parameter, public nspc1 = NSPC + 1
 total+species More...
 
real(kind=kind_phys), parameter f_zero = 0.0
 
real(kind=kind_phys), parameter f_one = 1.0
 
integer, save nswbnd = NBDSW
 
integer, save nlwbnd = NBDLW
 
integer, save nswlwbd = NBDSW+NBDLW
 
integer, parameter, public nwvsol = 151
 num of wvnum regions where solar flux is constant More...
 
integer, parameter, public nwvtot = 57600
 total num of wvnum included More...
 
integer, parameter, public nwvtir = 4000
 total num of wvnum in ir range More...
 
integer, dimension(nwvsol), save nwvns0
 
real(kind=kind_phys), dimension(nwvsol), save s0intv
 
integer, parameter minvyr = 1850
 
integer, parameter maxvyr = 1999
 
integer, dimension(:,:,:), allocatable, save ivolae
 
integer kyrstr
 
integer kyrend
 
integer kyrsav
 
integer kmonsav
 
integer, parameter nxc = 5
 
integer, parameter nae = 7
 
integer, parameter ndm = 5
 
integer, parameter imxae = 72
 
integer, parameter jmxae = 37
 
integer, parameter naerbnd =61
 
integer, parameter nrhlev =8
 
integer, parameter ncm1 = 6
 
integer, parameter ncm2 = 4
 
integer, parameter ncm = NCM1+NCM2
 
real(kind=kind_phys), dimension(nrhlev), save rhlev
 
real(kind=kind_phys), dimension(ndm, nae), save haer
 
real(kind=kind_phys), dimension(ndm, nae), save prsref
 
real(kind=kind_phys), dimension(ndm, nae), save sigref
 
real(kind=kind_phys), dimension(:,:), allocatable, save extrhi
 
real(kind=kind_phys), dimension(:,:), allocatable, save scarhi
 
real(kind=kind_phys), dimension(:,:), allocatable, save ssarhi
 
real(kind=kind_phys), dimension(:,:), allocatable, save asyrhi
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save extrhd
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save scarhd
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save ssarhd
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save asyrhd
 
real(kind=kind_phys), dimension(:), allocatable, save extstra
 
real(kind=kind_phys), dimension(nxc, imxae, jmxae), save cmixg
 
real(kind=kind_phys), dimension(2,imxae, jmxae), save denng
 
integer, dimension(nxc, imxae, jmxae), save idxcg
 
integer, dimension( imxae, jmxae), save kprfg
 
integer, parameter kaerbnd =61
 
integer, parameter krhlev =36
 
integer, save kcm1 = 0
 
integer, save kcm2 = 0
 
integer, save kcm
 
real(kind=kind_phys), dimension(:) rhlev_grt
 
real(kind=kind_phys), dimension(krhlevdata
 
integer, dimension(:), allocatable iendwv_grt
 
real(kind=kind_phys), dimension(:,:), allocatable rhidext0_grt
 
real(kind=kind_phys), dimension(:,:), allocatable rhidssa0_grt
 
real(kind=kind_phys), dimension(:,:), allocatable rhidasy0_grt
 
real(kind=kind_phys), dimension(:,:,:), allocatable rhdpext0_grt
 
real(kind=kind_phys), dimension(:,:,:), allocatable rhdpssa0_grt
 
real(kind=kind_phys), dimension(:,:,:), allocatable rhdpasy0_grt
 
real(kind=kind_phys), dimension(:,:), allocatable, save extrhi_grt
 
real(kind=kind_phys), dimension(:,:), allocatable, save ssarhi_grt
 
real(kind=kind_phys), dimension(:,:), allocatable, save asyrhi_grt
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save extrhd_grt
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save ssarhd_grt
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save asyrhd_grt
 
integer, parameter imxg = 144
 
integer, parameter jmxg = 91
 
integer, parameter kmxg = 30
 
integer, save nmxg
 
real(kind=kind_phys), parameter dltx = 360.0 / float(IMXG)
 
real(kind=kind_phys), parameter dlty = 180.0 / float(JMXG-1)
 
real(kind=kind_phys), dimension(:,:,:), allocatable, save psclmg
 
real(kind=kind_phys), dimension(:,:,:,:), allocatable, save dmclmg
 
real(kind=kind_phys), dimension(:), allocatable, save geos_rlon
 
real(kind=kind_phys), dimension(:), allocatable, save geos_rlat
 
character *4, save gocart_climo = 'xxxx'
 
real(kind=kind_io4), dimension(:), allocatable molwgt
 
logical, save lgrtint = .true.
 
logical, save lckprnt = .false.
 
real(kind=kind_phys), save ctaer = f_zero
 
logical, save get_fcst = .true.
 
logical, save get_clim = .true.
 
integer, save isoot
 
integer, save iwaso
 
integer, save isuso
 
integer, save issam
 
integer, save isscm
 
type(gocart_index_type), save dm_indx
 
type(tracer_index_type), save dmfcs_indx
 
integer, save num_gridcomp = 0
 
character, dimension(:), allocatable, save gridcomp
 
integer, parameter max_num_gridcomp = 5
 
character *2, dimension(max_num_gridcompmax_gridcomp
 
integer, dimension(ncmidxspc
 
real(kind=kind_phys), parameter wvn550 = 1.0e4/0.55
 
integer, save nv_aod = 1
 

Function/Subroutine Documentation

subroutine, public module_radiation_aerosols::aer_init ( )
Parameters
[in]NLAYinteger, number of model vertical layers (not used)
[in]meinteger, print message control flag
[in]NONE

External Module Variables


physparam::iaermdl: tropospheric aerosol model scheme flag. =0 opac-clim; =1 gocart-clim; =2 gocart-prognostic
physparam::lalwflg: logical lw aerosol effect control flag. =t compute lw aerosol optical property
physparam::laswflg: logical sw aerosols effect control flag. =t compute sw aerosol optical property
physparam::lavoflg: logical stratosphere volcanic aerosol control flag. =t include volcanic aerosol effect
physparam::lalw1bd: logical lw aerosol property 1 band vs multi-band control flag. =t use 1 broad band optical property; =f use multi bands optical property

Subprograms Called


- clim_aerinit: This subprogram is the opac-climatology aerosol initialization program to set up necessary parameters and working arrays.
- wrt_aerlog: This subprogram writes aerosol parameter configuration to run log file.
- set_volcaer: This is the initialization program for stratospheric volcanic aerosols.
- set_spectrum: This subprogram 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.
- set_aercoef: This is the initialization program for climatological aerosols. The program reads and maps the pre-tabulated aerosol optical spectral data onto corresponding sw radiation spectral bands.
- optavg: This subprogram 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.

Definition at line 565 of file radiation_aerosols.f.

References clim_aerinit(), physparam::iaerflg, physparam::iaermdl, kmonsav, kyrend, kyrsav, kyrstr, physparam::lalw1bd, physparam::lalwflg, physparam::laswflg, physparam::lavoflg, module_radlw_parameters::nbdlw, module_radsw_parameters::nbdsw, 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 ( )
private

Definition at line 2582 of file radiation_aerosols.f.

References cmixg, denng, f_one, f_zero, haer, idxcg, imxae, physparam::ivflip, jmxae, kprfg, module_radlw_parameters::nbdlw, module_radsw_parameters::nbdsw, 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 ( )
Parameters
[in]iyearinteger, 1, 4-digit calender year
[in]imoninteger, 1, month of the year
[in]meinteger, 1, print message control flag
[out]NONE

External Module Variables


physparam::lalwflg - control flag for tropospheric lw aerosol
physparam::laswflg - control flag for tropospheric sw aerosol
physparam::lavoflg - control flag for stratospheric volcanic aerosol

Subprograms Called


- trop_update: This subprogram updates the monthly global distribution of aerosol profiles in five degree horizontal resolution.
- volc_update: This subprogram searches historical volcanic data sets to find and read in monthly 45-degree lat-zone band data of optical depth

Definition at line 1645 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 ( )
private

Definition at line 943 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 ( )
private
  • 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.

Definition at line 3326 of file radiation_aerosols.f.

References extrhd_grt, extrhi_grt, f_zero, get_clim, iendwv_grt, kaerbnd, krhlev, lckprnt, lgrtint, module_radsw_parameters::nbdsw, nlwbnd, nswlwbd, module_radsw_parameters::nswstr, nv_aod, nwvtir, nwvtot, optavg_grt(), rd_gocart_clim(), rd_gocart_luts(), rhdpasy0_grt, rhdpext0_grt, rhdpssa0_grt, rhidasy0_grt, rhidext0_grt, rhidssa0_grt, rhlev_grt, set_aerspc(), module_radlw_parameters::wvnlw1, and module_radlw_parameters::wvnlw2.

Here is the call graph for this function:

subroutine, public module_radiation_aerosols::setaer ( )
Parameters
[in]prsi(IMAX,NLP1), pressure at interface in mb
[in]prsl(IMAX,NLAY), layer mean pressure in mb
[in]prslk(IMAX,NLAY), exner function = \((p/p0)^{rocp}\)
[in]tvly(IMAX,NLAY), layer virtual temperature in K
[in]rhlay(IMAX,NLAY), layer mean relative humidity
[in]slmsk(IMAX), sea/land mask (sea:0,land:1,sea-ice:2)
[in]tracer(IMAX,NLAY,NTRAC), aerosol tracer concentration
[in]xlon(IMAX), longitude of given points in radiance, ok for both 0->2pi or -pi->+pi ranges
[in]xlat(IMAX), latitude of given points in radiance, default to pi/2 -> -pi/2, otherwise see in-line comment
[in]IMAX1, horizontal dimension of arrays
[in]NLAY,NLP11, vertical dimensions of arrays
[in]lsswr,lslwrlogical flags for sw/lw radiation calls
[out]aerosw(IMAX,NLAY,NBDSW,NF_AESW), aeros opt properties for sw
(:,:,:,1): optical depth
(:,:,:,2): single scattering albedo
(:,:,:,3): asymmetry parameter
[out]aerolw(IMAX,NLAY,NBDLW,NF_AELW), aeros opt properties for lw
(:,:,:,1): optical depth
(:,:,:,2): single scattering albedo
(:,:,:,3): asymmetry parameter
[out]tau_gocart(IMAX,NLAY,MAX_NUM_GRIDCOMP), 550nm aeros opt depth
[out]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 (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 (setgocartaer): this subroutine computes sw + lw aerosol optical properties for gocart aerosol species (merged from fcst and clim fields)
      Todo:
      aer_property, setgocartaer
  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 2016 of file radiation_aerosols.f.

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

Referenced by module_radiation_driver::grrad().

2016 
2017 ! --- inputs:
2018  & ( prsi,prsl,prslk,tvly,rhlay,slmsk,tracer,xlon,xlat, &
2019  & imax,nlay,nlp1, lsswr,lslwr, &
2020 ! --- outputs:
2021  & aerosw,aerolw &
2022  &, aerodp &
2023  & )
2024 
2025 ! ================================================================== !
2026 ! !
2027 ! setaer computes aerosols optical properties !
2028 ! !
2029 ! inputs: size !
2030 ! prsi - pressure at interface mb IMAX*NLP1 !
2031 ! prsl - layer mean pressure mb IMAX*NLAY !
2032 ! prslk - exner function = (p/p0)**rocp IMAX*NLAY !
2033 ! tvly - layer virtual temperature k IMAX*NLAY !
2034 ! rhlay - layer mean relative humidity IMAX*NLAY !
2035 ! slmsk - sea/land mask (sea:0,land:1,sea-ice:2) IMAX !
2036 ! tracer - aerosol tracer concentration IMAX*NLAY*NTRAC !
2037 ! xlon - longitude of given points in radiance IMAX !
2038 ! ok for both 0->2pi or -pi->+pi ranges !
2039 ! xlat - latitude of given points in radiance IMAX !
2040 ! default to pi/2 -> -pi/2, otherwise see in-line comment!
2041 ! IMAX - horizontal dimension of arrays 1 !
2042 ! NLAY,NLP1-vertical dimensions of arrays 1 !
2043 ! lsswr,lslwr !
2044 ! - logical flags for sw/lw radiation calls 1 !
2045 ! !
2046 ! outputs: !
2047 ! aerosw - aeros opt properties for sw IMAX*NLAY*NBDSW*NF_AESW!
2048 ! (:,:,:,1): optical depth !
2049 ! (:,:,:,2): single scattering albedo !
2050 ! (:,:,:,3): asymmetry parameter !
2051 ! aerolw - aeros opt properties for lw IMAX*NLAY*NBDLW*NF_AELW!
2052 ! (:,:,:,1): optical depth !
2053 ! (:,:,:,2): single scattering albedo !
2054 ! (:,:,:,3): asymmetry parameter !
2055 ! tau_gocart - 550nm aeros opt depth IMAX*NLAY*MAX_NUM_GRIDCOMP!
2056 !! aerodp - vertically integrated optical depth IMAX*NSPC1 !
2057 ! !
2058 ! external module variable: (in physparam) !
2059 ! iaerflg - aerosol effect control flag (volc,lw,sw, 3-dig) !
2060 ! laswflg - tropospheric aerosol control flag for sw radiation !
2061 ! =f: no sw aeros calc. =t: do sw aeros calc. !
2062 ! lalwflg - tropospheric aerosol control flag for lw radiation !
2063 ! =f: no lw aeros calc. =t: do lw aeros calc. !
2064 ! lavoflg - control flag for stratospheric vocanic aerosols !
2065 ! =t: add volcanic aerosols to the background aerosols !
2066 ! ivflip - control flag for direction of vertical index !
2067 ! =0: index from toa to surface !
2068 ! =1: index from surface to toa !
2069 ! !
2070 ! internal module variable: (set by subroutine aer_init) !
2071 ! ivolae - stratosphere volcanic aerosol optical depth (fac 1.e4) !
2072 ! 12*4*10 !
2073 ! usage: call setaer !
2074 ! !
2075 ! subprograms called: aer_property !
2076 ! !
2077 ! ================================================================== !
2078 
2079 ! --- inputs:
2080  integer, intent(in) :: imax, nlay, nlp1
2081 
2082  real (kind=kind_phys), dimension(:,:), intent(in) :: prsi, prsl, &
2083  & prslk, tvly, rhlay
2084  real (kind=kind_phys), dimension(:), intent(in) :: xlon, xlat, &
2085  & slmsk
2086  real (kind=kind_phys), dimension(:,:,:),intent(in):: tracer
2087 
2088  logical, intent(in) :: lsswr, lslwr
2089 
2090 
2091 ! --- outputs:
2092  real (kind=kind_phys), dimension(:,:,:,:), intent(out) :: &
2093  & aerosw, aerolw
2094 
2095  real (kind=kind_phys), dimension(:,:) , intent(out) :: aerodp
2096 
2097 ! --- locals:
2098  real (kind=kind_phys), parameter :: psrfh = 5.0 ! ref press (mb) for upper bound
2099 
2100  real (kind=kind_phys), dimension(IMAX) :: alon,alat,volcae,rdelp
2101 ! real (kind=kind_phys), dimension(IMAX) :: sumodp
2102  real (kind=kind_phys) :: prsln(nlp1),hz(imax,nlp1),dz(imax,nlay)
2103  real (kind=kind_phys) :: tmp1, tmp2, psrfl
2104 
2105  integer :: kcutl(imax), kcuth(imax)
2106  integer :: i, i1, j, k, m, mb, kh, kl
2107 
2108  logical :: laddsw=.false., laersw=.false.
2109  logical :: laddlw=.false., laerlw=.false.
2110 
2111 ! --- conversion constants
2112  real (kind=kind_phys), parameter :: rdg = 180.0 / con_pi
2113  real (kind=kind_phys), parameter :: rovg = 0.001 * con_rd / con_g
2114 
2115 !===> ... begin here
2116 
2117  do m = 1, nf_aesw
2118  do j = 1, nbdsw
2119  do k = 1, nlay
2120  do i = 1, imax
2121  aerosw(i,k,j,m) = f_zero
2122  enddo
2123  enddo
2124  enddo
2125  enddo
2126 
2127  do m = 1, nf_aelw
2128  do j = 1, nbdlw
2129  do k = 1, nlay
2130  do i = 1, imax
2131  aerolw(i,k,j,m) = f_zero
2132  enddo
2133  enddo
2134  enddo
2135  enddo
2136 
2137 ! sumodp = f_zero
2138  do i = 1, imax
2139  do k = 1, nspc1
2140  aerodp(i,k) = f_zero
2141  enddo
2142  enddo
2143 
2144 
2145  if ( .not. (lsswr .or. lslwr) ) then
2146  return
2147  endif
2148 
2149  if ( iaerflg <= 0 ) then
2150  return
2151  endif
2152 
2153  laersw = lsswr .and. laswflg
2154  laerlw = lslwr .and. lalwflg
2155 
2157 ! --- ... convert lat/lon from radiance to degree
2158 
2159  do i = 1, imax
2160  alon(i) = xlon(i) * rdg
2161  if (alon(i) < f_zero) alon(i) = alon(i) + 360.0
2162  alat(i) = xlat(i) * rdg ! if xlat in pi/2 -> -pi/2 range
2163 ! alat(i) = 90.0 - xlat(i)*rdg ! if xlat in 0 -> pi range
2164  enddo
2165 
2167 ! --- ... compute level height and layer thickness
2168 
2169  if ( laswflg .or. lalwflg ) then
2170 
2171  lab_do_imax : do i = 1, imax
2172 
2173  lab_if_flip : if (ivflip == 1) then ! input from sfc to toa
2174 
2175  do k = 1, nlay
2176  prsln(k) = log(prsi(i,k))
2177  enddo
2178  prsln(nlp1)= log(prsl(i,nlay))
2179 
2180  do k = nlay, 1, -1
2181  dz(i,k) = rovg * (prsln(k) - prsln(k+1)) * tvly(i,k)
2182  enddo
2183  dz(i,nlay) = 2.0 * dz(i,nlay)
2184 
2185  hz(i,1) = f_zero
2186  do k = 1, nlay
2187  hz(i,k+1) = hz(i,k) + dz(i,k)
2188  enddo
2189 
2190  else lab_if_flip ! input from toa to sfc
2191 
2192  prsln(1) = log(prsl(i,1))
2193  do k = 2, nlp1
2194  prsln(k) = log(prsi(i,k))
2195  enddo
2196 
2197  do k = 1, nlay
2198  dz(i,k) = rovg * (prsln(k+1) - prsln(k)) * tvly(i,k)
2199  enddo
2200  dz(i,1) = 2.0 * dz(i,1)
2201 
2202  hz(i,nlp1) = f_zero
2203  do k = nlay, 1, -1
2204  hz(i,k) = hz(i,k+1) + dz(i,k)
2205  enddo
2206 
2207  endif lab_if_flip
2208 
2209  enddo lab_do_imax
2210 
2217 ! --- ... calculate sw aerosol optical properties for the corresponding
2218 ! frequency bands
2219 
2220 !SARAH
2221 ! if ( iaerflg == 1 ) then ! use opac aerosol climatology
2222  if ( iaermdl == 0 ) then ! use opac aerosol climatology
2223 
2224  call aer_property &
2225 ! --- inputs:
2226  & ( prsi,prsl,prslk,tvly,rhlay,dz,hz,tracer, &
2227  & alon,alat,slmsk, laersw,laerlw, &
2228  & imax,nlay,nlp1, &
2229 ! & IMAX,NLAY,NLP1,NSPC1, &
2230 ! --- outputs:
2231  & aerosw,aerolw,aerodp &
2232  & )
2233 
2234 ! --- check print
2235 ! do m = 1, NBDSW
2236 ! print *,' *** CHECK AEROSOLS PROPERTIES FOR SW BAND =',m, &
2237 ! & ' ***'
2238 ! do k = 1, 10
2239 ! print *,' LEVEL :',k
2240 ! print *,' TAUAER:',aerosw(:,k,m,1)
2241 ! print *,' SSAAER:',aerosw(:,k,m,2)
2242 ! print *,' ASYAER:',aerosw(:,k,m,3)
2243 ! enddo
2244 ! enddo
2245 ! print *,' *** CHECK AEROSOLS OPTICAL DEPTH FOR 550nm REGION'
2246 ! print *, aerodp(:,1)
2247 ! if ( laod_out ) then
2248 ! do m = 1, NSPC1
2249 ! print *,' *** CHECK AEROSOLS OPTICAL DEPTH FOR SPECIES:', &
2250 ! & m
2251 ! print *, aerodp(:,m)
2252 ! sumodp(:) = sumodp(:) + aerodp(:,m)
2253 ! enddo
2254 
2255 !
2256 ! print *,' *** CHECK AEROSOLS OPTICAL DEPTH FOR ALL SPECIES:'
2257 ! print *, sumodp(:)
2258 ! endif
2259 ! do m = 1, NBDLW
2260 ! print *,' *** CHECK AEROSOLS PROPERTIES FOR LW BAND =',m, &
2261 ! & ' ***'
2262 ! do k = 1, 10
2263 ! print *,' LEVEL :',k
2264 ! print *,' TAUAER:',aerolw(:,k,m,1)
2265 ! print *,' SSAAER:',aerolw(:,k,m,2)
2266 ! print *,' ASYAER:',aerolw(:,k,m,3)
2267 ! enddo
2268 ! enddo
2269 ! SARAH
2270 ! elseif ( iaerflg == 2 ) then ! use gocart aerosol scheme
2271  elseif ( iaermdl == 1 ) then ! use gocart aerosol scheme
2272 
2273  call setgocartaer &
2274 
2275 ! --- inputs:
2276  & ( alon,alat,prslk,rhlay,dz,hz,nswlwbd, &
2277  & prsl,tvly,tracer, &
2278  & imax,nlay,nlp1, ivflip, lsswr,lslwr, &
2279 ! --- outputs:
2280  & aerosw,aerolw &
2281  & )
2282 
2283  endif ! end if_iaerflg_block
2284 
2285  endif ! end if_laswflg_or_lalwflg_block
2286 
2293 ! --- ... stratosphere volcanic forcing
2294 
2295  if ( lavoflg ) then
2296 
2297  if ( iaerflg == 100 ) then
2298  laddsw = lsswr
2299  laddlw = lslwr
2300  else
2301  laddsw = lsswr .and. laswflg
2302  laddlw = lslwr .and. lalwflg
2303  endif
2304 
2305  i1 = mod(kyrsav, 10) + 1
2306 
2307 ! --- select data in 4 lat bands, interpolation at the boundaires
2308 
2309  do i = 1, imax
2310  if ( alat(i) > 46.0 ) then
2311  volcae(i) = 1.0e-4 * ivolae(kmonsav,1,i1)
2312  else if ( alat(i) > 44.0 ) then
2313  volcae(i) = 5.0e-5 &
2314  & * (ivolae(kmonsav,1,i1) + ivolae(kmonsav,2,i1))
2315  else if ( alat(i) > 1.0 ) then
2316  volcae(i) = 1.0e-4 * ivolae(kmonsav,2,i1)
2317  else if ( alat(i) > -1.0 ) then
2318  volcae(i) = 5.0e-5 &
2319  & * (ivolae(kmonsav,2,i1) + ivolae(kmonsav,3,i1))
2320  else if ( alat(i) >-44.0 ) then
2321  volcae(i) = 1.0e-4 * ivolae(kmonsav,3,i1)
2322  else if ( alat(i) >-46.0 ) then
2323  volcae(i) = 5.0e-5 &
2324  & * (ivolae(kmonsav,3,i1) + ivolae(kmonsav,4,i1))
2325  else
2326  volcae(i) = 1.0e-4 * ivolae(kmonsav,4,i1)
2327  endif
2328  enddo
2329 
2330  if ( ivflip == 0 ) then ! input data from toa to sfc
2331 
2332 
2333 ! --- find lower boundary of stratosphere
2334 
2335  do i = 1, imax
2336 
2337  tmp1 = abs( alat(i) )
2338  if ( tmp1 > 70.0 ) then ! polar, fixed at 25000pa (250mb)
2339  psrfl = 250.0
2340  elseif ( tmp1 < 20.0 ) then ! tropic, fixed at 15000pa (150mb)
2341  psrfl = 150.0
2342  else ! mid-lat, interpolation
2343  psrfl = 110.0 + 2.0*tmp1
2344  endif
2345 
2346  kcuth(i) = nlay - 1
2347  kcutl(i) = 2
2348  rdelp(i) = f_one / prsi(i,2)
2349 
2350  lab_do_kcuth0 : do k = 2, nlay-2
2351  if ( prsi(i,k) >= psrfh ) then
2352  kcuth(i) = k - 1
2353  exit lab_do_kcuth0
2354  endif
2355  enddo lab_do_kcuth0
2356 
2357  lab_do_kcutl0 : do k = 2, nlay-2
2358  if ( prsi(i,k) >= psrfl ) then
2359  kcutl(i) = k - 1
2360  rdelp(i) = f_one / (prsi(i,k) - prsi(i,kcuth(i)))
2361  exit lab_do_kcutl0
2362  endif
2363  enddo lab_do_kcutl0
2364  enddo
2365 
2366 
2367 ! --- sw: add volcanic aerosol optical depth to the background value
2368 
2369  if ( laddsw ) then
2370  do m = 1, nbdsw
2371  mb = nswstr + m - 1
2372 
2373  if ( wvnsw1(mb) > 20000 ) then ! range of wvlth < 0.5mu
2374  tmp2 = 0.74
2375  elseif ( wvnsw2(mb) < 20000 ) then ! range of wvlth > 0.5mu
2376  tmp2 = 1.14
2377  else ! range of wvlth in btwn
2378  tmp2 = 0.94
2379  endif
2380  tmp1 = (0.275e-4 * (wvnsw2(mb)+wvnsw1(mb))) ** tmp2
2381 
2382  do i = 1, imax
2383  kh = kcuth(i)
2384  kl = kcutl(i)
2385  do k = kh, kl
2386  tmp2 = tmp1 * ((prsi(i,k+1) - prsi(i,k)) * rdelp(i))
2387  aerosw(i,k,m,1) = aerosw(i,k,m,1) + tmp2*volcae(i)
2388  enddo
2389 
2390 ! --- smoothing profile at boundary if needed
2391 
2392  if ( aerosw(i,kl,m,1) > 10.*aerosw(i,kl+1,m,1) ) then
2393  tmp2 = aerosw(i,kl,m,1) + aerosw(i,kl+1,m,1)
2394  aerosw(i,kl ,m,1) = 0.8 * tmp2
2395  aerosw(i,kl+1,m,1) = 0.2 * tmp2
2396  endif
2397  enddo ! end do_i_block
2398  enddo ! end do_m_block
2399 
2400 ! --- check print
2401 ! do i = 1, IMAX
2402 ! print *,' LEV PRESS TAU FOR PROFILE:',i, &
2403 ! & ' KCUTH, KCUTL =',kcuth(i),kcutl(i)
2404 ! kh = kcuth(i) - 1
2405 ! kl = kcutl(i) + 10
2406 ! do k = kh, kl
2407 ! write(6,71) k, prsl(i,k), aerosw(i,k,1,1)
2408 ! 71 format(i3,2e11.4)
2409 ! enddo
2410 ! enddo
2411 
2412  endif ! end if_laddsw_block
2413 
2414 ! --- lw: add volcanic aerosol optical depth to the background value
2415 
2416  if ( laddlw ) then
2417  if ( nlwbnd == 1 ) then
2418 
2419  tmp1 = (0.55 / 11.0) ** 1.2
2420  do i = 1, imax
2421  kh = kcuth(i)
2422  kl = kcutl(i)
2423  do k = kh, kl
2424  tmp2 = tmp1 * ((prsi(i,k+1) - prsi(i,k)) * rdelp(i)) &
2425  & * volcae(i)
2426  do m = 1, nbdlw
2427  aerolw(i,k,m,1) = aerolw(i,k,m,1) + tmp2
2428  enddo
2429  enddo
2430  enddo ! end do_i_block
2431 
2432  else
2433 
2434  do m = 1, nbdlw
2435  tmp1 = (0.275e-4 * (wvnlw2(m) + wvnlw1(m))) ** 1.2
2436 
2437  do i = 1, imax
2438  kh = kcuth(i)
2439  kl = kcutl(i)
2440  do k = kh, kl
2441  tmp2 = tmp1 * ((prsi(i,k+1)-prsi(i,k)) * rdelp(i))
2442  aerolw(i,k,m,1) = aerolw(i,k,m,1) + tmp2*volcae(i)
2443  enddo
2444  enddo ! end do_i_block
2445  enddo ! end do_m_block
2446 
2447  endif ! end if_NLWBND_block
2448  endif ! end if_laddlw_block
2449 
2450  else ! input data from sfc to toa
2451 
2452 ! --- find lower boundary of stratosphere
2453 
2454  do i = 1, imax
2455 
2456  tmp1 = abs( alat(i) )
2457  if ( tmp1 > 70.0 ) then ! polar, fixed at 25000pa (250mb)
2458  psrfl = 250.0
2459  elseif ( tmp1 < 20.0 ) then ! tropic, fixed at 15000pa (150mb)
2460  psrfl = 150.0
2461  else ! mid-lat, interpolation
2462  psrfl = 110.0 + 2.0*tmp1
2463  endif
2464 
2465  kcuth(i) = 2
2466  kcutl(i) = nlay - 1
2467  rdelp(i) = f_one / prsi(i,nlay-1)
2468 
2469  lab_do_kcuth1 : do k = nlay-1, 2, -1
2470  if ( prsi(i,k) >= psrfh ) then
2471  kcuth(i) = k
2472  exit lab_do_kcuth1
2473  endif
2474  enddo lab_do_kcuth1
2475 
2476  lab_do_kcutl1 : do k = nlay, 2, -1
2477  if ( prsi(i,k) >= psrfl ) then
2478  kcutl(i) = k
2479  rdelp(i) = f_one / (prsi(i,k) - prsi(i,kcuth(i)+1))
2480  exit lab_do_kcutl1
2481  endif
2482  enddo lab_do_kcutl1
2483  enddo
2484 
2485 ! --- sw: add volcanic aerosol optical depth to the background value
2486 
2487  if ( laddsw ) then
2488  do m = 1, nbdsw
2489  mb = nswstr + m - 1
2490 
2491  if ( wvnsw1(mb) > 20000 ) then ! range of wvlth < 0.5mu
2492  tmp2 = 0.74
2493  elseif ( wvnsw2(mb) < 20000 ) then ! range of wvlth > 0.5mu
2494  tmp2 = 1.14
2495  else ! range of wvlth in btwn
2496  tmp2 = 0.94
2497  endif
2498  tmp1 = (0.275e-4 * (wvnsw2(mb)+wvnsw1(mb))) ** tmp2
2499 
2500  do i = 1, imax
2501  kh = kcuth(i)
2502  kl = kcutl(i)
2503  do k = kl, kh
2504  tmp2 = tmp1 * ((prsi(i,k) - prsi(i,k+1)) * rdelp(i))
2505  aerosw(i,k,m,1) = aerosw(i,k,m,1) + tmp2*volcae(i)
2506  enddo
2507 
2508 ! --- smoothing profile at boundary if needed
2509 
2510  if ( aerosw(i,kl,m,1) > 10.*aerosw(i,kl-1,m,1) ) then
2511  tmp2 = aerosw(i,kl,m,1) + aerosw(i,kl-1,m,1)
2512  aerosw(i,kl ,m,1) = 0.8 * tmp2
2513  aerosw(i,kl-1,m,1) = 0.2 * tmp2
2514  endif
2515  enddo ! end do_i_block
2516  enddo ! end do_m_block
2517 
2518 ! --- check print
2519 ! do i = 1, IMAX
2520 ! print *,' LEV PRESS TAU FOR PROFILE:',i, &
2521 ! & ' KCUTH, KCUTL =',kcuth(i),kcutl(i)
2522 ! kh = kcuth(i) + 1
2523 ! kl = kcutl(i) - 10
2524 ! do k = kh, kl, -1
2525 ! write(6,71) NLP1-k,prsl(i,k),aerosw(i,k,1,1)
2526 ! enddo
2527 ! enddo
2528 
2529  endif ! end if_laddsw_block
2530 
2531 ! --- lw: add volcanic aerosol optical depth to the background value
2532 
2533  if ( laddlw ) then
2534  if ( nlwbnd == 1 ) then
2535 
2536  tmp1 = (0.55 / 11.0) ** 1.2
2537  do i = 1, imax
2538  kh = kcuth(i)
2539  kl = kcutl(i)
2540  do k = kl, kh
2541  tmp2 = tmp1 * ((prsi(i,k) - prsi(i,k+1)) * rdelp(i)) &
2542  & * volcae(i)
2543  do m = 1, nbdlw
2544  aerolw(i,k,m,1) = aerolw(i,k,m,1) + tmp2
2545  enddo
2546  enddo
2547  enddo ! end do_i_block
2548 
2549  else
2550 
2551  do m = 1, nbdlw
2552  tmp1 = (0.275e-4 * (wvnlw2(m) + wvnlw1(m))) ** 1.2
2553 
2554  do i = 1, imax
2555  kh = kcuth(i)
2556  kl = kcutl(i)
2557  do k = kl, kh
2558  tmp2 = tmp1 * ((prsi(i,k)-prsi(i,k+1)) * rdelp(i))
2559  aerolw(i,k,m,1) = aerolw(i,k,m,1) + tmp2*volcae(i)
2560  enddo
2561  enddo ! end do_i_block
2562  enddo ! end do_m_block
2563 
2564  endif ! end if_NLWBND_block
2565  endif ! end if_laddlw_block
2566 
2567  endif ! end if_ivflip_block
2568 
2569  endif ! end if_lavoflg_block
2570 !
2571  return
2572 !...................................

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_radiation_aerosols::setgocartaer ( )
private

Variable Documentation

real (kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::asyrhd
private

Definition at line 299 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

real (kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::asyrhd_grt
private

Definition at line 385 of file radiation_aerosols.f.

Referenced by aeropt_grt(), and optavg_grt().

real (kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::asyrhi
private

Definition at line 297 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

real (kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::asyrhi_grt
private

Definition at line 383 of file radiation_aerosols.f.

Referenced by aeropt_grt(), and optavg_grt().

real (kind=kind_phys), dimension(nxc,imxae,jmxae), save module_radiation_aerosols::cmixg
private

Definition at line 311 of file radiation_aerosols.f.

Referenced by aer_property(), and trop_update().

311  real (kind=kind_phys), dimension(NXC,IMXAE,JMXAE), save :: cmixg
real (kind=kind_phys), save module_radiation_aerosols::ctaer = f_zero
private

Definition at line 450 of file radiation_aerosols.f.

Referenced by set_aerspc(), and setgocartaer().

450  real (kind=kind_phys), save :: ctaer = f_zero ! user specified wgt
real (kind=kind_phys), dimension(krhlev) module_radiation_aerosols::data
private

Definition at line 331 of file radiation_aerosols.f.

real (kind=kind_phys), dimension( 2 ,imxae,jmxae), save module_radiation_aerosols::denng
private

Definition at line 312 of file radiation_aerosols.f.

Referenced by aer_property(), and trop_update().

312  real (kind=kind_phys), dimension( 2 ,IMXAE,JMXAE), save :: denng
real (kind=kind_phys), parameter module_radiation_aerosols::dltx = 360.0 / float(IMXG)
private

Definition at line 410 of file radiation_aerosols.f.

Referenced by rd_gocart_clim().

410  real (kind=kind_phys), parameter :: dltx = 360.0 / float(imxg)
real (kind=kind_phys), parameter module_radiation_aerosols::dlty = 180.0 / float(JMXG-1)
private

Definition at line 411 of file radiation_aerosols.f.

Referenced by rd_gocart_clim().

411  real (kind=kind_phys), parameter :: dlty = 180.0 / float(jmxg-1)
type (gocart_index_type), save module_radiation_aerosols::dm_indx
private

Definition at line 491 of file radiation_aerosols.f.

Referenced by aeropt_grt(), map_aermr(), rd_gocart_clim(), and set_aerspc().

491  type(gocart_index_type), save :: dm_indx
real (kind=kind_phys), dimension(:,:,:,:), allocatable, save module_radiation_aerosols::dmclmg
private

Definition at line 419 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), and setgocartaer().

type (tracer_index_type), save module_radiation_aerosols::dmfcs_indx
private

Definition at line 501 of file radiation_aerosols.f.

Referenced by map_aermr(), and set_aerspc().

501  type(tracer_index_type), save :: dmfcs_indx
real (kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::extrhd
private

Definition at line 299 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

299  real (kind=kind_phys), allocatable, save, dimension(:,:,:) :: &
300  & extrhd, scarhd, ssarhd, asyrhd
real (kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::extrhd_grt
private

Definition at line 385 of file radiation_aerosols.f.

Referenced by aeropt_grt(), gocart_init(), and optavg_grt().

385  real (kind=kind_phys), allocatable, save, dimension(:,:,:) :: &
386  & extrhd_grt, ssarhd_grt, asyrhd_grt
real (kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::extrhi
private

Definition at line 297 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

297  real (kind=kind_phys), allocatable, save, dimension(:,:) :: &
298  & extrhi, scarhi, ssarhi, asyrhi
real (kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::extrhi_grt
private

Definition at line 383 of file radiation_aerosols.f.

Referenced by aeropt_grt(), gocart_init(), and optavg_grt().

383  real (kind=kind_phys), allocatable, save, dimension(:,:) :: &
384  & extrhi_grt, ssarhi_grt, asyrhi_grt
real (kind=kind_phys), dimension(:), allocatable, save module_radiation_aerosols::extstra
private

Definition at line 301 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

301  real (kind=kind_phys), allocatable, save, dimension(:) :: &
302  & extstra
real (kind=kind_phys), parameter module_radiation_aerosols::f_one = 1.0
private

Definition at line 156 of file radiation_aerosols.f.

Referenced by aer_property(), aeropt_grt(), optavg(), optavg_grt(), radclimaer(), set_aerspc(), setaer(), setgocartaer(), and trop_update().

156  real (kind=kind_phys), parameter :: f_one = 1.0
real (kind=kind_phys), parameter module_radiation_aerosols::f_zero = 0.0
private

Definition at line 155 of file radiation_aerosols.f.

Referenced by aer_property(), aeropt_grt(), gocart_init(), map_aermr(), optavg(), optavg_grt(), radclimaer(), rd_gocart_clim(), set_aercoef(), set_aerspc(), setaer(), setgocartaer(), and trop_update().

155  real (kind=kind_phys), parameter :: f_zero = 0.0
real (kind=kind_phys), dimension(:), allocatable, save module_radiation_aerosols::geos_rlat
private

Definition at line 423 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), and setgocartaer().

real (kind=kind_phys), dimension(:), allocatable, save module_radiation_aerosols::geos_rlon
private

Definition at line 423 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), and setgocartaer().

423  real (kind=kind_phys), allocatable, save, dimension(:) :: &
424  & geos_rlon, geos_rlat
logical, save module_radiation_aerosols::get_clim = .true.
private

Definition at line 454 of file radiation_aerosols.f.

Referenced by gocart_init(), set_aerspc(), and setgocartaer().

454  logical, save :: get_clim = .true. ! option to get clim field
logical, save module_radiation_aerosols::get_fcst = .true.
private

Definition at line 453 of file radiation_aerosols.f.

Referenced by set_aerspc(), and setgocartaer().

453  logical, save :: get_fcst = .true. ! option to get fcst field
character*4, save module_radiation_aerosols::gocart_climo = 'xxxx'
private

Definition at line 428 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), and setgocartaer().

428  character*4, save :: gocart_climo = 'xxxx'
character, dimension(:), allocatable, save module_radiation_aerosols::gridcomp
private

Definition at line 505 of file radiation_aerosols.f.

Referenced by aeropt_grt(), rd_gocart_clim(), and set_aerspc().

505  character, allocatable , save :: gridcomp(:)*2 ! aerosol grid components
real (kind=kind_phys), dimension(ndm,nae), save module_radiation_aerosols::haer
private

Definition at line 274 of file radiation_aerosols.f.

Referenced by aer_property(), and set_aercoef().

274  real (kind=kind_phys), save, dimension(NDM,NAE) :: haer, prsref, &
275  & sigref
integer, dimension(nxc,imxae,jmxae), save module_radiation_aerosols::idxcg
private

Definition at line 313 of file radiation_aerosols.f.

Referenced by aer_property(), and trop_update().

313  integer, dimension(NXC,IMXAE,JMXAE), save :: idxcg
integer, dimension(ncm) module_radiation_aerosols::idxspc
private

Definition at line 524 of file radiation_aerosols.f.

Referenced by radclimaer().

524  integer, dimension(NCM) :: idxspc
integer, dimension(:), allocatable module_radiation_aerosols::iendwv_grt
private

Definition at line 368 of file radiation_aerosols.f.

Referenced by gocart_init(), and rd_gocart_luts().

368  integer, allocatable, dimension(:) :: iendwv_grt
integer, parameter module_radiation_aerosols::imxae = 72
private

Definition at line 256 of file radiation_aerosols.f.

Referenced by aer_property(), set_aercoef(), and trop_update().

256  integer, parameter :: imxae = 72 ! num of lon-points in glb aeros data set
integer, parameter module_radiation_aerosols::imxg = 144
private

Definition at line 404 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), and setgocartaer().

404  integer, parameter :: imxg = 144 ! num of lon-points in geos dataset
integer, save module_radiation_aerosols::isoot
private

Definition at line 476 of file radiation_aerosols.f.

Referenced by aeropt_grt(), rd_gocart_luts(), and set_aerspc().

476  integer, save :: isoot, iwaso, isuso, issam, isscm
integer, save module_radiation_aerosols::issam
private

Definition at line 476 of file radiation_aerosols.f.

Referenced by aeropt_grt(), rd_gocart_luts(), and set_aerspc().

integer, save module_radiation_aerosols::isscm
private

Definition at line 476 of file radiation_aerosols.f.

Referenced by rd_gocart_luts(), and set_aerspc().

integer, save module_radiation_aerosols::isuso
private

Definition at line 476 of file radiation_aerosols.f.

Referenced by aeropt_grt(), rd_gocart_luts(), and set_aerspc().

integer, dimension(:,:,:), allocatable, save module_radiation_aerosols::ivolae
private

Definition at line 242 of file radiation_aerosols.f.

Referenced by set_volcaer(), setaer(), and volc_update().

242  integer, allocatable, save :: ivolae(:,:,:)
integer, save module_radiation_aerosols::iwaso
private

Definition at line 476 of file radiation_aerosols.f.

Referenced by aeropt_grt(), rd_gocart_luts(), and set_aerspc().

integer, parameter module_radiation_aerosols::jmxae = 37
private

Definition at line 257 of file radiation_aerosols.f.

Referenced by aer_property(), set_aercoef(), and trop_update().

257  integer, parameter :: jmxae = 37 ! num of lat-points in glb aeros data set
integer, parameter module_radiation_aerosols::jmxg = 91
private

Definition at line 405 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), and setgocartaer().

405  integer, parameter :: jmxg = 91 ! num of lat-points in geos dataset
integer, parameter module_radiation_aerosols::kaerbnd =61
private

Definition at line 322 of file radiation_aerosols.f.

Referenced by gocart_init(), and rd_gocart_luts().

322  integer, parameter :: kaerbnd=61 ! num of bands for aer data (gocart)
integer, save module_radiation_aerosols::kcm
private

Definition at line 329 of file radiation_aerosols.f.

Referenced by set_aerspc().

329  integer, save :: kcm ! =KCM1+KCM2 (set in subr set_aerspc)
integer, save module_radiation_aerosols::kcm1 = 0
private

Definition at line 327 of file radiation_aerosols.f.

Referenced by aeropt_grt(), optavg_grt(), rd_gocart_luts(), and set_aerspc().

327  integer, save :: kcm1 = 0 ! num of rh indep aerosols (set in subr set_aerspc)
integer, save module_radiation_aerosols::kcm2 = 0
private

Definition at line 328 of file radiation_aerosols.f.

Referenced by optavg_grt(), rd_gocart_luts(), and set_aerspc().

328  integer, save :: kcm2 = 0 ! num of rh dep aerosols (set in subr set_aerspc)
integer module_radiation_aerosols::kmonsav
private

Definition at line 245 of file radiation_aerosols.f.

Referenced by aer_init(), setaer(), and volc_update().

integer, parameter module_radiation_aerosols::kmxg = 30
private

Definition at line 406 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), and setgocartaer().

406  integer, parameter :: kmxg = 30 ! num of vertical layers in geos dataset
integer, dimension( imxae,jmxae), save module_radiation_aerosols::kprfg
private

Definition at line 314 of file radiation_aerosols.f.

Referenced by aer_property(), and trop_update().

314  integer, dimension( IMXAE,JMXAE), save :: kprfg
integer, parameter module_radiation_aerosols::krhlev =36
private

Definition at line 323 of file radiation_aerosols.f.

Referenced by aeropt_grt(), gocart_init(), optavg_grt(), and rd_gocart_luts().

323  integer, parameter :: krhlev =36 ! num of rh levels for rh-dep components
integer module_radiation_aerosols::kyrend
private

Definition at line 245 of file radiation_aerosols.f.

Referenced by aer_init(), and volc_update().

integer module_radiation_aerosols::kyrsav
private

Definition at line 245 of file radiation_aerosols.f.

Referenced by aer_init(), setaer(), and volc_update().

integer module_radiation_aerosols::kyrstr
private

Definition at line 245 of file radiation_aerosols.f.

Referenced by aer_init(), and volc_update().

245  integer :: kyrstr, kyrend, kyrsav, kmonsav
logical, save module_radiation_aerosols::lckprnt = .false.
private

Definition at line 445 of file radiation_aerosols.f.

Referenced by gocart_init(), rd_gocart_luts(), and set_aerspc().

445  logical, save :: lckprnt = .false.
logical, save module_radiation_aerosols::lgrtint = .true.
private

Definition at line 441 of file radiation_aerosols.f.

Referenced by gocart_init().

441  logical, save :: lgrtint = .true.
character*2, dimension(max_num_gridcomp) module_radiation_aerosols::max_gridcomp
private

Definition at line 509 of file radiation_aerosols.f.

Referenced by aeropt_grt(), and set_aerspc().

509  character*2 :: max_gridcomp(max_num_gridcomp)
integer, parameter module_radiation_aerosols::max_num_gridcomp = 5
private

Definition at line 508 of file radiation_aerosols.f.

Referenced by aeropt_grt(), and set_aerspc().

508  integer, parameter :: max_num_gridcomp = 5
integer, parameter module_radiation_aerosols::maxvyr = 1999
private

Definition at line 239 of file radiation_aerosols.f.

Referenced by volc_update().

239  integer, parameter :: maxvyr = 1999 ! upper lim (year) data available
integer, parameter module_radiation_aerosols::minvyr = 1850
private

Definition at line 238 of file radiation_aerosols.f.

Referenced by volc_update().

238  integer, parameter :: minvyr = 1850 ! lower lim (year) data available
real (kind=kind_io4), dimension(:), allocatable module_radiation_aerosols::molwgt
private

Definition at line 431 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), and setgocartaer().

431  real (kind=kind_io4), allocatable :: molwgt(:)
integer, parameter module_radiation_aerosols::nae = 7
private

Definition at line 254 of file radiation_aerosols.f.

254  integer, parameter :: nae = 7 ! num of aerosols profile structures
integer, parameter module_radiation_aerosols::naerbnd =61
private

Definition at line 258 of file radiation_aerosols.f.

Referenced by set_aercoef().

258  integer, parameter :: naerbnd=61 ! num of bands for clim aer data (opac)
integer, parameter module_radiation_aerosols::ncm = NCM1+NCM2
private

Definition at line 262 of file radiation_aerosols.f.

Referenced by radclimaer().

262  integer, parameter :: ncm = ncm1+ncm2
integer, parameter module_radiation_aerosols::ncm1 = 6
private

Definition at line 260 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

260  integer, parameter :: ncm1 = 6 ! num of rh independent aeros species
integer, parameter module_radiation_aerosols::ncm2 = 4
private

Definition at line 261 of file radiation_aerosols.f.

Referenced by optavg(), and set_aercoef().

261  integer, parameter :: ncm2 = 4 ! num of rh dependent aeros species
integer, parameter module_radiation_aerosols::ndm = 5
private

Definition at line 255 of file radiation_aerosols.f.

255  integer, parameter :: ndm = 5 ! num of atmos aerosols domains
integer, parameter, public module_radiation_aerosols::nf_aelw = 3

Definition at line 147 of file radiation_aerosols.f.

Referenced by setaer().

147  integer, parameter, public :: nf_aelw = 3 ! num of output fields for lw rad
integer, parameter, public module_radiation_aerosols::nf_aesw = 3

Definition at line 145 of file radiation_aerosols.f.

Referenced by setaer().

145  integer, parameter, public :: nf_aesw = 3 ! num of output fields for sw rad
integer, save module_radiation_aerosols::nlwbnd = NBDLW
private

Definition at line 161 of file radiation_aerosols.f.

Referenced by aer_init(), aer_property(), gocart_init(), optavg(), set_aercoef(), setaer(), and setgocartaer().

161  integer, save :: nlwbnd = nbdlw ! number of actual bands for lw aerosols
integer, parameter, public module_radiation_aerosols::nlwstr = 1

Definition at line 149 of file radiation_aerosols.f.

Referenced by set_aercoef().

149  integer, parameter, public :: nlwstr = 1 ! starting band number in ir region
integer, save module_radiation_aerosols::nmxg
private

Definition at line 408 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), set_aerspc(), and setgocartaer().

408  integer, save :: nmxg ! to be determined by set_aerspc
integer, parameter module_radiation_aerosols::nrhlev =8
private

Definition at line 259 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

259  integer, parameter :: nrhlev =8 ! num of rh levels for rh-dep components
integer, parameter, public module_radiation_aerosols::nspc = 5

Definition at line 151 of file radiation_aerosols.f.

Referenced by aer_property().

151  integer, parameter, public :: nspc = 5 ! num of species for output aod (opnl)
integer, parameter, public module_radiation_aerosols::nspc1 = NSPC + 1

Definition at line 153 of file radiation_aerosols.f.

Referenced by setaer().

153  integer, parameter, public :: nspc1 = nspc + 1 ! total + species
integer, save module_radiation_aerosols::nswbnd = NBDSW
private

Definition at line 159 of file radiation_aerosols.f.

Referenced by aer_init(), aer_property(), optavg(), radclimaer(), and set_aercoef().

159  integer, save :: nswbnd = nbdsw ! number of actual bands for sw aerosols
integer, save module_radiation_aerosols::nswlwbd = NBDSW+NBDLW
private

Definition at line 163 of file radiation_aerosols.f.

Referenced by aer_init(), gocart_init(), radclimaer(), set_aercoef(), setaer(), and setgocartaer().

163  integer, save :: nswlwbd = nbdsw+nbdlw ! total number of bands for sw+lw aerosols
integer, save module_radiation_aerosols::num_gridcomp = 0
private

Definition at line 504 of file radiation_aerosols.f.

Referenced by aeropt_grt(), rd_gocart_clim(), and set_aerspc().

504  integer, save :: num_gridcomp = 0 ! number of aerosol grid components
integer, save module_radiation_aerosols::nv_aod = 1
private

Definition at line 531 of file radiation_aerosols.f.

Referenced by aer_property(), aeropt_grt(), gocart_init(), radclimaer(), and set_aercoef().

531  integer, save :: nv_aod = 1
integer, dimension(nwvsol), save module_radiation_aerosols::nwvns0
private

Definition at line 180 of file radiation_aerosols.f.

Referenced by set_spectrum().

180  integer, dimension(NWVSOL), save :: nwvns0
integer, parameter, public module_radiation_aerosols::nwvsol = 151

Definition at line 172 of file radiation_aerosols.f.

Referenced by set_spectrum().

172  integer, parameter, public :: nwvsol = 151 ! num of wvnum regions where solar
integer, parameter, public module_radiation_aerosols::nwvtir = 4000

Definition at line 177 of file radiation_aerosols.f.

Referenced by gocart_init(), and set_spectrum().

177  integer, parameter, public :: nwvtir = 4000 ! total num of wvnum in ir range
integer, parameter, public module_radiation_aerosols::nwvtot = 57600

Definition at line 175 of file radiation_aerosols.f.

Referenced by gocart_init().

175  integer, parameter, public :: nwvtot = 57600 ! total num of wvnum included
integer, parameter module_radiation_aerosols::nxc = 5
private

Definition at line 253 of file radiation_aerosols.f.

Referenced by aer_property(), and trop_update().

253  integer, parameter :: nxc = 5 ! num of max componets in a profile
real (kind=kind_phys), dimension(ndm,nae), save module_radiation_aerosols::prsref
private

Definition at line 274 of file radiation_aerosols.f.

Referenced by aer_property(), and set_aercoef().

real (kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::psclmg
private

Definition at line 419 of file radiation_aerosols.f.

Referenced by rd_gocart_clim(), and setgocartaer().

419  real (kind=kind_phys),allocatable, save:: psclmg(:,:,:), &
420  & dmclmg(:,:,:,:)
real (kind=kind_phys), dimension(:,:,:), allocatable module_radiation_aerosols::rhdpasy0_grt
private

Definition at line 371 of file radiation_aerosols.f.

Referenced by gocart_init(), optavg_grt(), and rd_gocart_luts().

real (kind=kind_phys), dimension(:,:,:), allocatable module_radiation_aerosols::rhdpext0_grt
private

Definition at line 371 of file radiation_aerosols.f.

Referenced by gocart_init(), optavg_grt(), and rd_gocart_luts().

371  real (kind=kind_phys), allocatable, dimension(:,:,:):: &
372  & rhdpext0_grt, rhdpssa0_grt, rhdpasy0_grt
real (kind=kind_phys), dimension(:,:,:), allocatable module_radiation_aerosols::rhdpssa0_grt
private

Definition at line 371 of file radiation_aerosols.f.

Referenced by gocart_init(), optavg_grt(), and rd_gocart_luts().

real (kind=kind_phys), dimension(:,:), allocatable module_radiation_aerosols::rhidasy0_grt
private

Definition at line 369 of file radiation_aerosols.f.

Referenced by gocart_init(), optavg_grt(), and rd_gocart_luts().

real (kind=kind_phys), dimension(:,:), allocatable module_radiation_aerosols::rhidext0_grt
private

Definition at line 369 of file radiation_aerosols.f.

Referenced by gocart_init(), optavg_grt(), and rd_gocart_luts().

369  real (kind=kind_phys), allocatable, dimension(:,:) :: &
370  & rhidext0_grt, rhidssa0_grt, rhidasy0_grt
real (kind=kind_phys), dimension(:,:), allocatable module_radiation_aerosols::rhidssa0_grt
private

Definition at line 369 of file radiation_aerosols.f.

Referenced by gocart_init(), optavg_grt(), and rd_gocart_luts().

real (kind=kind_phys), dimension(nrhlev), save module_radiation_aerosols::rhlev
private

Definition at line 264 of file radiation_aerosols.f.

Referenced by radclimaer().

264  real (kind=kind_phys), dimension(NRHLEV), save :: rhlev
real (kind=kind_phys), dimension (:) module_radiation_aerosols::rhlev_grt
private

Definition at line 331 of file radiation_aerosols.f.

Referenced by aeropt_grt(), and gocart_init().

331  real (kind=kind_phys), dimension(KRHLEV) :: rhlev_grt &
332  data rhlev_grt (:)/ .00, .05, .10, .15, .20, .25, .30, .35, &
333  & .40, .45, .50, .55, .60, .65, .70, .75, .80, .81, .82, &
334  & .83, .84, .85, .86, .87, .88, .89, .90, .91, .92, .93, &
335  & .94, .95, .96, .97, .98, .99 /
real (kind=kind_phys), dimension(nwvsol), save module_radiation_aerosols::s0intv
private

Definition at line 196 of file radiation_aerosols.f.

Referenced by set_spectrum().

196  real (kind=kind_phys), dimension(NWVSOL), save :: s0intv
real (kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::scarhd
private

Definition at line 299 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

real (kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::scarhi
private

Definition at line 297 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

real (kind=kind_phys), dimension(ndm,nae), save module_radiation_aerosols::sigref
private

Definition at line 274 of file radiation_aerosols.f.

Referenced by aer_property(), and set_aercoef().

real (kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::ssarhd
private

Definition at line 299 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

real (kind=kind_phys), dimension(:,:,:), allocatable, save module_radiation_aerosols::ssarhd_grt
private

Definition at line 385 of file radiation_aerosols.f.

Referenced by aeropt_grt(), and optavg_grt().

real (kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::ssarhi
private

Definition at line 297 of file radiation_aerosols.f.

Referenced by optavg(), radclimaer(), and set_aercoef().

real (kind=kind_phys), dimension(:,:), allocatable, save module_radiation_aerosols::ssarhi_grt
private

Definition at line 383 of file radiation_aerosols.f.

Referenced by aeropt_grt(), and optavg_grt().

character(40), parameter module_radiation_aerosols::vtagaer ='NCEP-Radiation_aerosols v5.2 Jan 2013 '
private

Definition at line 138 of file radiation_aerosols.f.

Referenced by wrt_aerlog().

138  character(40), parameter :: &
139  & VTAGAER='NCEP-Radiation_aerosols v5.2 Jan 2013 '
real (kind=kind_phys), parameter module_radiation_aerosols::wvn550 = 1.0e4/0.55
private

Definition at line 530 of file radiation_aerosols.f.

Referenced by set_aercoef().

530  real (kind=kind_phys), parameter :: wvn550 = 1.0e4/0.55