Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

Understading lower_boundary_condition and use_bedrock. Mismatch between nlevsoi in surface dataset and CLM5.0 output.

Status
Not open for further replies.

Tanja

New Member
I am running CLM5.0 in single-point mode.

I have changed the lower_boundary_condition from 2 to 3, and thereby I also had to change use_bedrock from .true. to .false.

Can somebody please help me with a reference for the lower_boundary_condition = 3 (water table head-based lower boundary condition w/ aquifer layer)? I have not been able to find descriptions of this boundary condition in the CLM manual or any references to articles.

In continuation of above question I would like to get the water flux between soil layers as output, especially the recharge to the aquifer. Is this possible? Is Qdrai still the lateral flux when using lower_boundary_condition=2 and use_bedrock=.false.?

I created my own surface dataset using mksurfdata_map. The surface dataset created has nlevsoi=10. In CLM5.0 I use default soil_layerstruct=20SL_8.5m (or do I when setting use_bedrock to .false.?). That means that the surface dataset has 10 layers (does this follow the 10SL_3.5m soil layer structure?) in which I can calibrate the PCT_SAND/PCT_CLAY ect., while the output e.g. H2OSOI is given in 20 different soil layers to 8.5m. This does not match. With this setup I do not know the soiltexture below 3.5 meters. Still, I am able to run CLM5.0 with this setup, and get output of H2OSOI from 20 soil layers. How do I create a surface dataset with nlevsoi=20, using clm5.0 physics?

It is written in the CLM5.0 documentation that mksurfdata_map is both a version for clm4_0 and clm5.0. However, I can only see one version in the folder $CTSMROOT/tools/mkmapdata_map.
The CLM5.0 documentation also refer to a section called Creating mapping files that mksurfdata_map. I cannot find this section in the documentation.
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
I'll have to get someone else to answer the questions about lower_boundary_condition.

Although the CLM5 surface datasets have nlevsoi=10, using the default 20SL_8.5m results in the PCT_SAND and PCT_CLAY for the lower 10 layers being set to the values for the 10th layer. You can find this in the code in src/biogeophys/SoilStateInitTimeConstMod.F90


! duplicate clay and sand values from 10th soil layer
if (lev <= nlevsoi) then
clay = clay3d(g,lev)
sand = sand3d(g,lev)
om_frac = (organic3d(g,lev)/organic_max)**2._r8
else
clay = clay3d(g,nlevsoi)
sand = sand3d(g,nlevsoi)
om_frac = 0._r8
endif

Some of the documentation regarding surface datasets is indeed a bit contradictory. I think this statement in the User's Guide is true:

"The tools produce files that can be used for CLM4.5 and CLM5.0. They do NOT produce files that can be used for CLM4.0. If you need files for CLM4.0, you’ll need to use a previous version of CLM."

The other text that implies the tools will work for CLM4 is false.

Some of the links are broken. The section regarding creating mapping files is here:

 

swensosc

New Member
I think lower_boundary_condition = 3 was included to give behavior similar to the CLM4 behavior, except that the new soilwater_moisture_form routine was used instead of the soilwater_zengdecker2009 routine. The flux from the bottom would be given by the QCHARGE variable. QDRAI is always the lateral flux of water that is sent to the routing submodel. You would have to add the fluxes between layers yourself by creating global variables and having new history variables.
 

Tanja

New Member
Thank you very much for your answers. I am very pleased.

In continuation of my former question about QDRAI I would like to set QDRAI to zero, and still use lower_boundary condition=3. The baseflow_scalar namelist variable (which could set baseflow/drainage to zero) is not avaliable when using lower_boundary_condition=3. How do I set baseflow (lateral flux of water to routing submodel/QDRAI) to zero?

I can see that there is a module called /clm5.0/src/biogeophys/HydrologyNoDrainageMod.F90. Could I use this module instead for HydrologyDrainageMod.F90 (which I think is used right now?)? but how do I change the module used?
 

swensosc

New Member
In the old DRAINAGE routine that is used with the aquifer layer, there is a variable called rsub_top_max that acts in the same way as the baseflow_scalar variable. You should be able to change rsub_top_max to zero to do what you want.
 
Status
Not open for further replies.
Top