ufs-community / ccpp-physics

UFS fork for CCPP
Other
3 stars 31 forks source link

some confusions about the GWD schemes #212

Open WChen-NOAA opened 4 weeks ago

WChen-NOAA commented 4 weeks ago

@mdtoyNOAA I have some confusion while reviewing the GWD schemes and setting up my tests.

  1. For both the v16 and v17_p8 configuration, used the "Unified Gravity Wave Physics Scheme - Version 0" but the v17_p8 would contain the GSL drag suite. I found two scripts containing the gwd scheme.  One is gwdps.f (call gwdps_run) and the other is ugwp_driver_v0.F(call GWDPS_V0, this code seems to contain some corrections and WAM implementation). In the headlines of the unified ugwp (unified_ugwp.F90), it said

    1) The "V0 CIRES UGWP" scheme (cires_ugwp.F90) as implemented in the FV3GFSv16 atmosphere model, which includes:   a) the "traditional" EMC orograhic gravity wave drag and flow blocking scheme of gwdps.f   b) the v0 cires ugwp non-stationary GWD scheme

    But in this code unified_ugwp.F90 only use the gwdps.f and call the "gwdps_run".  Any reason for this?

  2. For the ugwpv1 suites. It seems that the oro-gw and mountain blocking effects (calling orogw_v1, I think this code is based on the script of ugwp_driver_v0).But I found (v0 highlighted in red, v1 highlighted in green)  theta-2024-6-10-2

In  ugwp_driver_v0 used the deg for the calculation while in orogw_v1 using rad. I found the units of thetais degree. Not quite sure that, in orogw_v1, it might use phiang = theta(j)*deg_to_rad - phiang

mdtoyNOAA commented 4 weeks ago

@WChen-NOAA I can understand your confusion. There have been a lot of changes to the GWD schemes in FV3 over the past few years. For the upcoming GFSv17, we are moving away from the older "v0" GWD schemes and towards the 'unified_ugwpv1' CCPP scheme. I can't speak for WAM implementation as I don't have experience with this. But I will try to answer your questions:

  1. As for 'gwdps.f' versus 'GWDPS_V0', the 'gwdps.f' is the subroutine called in the GFSv16 from 'cires_ugwp.F90' because the namelist variable 'do_ugwp' is .false. by default. Note that 'gwdps.f' only contains the physics for sub-grid orographic GWD and low-level blocking and not non-stationary GWD. As for GFSv17, the 'GSL drag suite' will be called from 'ugwpv1_gsldrag.F90' with 'do_gsl_drag_ls_bl'=.true. Note that subroutine 'orogw_v1' will not be called due to 'do_ugwp_v1_orog_only'=.false. by default. This subroutine will not be used in the future and will be removed from the CCPP code after clean-up.

  2. You are correct in pointing out the error with 'theta' -- it is degrees, so should be mulitplied by 'deg_to_rad' instead of 'rad_to_deg'.

I hope this helps, but I can imagine you may have some more questions. It will help me understand your question if you tell me which versions of the code you would like to use -- GFSv16 or GFSv17 prototypes.

WChen-NOAA commented 4 weeks ago

Our WAM code currently based on GFSv16 prototypes (some options changed for WAM using). Recently we need to update our package. And we want to use the v17_p8 CCPP suite as the base. Then, I need to know the changes of all the schemes and make sure we used the proper options for using the GWDs. Thank you so much for your answer. Much clear for me right now.