NCAR / ccpp-physics

GFS physics for CCPP
Other
59 stars 146 forks source link

scm_sfc_flux_spec needs to set the dry, icy, etc. interstitial variables #863

Closed grantfirl closed 2 years ago

grantfirl commented 2 years ago

Description

When specified surface fluxes are used in the SCM, nearly all surface-related schemes are omitted from the SDF that is used. The variables that characterize the surface, such as dry, wet, icy, etc. are set in GFS_surface_composites_pre (which is skipped when specified surface fluxes are used in the SCM) and since they are not set every timestep in this scenario, any other schemes that use these variables (e.g. dcyc2, GFDL MP, MG MP, ...) are getting all false values for these. This can be fixed by adding code from GFS_surface_composites_pre to scm_sfc_flux_spec that sets these variables every timestep.

Steps to Reproduce

Run the arm_spg_summer_1997_A case or another case with specified surface fluxes and print out dry, icy, wet, etc. during a run. Variables from other schemes that depend on one of these being true (e.g. surface_upwelling_longwave_flux_over_land, etc.) keep their initial values (typically 0).

Additional Context

It isn't 100% clear how much fixing this bug will affect the answer. The base case scenario is that dry, wet, icy are used beyond surface schemes only for diagnostics. It appears that GFDL MP and MG use them to change CCN, so at least there will be an effect there.