PUBLIC INTERFACE ~ PUBLIC DATA ~ PUBLIC ROUTINES ~ NAMELIST ~ DIAGNOSTIC FIELDS ~ ERROR MESSAGES ~ REFERENCES ~ NOTES

Module sealw99_mod

Contact:  fil
Reviewers:  ds
Change History: WebCVS Log


OVERVIEW

This code provides the core functionality of FMS longwave radiation. It is based on exchange method with prescribed coefficients embedded in the code.



OTHER MODULES USED

            fms_mod
time_manager_mod
constants_mod
rad_utilities_mod
longwave_params_mod
longwave_clouds_mod
longwave_fluxes_mod
longwave_tables_mod
optical_path_mod
gas_tf_mod
lw_gases_stdtf_mod

PUBLIC INTERFACE

sealw99_init:
Subroutine to initialize longwave radiation
sealw99:
Subroutine to calculate longwave radiation flux and heating rate.
sealw99_end:
sealw99_end is the destructor for sealw99_mod.
check_tf_interval:
check_tf_interval verifies that requested tf calculation intervals are compatible with radiation time step
obtain_gas_tfs:
obtain_gas_tfs obtains the transmission functions for the requested gas
sealw99_alloc:
Subroutine to allocate variables needed for longwave diagnostics
cool_to_space_approx:
Subroutine the calculate the cool to space approximation longwave radiation.
cool_space_exact:
cool_to_space calculates the cool-to-space cooling rate for a band n.
e1e290:
Subroutine to compute thermal exchange terms and emissivities used to obtain the cool-to-space heating rates for all pressure layers.
e290:
e290 computes the exchange terms in the flux equation for longwave radiation for all terms except the exchange with the top of the atmosphere.
esfc:
Subroutine to compute thermal layer emissivity using pre computed look up tables
enear:
Subroutine to compute thermal layer emissivity using pre computed look up tables
co2_source_calc:
Subroutine to calculate CO2 source function
nlte:
nlte is the present formulation of an nlte calculation of the source function in the 15 um region (two bands).
co2curt:
co2curt computes Curtis matrix elements derived from co2 transmission functions.
co2_time_vary:
Calculate CO2 absorption coefficient based on its volume mixing ratio using precomputed lbl tables
ch4_time_vary:
Calculate CH4 and N2O absorption coefficients from their mixing ratios using precomputed lbl tables
n2o_time_vary:
Calculate CH4 and N2O absorption coefficients from their mixing ratios using precomputed lbl tables


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. sealw99_init

    call sealw99_init (latb, lonb, pref, Lw_tables)
    DESCRIPTION
    This subroutine initializes longwave radiation. It includes the prescribed gas band coefficients, initializes gas optical depth, longwave tables, and allocate cloud related variables in the longwave spectrum.


    INPUT
    latb    array of model latitudes at cell boundaries [radians]
       [real]
    lonb    array of model longitudes at cell boundaries [radians]
       [real]
    pref    array containing two reference pressure profiles [pascals]
       [real]

    INPUT/OUTPUT
    Lw_tables    lw_tables_type variable containing various longwave table specifiers needed by radiation_diag_mod.
       [lw_table_type]

  2. sealw99

    call sealw99 (is, ie, js, je, Atmos_input, Rad_gases, & Aerosol, Aerosol_props, Cldrad_props, Cld_spec, & Lw_output, Lw_diagnostics)
    DESCRIPTION
    This subroutine calculates longwave radiation flux and heating rate based on the simplified exchange method. It also provides diagnostics for the longwave radiation and cloud.


    INPUT
    is    starting subdomain i indice of data in the physics_window being integrated
       [integer]
    ie    ending subdomain i indice of data in the physics_window being integrated
       [integer]
    js    starting subdomain j indice of data in the physics_window being integrated
       [integer]
    je    ending subdomain j indice of data in the physics_window being integrated
       [integer]
    Atmos_input    atmos_input_type variable containing the atmospheric input fields needed by the radiation package
       [atmos_input_type]
    Rad_gases    radiative_gases_type variable containing the radi- ative gas input fields needed by the radiation package
       [radiative_gases_type]
    Aerosol    Aerosol climatological input data to longwave radiation
       [aerosol_type]
    Cldrad_props    cldrad_properties_type variable containing the cloud radiative property input fields needed by the radiation package
       [cldrad_properties_type]
    Cld_spec    Cloud specification type contains cloud microphysical, geometrical, and distribution properties in a model column.
       [cld_specification_TYPE]

    INPUT/OUTPUT
    Aerosol_props    Aerosol radiative properties
       [aerosol_properties_type]
    Lw_output    lw_output_type variable containing longwave radiation output data
       [lw_output_type]
    Lw_diagnostics    lw_diagnostics_type variable containing diagnostic longwave output used by the radiation diagnostics module
       [lw_diagnostics_type]

  3. sealw99_end

    call sealw99_end 
    
    DESCRIPTION
    sealw99_end is the destructor for sealw99_mod.


  4. check_tf_interval

    call check_tf_interval (gas, gas_tf_calc_intrvl, & calc_gas_tfs_on_first_step, & use_current_gas_for_tf) call sealw99_alloc (ix, jx, kx, Lw_diagnostics)
    DESCRIPTION
    check_tf_interval verifies the following relationships: 1) that the tf calculation interval is no smaller than the radiation time step; 2) that the tf calculation interval is an integral multiple of the radiation time step; 3) that the specification for calculating tfs on the first step of the job is done properly.


    INPUT
    gas    name associated with the gas
    gas_tf_calc_intrvl    time interval between recalculating transmission fumctions [ hours ]
    calc_gas_tfs_on_first_step    flag indicating if tfs are to be calculated only on first step of job
    use_current_gas_for_tf    flag indicating if gas mixing ratio at current time is to be used for calculation of gas tfs

  5. obtain_gas_tfs

    call obtain_gas_tfs (gas, Rad_time, Gas_time, gas_tf_calc_intrvl,& gas_tf_offset, calc_gas_tfs_on_first_step, & gas_for_next_tf_calc, gas_for_last_tf_calc, & do_gas_tf_calc, do_gas_tf_calc_init)
    DESCRIPTION
    obtain_gas_tfs performs the following functions: a) if time variation of the gas has begun at the current time: 1) defines how long the gas has been varying and whether the tfs are due to be recalculated at the current time; 2) if the tfs are not to be always recalculated on the first step: a) if this is a recalculation step; 1) call the routine to calculate the tfs for the input gas; 2) redefine the value of the gas mixing ratio used fro the last tf calculation to be the one just used; 3) set the flag indicating the need to initially calculate the tfs to .false. b) if this is not a recalculation step: 1) if this is the initial step, call the routine to calc- ulate the tfs for the input gas; 2) set the flag indicating the need to initially calculate the tfs to .false. 3) if the tfs are to be always calculated on the first step: a) call the routine to calculate the tfs for the input gas; b) redefine the value of the gas mixing ratio used from the last tf calculation to be the one just used; c) set the flag indicating the need to initially calculate the tfs to .false. b) if time variation of the gas has not begun at the current time: 1) if this is the initial call of the job, call the routine to calculate the tfs for the input gas; 2) set a flag to indicate that the initial call has been made.


    INPUT
    gas    name associated with the gas
    Rad_time    current model time [ time_type ]
    Gas_time    time since time variation of gas began [ time_type ]
    gas_tf_calc_intrvl    time interval between recalculating transmission fumctions [ hours ]
    gas_tf_offset    time difference between current time and the time for which the tfs are calculated
    calc_gas_tfs_on_first_step    flag indicating if tfs are to be calculated only on first step of job

    INPUT/OUTPUT
    gas_for_next_tf_calc    value of gas mixing ratio to be used when tfs are next calculated [ no. / no. ]
    gas_for_last_tf_calc    value of gas mixing ratio to be used when tfs were last calculated [ no. / no. ]
    do_gas_tf_calc    if true, calculate gas tfs when alarm again goes off
    do_gas_tf_calc_init    this variable is true initially to force calculation of the tfs on the first call of the job; it is then set to false

  6. sealw99_alloc

    call sealw99_alloc (ix, jx, kx, Lw_diagnostics)
    DESCRIPTION


    INPUT
    ix    Dimension 1 length of radiation arrays to be allocated
       [integer]
    jx    Dimension 2 length of radiation arrays to be allocated
       [integer]
    kx    Dimension 3 length of radiation arrays to be allocated
       [integer]

    INPUT/OUTPUT
    Lw_diagnostics    lw_diagnostics_type variable containing longwave radiation output data
       [lw_output_type]

  7. cool_to_space_approx

    call cool_to_space_approx ( pflux_in, source, & trans, cld_trans, cld_ind, & Lw_diagnostics, & trans2 )
    DESCRIPTION


    INPUT
    pflux_in    pressure values at flux levels
       [real]
    source    band integrated longwave source function of each model layer
       [real]
    trans    clear sky longwave transmission
       [real]
    cld_trans    cloud transmission
       [real]
    cld_ind    cloud type index
       [real]
    trans2    optional input alternative transmission profile
       [real]

    INPUT/OUTPUT
    Lw_diagnostics    longwave diagnostics output
       [lw_dignostics_type]

  8. cool_space_exact

    call cool_space_exact 
    
    DESCRIPTION


    INPUT
    cldtf    cloud transmission function between levels k level KS.
       [real]
    Atmos_input    Atmospheric input to the cool to space approximation method
       [atmos_input_type]
    sorc    band-integrated Planck function, for each combined band in the 160-1200 cm-1 region.
       [real]
    to3cnt    transmission functions between levels k and level KS for the 990-1070 cm-1 range.
       [real]

    INPUT/OUTPUT
    Optical    Optical depth of atmospheric layers and clouds
       [optical_path_type]
    Gas_tf    Gas transmission function
       [gas_tf_type]
    Lw_diagnostics    Longwave diagnostics
       [lw_diagnostics_type]
    cts_sum    Cool to space heating rates
       [real]
    cts_sumcf    Cool to space heating rates due to cloud forcing
       [real]
    gxctscf    gxcts is the "exact" surface flux accumulated over the frequency bands in the 160-1200 cm-1 range.
       [real]

  9. e1e290

    call e1e290 (Atmos_input, e1ctw1, e1ctw2, & trans_band1, trans_band2, Optical, tch4n2oe, & t4, Lw_diagnostics, cldtf, cld_indx, flx1e1cf, & tcfc8)
    DESCRIPTION
    E1e290 computes two different quantities.

    1) emissivities used to compute the exchange terms for flux at the top of the atmosphere (level KS). (the top layer, isothermal by assumption, does not contribute to photon exchanges with other layers). these terms are obtained using precomputed e2 functions (see ref. (2)).

    2) emissivities used to obtain the cool-to-space heating rates for all pressure layers. these are obtained using precomputed e1 functions (see ref. (2)).

    the frequency ranges for the e2 calculations are 0-560 and 1200- 2200 cm-1. the CTS calculations also require calculations in the 160-560 cm-1 range. (see refs. (1) and (2)). ifdef ch4n2o

    if ch4 and n2o are included, the frequency range for emissivities is 1400-2200 cm-1, with separate emissivity quantities for the 1200-1400 cm-1 range. endif ch4n2o

    the reason for combining these calculations is that both use the same scaled h2o amount (avephi) as input, thus reducing some calculation time for obtaining index quantities.

    references:

    (1) schwarzkopf, m. d., and s. b. fels, "the simplified exchange method revisited: an accurate, rapid method for computation of infrared cooling rates and fluxes," journal of geophysical research, 96 (1981), 9075-9096.

    (2) fels, s. b., and m. d. schwarzkopf, "the simplified exchange approximation: a new method for radiative transfer calculations," journal atmospheric science, 32 (1975), 1475-1488.

    author: m. d. schwarzkopf

    revised: 1/1/93

    certified: radiation version 1.0


    INPUT
    Atmos_input    Atmospheric input data to the thermal exchange method
       [atmos_input_type]
    tch4n2oe    CH4 and N2O transmission functions
       [real]
    t4    source function of the top most layer
       [real]
    Lw_diagnostics    longwave diagnostics variable
       [lw_diagnostics_type]
    cld_tf    Cloud transmission function
       [real]
    cld_indx    Cloud type index
       [real]

    INPUT/OUTPUT
    Optical    thermal layer optical path
       [optical_path_type]
    tcfc8    CFC transmission function (chloroflurocarbons)
       [real]

    OUTPUT
    e1ctw1    Cool to space thermal exchange terms in 0-560 band
       [real]
    e1ctw2    Cool to space thermal exchange terms in 1200-2200 band
       [real]
    trans_band1    transmission functions in band 1
       [real]
    trans_band2    transmission function in band 2
       [real]
    flx1e1cf    TOA flux due to cloud forcing
       [real]

  10. e290

    call e290 (Atmos_input, k, trans_band2, trans_band1, Optical, tch4n2oe, & tcfc8)
    DESCRIPTION
    e290 computes the exchange terms in the flux equation for longwave radiation for all terms except the exchange with the top of the atmosphere. the method is a table lookup on a pre-computed e2 function (defined in reference (2)). calculation are done in the frequency range: 0-560, 1200-2200 cm-1 for q(approximate). motivation for these calculations is in references (1) and (2).

    references:

    (1) schwarzkopf, m. d., and s. b. fels, "the simplified exchange method revisited: an accurate, rapid method for computation of infrared cooling rates and fluxes," journal of geophysical research, 96 (1981), 9075-9096.

    (2) fels, s. b., and m. d. schwarzkopf, "the simplified exchange approximation: a new method for radiative transfer calculations," journal atmospheric science, 32 (1975), 1475-1488.


    INPUT
    Atmos_input    Atmospheric input data
       [atmos_input_type]
    k    Starting vertical level k to compute exchange terms
       [integer]
    tch4n2oe    CH4 and N2O transmission function
       [real]

    INPUT/OUTPUT
    trans_band2    Transmission funciton in band 1200-2200
       [real]
    trans_band    Transmission function in band 0-560
       [real]
    Optical    Optical depth of the thermal layers
       [optical_path_type]
    tcfc8    CFC transmission function
       [real]

  11. esfc

    call esfc (Atmos_input, emspec, Optical, & emspecf, tch4n2oe, tcfc8 )
    DESCRIPTION


    INPUT
    Atmos_input    Atmospheric input data such as temperature and flux level temp
       [atmos_input_type]
    tch4n2oe    CH4 and N2O transmission function
       [real]

    INPUT/OUTPUT
    Optical    Optical depth of thermal layers
       [optical_path_type]
    tcfc8    CFC transmission function
       [real]

    OUTPUT
    emspec    Emissivity of thermal layers
       [real]
    emspecf    Emissivity of thermal layers including effects of minor gas species
       [real]

  12. enear

    call enear (Atmos_input, emisdg, Optical, & emisdgf, tch4n2oe, tcfc8 )
    DESCRIPTION


    INPUT
    Atmos_input    Atmospheric input data such as temperature and flux level temp
       [atmos_input_type]
    tch4n2oe    CH4 and N2O transmission function
       [real]

    INPUT/OUTPUT
    Optical    Optical depth of thermal layers
       [optical_path_type]
    tcfc8    CFC transmission function
       [real]

    OUTPUT
    emisdg    Emissivity of thermal layers
       [real]
    emisdgf    Emissivity of thermal layers including effects of minor gas species
       [real]

  13. co2_source_calc

    call co2_source_calc (Atmos_input, Rad_gases, sorc, Gas_tf, & source_band, dsrcdp_band)
    DESCRIPTION


    INPUT
    Atmos_input    Atmospheric input data
       [atmos_input_type]
    Rad_gases    Radiative gases properties
       [radiative_gases_type]
    Gas_tf    Gas transmission functions
       [gas_tf_type]

    OUTPUT
    sorc    CO2 source function results
       [real]
    source_band    CO2 source function bands
       [real]
    dsrcdp_band    Difference of source function between nearby thermal layers
       [real]

  14. nlte

    call nlte (pflux, press, rrvco2, sorc, Gas_tf)
    DESCRIPTION
    nlte is the present formulation of an nlte calculation of the source function in the 15 um region (two bands).

    the essential theory is:

    phi = C*j j = b + E*phi

    where C = Curtis matrix E = NLTE contribution (diagonal matrix) phi = heating rate vector b = LTE source function vector j = NLTE source function vector

    j = b (by assumption) for pressure layers > ixnltr j = b (by assumption) for pressure layers > ixprnlte E is obtained using a formulation devised by Fels (denoted Ri in his notes).


    INPUT
    pflux    pressure values at flux levels.
       [real]
    press    pressure cordinates
       [real]
    rrvco2    CO2 volumn mixing ratio
       [real]
    Gas_tf    Gas transmission function
       [gas_tf_type]

    INPUT/OUTPUT
    sorc    CO2 source function to be calculated
       [real]

  15. co2curt

    call co2curt (pflux, cmtrx, Gas_tf)
    DESCRIPTION


    INPUT
    pflux    pressure values at flux levels
       [real]
    Gas_tf    gas transmission function
       [gas_tf_type]

    OUTPUT
    cmtrx    Curtis matrix elements
       [real]

  16. co2_time_vary

    call co2_time_vary ( rrvco2 )
    DESCRIPTION
    Calculate CO2 absorption coefficient based on its volume mixing ratio using precomputed lbl tables


    INPUT
    rrvco2    CO2 volume mixing ratio
       [real]

  17. ch4_time_vary

    call ch4_time_vary 
    
    DESCRIPTION
    Calculate CH4 and N2O absorption coefficients from their mixing ratios using precomputed lbl tables


    INPUT
    rrvch4    ch4 volume mixing ratio
       [real]
    rrvn2o    n2o volume mixing ratio
       [real]

  18. n2o_time_vary

    call n2o_time_vary (rrvch4, rrvn2o)
    DESCRIPTION
    Calculate CH4 and N2O absorption coefficients from their mixing ratios using precomputed lbl tables


    INPUT
    rrvch4    ch4 volume mixing ratio
       [real]
    rrvn2o    n2o volume mixing ratio
       [real]


DATA SETS

None.


ERROR MESSAGES

None.


top