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

How to use less PFTs in CLM-DGVM

Dear Sam,

I am wondering how to use 4 PFT indices (less PFTs) instead of 15 (0-14) PFTs in CLM-DGVM? Should I change the PFTs initial value? Thank you.

Best,
Rima
 

slevis

Moderator
Staff member
Not sure I understand the question, partly because you posted it differently elsewhere.

Do you mean that you would like to eliminate, for example, grasses from the simulation and run only with trees? If so, go to the table in the code that defines the bioclimatic limits of each pft and set the bioclimatic limits out of bounds for the pfts that you don't want (examples of that already exist for some pfts that had to be excluded).

Or do you mean that you want each gridcell to allow up to 4 pfts coexisting instead of up to 10? If so, you'll need to change a parameter called maxpatch_pft (I think that's the name), and you can do that in the code, though you may be able to do it in the clm jobscript. If you try the jobscript option, you may find that your change is ignored because we may have hardwired 10 as the only acceptable value for the dgvm. I believe that the dgvm won't work correctly for long with a value of 4 because sometimes more than 4 pfts want to coexist in a gridcell.

If I misunderstood the question, then pls be more specific.

Sam
 
Dear Sam,

I am sorry for different posting elsewhere. Somehow, I did mistakes while I posted it. And sorry for an unspecific question.
Anyway thanks for your answers, your first answer is enough to answer my unspecific question. I'll go to the table.
But I have question with your second answer, so were saying that the dgvm won't work correctly for long with a value of 4, is it called unstable if we use 4 or less than 10?. Thank you so much.

Best regards,
Rima
 

slevis

Moderator
Staff member
The dgvm may try to put more than 4 pfts in one gridcell; therefore, allowing a maximum of 4 will not give correct answers and may cause the model to crash.

Sam

climatevegetation said:
But I have question with your second answer, so were saying that the dgvm won't work correctly for long with a value of 4, is it called unstable if we use 4 or less than 10?
 
Hi Sam,

Thanks a lot for your post above which helped me also. My question is regarding your post above "Do you mean that you would like to eliminate, for example, grasses from the simulation and run only with trees? If so, go to the table in the code that defines the bioclimatic limits of each pft and set the bioclimatic limits out of bounds for the pfts that you don't want (examples of that already exist for some pfts that had to be excluded). "

I want to eliminate trees from the CLM4CN and CLM4CNDV simulation and run only with grasses. To do that which file in the CLM4 code I need to edit and where?

It will be a great help.

I searched the Bioclimatic table in the CLM4 code (cesm1_0_4/models/lnd/clm/src/biogeochem/ CNEcosystemDynMod.F90, CASAMod.F90, CNDVEcosystemDynIniMod.F90), I am not able to find/figure it out.

Thanks again,

Dev
 

slevis

Moderator
Staff member
In CLM4CN, you need to modify the surface data (fsurdat in the namelist).

In CLM4CNDV, you need to make it impossible for pfts other than grasses to exist. If you have sufficient fortran skill and still have difficulty, then you probably need to become more familiar with the clm code and clm documentation.

Sam Levis
 
slevis said:
In CLM4CN, you need to modify the surface data (fsurdat in the namelist).

In CLM4CNDV, you need to make it impossible for pfts other than grasses to exist. If you have sufficient fortran skill and still have difficulty, then you probably need to become more familiar with the clm code and clm documentation.

Sam Levis

Hi Sam,

I have changed the values of lsmpft 1-11 (trees) to the values of 14 (C4 grass) in fsurfdat file. I configured I20TRCN compset and fails while running and the ccsm log error is below:

/home/devaraju/inputdata_cesm104//lnd/clm2/surfdata/surfdata_1.9x2.5_simyr1850_
c091108_grass.nc 106
surfrd_wtxy_veg_all ERROR: sum(pct) over numpft+1 is not = 100.
77.2669425875455 -22.7330574124545 136
ENDRUN: called without a message string
surfrd_wtxy_veg_all ERROR: sum(pct) over numpft+1 is not = 100.
61.7678214821062 -38.2321785178938 432

It says the sum of pft's is not 100 ?. How do I go about it. Any guidelines please.

Thanks :)
 

slevis

Moderator
Staff member
If I understand correctly what you did, then I recommend taking the opposite approach:
Instead of changing the values of lsmpft 1-11 (trees) to the values of 14 (C4 grass), I would set pctpft for the first 11 pfts to zero and would add all that to the pctpft for the 14th pft.

Sam Levis
 
Dear Sam,Is it possible to calculate the area occupied by the trees (in hectares) in each grid cell from the variable PCT_PFT cotained in the file  'surfdata_1.9x2.5_simyr1850_c091108.nc'.Any help to calculate the area will be a great help. Thanks for your time.
 

slevis

Moderator
Staff member
The same file contains the variable AREA in km^2, which is the gridcell area. So you need to combine PCT_PFT with AREA and convert from km^2 to hectares. Sam
 
Dear people,


I am working on CLM4.0 (CESM1.0.3). I am running 0.23 x 0.31 resolution case and using GLDAS forcing dataset (0.25 degree resolution). For making initial data file "finidat", I have to run the case for a single timestep first. While doing that, I came across the same error discussed in the post above.



"ERROR IN CCSM LOG FILE"
------------------------------------------------------------------------------------------------------------------
/home/dkim/inputdata/lnd/clm2/surfdata/surfdata_0.23x0.31_simyr2000.nc
65536
surfrd_wtxy_veg_all ERROR: sum(pct) over numpft+1 is not = 100.
25.39062500000000 -74.60937500000000 35969
ENDRUN: called without a message string
application called MPI_Abort(comm=0x84000006, 1) - process 1

===================================================================================
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= EXIT CODE: 1
= CLEANING UP REMAINING PROCESSES
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
--------------------------------------------------------------------------------------------------------------------


Additionally, as the grid of GLDAS data is 1440 x 600, so I created griddata, fracdata, domaindata and surfdata using tools (mkgriddata, mkdatadomain, and mksurfdata) for specific grid size i-e 1400 x 600.



I would really appreciate any kind of suggestion or help.
Log files are also attached.

thanks
umi
 
Dear all,I run into the same problem reported by Umair and Dev... I'm doing a very simple experiment with CESM 1.2.1, -res f02_f02 -compset ICLM45. During setup, the script crashed as no default fsurdat could be found. I then downloaded surfdata_0.23x0.31_simyr2000_c100406.nc from the CESM trunk and was able to setup and build the model. At runtime, however, the model crashed with this error: surfrd_wtxy_veg_all ERROR: sum(pct) over numpft+1 is not = 100.
   99.8277778055519      -0.172222194448125           103311

Any ideas of what is going on? Am I using the right surfdata file?Umair, did you figure out what was the problem?Thank you all for your attention.Henrique
 
Hi - I'd like to bump the previous comment regarding the following error which causes the model to crash. This happens on my system too. surfrd_wtxy_veg_all ERROR: sum(pct) over numpft+1 is not = 100. Any ideas what the problem could be, or if there is a solution out there? Best, Leanne 
 
Top