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

Insensible soil parameters of soil layer 2

Status
Not open for further replies.

Tanja

New Member
I am running CLM5.0 in single-point mode. I want to calibrate CLM.

I did a very simple sensitivity analysis, where PCT_SAND, PCT_CLAY and ORGANIC for all 10 soil layers were increased 10% one at a time. The objective function was the sum of the residuals between EFLX_LH_TOT and observed latent heat flux squared. I found that PCT_SAND, PCT_CLAY and ORGANIC for all 10 soil layers changed the objective function - except parameters associated with soil layer 2. This apply to all three soil parameters, PCT_SAND, PCT_CLAY and ORGANIC for layer 2. This I find very suspicious and incomprehensible. A screenshot of my preliminary sensitivity analysis is attached for understanding. The odd part is marked with red.

I hope somebody can give me a hint of why this happens. My best explanation is that the thickness for layer 2 is zero, but I looked into the soil layer definition in initVerticalMod.F90, and I think it should be fine.

sensitivity.png
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
I can't think of any reason why that would be so.
I tried changing PCT_CLAY for layer 2 in my single-point test case and answers did change.
Is the sensitivity identically zero? I see that the sensitivity for the stem near-infrared transmittance also appears to be zero, is that expected?
Are you changing the values in the code itself or in the surface dataset? Maybe your changes are being overwritten somehow.
 

Tanja

New Member
Thank you Keith. I see that you output from model change when changing PCT_CLAY for layer 2, but my still don´t.

Yes the sensitivity of PCT_SAND, PCT_CLAY and ORGANIC in layer 2 is identically zero. The insensitivity of stem near-infrared transmittance was due to a typing error in my script.

I have done several test runs, the three test runs described here is identical, except for the compset.

Compset aliasCompset longnameNote
1)I2000Clm50BgcCropGs
2000_DATM%GSWP3v1_CLM50%BGC-CROP_SICE_SOCN_MOSART_SGLC_SWAV

No sensitivity of parameters belonging to soil layer 2
2)I2000Clm50BgcCropRtmGs2000_DATM%GSWP3v1_CLM50%BGC-CROP_SICE_SOCN_RTM_SGLC_SWAVNo sensitivity of parameters belonging to soil layer 2
3)2000_DATM%GSWP3v1_CLM45%BGC-CROP_SICE_SOCN_RTM_SGLC_SWAVSensitivity of parameters belonging to soil layer 2


Compset 1) is what I have used until now. Compset 2) and 3) I made to do test runs. The only difference between 2) and 3), is that 2) is using CLM50 and 3) is using CLM45. As can be seen, the only compset that is sensitive to parameters associated with soil layer 2 is the compset using CLM45.

From this I consider if the insensitivity of parameters associated to layer 2 has something to do with me using CLM50? Using CLM45 does not show this insensitivity. I have tried to look through the code in ~/clm5/src/, but I am not able to locate from where the insensitivity originate.


In another type of test runs using I2000Clm50BgcCropGs, I realized that;
  • changing parameters belonging to layer 1 changed model output (e.g. WATSAT) of layer 1,
  • changing parameters belonging to layer 2 changed nothing
  • changing parameters belonging to layer 3 changed model output (e.g. WATSAT) of layer 2
  • changing parameters belonging to layer 4 changed model output (e.g. WATSAT) of layer 3
Somehow it seems like the parameter values has “shifted up” a layer from layer 2 and downwards. Thereby skipping parameters of layer 2. Where in the code are the parameter values from the surface-file attached to the individual soil layers?

I really hope somebody can help me. At least which files to look in to find the code which attach parameters to individual soil layers, and where the layers are defined?

Regards Tanja
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
The percent sand and clay are read in from the surface dataset in src/biogeophys/SoilStateInitTimeConstMod.F90:

! Read in sand and clay data

call ncd_io(ncid=ncid, varname='PCT_SAND', flag='read', data=sand3d, dim1name=grlnd, readvar=readvar)
if (.not. readvar) then
call endrun(msg=' ERROR: PCT_SAND NOT on surfdata file'//errMsg(sourcefile, __LINE__))
end if

call ncd_io(ncid=ncid, varname='PCT_CLAY', flag='read', data=clay3d, dim1name=grlnd, readvar=readvar)
if (.not. readvar) then
call endrun(msg=' ERROR: PCT_CLAY NOT on surfdata file'//errMsg(sourcefile, __LINE__))
end if

The sand and clay values are used further down in the module to assign properties to each layer (e.g., watsat) using a pedotransfer subroutine:

call pedotransf(ipedof, sand, clay, &
soilstate_inst%watsat_col(c,lev), soilstate_inst%bsw_col(c,lev), soilstate_inst%sucsat_col(c,lev), xksat)

I suggest trying to print out values for the second layer starting with sand and clay to see if your changes are appearing in the code and then actually changing the layer properties. You can use write statements of the following form to print out data to the log files, e.g., for a scalar sand:

write(iulog,*) 'sand: ',sand

One difference between CLM5 and CLM45 is that there is variable (spatially) depth to bedrock in CLM5. But I don't think bedrock is allowed to be as close to the surface as the second layer.
 
Status
Not open for further replies.
Top