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

Rainfed corn yield underestimation after 2000 and activation of potato crop in CLM.

uzairrahil

Mohammad Uzair Rahil
New Member
What version of the code are you using?
  • CTSM Version: alpha-ctsm5.2.mksrf.23_ctsm5.1.dev171
  • Resolution: 0.05° over Lower Michigan
  • Compset: IHISTCLM50_BGC_Crop
  • Meterological Forcing: CONUS404
Dear Scientists,

I am running CLM5 to simulate rainfed corn, soybean, and potato. I have encountered a few issues that I would appreciate your guidance on:

  1. Rainfed Corn Yield Underestimation
    The simulated rainfed corn yield tends to be underestimated after the year 2000. I have examined some key variables—such as BTRAN2, which suggests that water stress is not the cause (more than 0.7 in many random location in the growing period)—and also reviewed the phenology, which appears consistent with satellite-derived LAI (i.e., no phenology mismatch). I have attached examples for several representative locations. Could you please suggest additional diagnostics or possible reasons for this post-2000 underestimation?
  2. Potato Crop Activation
    I noticed that potato is listed as inactive in CLM5. Could you please provide guidance or documentation on how to activate or parameterize this crop type for simulation?

Any advice or references would be greatly appreciated.
1761077838096.png 1761077947227.png1761077881077.png
 

slevis

Moderator
Staff member
That's interesting about rainfed corn. Keep in mind that the model does not represent technological advances over time. Another consideration could be changing nitrogen availability.

In the CLM there's no potato parameterization to activate, so you would need to introduce such parameterization yourself.
 

samrabin

Sam Rabin
Member
Yes, technological advancement is always a possible issue in cases like this. That's discussed in Lombardozzi et al. (2020) as a reason for why our global trends aren't as steep as the observed. In this specific instance the adoption of Bt corn might be contributing.

Of course, it's also possible that something we do simulate isn't working well—perhaps something to do with total growing-season NPP and/or translocation of carbohydrates to the harvestable organ. Something is definitely odd with the stair-stepping behavior of CLM LAI in your timeseries graph.
 

uzairrahil

Mohammad Uzair Rahil
New Member
Thanks a lot, dear dr. @slevis and dr. @samrabin, for your insightful and comprehensive responses.

I am beginning to calibrate the model now for improved crop county-level crop yield, and I would like to seek your kind guidance on a few points before proceeding.
1- I have identified a set of potentially sensitive parameters and already have their default values. However, I am uncertain where to find reliable ranges (minimum and maximum) for these parameters. Could you please advise on the best sources or approaches to determine them?

2- I plan to use the Multiobjective Adaptive Surrogate Modeling–based Optimization (MO-ASMO) approach for calibration. Would the parameters I have collected be sufficient for this purpose, or would you recommend including additional ones?

3- In my simulations, corn yield aligns well with USDA data before 2000 but is underestimated afterward (picture shared). Given limited computational resources, I intend to select a 5-year calibration window. Would you recommend focusing on a recent period (e.g., 2000–2005), and if so, might this choice negatively affect the earlier period’s performance?

4- I wanna consider RMSE as the objective function, what others would you suggest?

5- I would also like to calibrate the potato, which is currently inactive in the model. Do you have any suggestions on how to activate and parameterize it? I plan to use the same set of parameters for calibration initially.

I truly appreciate your time and expertise. Your advice would be invaluable as I move forward with this calibration work.


parameter Description Unit Default value
basetBase TemperatureC
8​
i_vcadIntercept of the relationship between leaf N per Unit area and Vcmax25topumol Co2 m-2 s-1
3.21​
s_vcadSlop of the relationship between leaf N per unit area and Vcmax25topumol Co2 S-1gN-1
20.48​
laimxmaximum Leaf Area Index-
5​
planting_tempAverage 10-day temperature needed for plantingK
283.15​
psi50Water potential at 50% loss of conductancemm H2O
-340000​
 

samrabin

Sam Rabin
Member
Hi Mohammad,

(1) I don't have much experience calibrating those parameters, so I'm not sure where to look—sorry.

(2) I also don't have experience with that method, so I can't say for sure, but my instinct is that those parameters are as good as any.

(3) Calibrating to just a subsection of the historical data may indeed negatively affect performance in other periods. However, depending on what you're calibrating, it's possible that you might get lucky and only affect the post-2000 period. I would lean towards including as much of the observation period as possible, unless you only care about that one sub-period.

(4) RMSE makes a lot of sense, but RMSE of what? Yield is the obvious target, but you might also consider things like evapotranspiration or GPP/NPP if you can find observational datasets for those. It depends on what you care most about, though.

(5) Potato would be great! Activating it is easy with a recent version of CTSM (including the most recent version you get if you check out a fresh copy), using the set_paramfile tool:

Code:
tools/param_utils/set_paramfile -i /path/to/original_clm_params_file.nc -o /path/to/new_clm_params_file.nc -p potatoes,irrigated_potatoes mergetoclmpft=55,56

Then setting paramfile = '/path/to/new_clm_params_file.nc' in your user_nl_clm should give you a run with potato activated.
 

uzairrahil

Mohammad Uzair Rahil
New Member
Dear Dr. @samrabin ,
Thanks for the invaluble response. I checked out a fresh copy of CLM using:
git clone GitHub - ESCOMP/CTSM: Community Terrestrial Systems Model (includes the Community Land Model of CESM)
cd CTSM
./bin/git-fleximod update
version: ctsm5.3.084

I have modified the paramfile using the param_utils tool and activated potatoes, plus I am also using your planting temperature window, howerver i get the following run error:
clm::TimeSetymd: error return from ESMF_TimeSet: setting get_calday

/glade/work/rahilmoh/CLM/Cases/MI85_check_newCLM_params : this is the case directory


I ran the case with and without your planting temperature window nc files, It couldnt be executed while running.
Its mentionable that i created the surface data and dyn lanuse timeseries.

The following is my user_nl_clm:
fsurdat='/glade/work/rahilmoh/CLM/Model/my_ctsm_for_surfdata_ctsm5.3.050/CTSM/tools/mksurfdata_esmf/surfdata_LM_Rahil_5km_hist_1980_78pfts_c250610.nc'
flanduse_timeseries ='/glade/work/rahilmoh/CLM/Model/my_ctsm_for_surfdata_ctsm5.3.050/CTSM/tools/mksurfdata_esmf/landuse.timeseries_LM_Rahil_5km_hist_1980-2022_78pfts_c250610.nc'
finidat = '/glade/derecho/scratch/rahilmoh/archive/MI46_141y135x_IHistClm50BgcCrop_0.05d_CTSM_DynLULC_Conus404_Spinup/rest/0036-01-01-00000/MI46_141y135x_IHistClm50BgcCrop_0.05d_CTSM_DynLULC_Conus404_Spinup.clm2.r.0036-01-01-00000.nc'
use_init_interp = .true.
check_finidat_year_consistency = .false.

paramfile = '/glade/work/rahilmoh/CLM/Params/potato_and_irrigated_potatoes_included.nc'


stream_fldFileName_swindow_start = '/glade/work/rahilmoh/Analysis/cropcal_manipulation/swindow_starts_ggcmi_crop_calendar_phase3_v1.01.2000-2000_c250611.nc'
stream_fldFileName_swindow_start = '/glade/work/rahilmoh/Analysis/cropcal_manipulation/swindow_ends_ggcmi_crop_calendar_phase3_v1.01.2000-2000_c250611.nc'
stream_meshfile_cropcal = '/glade/work/rahilmoh/Analysis/cropcal_manipulation/360x720_120830_ESMFmesh_c20210507_cdf5.nc'
cropcals_rx= .true.

limit_irrigation_if_rof_enabled = .true.
use_groundwater_irrigation = .false.

lower_boundary_condition = 3
use_bedrock = .false.
soilwater_movement_method = 1


hist_empty_htapes = .true.

! Monthly average output for both streams
hist_nhtfrq = 0, 0

! Stream 1: 1 file per year (grid-averaged output)
hist_mfilt = 12, 12

! Stream 1: grid-averaged output (.true.), Stream 2: subgrid/PFT-level output (.false.)
hist_dov2xy = .true., .false.

! Stream 1: all your standard variables (grid-averaged)
hist_fincl1 = 'TLAI'

! Stream 2: subgrid (PFT) level output for GRAINC_TO_FOOD,
hist_fincl2 = 'GRAINC_TO_FOOD'

Thank you so much for your support.
Sincerely,
 
Top