Skip to content

Commit

Permalink
Changes for RRTMGP DDTs to be used in CCPP.
Browse files Browse the repository at this point in the history
  • Loading branch information
dustinswales committed May 13, 2019
1 parent e0ca272 commit 3beeb50
Show file tree
Hide file tree
Showing 9 changed files with 748 additions and 311 deletions.
260 changes: 52 additions & 208 deletions physics/GFS_rrtmgp_lw.F90

Large diffs are not rendered by default.

77 changes: 0 additions & 77 deletions physics/GFS_rrtmgp_lw.xml
Original file line number Diff line number Diff line change
Expand Up @@ -345,39 +345,6 @@
<optional>F</optional>
<container>MODULE_GFS_rrtmgp_lw SCHEME_GFS_rrtmgp_lw SUBROUTINE_GFS_rrtmgp_lw_run</container>
</variable>
<variable name="tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step">
<standard_name>tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step</standard_name>
<long_name>longwave total sky heating rate</long_name>
<units>K s-1</units>
<local_name>hlwc</local_name>
<type>real</type>
<rank>(:,:)</rank>
<intent>out</intent>
<optional>F</optional>
<container>MODULE_GFS_rrtmgp_lw SCHEME_GFS_rrtmgp_lw SUBROUTINE_GFS_rrtmgp_lw_run</container>
</variable>
<variable name="lw_fluxes_top_atmosphere">
<standard_name>lw_fluxes_top_atmosphere</standard_name>
<long_name>longwave total sky fluxes at the top of the atm</long_name>
<units>W m-2</units>
<local_name>topflx</local_name>
<type>topflw_type</type>
<rank>(:)</rank>
<intent>inout</intent>
<optional>F</optional>
<container>MODULE_GFS_rrtmgp_lw SCHEME_GFS_rrtmgp_lw SUBROUTINE_GFS_rrtmgp_lw_run</container>
</variable>
<variable name="lw_fluxes_sfc">
<standard_name>lw_fluxes_sfc</standard_name>
<long_name>longwave total sky fluxes at the Earth surface</long_name>
<units>W m-2</units>
<local_name>sfcflx</local_name>
<type>sfcflw_type</type>
<rank>(:)</rank>
<intent>inout</intent>
<optional>F</optional>
<container>MODULE_GFS_rrtmgp_lw SCHEME_GFS_rrtmgp_lw SUBROUTINE_GFS_rrtmgp_lw_run</container>
</variable>
<variable name="ccpp_error_message">
<standard_name>ccpp_error_message</standard_name>
<long_name>error message for error handling in CCPP</long_name>
Expand All @@ -400,50 +367,6 @@
<optional>F</optional>
<container>MODULE_GFS_rrtmgp_lw SCHEME_GFS_rrtmgp_lw SUBROUTINE_GFS_rrtmgp_lw_run</container>
</variable>
<variable name="tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step">
<standard_name>tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step</standard_name>
<long_name>longwave clear sky heating rate</long_name>
<units>K s-1</units>
<local_name>hlw0</local_name>
<type>real</type>
<rank>(:,:)</rank>
<intent>inout</intent>
<optional>T</optional>
<container>MODULE_GFS_rrtmgp_lw SCHEME_GFS_rrtmgp_lw SUBROUTINE_GFS_rrtmgp_lw_run</container>
</variable>
<variable name="lw_fluxes">
<standard_name>lw_fluxes</standard_name>
<long_name>lw fluxes total sky / csk and up / down at levels </long_name>
<units>W m-2</units>
<local_name>flxprf</local_name>
<type>proflw_type</type>
<rank>(:,:)</rank>
<intent>in</intent>
<optional>F</optional>
<container>MODULE_GFS_rrtmgp_lw SCHEME_GFS_rrtmgp_lw SUBROUTINE_GFS_rrtmgp_lw_run</container>
</variable>
<variable name="lw_heating_rate_spectral">
<standard_name>lw_heating_rate_spectral</standard_name>
<long_name>longwave total sky heating rate (spectral)</long_name>
<units>K s-1</units>
<local_name>hlwb</local_name>
<type>real</type>
<rank>(:,:,:)</rank>
<intent>inout</intent>
<optional>T</optional>
<container>MODULE_GFS_rrtmgp_lw SCHEME_GFS_rrtmgp_lw SUBROUTINE_GFS_rrtmgp_lw_run</container>
</variable>
<variable name="lw_fluxes">
<standard_name>lw_fluxes</standard_name>
<long_name>lw fluxes total sky / csk and up / down at levels</long_name>
<units>W m-2</units>
<local_name>flxprf</local_name>
<type>proflw_type</type>
<rank>(:,:)</rank>
<intent>inout</intent>
<optional>T</optional>
<container>MODULE_GFS_rrtmgp_lw SCHEME_GFS_rrtmgp_lw SUBROUTINE_GFS_rrtmgp_lw_run</container>
</variable>
<variable name="cloud_liquid_water_path">
<standard_name>cloud_liquid_water_path</standard_name>
<long_name>cloud liquid water path</long_name>
Expand Down
73 changes: 51 additions & 22 deletions physics/rrtmgp_lw_main.F90
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
! ###########################################################################################
! ###########################################################################################
module rrtmgp_lw_main
use machine, only: kind_phys
use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp
use mo_cloud_optics, only: ty_cloud_optics
use mo_optical_props, only: ty_optical_props_1scl
use machine, only: kind_phys
use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp
use mo_cloud_optics, only: ty_cloud_optics
use mo_optical_props, only: ty_optical_props_1scl
use mo_rrtmgp_clr_all_sky, only: rte_lw
use mo_gas_concentrations, only: ty_gas_concs
use mo_fluxes_byband, only: ty_fluxes_byband
use GFS_rrtmgp_lw, only: check_error_msg

public rrtmgp_lw_main_init, rrtmgp_lw_main_run, rrtmgp_lw_main_finalize
contains
Expand All @@ -15,22 +19,27 @@ end subroutine rrtmgp_lw_main_init
! #########################################################################################
! #########################################################################################
!! \section arg_table_rrtmgp_lw_main_run Argument Table
!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional |
!! |--------------------|-------------------------------------------------|--------------------------------------------------------------------|-------|------|-----------------------|-----------|--------|----------|
!! | ncol | horizontal_loop_extent | horizontal dimension | count | 0 | integer | | in | F |
!! | nlay | adjusted_vertical_layer_dimension_for_radiation | number of vertical layers for radiation | count | 0 | integer | | in | F |
!! | p_lay | air_pressure_at_layer_for_radiation_in_hPa | air pressure layer | hPa | 2 | real | kind_phys | in | F |
!! | p_lev | air_pressure_at_interface_for_radiation_in_hPa | air pressure level | hPa | 2 | real | kind_phys | in | F |
!! | t_lay | air_temperature_at_layer_for_radiation | air temperature layer | K | 2 | real | kind_phys | in | F |
!! | skt | surface_ground_temperature_for_radiation | surface ground temperature for radiation | K | 1 | real | kind_phys | in | F |
!! | sfc_emiss | surface_longwave_emissivity_in_each_band | surface lw emissivity in fraction in each LW band | frac | 2 | real | kind_phys | in | F |
!! | kdist_lw | K_distribution_file_for_RRTMGP_LW_scheme | DDT containing spectral information for RRTMGP LW radiation scheme | DDT | 0 | ty_gas_optics_rrtmgp | | in | F |
!! | optical_props_clds | optical_properties_for_cloudy_atmosphere | Fortran DDT containing RRTMGP optical properties | DDT | 0 | ty_optical_props_1scl | | in | F |
!! | errmsg | ccpp_error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F |
!! | errflg | ccpp_error_flag | error flag for error handling in CCPP | flag | 0 | integer | | out | F |
!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional |
!! |-----------------------|-------------------------------------------------|--------------------------------------------------------------------|-------|------|-----------------------|-----------|--------|----------|
!! | ncol | horizontal_loop_extent | horizontal dimension | count | 0 | integer | | in | F |
!! | nlay | adjusted_vertical_layer_dimension_for_radiation | number of vertical layers for radiation | count | 0 | integer | | in | F |
!! | p_lay | air_pressure_at_layer_for_radiation_in_hPa | air pressure layer | hPa | 2 | real | kind_phys | in | F |
!! | p_lev | air_pressure_at_interface_for_radiation_in_hPa | air pressure level | hPa | 2 | real | kind_phys | in | F |
!! | t_lay | air_temperature_at_layer_for_radiation | air temperature layer | K | 2 | real | kind_phys | in | F |
!! | skt | surface_ground_temperature_for_radiation | surface ground temperature for radiation | K | 1 | real | kind_phys | in | F |
!! | sfc_emiss | surface_longwave_emissivity_in_each_band | surface lw emissivity in fraction in each LW band | frac | 2 | real | kind_phys | in | F |
!! | kdist_lw | K_distribution_file_for_RRTMGP_LW_scheme | DDT containing spectral information for RRTMGP LW radiation scheme | DDT | 0 | ty_gas_optics_rrtmgp | | in | F |
!! | optical_props_clds | optical_properties_for_cloudy_atmosphere | Fortran DDT containing RRTMGP optical properties | DDT | 0 | ty_optical_props_1scl | | in | F |
!! | optical_props_aerosol | optical_properties_for_aerosols | Fortran DDT containing RRTMGP optical properties | DDT | 0 | ty_optical_props_1scl | | in | F |
!! | gas_concentrations | Gas_concentrations_for_RRTMGP_suite | DDT containing gas concentrations for RRTMGP radiation scheme | DDT | 0 | ty_gas_concs | | in | F |
!! | fluxLW_allsky | lw_flux_profiles_byband_allsky | Fortran DDT containing RRTMGP 3D fluxes | DDT | 0 | ty_fluxes_byband | | out | F |
!! | fluxLW_clrsky | lw_flux_profiles_byband_clrsky | Fortran DDT containing RRTMGP 3D fluxes | DDT | 0 | ty_fluxes_byband | | out | F |
!! | errmsg | ccpp_error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F |
!! | errflg | ccpp_error_flag | error flag for error handling in CCPP | flag | 0 | integer | | out | F |
!!
subroutine rrtmgp_lw_main_run(ncol, nlay, kdist_lw, p_lay, t_lay, &
p_lev, skt, sfc_emiss, optical_props_clds, errmsg, errflg)
subroutine rrtmgp_lw_main_run(ncol, nlay, kdist_lw, p_lay, t_lay, p_lev, skt, &
sfc_emiss, gas_concentrations, optical_props_clds, optical_props_aerosol,&
fluxLW_allsky, fluxLW_clrsky, errmsg, errflg)

! Inputs
integer, intent(in) :: &
Expand All @@ -48,15 +57,35 @@ subroutine rrtmgp_lw_main_run(ncol, nlay, kdist_lw, p_lay, t_lay, &
real(kind_phys), dimension(kdist_lw%get_nband(),ncol) :: &
sfc_emiss ! Surface emissivity (1)
type(ty_optical_props_1scl),intent(in) :: &
optical_props_clds

optical_props_clds, &
optical_props_aerosol
type(ty_gas_concs),intent(in) :: &
gas_concentrations
type(ty_fluxes_byband) :: &
fluxLW_allsky, & ! All-sky flux (W/m2)
fluxLW_clrsky ! Clear-sky flux (W/m2)

! Outputs
character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg

! Initialize CCPP error handling variables
errmsg = ''
errflg = 0

! Call RRTMGP LW scheme
call check_error_msg(rte_lw( &
kdist_lw, & ! IN - spectral information
gas_concentrations, & ! IN - gas concentrations (vmr)
p_lay, & ! IN - pressure at layer interfaces (Pa)
t_lay, & ! IN - temperature at layer interfaes (K)
p_lev, & ! IN - pressure at layer centers (Pa)
skt, & ! IN - skin temperature (K)
sfc_emiss, & ! IN - surface emissivity in each LW band
optical_props_clds, & ! IN - DDT containing cloud optical information
fluxLW_allsky, & ! OUT - Fluxes, all-sky, 3D (nCol,nLay,nBand)
fluxLW_clrsky, & ! OUT - Fluxes, clear-sky, 3D (nCol,nLay,nBand)
aer_props = optical_props_aerosol)) ! IN(optional) - DDT containing aerosol optical information

end subroutine rrtmgp_lw_main_run

Expand Down
Loading

0 comments on commit 3beeb50

Please sign in to comment.