diff --git a/physics/GFS_ccpp_scheme_sim_pre.F90 b/physics/GFS_ccpp_scheme_sim_pre.F90 index a5f6f0cfa..61ab573a3 100644 --- a/physics/GFS_ccpp_scheme_sim_pre.F90 +++ b/physics/GFS_ccpp_scheme_sim_pre.F90 @@ -1,8 +1,12 @@ ! ######################################################################################## ! -! Interstitial CCPP scheme to couple UFS physics to ccpp_scheme_simulator. -! ) load: read and load data into type used by ccpp_scheme_simulator -! ) _run: prepare GFS diagnostic physics tendencies for ccpp_scheme_simulator +! Description: Interstitial CCPP scheme to couple UFS physics to ccpp_scheme_simulator. +! +! Contains: +! - load_ccpp_scheme_sim(): read and load data into type used by ccpp_scheme_simulator. +! called once during model initialization +! - GFS_ccpp_scheme_sim_pre_run(): prepare GFS diagnostic physics tendencies for +! ccpp_scheme_simulator. ! ! ######################################################################################## module GFS_ccpp_scheme_sim_pre @@ -102,8 +106,8 @@ subroutine GFS_ccpp_scheme_sim_pre_run(dtend, ntqv, dtidx, dtp, index_of_process end subroutine GFS_ccpp_scheme_sim_pre_run ! ###################################################################################### - subroutine load_ccpp_scheme_sim(nlunit, nml_file, physics_process, & - iactive_T, iactive_u, iactive_v, iactive_q, errmsg, errflg) + subroutine load_ccpp_scheme_sim(nlunit, nml_file, physics_process, iactive_T, & + iactive_u, iactive_v, iactive_q, errmsg, errflg) ! Inputs integer, intent (in) :: nlunit @@ -121,7 +125,8 @@ subroutine load_ccpp_scheme_sim(nlunit, nml_file, physics_process, & logical :: exists, do_ccpp_scheme_sim integer :: nprc_sim - ! For each process there is a corresponding namelist entry, which is constructed as follows: + ! For each process there is a corresponding namelist entry, which is constructed as + ! follows: ! {use_scheme_sim[0(no)/1(yes)], time_split[0(no)/1(yes)], order[1:nPhysProcess]} integer, dimension(3) :: & prc_LWRAD_cfg = (/0,0,0/), & @@ -133,8 +138,8 @@ subroutine load_ccpp_scheme_sim(nlunit, nml_file, physics_process, & prc_cldMP_cfg = (/0,0,0/) ! Namelist - namelist / ccpp_scheme_sim_nml / do_ccpp_scheme_sim, scheme_sim_file, nprc_sim, & - prc_LWRAD_cfg, prc_SWRAD_cfg, prc_PBL_cfg, prc_GWD_cfg, prc_SCNV_cfg, & + namelist / ccpp_scheme_sim_nml / do_ccpp_scheme_sim, scheme_sim_file, nprc_sim, & + prc_LWRAD_cfg, prc_SWRAD_cfg, prc_PBL_cfg, prc_GWD_cfg, prc_SCNV_cfg, & prc_DCNV_cfg, prc_cldMP_cfg errmsg = '' diff --git a/physics/ccpp_scheme_simulator.F90 b/physics/ccpp_scheme_simulator.F90 index b825b8403..f3a6372ac 100644 --- a/physics/ccpp_scheme_simulator.F90 +++ b/physics/ccpp_scheme_simulator.F90 @@ -1,8 +1,20 @@ ! ######################################################################################## -! -! CCPP scheme to replace physics schemes with simulated data tendencies. ! -! Description: +! Description: This scheme simulates the evolution of the internal physics state +! represented by a CCPP Suite Definition File (SDF). +! +! To activate this scheme it must be a) embedded within the SDF and b) activated through +! the physics namelist. +! The derived-data type "base_physics_process" contains the metadata needed to reconstruct +! the temporal evolution of the state. An array of base_physics_process, physics_process, +! is populated by the host during initialization and passed to the physics. Additionally, +! this type holds any data, or type-bound procedures, required by the scheme simulator(s). +! +! For this initial demonstration we are using 2-dimensional (height, time) forcing data, +! which is on the same native vertical grid as the SCM. The dataset has a temporal +! resolution of 1-hour, created by averaging all local times from a Tropical Warm Pool +! International Cloud Experiment (TWPICE) case. This was to create a dataset with a +! (constant) diurnal cycle. ! ! ######################################################################################## module ccpp_scheme_simulator @@ -160,9 +172,9 @@ subroutine ccpp_scheme_simulator_run(do_ccpp_scheme_sim, kdt, nCol, nLay, dtp, j endif else if (physics_process(iprc)%time_split) then - write(*,'(a25,i2,a4,i2,a5,a10,a35)') 'CCPP suite simulator: ',iprc,' of ',proc_end,' ',physics_process(iprc)%name,' time split scheme (active)' + write(*,'(a25,i2,a4,i2,a5,a10,a35)') 'CCPP suite simulator: ',iprc,' of ',proc_end,' ',physics_process(iprc)%name,'time split scheme (active)' else - write(*,'(a25,i2,a4,i2,a5,a10,a35)') 'CCPP suite simulator: ',iprc,' of ',proc_end,' ',physics_process(iprc)%name,' process split scheme (active)' + write(*,'(a25,i2,a4,i2,a5,a10,a35)') 'CCPP suite simulator: ',iprc,' of ',proc_end,' ',physics_process(iprc)%name,'process split scheme (active)' endif write(*,'(a25,i2)') ' # prog. vars.: ',physics_process(1)%nprg_active endif