Skip to content

Commit c730759

Browse files
authored
Merge pull request #3391 from swensosc/move_nml_parameters
b4b-dev: Move nml parameters (changes paramfile)
2 parents 236409b + dbe13df commit c730759

File tree

11 files changed

+175
-207
lines changed

11 files changed

+175
-207
lines changed

bld/CLMBuildNamelist.pm

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1893,11 +1893,6 @@ sub process_namelist_inline_logic {
18931893
#####################################
18941894
setup_logic_canopy($opts, $nl_flags, $definition, $defaults, $nl);
18951895

1896-
########################################
1897-
# namelist group: soilhydrology_inparm #
1898-
########################################
1899-
setup_logic_hydrology_params($opts, $nl_flags, $definition, $defaults, $nl);
1900-
19011896
#####################################
19021897
# namelist group: irrigation_inparm #
19031898
#####################################
@@ -3354,28 +3349,6 @@ sub setup_logic_supplemental_nitrogen {
33543349

33553350
#-------------------------------------------------------------------------------
33563351

3357-
sub setup_logic_hydrology_params {
3358-
#
3359-
# Logic for hydrology parameters
3360-
#
3361-
my ($opts, $nl_flags, $definition, $defaults, $nl) = @_;
3362-
3363-
my $lower = $nl->get_value( 'lower_boundary_condition' );
3364-
my $var = "baseflow_scalar";
3365-
if ( $lower == 1 || $lower == 2 ) {
3366-
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl,
3367-
$var, 'lower_boundary_condition' => $lower );
3368-
}
3369-
my $val = $nl->get_value( $var );
3370-
if ( defined($val) ) {
3371-
if ( $lower != 1 && $lower != 2 ) {
3372-
$log->fatal_error("baseflow_scalar is only used for lower_boundary_condition of flux or zero-flux");
3373-
}
3374-
}
3375-
}
3376-
3377-
#-------------------------------------------------------------------------------
3378-
33793352
sub setup_logic_irrigation_parameters {
33803353
my ($opts, $nl_flags, $definition, $defaults, $nl) = @_;
33813354

@@ -4866,18 +4839,6 @@ sub setup_logic_atm_forcing {
48664839
}
48674840
}
48684841

4869-
foreach $var ("precip_repartition_glc_all_snow_t",
4870-
"precip_repartition_glc_all_rain_t",
4871-
"precip_repartition_nonglc_all_snow_t",
4872-
"precip_repartition_nonglc_all_rain_t") {
4873-
if ( &value_is_true($nl->get_value("repartition_rain_snow")) ) {
4874-
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, $var);
4875-
} else {
4876-
if (defined($nl->get_value($var))) {
4877-
$log->fatal_error("$var can only be set if repartition_rain_snow is true");
4878-
}
4879-
}
4880-
}
48814842
}
48824843

48834844
#-------------------------------------------------------------------------------
@@ -5431,7 +5392,7 @@ sub write_output_files {
54315392
clm_soilhydrology_inparm dynamic_subgrid cnvegcarbonstate
54325393
finidat_consistency_checks dynpft_consistency_checks
54335394
clm_initinterp_inparm century_soilbgcdecompcascade
5434-
soilhydrology_inparm luna friction_velocity mineral_nitrogen_dynamics
5395+
luna friction_velocity mineral_nitrogen_dynamics
54355396
soilwater_movement_inparm rooting_profile_inparm
54365397
soil_resis_inparm bgc_shared canopyfluxes_inparm aerosol
54375398
clmu_inparm clm_soilstate_inparm clm_nitrogen clm_snowhydrology_inparm hillslope_hydrology_inparm hillslope_properties_inparm

bld/namelist_files/namelist_defaults_ctsm.xml

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -273,11 +273,6 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
273273
<soil_resis_method >1</soil_resis_method>
274274
<soil_resis_method phys="clm4_5" >0</soil_resis_method>
275275

276-
<!-- Soil hydrology -->
277-
<baseflow_scalar lower_boundary_condition="2">0.001d00</baseflow_scalar>
278-
<baseflow_scalar lower_boundary_condition="1">1.d-2</baseflow_scalar>
279-
<baseflow_scalar phys="clm4_5" lower_boundary_condition="2">1.d-2</baseflow_scalar>
280-
281276
<!-- Friction velocity -->
282277
<zetamaxstable use_biomass_heat_storage=".true." >2.0d00</zetamaxstable>
283278
<zetamaxstable phys="clm4_5" >2.0d00</zetamaxstable>
@@ -306,20 +301,6 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
306301

307302
<longwave_downscaling_limit>0.5</longwave_downscaling_limit>
308303

309-
<precip_repartition_nonglc_all_snow_t>0.</precip_repartition_nonglc_all_snow_t>
310-
<precip_repartition_nonglc_all_rain_t>2.</precip_repartition_nonglc_all_rain_t>
311-
<!-- For CLM5 and following, we assume rain at somewhat cooler temperatures. The main
312-
motivation is to increase glacier melt, which otherwise is too low in
313-
CESM2. The physical justification is that the 0 - 2 C ramp used elsewhere
314-
makes sense for typical atmospheric profiles; but over glaciers, inversions
315-
are more common, so it is more reasonable to expect rain despite
316-
below-freezing near-surface temperatures. -->
317-
<precip_repartition_glc_all_snow_t >-2.</precip_repartition_glc_all_snow_t>
318-
<precip_repartition_glc_all_rain_t >0.</precip_repartition_glc_all_rain_t>
319-
<!-- For CLM45, we used the same rain-snow partitioning for glaciers as for other landunits -->
320-
<precip_repartition_glc_all_snow_t phys="clm4_5" >0.</precip_repartition_glc_all_snow_t>
321-
<precip_repartition_glc_all_rain_t phys="clm4_5" >2.</precip_repartition_glc_all_rain_t>
322-
323304
<!-- lnd2atm defaults -->
324305
<melt_non_icesheet_ice_runoff >.true.</melt_non_icesheet_ice_runoff>
325306
<melt_non_icesheet_ice_runoff phys="clm4_5" >.false.</melt_non_icesheet_ice_runoff>
@@ -623,10 +604,10 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
623604
<!-- The default filenames are given relative to the root directory
624605
for the CLM2 data in the CESM distribution -->
625606
<!-- Plant function types (relative to {csmdata}) -->
626-
<paramfile phys="clm6_0" >lnd/clm2/paramdata/ctsm60_params.c260204.nc</paramfile>
627-
<paramfile phys="clm6_0" lnd_tuning_mode="clm6_0_cam7.0">ctsm60-cam70_params.c260204.nc</paramfile>
628-
<paramfile phys="clm5_0" >lnd/clm2/paramdata/clm50_params.c250311.nc</paramfile>
629-
<paramfile phys="clm4_5" >lnd/clm2/paramdata/clm45_params.c250311.nc</paramfile>
607+
<paramfile phys="clm6_0" >lnd/clm2/paramdata/ctsm60_params.c260303.nc</paramfile>
608+
<paramfile phys="clm6_0" lnd_tuning_mode="clm6_0_cam7.0">ctsm60-cam70_params.c260305.nc</paramfile>
609+
<paramfile phys="clm5_0" >lnd/clm2/paramdata/clm50_params.c260305.nc</paramfile>
610+
<paramfile phys="clm4_5" >lnd/clm2/paramdata/clm45_params.c260305.nc</paramfile>
630611

631612
<!-- ================================================================== -->
632613
<!-- FATES default parameter file -->

bld/namelist_files/namelist_definition_ctsm.xml

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -415,12 +415,6 @@ Max number of iterations used in subr. CanopyFluxes. For many years, 40 was the
415415
If TRUE use clm5 equation for fraction of intercepted precipitation
416416
</entry>
417417

418-
<entry id="baseflow_scalar" type="real" category="clm_physics"
419-
group="soilhydrology_inparm" valid_values="" >
420-
Scalar multiplier for base flow rate
421-
(ONLY used if lower_boundary_condition is not aquifer or table)
422-
</entry>
423-
424418
<entry id="soilwater_movement_method" type="integer" category="clm_physics"
425419
group="soilwater_movement_inparm" valid_values="0,1" >
426420
Index of solution method of Richards equation.
@@ -1728,30 +1722,6 @@ This parameter must be in the range [0,1]
17281722
Only relevant if glcmec_downscale_longwave is .true.
17291723
</entry>
17301724

1731-
<entry id="precip_repartition_glc_all_snow_t" type="real" category="clm_physics"
1732-
group="atm2lnd_inparm" valid_values="" >
1733-
Temperature below which all precipitation falls as snow, for glacier columns (deg C)
1734-
Only relevant if repartition_rain_snow is .true.
1735-
</entry>
1736-
1737-
<entry id="precip_repartition_glc_all_rain_t" type="real" category="clm_physics"
1738-
group="atm2lnd_inparm" valid_values="" >
1739-
Temperature above which all precipitation falls as rain, for glacier columns (deg C)
1740-
Only relevant if repartition_rain_snow is .true.
1741-
</entry>
1742-
1743-
<entry id="precip_repartition_nonglc_all_snow_t" type="real" category="clm_physics"
1744-
group="atm2lnd_inparm" valid_values="" >
1745-
Temperature below which all precipitation falls as snow, for non-glacier columns (deg C)
1746-
Only relevant if repartition_rain_snow is .true.
1747-
</entry>
1748-
1749-
<entry id="precip_repartition_nonglc_all_rain_t" type="real" category="clm_physics"
1750-
group="atm2lnd_inparm" valid_values="" >
1751-
Temperature above which all precipitation falls as rain, for non-glacier columns (deg C)
1752-
Only relevant if repartition_rain_snow is .true.
1753-
</entry>
1754-
17551725
<!-- ======================================================================================== -->
17561726
<!-- Namelist items controlling fields sent to atmosphere -->
17571727
<!-- ======================================================================================== -->

cime_config/testdefs/ExpectedTestFails.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@
184184
</test>
185185

186186
<test name="SMS_D_Ld5.5x5_amazon_rHDMA.I2000Clm60SpMizGs.izumi_nag.mizuroute-default">
187-
<phase name="BUILD">
187+
<phase name="MODEL_BUILD">
188188
<status>FAIL</status>
189189
<issue>ESCOMP/mizuRoute#614</issue>
190190
</phase>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_ciso_cwd_hr_params.c250311.nc'
1+
paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_ciso_cwd_hr_params.c260310.nc'
22
hist_fincl1 = 'CWDC_HR','C13_CWDC_HR','C14_CWDC_HR','CWD_HR_L2','CWD_HR_L2_vr','CWD_HR_L3','CWD_HR_L3_vr'
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
use_soil_matrixcn = .true.
2-
paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_params_cn30.c250311.nc'
2+
paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_params_cn30.c260310.nc'
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_ceta450_cn30_co2_slope30.c250326.nc'
1+
paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_ceta450_cn30_co2_slope30.c260310.nc'

src/biogeophys/SoilHydrologyMod.F90

Lines changed: 4 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ module SoilHydrologyMod
4040
save
4141
!
4242
! !PUBLIC MEMBER FUNCTIONS:
43-
public :: SoilHydReadNML ! Read in the Soil hydrology namelist
4443
public :: SetSoilWaterFractions ! Set diagnostic variables related to the fraction of water and ice in each layer
4544
public :: SetFloodc ! Apply gridcell flood water flux to non-lake columns
4645
public :: SetQflxInputs ! Set the flux of water into the soil from the top
@@ -62,13 +61,13 @@ module SoilHydrologyMod
6261
type, private :: params_type
6362
real(r8) :: aq_sp_yield_min ! Minimum aquifer specific yield (unitless)
6463
real(r8) :: n_baseflow ! Drainage power law exponent (unitless)
64+
real(r8) :: baseflow_scalar ! Scalar multiplier for base flow rate ()
6565
real(r8) :: perched_baseflow_scalar ! Scalar multiplier for perched base flow rate (kg/m2/s)
6666
real(r8) :: e_ice ! Soil ice impedance factor (unitless)
6767
end type params_type
6868
type(params_type), public :: params_inst
6969

7070
!-----------------------------------------------------------------------
71-
real(r8), private :: baseflow_scalar = 1.e-2_r8
7271
real(r8), parameter :: tolerance = 1.e-12_r8 ! tolerance for checking whether sublimation is greater than ice in top soil layer
7372

7473
integer, private :: head_gradient_method ! Method for calculating hillslope saturated head gradient
@@ -190,71 +189,14 @@ subroutine readParams( ncid )
190189
call readNcdioScalar(ncid, 'aq_sp_yield_min', subname, params_inst%aq_sp_yield_min)
191190
! Drainage power law exponent (unitless)
192191
call readNcdioScalar(ncid, 'n_baseflow', subname, params_inst%n_baseflow)
192+
! Scalar multiplier for base flow rate ()
193+
call readNcdioScalar(ncid, 'baseflow_scalar', subname, params_inst%baseflow_scalar)
193194
! Scalar multiplier for perched base flow rate (kg/m2/s)
194195
call readNcdioScalar(ncid, 'perched_baseflow_scalar', subname, params_inst%perched_baseflow_scalar)
195196
! Soil ice impedance factor (unitless)
196197
call readNcdioScalar(ncid, 'e_ice', subname, params_inst%e_ice)
197198

198199
end subroutine readParams
199-
200-
!-----------------------------------------------------------------------
201-
subroutine soilHydReadNML( NLFilename )
202-
!
203-
! !DESCRIPTION:
204-
! Read the namelist for soil hydrology
205-
!
206-
! !USES:
207-
use fileutils , only : getavu, relavu, opnfil
208-
use shr_nl_mod , only : shr_nl_find_group_name
209-
use spmdMod , only : masterproc, mpicom
210-
use shr_mpi_mod , only : shr_mpi_bcast
211-
use clm_varctl , only : iulog
212-
use shr_log_mod , only : errMsg => shr_log_errMsg
213-
!
214-
! !ARGUMENTS:
215-
character(len=*), intent(in) :: NLFilename ! Namelist filename
216-
!
217-
! !LOCAL VARIABLES:
218-
integer :: ierr ! error code
219-
integer :: unitn ! unit for namelist file
220-
221-
character(len=*), parameter :: subname = 'soilHydReadNML'
222-
character(len=*), parameter :: nmlname = 'soilhydrology_inparm'
223-
!-----------------------------------------------------------------------
224-
namelist /soilhydrology_inparm/ baseflow_scalar
225-
226-
! Initialize options to default values, in case they are not specified in
227-
! the namelist
228-
229-
230-
if (masterproc) then
231-
unitn = getavu()
232-
write(iulog,*) 'Read in '//nmlname//' namelist'
233-
call opnfil (NLFilename, unitn, 'F')
234-
call shr_nl_find_group_name(unitn, nmlname, status=ierr)
235-
if (ierr == 0) then
236-
read(unitn, nml=soilhydrology_inparm, iostat=ierr)
237-
if (ierr /= 0) then
238-
call endrun(msg="ERROR reading "//nmlname//"namelist"//errmsg(sourcefile, __LINE__))
239-
end if
240-
else
241-
call endrun(msg="ERROR could NOT find "//nmlname//"namelist"//errmsg(sourcefile, __LINE__))
242-
end if
243-
call relavu( unitn )
244-
end if
245-
246-
call shr_mpi_bcast (baseflow_scalar, mpicom)
247-
248-
if (masterproc) then
249-
write(iulog,*) ' '
250-
write(iulog,*) nmlname//' settings:'
251-
write(iulog,nml=soilhydrology_inparm)
252-
write(iulog,*) ' '
253-
end if
254-
255-
end subroutine soilhydReadNML
256-
257-
258200

259201
!-----------------------------------------------------------------------
260202
subroutine SetSoilWaterFractions(bounds, num_hydrologyc, filter_hydrologyc, &
@@ -2391,7 +2333,7 @@ subroutine SubsurfaceLateralFlow(bounds, &
23912333
! Non-hillslope columns
23922334
! baseflow is power law expression relative to bedrock layer
23932335
if(zwt(c) <= zi(c,nbedrock(c))) then
2394-
qflx_latflow_out(c) = ice_imped_col(c) * baseflow_scalar &
2336+
qflx_latflow_out(c) = ice_imped_col(c) * params_inst%baseflow_scalar &
23952337
* tan(rpi/180._r8*col%topo_slope(c))* &
23962338
(zi(c,nbedrock(c)) - zwt(c))**(params_inst%n_baseflow)
23972339
endif

0 commit comments

Comments
 (0)