Add the subroutines of GF cps for CCPP-FV3#139
Conversation
| random_clds = .true. | ||
| trans_trac = .true. | ||
| cnvcld = .true. | ||
| imfshalcnv = 2 |
There was a problem hiding this comment.
I am not sure if you are supposed to change the default model config. Maybe @grantfirl has a better idea on how to create a different input.nml that uses GF instead of SAS (and a corresponding suite definition file for both FV3 and SCM).
There was a problem hiding this comment.
Which brings up the question why a copy of input.nml resides in ccpp-physics - it shouldn't be there. @grantfirl is it actually used? Not by FV3 at least, but maybe by SCM?
There was a problem hiding this comment.
To follow up on this, @haiqinli, Dom has (rightly) moved the input.nml used in the SCM from the ccpp-physics repository to the gmtb-scm repository. It is now located in gmtb-scm/scm/etc/case_config in the master branch. Also as Dom suggested, for testing the GF scheme, it is best to create a copy of input.nml for your testing, perhaps input_GF.nml. The original represents the operational namelist values and should stay that way. Then, when you go to run the SCM, you'll also want to modify the case configuration namelists to point to your modified input_GF.nml. For example, if you run the TWP-ICE case, make a copy of gmtb-scm/scm/etc/case_config/twpice.nml, rename it twpice_GF.nml (or similar) and edit the physics_nml variable within to point to your new input_GF.nml file.
There was a problem hiding this comment.
As far as I can see, this has not been addressed yet.
|
|
||
| !> \brief brief description of the subroutine | ||
| !! | ||
| !! \section arg_table_sasas_deep_init argument table |
There was a problem hiding this comment.
This should be "arg_table_cu_gf_deep_init"
There was a problem hiding this comment.
Or, even better, since these routines are not CCPP entry points, no argument table is needed - delete lines 46-47
|
|
||
| !> \brief brief description of the subroutine | ||
| !! | ||
| !! \section arg_table_sasas_deep_finalize argument table |
There was a problem hiding this comment.
This should be "arg_table_cu_gf_deep_finalize"
There was a problem hiding this comment.
Or, even better, since these routines are not CCPP entry points, no argument table is needed - delete lines 54-55
| use machine , only: kind_phys | ||
| use cu_gf_deep, only: cu_gf_deep_run,neg_check,autoconv,aeroevap | ||
| use cu_gf_sh , only: cu_gf_sh_run | ||
|
|
There was a problem hiding this comment.
missing:
private
public :: cu_gf_driver_init, cu_gf_driver_run, cu_gf_driver_finalize
| @@ -0,0 +1,786 @@ | |||
| ! | |||
| module cu_gf_driver | |||
| use physcons , g => con_g, cp => con_cp, xlv => con_hvap, r_v => con_rv | |||
There was a problem hiding this comment.
These physical constants should come in via the subroutine's argument lists.
| !! | hfx2 | kinematic_surface_upward_sensible_heat_flux | kinematic surface upward sensible heat flux | K m s-1 | 1 | real | kind_phys | out | F | | ||
| !! | qfx2 | kinematic_surface_upward_latent_heat_flux | kinematic surface upward latent heat flux | kg kg-1 m s-1 | 1 | real | kind_phys | out | F | | ||
| !! | clw | convective_transportable_tracers | array to contain cloud water and other convective trans. tracers | kg kg-1 | 3 | real | kind_phys | none | F | | ||
| !! | pbl | atmosphere_boundary_layer_thickness | PBL thickness | m | 1 | real | kind_phys | out | F | |
| pbl,ud_mf,dd_mf,dt_mf,cnvw,cnvc,errmsg,errflg) | ||
| ! pbl,ud_mf,dd_mf,dt_mf,gdc,gdc2,cnvw,cnvc,ishal_cnv) | ||
| !------------------------------------------------------------- | ||
| implicit none |
There was a problem hiding this comment.
preferably all interface variables (i.e. those coming in via the argument list) are listed first, followed by local parameters and variables
| subroutine cu_gf_driver_post_finalize() | ||
| end subroutine cu_gf_driver_post_finalize | ||
|
|
||
| !> \section arg_table_cu_gf_driver_post_run Argument Table |
There was a problem hiding this comment.
instead of having Model, Stateout, Grid, Tbd in the argument list (of which only Tbd and Stateout are used anyway), it would be better to pass in the components phy_f3d(:,:,5), phy_f3d(:,:,6), gt0(:,:) and gq0(:,:,1) using their respective standard names (see GFS_typedefs.F90) and giving them meaningful local names.
| !> \section arg_table_cu_gf_driver_pre_run Argument Table | ||
| !! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | | ||
| !! |----------------|--------------------------------------------------------|--------------------------------------------------------------------------|---------------|------|-------------------|-----------|--------|----------| | ||
| !! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | |
There was a problem hiding this comment.
see above comment for cu_gf_driver_post_run (replace GFS derived data types with individual components)
| @@ -0,0 +1,4754 @@ | |||
| module cu_gf_deep | |||
There was a problem hiding this comment.
this is a pretty minor request, but it would be great to declare all variables/subroutines as private and only those variables and subroutines used as public. For instance, adding
private
public :: LIST OF VARIABLES AND SUBROUTINES THAT GET USED BY THE CU_GF_DRIVER MODULE
|
Hi Dom,
Thanks a lot for your comments and suggestions. I will work on it.
Best Wishes
Haiqin
…On Thu, Aug 9, 2018 at 10:13 AM, Dom Heinzeller ***@***.***> wrote:
***@***.**** commented on this pull request.
------------------------------
In physics/cu_gf_deep.F90
<#139 (comment)>:
> @@ -0,0 +1,4754 @@
+module cu_gf_deep
this is a pretty minor request, but it would be great to declare all
variables/subroutines as private and only those variables and subroutines
used as public. For instance, adding
private
public :: LIST OF VARIABLES AND SUBROUTINES THAT GET USED BY THE CU_GF_DRIVER MODULE
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#139 (review)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/Ak4AOOkRdOb1thx1FTPK0rPaSc3F7pnyks5uPF-ugaJpZM4V0sw5>
.
|
|
Sure, no problems. I am still working my way through, but all in all your work looks great. |
|
|
||
| !> \brief brief description of the subroutine | ||
| !! | ||
| !! \section arg_table_sasas_deep_init argument table |
There was a problem hiding this comment.
same as for cu_gf_deep, no variable table needed here
|
|
||
| !> \brief brief description of the subroutine | ||
| !! | ||
| !! \section arg_table_sasas_deep_finalize argument table |
There was a problem hiding this comment.
no variable table needed here
| @@ -0,0 +1,866 @@ | |||
| ! module cup_gf_sh will call shallow convection as described in grell and | |||
| ! freitas (2016). input variables are: | |||
There was a problem hiding this comment.
As for cu_gf_deep: this is a pretty minor request, but it would be great to declare all variables/subroutines as private and only those variables and subroutines used as public. For instance, adding
private
public :: LIST OF VARIABLES AND SUBROUTINES THAT GET USED BY THE CU_GF_DRIVER MODULE
climbfuji
left a comment
There was a problem hiding this comment.
Great job overall, I noted a few issues and a few nice to haves.
|
Superseded by #166. |
The change gets around snow initialization with the use of RUC LSM
Create the new branch of gfcps to include the subroutines of Grell-Freitas cps for CCPP-FV3.