Skip to content

Commit

Permalink
Remove interstitial variables for land and ice emissivity and update …
Browse files Browse the repository at this point in the history
…the land and ice emissivity in the routine setemis in CCPP (#393)
  • Loading branch information
SMoorthi-emc authored Oct 22, 2021
1 parent 3772829 commit 43c0982
Show file tree
Hide file tree
Showing 10 changed files with 730 additions and 244 deletions.
24 changes: 17 additions & 7 deletions atmos_model.F90
Original file line number Diff line number Diff line change
Expand Up @@ -423,9 +423,9 @@ subroutine atmos_timestep_diagnostics(Atmos)
if(.not. GFS_control%first_time_step) then
pmaxloc = 0.0d0
recvbuf = 0.0d0
psum = 0.0d0
pcount = 0.0d0
maxabs = 0.0d0
psum = 0.0d0
pcount = 0.0d0
maxabs = 0.0d0

! Put pgr stats in pmaxloc, psum, and pcount:
pmaxloc(1) = GFS_Control%tile_num
Expand All @@ -434,11 +434,11 @@ subroutine atmos_timestep_diagnostics(Atmos)
do i=1,count
pdiff = GFS_data(nb)%Statein%pgr(i)-GFS_data(nb)%Intdiag%old_pgr(i)
adiff = abs(pdiff)
psum = psum+adiff
psum = psum + adiff
if(adiff>=maxabs) then
maxabs=adiff
pmaxloc(2:3)=(/ ATM_block%index(nb)%ii(i), ATM_block%index(nb)%jj(i) /)
pmaxloc(4:7)=(/ pdiff, GFS_data(nb)%Statein%pgr(i), &
pmaxloc(2:3) = (/ ATM_block%index(nb)%ii(i), ATM_block%index(nb)%jj(i) /)
pmaxloc(4:7) = (/ pdiff, GFS_data(nb)%Statein%pgr(i), &
GFS_data(nb)%Grid%xlat(i), GFS_data(nb)%Grid%xlon(i) /)
endif
enddo
Expand Down Expand Up @@ -1642,6 +1642,7 @@ subroutine assign_importdata(jdat, rc)
! real(kind=GFS_kind_phys), parameter :: hsmax = 100.0 !< maximum snow depth (m) allowed
real(kind=GFS_kind_phys), parameter :: himax = 1.0e12 !< maximum ice thickness allowed
real(kind=GFS_kind_phys), parameter :: hsmax = 1.0e12 !< maximum snow depth (m) allowed
real(kind=GFS_kind_phys), parameter :: con_sbc = 5.670400e-8_GFS_kind_phys !< stefan-boltzmann
!
!------------------------------------------------------------------------------
!
Expand Down Expand Up @@ -2479,7 +2480,7 @@ subroutine assign_importdata(jdat, rc)

! update sea ice related fields:
if( lcpl_fice ) then
!$omp parallel do default(shared) private(i,j,nb,ix)
!$omp parallel do default(shared) private(i,j,nb,ix,tem)
do j=jsc,jec
do i=isc,iec
nb = Atm_block%blkno(i,j)
Expand All @@ -2490,6 +2491,15 @@ subroutine assign_importdata(jdat, rc)
GFS_data(nb)%Coupling%hsnoin_cpl(ix) = min(hsmax, GFS_data(nb)%Coupling%hsnoin_cpl(ix) &
/ (GFS_data(nb)%Sfcprop%fice(ix)*GFS_data(nb)%Sfcprop%oceanfrac(ix)))
GFS_data(nb)%Sfcprop%zorli(ix) = z0ice
tem = GFS_data(nb)%Sfcprop%tisfc(ix) * GFS_data(nb)%Sfcprop%tisfc(ix)
tem = con_sbc * tem * tem
if (GFS_data(nb)%Coupling%ulwsfcin_cpl(ix) > zero) then
GFS_data(nb)%Sfcprop%emis_ice(ix) = GFS_data(nb)%Coupling%ulwsfcin_cpl(ix) / tem
GFS_data(nb)%Sfcprop%emis_ice(ix) = max(0.9, min(one, GFS_data(nb)%Sfcprop%emis_ice(ix)))
else
GFS_data(nb)%Sfcprop%emis_ice(ix) = 0.96
endif
GFS_data(nb)%Coupling%ulwsfcin_cpl(ix) = tem * GFS_data(nb)%Sfcprop%emis_ice(ix)
else
GFS_data(nb)%Sfcprop%tisfc(ix) = GFS_data(nb)%Sfcprop%tsfco(ix)
GFS_data(nb)%Sfcprop%fice(ix) = zero
Expand Down
208 changes: 103 additions & 105 deletions ccpp/data/GFS_typedefs.F90

Large diffs are not rendered by default.

75 changes: 27 additions & 48 deletions ccpp/data/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -516,8 +516,8 @@
type = real
kind = kind_phys
[tisfc]
standard_name = sea_ice_temperature
long_name = sea ice surface skin temperature
standard_name = surface_skin_temperature_over_ice
long_name = surface skin temperature over ice
units = K
dimensions = (horizontal_loop_extent)
type = real
Expand Down Expand Up @@ -592,6 +592,20 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[snodi]
standard_name = surface_snow_thickness_water_equivalent_over_ice
long_name = water equivalent snow depth over ice
units = mm
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[weasdi]
standard_name = water_equivalent_accumulated_snow_depth_over_ice
long_name = water equiv of acc snow depth over land
units = mm
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[hprime]
standard_name = statistical_measures_of_subgrid_orography_collection_array
long_name = orographic metrics
Expand Down Expand Up @@ -1346,31 +1360,31 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo .eqv. .true.)
active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo)
[albdifvis_ice]
standard_name = surface_albedo_diffuse_visible_over_ice
long_name = diffuse surface albedo visible band over ice
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo .eqv. .true.)
active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo)
[albdirnir_ice]
standard_name = surface_albedo_direct_NIR_over_ice
long_name = direct surface albedo NIR band over ice
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo .eqv. .true.)
active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo)
[albdifnir_ice]
standard_name = surface_albedo_diffuse_NIR_over_ice
long_name = diffuse surface albedo NIR band over ice
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo .eqv. .true.)
active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme .or. flag_for_cice_albedo)
[wetness]
standard_name = normalized_soil_wetness_for_land_surface_model
long_name = normalized soil wetness for lsm
Expand Down Expand Up @@ -5203,6 +5217,13 @@
dimensions = ()
type = real
kind = kind_phys
[huge]
standard_name = netcdf_float_fillvalue
long_name = definition of NetCDF float FillValue
units = none
dimensions = ()
type = real
kind = kind_phys
[icloud]
standard_name = control_for_cloud_area_fraction_option
long_name = cloud effect to the optical depth and cloud fraction in radiation
Expand Down Expand Up @@ -8215,20 +8236,6 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[semis_land]
standard_name = surface_longwave_emissivity_over_land_interstitial
long_name = surface lw emissivity in fraction over land (temporary use as interstitial)
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[semis_ice]
standard_name = surface_longwave_emissivity_over_ice_interstitial
long_name = surface lw emissivity in fraction over ice (temporary use as interstitial)
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[ep1d]
standard_name = surface_upward_potential_latent_heat_flux
long_name = surface upward potential latent heat flux
Expand Down Expand Up @@ -9537,13 +9544,6 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[snowd_ice]
standard_name = surface_snow_thickness_water_equivalent_over_ice
long_name = water equivalent snow depth over ice
units = mm
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[snowd_land_save]
standard_name = surface_snow_thickness_water_equivalent_over_land_save
long_name = water equivalent snow depth over land before entering a physics scheme
Expand Down Expand Up @@ -9770,13 +9770,6 @@
type = real
kind = kind_phys
active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme)
[tsfc_ice]
standard_name = surface_skin_temperature_over_ice
long_name = surface skin temperature over ice
units = K
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[tsfg]
standard_name = surface_ground_temperature_for_radiation
long_name = surface ground temperature for radiation
Expand Down Expand Up @@ -9883,13 +9876,6 @@
type = real
kind = kind_phys
active = (control_for_land_surface_scheme == identifier_for_noah_wrfv4_land_surface_scheme)
[weasd_ice]
standard_name = water_equivalent_accumulated_snow_depth_over_ice
long_name = water equiv of acc snow depth over ice
units = mm
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[wind]
standard_name = wind_speed_at_lowest_model_layer
long_name = wind speed at lowest model level
Expand Down Expand Up @@ -10666,13 +10652,6 @@
units = none
dimensions = ()
type = integer
[huge]
standard_name = netcdf_float_fillvalue
long_name = definition of NetCDF float FillValue
units = none
dimensions = ()
type = real
kind = kind_phys
[con_cliq]
standard_name = specific_heat_of_liquid_water_at_constant_pressure
long_name = specific heat of liquid water at constant pressure
Expand Down
95 changes: 95 additions & 0 deletions ccpp/suites/suite_FV3_GFSv17alp_cpldnsstrasnoahmp.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8"?>

<suite name="FV3_GFSv17alp_cpldnsstrasnoahmp" version="1">
<!-- <init></init> -->
<group name="fast_physics">
<subcycle loop="1">
<scheme>fv_sat_adj</scheme>
</subcycle>
</group>
<group name="time_vary">
<subcycle loop="1">
<scheme>GFS_time_vary_pre</scheme>
<scheme>GFS_rrtmg_setup</scheme>
<scheme>GFS_rad_time_vary</scheme>
<scheme>GFS_phys_time_vary</scheme>
</subcycle>
</group>
<group name="radiation">
<subcycle loop="1">
<scheme>GFS_suite_interstitial_rad_reset</scheme>
<scheme>GFS_rrtmg_pre</scheme>
<scheme>GFS_radiation_surface</scheme>
<scheme>rrtmg_sw_pre</scheme>
<scheme>rrtmg_sw</scheme>
<scheme>rrtmg_sw_post</scheme>
<scheme>rrtmg_lw_pre</scheme>
<scheme>rrtmg_lw</scheme>
<scheme>rrtmg_lw_post</scheme>
<scheme>GFS_rrtmg_post</scheme>
</subcycle>
</group>
<group name="physics">
<subcycle loop="1">
<scheme>GFS_suite_interstitial_phys_reset</scheme>
<scheme>GFS_suite_stateout_reset</scheme>
<scheme>get_prs_fv3</scheme>
<scheme>GFS_suite_interstitial_1</scheme>
<scheme>GFS_surface_generic_pre</scheme>
<scheme>GFS_surface_composites_pre</scheme>
<scheme>dcyc2t3</scheme>
<scheme>GFS_surface_composites_inter</scheme>
<scheme>GFS_suite_interstitial_2</scheme>
</subcycle>
<!-- Surface iteration loop -->
<subcycle loop="2">
<scheme>sfc_diff</scheme>
<scheme>GFS_surface_loop_control_part1</scheme>
<scheme>sfc_nst_pre</scheme>
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>noahmpdrv</scheme>
<scheme>sfc_cice</scheme>
<scheme>sfc_sice</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
<subcycle loop="1">
<scheme>GFS_surface_composites_post</scheme>
<scheme>sfc_diag</scheme>
<scheme>sfc_diag_post</scheme>
<scheme>GFS_surface_generic_post</scheme>
<scheme>GFS_PBL_generic_pre</scheme>
<scheme>satmedmfvdifq</scheme>
<scheme>GFS_PBL_generic_post</scheme>
<scheme>GFS_GWD_generic_pre</scheme>
<scheme>cires_ugwp</scheme>
<scheme>cires_ugwp_post</scheme>
<scheme>GFS_GWD_generic_post</scheme>
<scheme>GFS_suite_stateout_update</scheme>
<scheme>ozphys_2015</scheme>
<scheme>h2ophys</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</scheme>
<scheme>GFS_DCNV_generic_pre</scheme>
<scheme>rascnv</scheme>
<scheme>GFS_DCNV_generic_post</scheme>
<scheme>GFS_SCNV_generic_pre</scheme>
<scheme>samfshalcnv</scheme>
<scheme>GFS_SCNV_generic_post</scheme>
<scheme>GFS_suite_interstitial_4</scheme>
<scheme>cnvc90</scheme>
<scheme>GFS_MP_generic_pre</scheme>
<scheme>gfdl_cloud_microphys</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>maximum_hourly_diagnostics</scheme>
<scheme>phys_tend</scheme>
</subcycle>
</group>
<group name="stochastics">
<subcycle loop="1">
<scheme>GFS_stochastics</scheme>
</subcycle>
</group>
<!-- <finalize></finalize> -->
</suite>
Loading

0 comments on commit 43c0982

Please sign in to comment.