| subroutine, public gfs_radiation_post::gfs_radiation_post_run | ( | logical, intent(in) | dolwrad, |
| logical, intent(in) | doswrad, | ||
| integer, intent(in) | tend_opt_lwrad, | ||
| integer, intent(in) | tend_opt_swrad, | ||
| logical, intent(in) | lssav, | ||
| real(kind_phys), dimension(:), intent(inout) | total_albedo, | ||
| type(topfsw_type), dimension(:), intent(inout) | topfsw, | ||
| real(kind_phys), intent(in) | fhlwr, | ||
| real(kind_phys), intent(in) | fhswr, | ||
| real(kind_phys), intent(in) | delt, | ||
| real(kind_phys), dimension(:), intent(in) | coszen, | ||
| real(kind_phys), dimension(:), intent(in) | coszdg, | ||
| real(kind_phys), intent(in) | raddt, | ||
| real(kind_phys), dimension(:,:), intent(in) | aerodp, | ||
| real(kind_phys), dimension(:,:), intent(in) | cldsa, | ||
| integer, dimension(:,:), intent(in) | mtopa, | ||
| integer, dimension(:,:), intent(in) | mbota, | ||
| real(kind_phys), dimension(:,:), intent(in) | cldtausw, | ||
| real(kind_phys), dimension(:,:), intent(in) | cldtaulw, | ||
| real(kind_phys), dimension(:,:), intent(in) | p_lev, | ||
| integer, intent(in) | kb, | ||
| integer, intent(in) | kd, | ||
| integer, intent(in) | kt, | ||
| type(sfcflw_type), dimension(:), intent(inout) | sfcflw, | ||
| type(sfcfsw_type), dimension(:), intent(inout) | sfcfsw, | ||
| type(topflw_type), dimension(:), intent(inout) | topflw, | ||
| type(cmpfsw_type), dimension(:), intent(in) | scmpsw, | ||
| integer, intent(in) | ncol, | ||
| integer, intent(in) | nlev, | ||
| integer, intent(in) | ntrac, | ||
| integer, intent(in) | lmk, | ||
| integer, intent(in) | nday, | ||
| integer, intent(in) | nfxr, | ||
| integer, intent(in) | nspc1, | ||
| real(kind_phys), dimension(:,:), intent(inout) | fluxr, | ||
| logical, intent(in) | do_rrtmgp, | ||
| logical, intent(in) | do_lw_clrsky_hr, | ||
| real(kind_phys), dimension(:,:), intent(in), optional | fluxlwup_clrsky, | ||
| real(kind_phys), dimension(:,:), intent(in), optional | fluxlwdown_clrsky, | ||
| real(kind_phys), dimension(:,:), intent(inout), optional | htrlwc, | ||
| real(kind_phys), dimension(:,:), intent(in), optional | fluxlwup_allsky, | ||
| real(kind_phys), dimension(:,:), intent(in), optional | fluxlwdown_allsky, | ||
| real(kind_phys), dimension(:,:), intent(inout) | htrlw, | ||
| logical, intent(in) | do_sw_clrsky_hr, | ||
| real(kind_phys), dimension(:,:), intent(inout), optional | htrswc, | ||
| real(kind_phys), dimension(:,:), intent(in), optional | fluxswup_clrsky, | ||
| integer, dimension(:), intent(in) | idxday, | ||
| real(kind_phys), dimension(:,:), intent(in), optional | fluxswdown_clrsky, | ||
| real(kind_phys), dimension(:,:), intent(inout) | htrsw, | ||
| real(kind_phys), dimension(:,:), intent(in), optional | fluxswup_allsky, | ||
| real(kind_phys), dimension(:,:), intent(in), optional | fluxswdown_allsky, | ||
| integer, intent(in) | isfc, | ||
| integer, intent(in) | itoa, | ||
| real(kind_phys), dimension(:), intent(inout) | tsflw, | ||
| real(kind_phys), dimension(:), intent(in) | tsfa, | ||
| real(kind_phys), dimension(:), intent(inout) | sfcdlw, | ||
| real(kind_phys), dimension(:), intent(inout) | sfculw, | ||
| real(kind_phys), dimension(:,:), intent(inout), optional | htrlwu, | ||
| real(kind_phys), dimension(:), intent(inout) | nirbmdi, | ||
| real(kind_phys), dimension(:), intent(inout) | nirdfdi, | ||
| real(kind_phys), dimension(:), intent(inout) | visbmdi, | ||
| real(kind_phys), dimension(:), intent(inout) | visdfdi, | ||
| real(kind_phys), dimension(:), intent(inout) | nirbmui, | ||
| real(kind_phys), dimension(:), intent(inout) | nirdfui, | ||
| real(kind_phys), dimension(:), intent(inout) | visbmui, | ||
| real(kind_phys), dimension(:), intent(inout) | visdfui, | ||
| real(kind_phys), dimension(:), intent(in) | sfc_alb_nir_dir, | ||
| real(kind_phys), dimension(:), intent(in) | sfc_alb_nir_dif, | ||
| real(kind_phys), dimension(:), intent(in) | sfc_alb_uvvis_dir, | ||
| real(kind_phys), dimension(:), intent(in) | sfc_alb_uvvis_dif, | ||
| real(kind_phys), dimension(:), intent(inout) | sfcnsw, | ||
| real(kind_phys), dimension(:), intent(inout) | sfcdsw, | ||
| real(kind_phys), dimension(:,:), intent(inout) | gu0, | ||
| real(kind_phys), dimension(:,:), intent(inout) | gv0, | ||
| real(kind_phys), dimension(:,:), intent(inout) | gt0, | ||
| real(kind_phys), dimension(:,:,:), intent(inout) | gq0, | ||
| real(kind_phys), dimension(:,:), intent(inout) | dudt, | ||
| real(kind_phys), dimension(:,:), intent(inout) | dvdt, | ||
| real(kind_phys), dimension(:,:), intent(inout) | dtdt, | ||
| real(kind_phys), dimension(:,:,:), intent(inout) | dqdt, | ||
| real(kind_phys), dimension(:,:), intent(out) | ten_t, | ||
| real(kind_phys), dimension(:,:), intent(out) | ten_u, | ||
| real(kind_phys), dimension(:,:), intent(out) | ten_v, | ||
| real(kind_phys), dimension(:,:,:), intent(out) | ten_q, | ||
| character(len=*), intent(out) | errmsg, | ||
| integer, intent(out) | errflg | ||
| ) |
This routine needs to be called AFTER the RRTMG (radlw_main.F90 and radsw_main.F90) or the RRTMGP (rrtmgp_lw_main.F90 and rrtmgp_sw_main.F90) radiation schemes in the CCPP enabled UFS.
For RRTMG, not much is done here, since the scheme outputs the fields needed by the UFS. For example, RRTMG provides the heating-rate profiles and has been modified to use UFS native DDTs for storing the fluxes.
For RRTMGP*:
*Note on RTE-RRTMGP implementation in CCPP This is done in an attempt to make the CCPP enabled RRTMGP LW/SW drivers more host agnostic. The drivers are outputting the same fields as RTE, flux profiles, maintaining the same scheme interface at the lowest CCPP entrypoint, the "Scheme-level" interstitial. Any host specific coupling to the scheme happens here, a layer above, within the "Suite-level" interstitial.
For ALL Radiaiton Schemes:
| [in] | idxday | Index array for daytime points |
| [in] | do_sw_clrsky_hr | Output clear-sky SW heating-rate? |
| [in] | delt | physics timestep |
| [in] | coszdg | Daytime mean cosz over rad call period |
| [in] | sfc_alb_uvvis_dif | Surface albedo (diffuse) |
| [in] | p_lev | Pressure @ model layer-interfaces (Pa) |
| [in] | fluxswdown_allsky | RRTMGP shortwave all-sky flux (W/m2) |
| [in] | aerodp | Vertical integrated optical depth for <nspc1> aerosol species |
| [in] | cldtaulw | 10mu band layer cloud optical depth (LW) |
| [in] | cldsa | Fraction of clouds for High/Mid/Low diagnostics: |
| [in] | cldsa | low(1), middle(2), high(3), total(4) and BL(5) |
| [in] | mbota | Vertical indices for low, middle and high cloud bases (H/M/L diag) |
| [in] | scmpsw | 2D surface fluxes, components: |
| [in,out] | sfcdsw | SW sfc all-sky downward flux (W/m2) |
| [in,out] | htrsw | SW all-sky heating rate (K/s) |
| [in,out] | total_albedo | Total sky albedo at TOA (W/m2) |
| [in,out] | htrlwu | LW all-sky heating-rate updated in-between radiation calls. |
| [in,out] | sfcflw | LW radiation fluxes at sfc |
| [in,out] | sfcfsw | SW radiation fluxes at sfc |
| [in,out] | topfsw | SW fluxes at top atmosphere |
| [in,out] | topflw | LW fluxes at top atmosphere |
| [in,out] | fluxr | LW/SW diagnostics |
| [out] | errmsg | CCPP error message |
| [out] | errflg | CCPP error code |
| [in,out] | htrswc | SW clear-sky heating rate (K/s) |
| dolwrad | Logical flags for lw radiation calls |
| doswrad | Logical flags for sw radiation calls |
| lssav | Flag for radiation diagnostics |
| fhlwr | Frequency for longwave radiation (sec) |
| fhswr | Frequency for shortwave radiation (sec) |
| coszen | Mean cos of zenith angle over rad call period |
| raddt | Radiation time step (sec) |
| mtopa | Vertical indices for low, middle and high cloud tops (H/M/L diag) |
| cldtausw | .55mu band layer cloud optical depth (SW) |
| kb | Vertical index difference between layer and lower bound (H/M/L diag) |
| kd | Vertical index difference between in/out and local (H/M/L diag) |
| kt | Vertical index difference between layer and upper bound (H/M/L diag) |
| ncol | Horizontal loop extent |
| nlev | Number of vertical layers |
| ntrac | number of tracers |
| lmk | Number of vertical layers for radiation (adjusted) |
| nday | Number of daylit columns |
| nfxr | Number of variables stored in the fluxr array |
| nspc1 | Number of species for output aerosol optical depth |
| do_rrtmgp | Flag for using RRTMGP scheme |
| do_lw_clrsky_hr | Output clear-sky LW heating-rate? |
| fluxlwup_clrsky | RRTMGP longwave clear-sky flux (W/m2) |
| fluxlwdown_clrsky | RRTMGP longwave clear-sky flux (W/m2) |
| htrlwc | LW clear-sky heating-rate (K/s) |
| fluxlwup_allsky | RRTMGP longwave all-sky flux (W/m2) |
| fluxlwdown_allsky | RRTMGP longwave all-sky flux (W/m2) |
| htrlw | LW all-sky heating rate (K/s) |
| fluxswup_clrsky | RRTMGP shortwave clear-sky flux (W/m2) |
| fluxswdown_clrsky | RRTMGP shortwave clear-sky flux (W/m2) |
| fluxswup_allsky | RRTMGP shortwave all-sky flux (W/m2) |
| isfc | Vertical index for surface level |
| itoa | Vertical index for TOA level |
| tsflw | LW sfc air temp during calculation (K) |
| tsfa | Lowest model layer air temperature for radiation (K) |
| sfcdlw | LW sfc all-sky downward flux (W/m2) |
| sfculw | LW sfc all-sky upward flux (W/m2) |
| nirbmdi | SW sfc nir beam downward flux (W/m2) |
| nirdfdi | SW sfc nir diff downward flux (W/m2) |
| visbmdi | SW sfc uv+vis beam downward flux (W/m2) |
| visdfdi | SW sfc uv+vis diff downward flux (W/m2) |
| nirbmui | SW sfc nir beam upward flux (W/m2) |
| nirdfui | SW sfc nir diff upward flux (W/m2) |
| visbmui | SW sfc uv+vis beam upward flux (W/m2) |
| visdfui | SW sfc uv+vis diff upward flux (W/m2) |
| sfc_alb_nir_dir | Surface albedo (direct) |
| sfc_alb_nir_dif | Surface albedo (diffuse) |
| sfc_alb_uvvis_dir | Surface albedo (direct) |
| sfcnsw | SW sfc all-sky net flux (W/m2) flux into ground |