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

Adding crop column in CLM

Yi Yao

Yi Yao
Member
Dear, I plan to do some development on the source code of CTSM, and this development requires adding more crop columns. I am wondering if there is a tutorial somewhere. If not, I am wondering how does the model know a column is crop or natural PFT or lake ...? In other words, where do we specify lun%itype and col%itype?

Thanks in advance,
Yi
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
The surface types are read in from the surface dataset. The surface dataset should be specified in your lnd_in namelist:

fsurdat = '............'

Crop types are specified by the variable PCT_CFT in the surface dataset. The surface dataset is read in using (e.g., in release-cesm2.1.3):

components/clm/src/main/surfrdMod.F90

You can find descriptions of the active (and currently inactive) crop types here:


You may be able to co-opt or take over one of the inactive crop types for your purposes.

With regard to tutorials, some of the material here may be useful:

 

Yi Yao

Yi Yao
Member
The surface types are read in from the surface dataset. The surface dataset should be specified in your lnd_in namelist:

fsurdat = '............'

Crop types are specified by the variable PCT_CFT in the surface dataset. The surface dataset is read in using (e.g., in release-cesm2.1.3):

components/clm/src/main/surfrdMod.F90

You can find descriptions of the active (and currently inactive) crop types here:


You may be able to co-opt or take over one of the inactive crop types for your purposes.

With regard to tutorials, some of the material here may be useful:

Thank you very much, Keith.
Cheers,
Yi
 

Yi Yao

Yi Yao
Member
The surface types are read in from the surface dataset. The surface dataset should be specified in your lnd_in namelist:

fsurdat = '............'

Crop types are specified by the variable PCT_CFT in the surface dataset. The surface dataset is read in using (e.g., in release-cesm2.1.3):

components/clm/src/main/surfrdMod.F90

You can find descriptions of the active (and currently inactive) crop types here:


You may be able to co-opt or take over one of the inactive crop types for your purposes.

With regard to tutorials, some of the material here may be useful:

Dear Keith, thank you very much for your help! I think at this moment, I will go with taking over some of the inactive CFTs. However, I have another question. As I saw in the list, for some inactive CFTs, the model just uses the physiology parameters of other CFTs (like wheat and corn). I think that if I want to take over one CFT, then I need to change the physiology parameters somewhere. I thought that the parameters are in the file /inputdata/lnd/clm2/pftdata/pft-physiology, but I checked my case and it does not read the files there. I am a bit confused. Could you please give me some tips regarding this?
Cheers,
Yi
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
For release-cesm2.1.3, for example, the parameters are in the file pointed to by paramfile in lnd_in, e.g.,

paramfile = '/glade/p/cesmdata/cseg/inputdata/lnd/clm2/paramdata/clm5_params.c171117.nc'
 

Yi Yao

Yi Yao
Member
For release-cesm2.1.3, for example, the parameters are in the file pointed to by paramfile in lnd_in, e.g.,

paramfile = '/glade/p/cesmdata/cseg/inputdata/lnd/clm2/paramdata/clm5_params.c171117.nc'
Got it! Thanks!
cheers,
Yi
 

xiaoxiaokuishu

Ru Xu
Member
Dear Keith, thank you very much for your help! I think at this moment, I will go with taking over some of the inactive CFTs. However, I have another question. As I saw in the list, for some inactive CFTs, the model just uses the physiology parameters of other CFTs (like wheat and corn). I think that if I want to take over one CFT, then I need to change the physiology parameters somewhere. I thought that the parameters are in the file /inputdata/lnd/clm2/pftdata/pft-physiology, but I checked my case and it does not read the files there. I am a bit confused. Could you please give me some tips regarding this?
Cheers,
Yi
Hi, Yi,

Recently I also try to activate the inactive cft in CLM, e.g. oil palm, but when i change my site from forest to oil palm,
the GPP change from a valid value (forest) to zero (oil plam), other settings are the same except the surface data.

Do you have some suggestions for which part should I check to solve the problems.

Best
Ru
 

Yi Yao

Yi Yao
Member
Hi, Yi,

Recently I also try to activate the inactive cft in CLM, e.g. oil palm, but when i change my site from forest to oil palm,
the GPP change from a valid value (forest) to zero (oil plam), other settings are the same except the surface data.

Do you have some suggestions for which part should I check to solve the problems.

Best
Ru
In CLM5, the model will check if one column is active or not based on a variable in clm5_params.c221205.nc. I suggest you to modify this variable to set the column of oil palm active. Let me know if you need more help :)

Cheers,
Yi
 

xiaoxiaokuishu

Ru Xu
Member
In CLM5, the model will check if one column is active or not based on a variable in clm5_params.c221205.nc. I suggest you to modify this variable to set the column of oil palm active. Let me know if you need more help :)

Cheers,
Yi
Hi, Yi,

Thanks for the reply. You mean the mergetoclmpft?
My set is like this, in which 53 is the oil-palm,
array([nan, 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 19.,
20., 21., 22., 19., 20., 21., 22., 15., 16., 15., 16., 15., 16.,
15., 16., 41., 42., 15., 16., 15., 16., 15., 16., 15., 16., 15.,
16., 53., 54., 15., 16., 15., 16., 15., 16., 61., 62., 15., 16.,
15., 16., 67., 68., 15., 16., 15., 16., 15., 16., 75., 76., 77.,
78.])

Best
Ru
 

Yi Yao

Yi Yao
Member
Hi, Yi,

Thanks for the reply. You mean the mergetoclmpft?
My set is like this, in which 53 is the oil-palm,
array([nan, 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 19.,
20., 21., 22., 19., 20., 21., 22., 15., 16., 15., 16., 15., 16.,
15., 16., 41., 42., 15., 16., 15., 16., 15., 16., 15., 16., 15.,
16., 53., 54., 15., 16., 15., 16., 15., 16., 61., 62., 15., 16.,
15., 16., 67., 68., 15., 16., 15., 16., 15., 16., 75., 76., 77.,
78.])

Best
Ru
This tells the model to which activated column this column should be merged to. There should be another variable with boolean values to indicate whether if this column is activated.

Cheers,
Yi
 

Yi Yao

Yi Yao
Member
This tells the model to which activated column this column should be merged to. There should be another variable with boolean values to indicate whether if this column is activated.

Cheers,
Yi
I just checked t
Hi, Yi,

Thanks for the reply. You mean the mergetoclmpft?
My set is like this, in which 53 is the oil-palm,
array([nan, 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 19.,
20., 21., 22., 19., 20., 21., 22., 15., 16., 15., 16., 15., 16.,
15., 16., 41., 42., 15., 16., 15., 16., 15., 16., 15., 16., 15.,
16., 53., 54., 15., 16., 15., 16., 15., 16., 61., 62., 15., 16.,
15., 16., 67., 68., 15., 16., 15., 16., 15., 16., 75., 76., 77.,
78.])

Best
Ru
I just checked the code in pftconMod.F90 and it seems that if the type equals to mergetoclmpft then it should work. Of course you also need to prepare other parameters.
 

xiaoxiaokuishu

Ru Xu
Member
I just checked t

I just checked the code in pftconMod.F90 and it seems that if the type equals to mergetoclmpft then it should work. Of course you also need to prepare other parameters.
Hi, Yi,

Thanks for the reply, I notice the error is not from here, it is sth realted with the source code.

Best
Ru
 
Top