NOAA-EMC / fv3atm

Other
29 stars 154 forks source link

Refactor GFDLMP v1. Introduce GFDLMP v3. Fix initialization bug. #823

Open dustinswales opened 5 months ago

dustinswales commented 5 months ago

Description

This PR contains host side changes to accommodate a new cloud microphysics parameterization in the physics.

For the refactoring, all of the configuration/namelist info is moved into a common DDT that is referenced by both MP versions and a common fv_sat_adj.F90. There are default values for the scheme configurations defined within the schemes, and overwritten by the namelist, if provided. This is similar to how the GFS physics namelists are handled, BUT...since the namelist is read in during physics initialization, not at the model initialization, the default values don't get updated until we are in the physics group.

This is a problem, since fv_sat_adj is called before the physics from the dycore. So at timestep=1, FV3 sees the default configuration for fv_sat_adj set in module_gfdl_cloud_microphysics, but then at physics timestep=1 fv_sat_adj is using the namelist updated configuration. To fix this, as part of this PR the GFDL MP initialization is moved to the host (control_initialize).

Testing

Tested on Hera. Changes in UFS RT baselines due to different (now correct) fv_sat_adj configuration seen at first timestep by dycore. @RuiyuSun @yangfanglin

RuiyuSun commented 5 months ago

@dustinswales I'd like to test this version. How do I check this code? Thanks!

dustinswales commented 5 months ago

git clone --recursive --branch feature/gfdlmpv3 https://github.com/dustinswales/ufs-weather-model.git

grantfirl commented 4 months ago

Dependency: https://github.com/ufs-community/ccpp-physics/pull/195