Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,7 @@ if ($print>=2) {
# Composition of air
add_default($nl, 'dry_air_species');
add_default($nl, 'water_species_in_air');
add_default($nl, 'compute_enthalpy_flux');
# Spectral Element dycore
my $dyn = $cfg->get('dyn');

Expand Down Expand Up @@ -3891,6 +3892,14 @@ if (!$simple_phys) {
add_default($nl, 'zmconv_capelmt');
add_default($nl, 'zmconv_tau');
add_default($nl, 'zmconv_parcel_hscale');
#+tht

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove all of these comments

add_default($nl, 'zmconv_tht_thermo');
add_default($nl, 'zmconv_retrigger' );
add_default($nl, 'zmconv_tiedke_lnd');
add_default($nl, 'zmconv_entrmn' );
add_default($nl, 'zmconv_alfadet' );
add_default($nl, 'zmconv_plclmin' );
#-tht
}

# moist convection rainwater coefficients
Expand Down
10 changes: 10 additions & 0 deletions bld/namelist_files/namelist_defaults_cam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2787,6 +2787,14 @@ See https://github.com/NorESMhub/noresm3_dev_simulations/discussions/78

<zmconv_parcel_pbl > .false. </zmconv_parcel_pbl>
<zmconv_parcel_hscale > 0.5 </zmconv_parcel_hscale>
<!-- +tht zm parameters-->
<zmconv_tiedke_lnd> 1.0 </zmconv_tiedke_lnd>
<zmconv_tht_thermo> .false. </zmconv_tht_thermo>
<zmconv_retrigger> .false. </zmconv_retrigger>
<zmconv_entrmn> 2e-4 </zmconv_entrmn>
<zmconv_alfadet> 0.1 </zmconv_alfadet>
<zmconv_plclmin> 6.e2 </zmconv_plclmin>
<!-- -tht zm parameters-->

<!-- Cloud sedimentation -->

Expand Down Expand Up @@ -2997,6 +3005,8 @@ See https://github.com/NorESMhub/noresm3_dev_simulations/discussions/78
<water_species_in_air microphys="mg2" >'Q','CLDLIQ','CLDICE','RAINQM','SNOWQM' </water_species_in_air>
<water_species_in_air microphys="mg3" >'Q','CLDLIQ','CLDICE','RAINQM','SNOWQM','GRAUQM'</water_species_in_air>

<compute_enthalpy_flux> .false. </compute_enthalpy_flux>

<!-- ================================================================== -->
<!-- Defaults for FV3 -->
<!-- ================================================================== -->
Expand Down
111 changes: 42 additions & 69 deletions bld/namelist_files/namelist_definition.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2275,7 +2275,7 @@ Default: 0,-24,-24,-24,-24,-24,-24,-24,-24,-24
group="cam_history_nl" valid_values="">
If interpolate_output(k) = .true., then the k'th history file will be
interpolated to a lat/lon grid before output.
Default: .false.,.false.,.false.,.false.,.false.,.false.,.false.,.false.,.false.,.false.
Default: .false.
</entry>

<entry id="interpolate_nlat" type="integer(10)" category="history"
Expand Down Expand Up @@ -3023,74 +3023,8 @@ level from 100 to 125 hPa applied only in the polar regions (false).
Default: .true.
</entry>

<!-- Secondary ice production -->
<entry id="rafsip_on" type="logical" category="microphys"
group="sec_ice_nl" valid_values="" >
If .true., compute secondary ice production using random forests method.
Default: .true.
</entry>

<entry id="forestfileALL" type="char*256" input_pathname="abs" category="microphys"
group="sec_ice_nl" valid_values="" >
ML parameters for the forestALL RFR model.
Georgakaki, P., &amp; Nenes, A. (2024).
RaFSIP: Parameterizing ice multiplication in models using a machine learning
approach. Journal of Advances in Modeling Earth Systems, 16,
e2023MS003923.
https://doi.org/10.1029/2023MS003923
Default: None
</entry>

<entry id="forestfileBRDS" type="char*256" input_pathname="abs" category="microphys"
group="sec_ice_nl" valid_values="" >
ML parameters for the forestBRDS RFR model.
Georgakaki, P., &amp; Nenes, A. (2024).
RaFSIP: Parameterizing ice multiplication in models using a machine learning
approach. Journal of Advances in Modeling Earth Systems, 16,
e2023MS003923.
https://doi.org/10.1029/2023MS003923
Default: None
</entry>

<entry id="forestfileBRHM" type="char*256" input_pathname="abs" category="microphys"
group="sec_ice_nl" valid_values="" >
ML parameters for the forestBRHM RFR model.
Georgakaki, P., &amp; Nenes, A. (2024).
RaFSIP: Parameterizing ice multiplication in models using a machine learning
approach. Journal of Advances in Modeling Earth Systems, 16,
e2023MS003923.
https://doi.org/10.1029/2023MS003923
Default: None
</entry>

<entry id="forestfileBR" type="char*256" input_pathname="abs" category="microphys"
group="sec_ice_nl" valid_values="" >
ML parameters for the forestBR RFR model.
Georgakaki, P., &amp; Nenes, A. (2024).
RaFSIP: Parameterizing ice multiplication in models using a machine learning
approach. Journal of Advances in Modeling Earth Systems, 16,
e2023MS003923.
https://doi.org/10.1029/2023MS003923
Default: None
</entry>

<entry id="forestfileBRwarm" type="char*256" input_pathname="abs" category="microphys"
group="sec_ice_nl" valid_values="" >
ML parameters for the forestBRwarm RFR model.
Georgakaki, P., &amp; Nenes, A. (2024).
RaFSIP: Parameterizing ice multiplication in models using a machine learning
approach. Journal of Advances in Modeling Earth Systems, 16,
e2023MS003923.
https://doi.org/10.1029/2023MS003923
Default: None
</entry>

<entry id="rafsip_diags" type="char*4" category="history"
group="sec_ice_nl" valid_values="None,SIP,All" >
SIP: Total secondary ice production amount and it's components
All: sip outputs plus inputs to SIP computation (except temperature)
default: none
</entry>



<!-- hkconv Moist Convection -->
<entry id="hkconv_cmftau" type="real" category="conv"
Expand Down Expand Up @@ -3300,6 +3234,12 @@ Tunable parcel temperature perturbation in ZM deep convection scheme in units of
Default: 0.5K perturbation
</entry>

<entry id="zmconv_tiedke_lnd" type="real" category="conv"
group="zmconv_nl" valid_values="" >
tht: parcel temp perturbation over land in ZM deep convection scheme in units of (K).
Default: 1.0K perturbation
</entry>

<entry id="zmconv_capelmt" type="real" category="conv"
group="zmconv_nl" valid_values="" >
Tunable triggering threshold for convection in ZM deep scheme in units of (J kg-1).
Expand All @@ -3324,6 +3264,32 @@ Convective adjustment timescale in units of (s)
Default: 3600.0 s
</entry>

<entry id="zmconv_tht_thermo" type="logical" category="conv"
group="zmconv_nl" valid_values="" >
tht: use moist td to compute plume-ensemble properties
Default: .false.
</entry>
<entry id="zmconv_retrigger" type="logical" category="conv"
group="zmconv_nl" valid_values="" >
tht: iterate plume-ensemble computation and trigger functions
Default: .false.
</entry>
<entry id="zmconv_entrmn" type="real" category="conv"
group="zmconv_nl" valid_values="" >
tht: previously undeclared par: max entr. rate for plume-ens

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please spell this out without abbreviations and unhelpful comments. Also, what are the units?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unknown / none. Not a new parameter, but previously hardcoded in ZM

Default: 2e-4
</entry>
<entry id="zmconv_alfadet" type="real" category="conv"
group="zmconv_nl" valid_values="" >
tht: previously undeclared param: detrainment/entrainment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please spell this out without abbreviations and unhelpful comments. Also, what are the units?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unit: unknown / none. Not a new parameter, but previously hardcoded in ZM

Default: 0.1
</entry>
<entry id="zmconv_plclmin" type="real" category="conv"
group="zmconv_nl" valid_values="" >
tht: previously undeclared param: min LCL pressure to allow zm

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please spell this out without abbreviations and unhelpful comments. Also, what are the units?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unit: unknown / none. Not a new parameter, but previously hardcoded in ZM

Default: 6e2 mbar
</entry>

<!-- Cloud sedimentation -->

<entry id="cldsed_ice_stokes_fac" type="real" category="cldsed"
Expand Down Expand Up @@ -8223,6 +8189,13 @@ mass and thermodynamic properties.
Default: Set by build-namelist.
</entry>

<entry id="compute_enthalpy_flux" type="logical" category="physconst"
group="air_composition_nl" valid_values="" >
Enthalpy flux terms explicitly computed and added in atmosphere and
passed to MOM6
Default: TRUE
</entry>

<!-- SE dycore -->

<entry id="se_fine_ne" type="integer" category="se"
Expand Down
17 changes: 16 additions & 1 deletion src/physics/cam7/micro_pumas_cam.F90
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ module micro_pumas_cam
qrain_idx=-1, qsnow_idx=-1, &
nrain_idx=-1, nsnow_idx=-1, &
qcsedten_idx=-1, qrsedten_idx=-1, &
qisedten_idx=-1, qssedten_idx=-1, &
qisedten_idx=-1, qssedten_idx=-1, qgsedten_idx=-1, & !+tht

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove these type of comments

vtrmc_idx=-1, umr_idx=-1, &
vtrmi_idx=-1, ums_idx=-1, &
qcsevap_idx=-1, qisevap_idx=-1
Expand Down Expand Up @@ -816,6 +816,14 @@ subroutine micro_pumas_cam_register
call pbuf_add_field('UMS', 'physpkg', dtype_r8, (/pcols,pver/), ums_idx)
call pbuf_add_field('QCSEVAP', 'physpkg', dtype_r8, (/pcols,pver/), qcsevap_idx)
call pbuf_add_field('QISEVAP', 'physpkg', dtype_r8, (/pcols,pver/), qisevap_idx)
!+tht

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All these comments are unnecessary and distracting. Please remove them.

else
call pbuf_add_field('QCSEDTEN', 'physpkg', dtype_r8, (/pcols,pver/), qcsedten_idx)
call pbuf_add_field('QRSEDTEN', 'physpkg', dtype_r8, (/pcols,pver/), qrsedten_idx)
call pbuf_add_field('QISEDTEN', 'physpkg', dtype_r8, (/pcols,pver/), qisedten_idx)
call pbuf_add_field('QSSEDTEN', 'physpkg', dtype_r8, (/pcols,pver/), qssedten_idx)
call pbuf_add_field('QGSEDTEN', 'physpkg', dtype_r8, (/pcols,pver/), qgsedten_idx)
!-tht
end if

end subroutine micro_pumas_cam_register
Expand Down Expand Up @@ -1511,6 +1519,7 @@ subroutine micro_pumas_cam_init(pbuf2d)
if (qrsedten_idx > 0) call pbuf_set_field(pbuf2d, qrsedten_idx, 0._r8)
if (qisedten_idx > 0) call pbuf_set_field(pbuf2d, qisedten_idx, 0._r8)
if (qssedten_idx > 0) call pbuf_set_field(pbuf2d, qssedten_idx, 0._r8)
if (qgsedten_idx > 0) call pbuf_set_field(pbuf2d, qgsedten_idx, 0._r8) !+tht
if (vtrmc_idx > 0) call pbuf_set_field(pbuf2d, vtrmc_idx, 0._r8)
if (umr_idx > 0) call pbuf_set_field(pbuf2d, umr_idx, 0._r8)
if (vtrmi_idx > 0) call pbuf_set_field(pbuf2d, vtrmi_idx, 0._r8)
Expand Down Expand Up @@ -1919,6 +1928,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf)
real(r8) :: qrsedtenout_grid(pcols,pver)
real(r8) :: qisedtenout_grid(pcols,pver)
real(r8) :: qssedtenout_grid(pcols,pver)
real(r8) :: qgsedtenout_grid(pcols,pver)!+tht
real(r8) :: vtrmcout_grid(pcols,pver)
real(r8) :: umrout_grid(pcols,pver)
real(r8) :: vtrmiout_grid(pcols,pver)
Expand Down Expand Up @@ -1993,6 +2003,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf)
real(r8), pointer :: qrsedtenout_grid_ptr(:,:)
real(r8), pointer :: qisedtenout_grid_ptr(:,:)
real(r8), pointer :: qssedtenout_grid_ptr(:,:)
real(r8), pointer :: qgsedtenout_grid_ptr(:,:) !+tht
real(r8), pointer :: vtrmcout_grid_ptr(:,:)
real(r8), pointer :: umrout_grid_ptr(:,:)
real(r8), pointer :: vtrmiout_grid_ptr(:,:)
Expand Down Expand Up @@ -2258,6 +2269,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf)
if (qrsedten_idx > 0) call pbuf_get_field(pbuf, qrsedten_idx, qrsedtenout_grid_ptr)
if (qisedten_idx > 0) call pbuf_get_field(pbuf, qisedten_idx, qisedtenout_grid_ptr)
if (qssedten_idx > 0) call pbuf_get_field(pbuf, qssedten_idx, qssedtenout_grid_ptr)
if (qgsedten_idx > 0) call pbuf_get_field(pbuf, qgsedten_idx, qgsedtenout_grid_ptr) !+tht
if (vtrmc_idx > 0) call pbuf_get_field(pbuf, vtrmc_idx, vtrmcout_grid_ptr)
if (umr_idx > 0) call pbuf_get_field(pbuf, umr_idx, umrout_grid_ptr)
if (vtrmi_idx > 0) call pbuf_get_field(pbuf, vtrmi_idx, vtrmiout_grid_ptr)
Expand Down Expand Up @@ -2987,6 +2999,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf)
qisevapout_grid(:ncol,:top_lev-1) = 0._r8
qrsedtenout_grid(:ncol,:top_lev-1) = 0._r8
qssedtenout_grid(:ncol,:top_lev-1) = 0._r8
qgsedtenout_grid(:ncol,:top_lev-1) = 0._r8 !+tht
umrout_grid(:ncol,:top_lev-1) = 0._r8
umsout_grid(:ncol,:top_lev-1) = 0._r8
psacro_grid(:ncol,:top_lev-1) = 0._r8
Expand Down Expand Up @@ -3077,6 +3090,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf)
ns_grid = state_loc%q(:,:,ixnumsnow)
qrsedtenout_grid(:ncol,top_lev:) = proc_rates%qrsedten
qssedtenout_grid(:ncol,top_lev:) = proc_rates%qssedten
qgsedtenout_grid(:ncol,top_lev:) = proc_rates%qgsedten !+tht
umrout_grid(:ncol,top_lev:) = proc_rates%umr
umsout_grid(:ncol,top_lev:) = proc_rates%ums

Expand Down Expand Up @@ -3569,6 +3583,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf)
if (qrsedten_idx > 0) qrsedtenout_grid_ptr = qrsedtenout_grid
if (qisedten_idx > 0) qisedtenout_grid_ptr = qisedtenout_grid
if (qssedten_idx > 0) qssedtenout_grid_ptr = qssedtenout_grid
if (qgsedten_idx > 0) qgsedtenout_grid_ptr = qgsedtenout_grid !+tht
if (vtrmc_idx > 0) vtrmcout_grid_ptr = vtrmcout_grid
if (umr_idx > 0) umrout_grid_ptr = umrout_grid
if (vtrmi_idx > 0) vtrmiout_grid_ptr = vtrmiout_grid
Expand Down
Loading