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

single-point PTS mode error

wvsi3w

wvs3iw
Member
Hello,
I have read the links regarding PTS and single-point simulations (1.6.1. Single and Regional Grid Configurations — ctsm release-clm5.0 documentation) and it is said that PTS is the quickest method as you can create a case for it directly from create_newcase. However, when I followed the instruction below it fails:
Code:
cd scripts
> ./create_newcase -case testPTS_MODE -res f19_g17_gl4 -compset I1850Clm50BgcCropCru -pts_lat 40.0 -pts_lon -105
> cd testPTS_MODE

# We make sure the model will start up cold rather than using initial conditions
> ./xmlchange CLM_FORCE_COLDSTART=on,RUN_TYPE=startup

I used this lat and lon and it failed:
./create_newcase -case testPTS_MODE -res f09_g17 -compset IHistClm50BgcCrop -pts_lat 75.0 -pts_lon -90
I used this format and it failed also:
./create_newcase --case $CASES2_1_3/testPTS_MODE --compset IHistClm50BgcCrop --res f09_g17 --pts_lat 75.0 --pts_lon -90 --machine beluga --compiler intel --mpilib intelmpi

First of all that "--pts_lon -90" (or even with one dash line: -pts_lon -90) doesn't work because the dash line makes the 90 number blue (meaning that it becomes an option).
Secondly no matter how I do ./create_newcase the message is:
error: unrecognized arguments: --pts_lat 75.0 --pts_lon -90
even when I used positive values for lon (instead of -90 I used 90 and even 270) and again it failed with this error:
error: unrecognized arguments: --pts_lat 75.0 --pts_lon 90

Third issue:
I realized some people in the forum change the lat and lon in the ./xmlchange process after creating their case, so I did this:
Code:
./create_newcase --case $CASES2_1_3/testPTSmode --compset IHistClm50BgcCrop --res f09_g17 --machine beluga --compiler intel --mpilib intelmpi --walltime 02:00:00 --run-unsupported



./xmlchange STOP_N=5
./xmlchange STOP_OPTION=nyears
./xmlchange PTS_LON=75
./xmlchange PTS_LAT=-90
./xmlchange RUN_STARTDATE=1958-01-01

./xmlchange CLM_FORCE_COLDSTART=on,RUN_TYPE=startup

And, I am using my modified soil layer structure which has a 500m depth and I have put these in the user_nl_clm file:

soil_layerstruct= '23SL_3.5m_D500'
use_init_interp = .true.

BUT it doesn't build the case and fails.
(I also did it with --res f19_g17 and it failed)

the error message appears after ./case_build step which is related to the finidat not being set:
Code:
Building case in directory /lustre03/project/6001010/cesm2_1_3_OUT/testPTSmode
sharedlib_only is False
model_only is False
Setting resource.RLIMIT_STACK to -1 from (-1, -1)
Generating component namelists as part of build
Creating component namelists
   Calling /lustre03/project/6001010/my_cesm_sandbox/cime/src/components/data_comps/datm/cime_config/buildnml
File not found: domainfile = "/home/meisam/scratch/cime_INPUT_DATA/cesm2_1_3/inputdata/share/domains/domain.lnd.fv0.9x1.25_gx1v7.151020.nc", will attempt to download in check_input_data phase
   Calling /lustre03/project/6001010/my_cesm_sandbox/components/clm//cime_config/buildnml
WARNING: CLM is starting up from a cold state
ERROR: Command /lustre03/project/6001010/my_cesm_sandbox/components/clm/bld/build-namelist failed rc=255
out=CLM adding use_case 20thC_transient defaults for var 'clm_demand' with val 'flanduse_timeseries'
CLM adding use_case 20thC_transient defaults for var 'clm_start_type' with val 'arb_ic'
CLM adding use_case 20thC_transient defaults for var 'irrigate' with val '.true.'
CLM adding use_case 20thC_transient defaults for var 'model_year_align_ndep' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'model_year_align_popdens' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'model_year_align_urbantv' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'ndep_taxmode' with val 'extend'
CLM adding use_case 20thC_transient defaults for var 'sim_year' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'sim_year_range' with val '1850-2000'
CLM adding use_case 20thC_transient defaults for var 'stream_year_first_ndep' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'stream_year_first_popdens' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'stream_year_first_urbantv' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'stream_year_last_ndep' with val '2015'
CLM adding use_case 20thC_transient defaults for var 'stream_year_last_popdens' with val '2016'
CLM adding use_case 20thC_transient defaults for var 'stream_year_last_urbantv' with val '2106'
CLM adding use_case 20thC_transient defaults for var 'use_case_desc' with val 'Simulate transient land-use, aerosol deposition, and Nitrogen deposition changes from 1850 to 2015'
err=ERROR : CLM build-namelist::CLMBuildNamelist::setup_logic_initial_conditions() : use_init_interp is set BUT finidat is NOT, need to set both

So, I read from the forum and github that this PTS mode is quick, and doesn't need much to run, but I am having this "err=ERROR : CLM build-namelist::CLMBuildNamelist::setup_logic_initial_conditions() : use_init_interp is set BUT finidat is NOT, need to set both", do you know why?

I just want to run it with PTS mode for a single point (lat=75 and lon=-90 (or 270 when we have 0to360 deg for longitudes)) and with the soil structure that I want ('23SL_3.5m_D500').

I don't know what is wrong with it, because as I understood from this link (1.6.2. Running a single point using global data - PTS_MODE — ctsm release-clm5.0 documentation) we don't need to assign anything else (like input data path,... as they are only for CLM_USRDAT_NAME method.)


P.S. these are the modules I am loading in my system (which always worked):
StdEnv/2018.3 perl/5.22.4 python/3.7.4 cmake/3.16.3 intelmpi/2018.3.222 hdf5-mpi/1.10.3 netcdf-mpi/4.4.1.1 netcdf-fortran-mpi/4.4.4
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
Support for PTS_MODE in cime was dropped at some point so you are likely using a version of the model in which support was dropped. Your finidat error is likely due to the fact that use_init_interp is set to .true. in that compset/resolution by default. You should be able to fix that by setting user_init_interp = .false. in your user_nl_clm. Then build the model again.
 

wvsi3w

wvs3iw
Member
Support for PTS_MODE in cime was dropped at some point so you are likely using a version of the model in which support was dropped. Your finidat error is likely due to the fact that use_init_interp is set to .true. in that compset/resolution by default. You should be able to fix that by setting user_init_interp = .false. in your user_nl_clm. Then build the model again.
Thank you Keith for your helpful response.
It did build and successfully run after setting that option to ".false." but the problem is I was expecting single-point results and now I have regular global simulation results.

Is there any other option that I should have set before building the case?

I did these parts which are mentioned in the documentation and forum regarding the pts mode:

./xmlchange CLM_FORCE_COLDSTART=on,RUN_TYPE=startup
./xmlchange PTS_LAT=75
./xmlchange PTS_LON=-90

I just want to check if this PTS mode works with a single point quick run using my own soil layer structure.

P.S. Or maybe I should forget about testing my soil layer structure with pts mode and find another way (like CLM_USRDAT_NAME or PTCLMmkdata ?)?
 

wvsi3w

wvs3iw
Member
Are you missing setting PTS_MODE=TRUE?
Thanks for the heads up

I tried it with that also and it failed, I guess it is because of not setting the NTASK to 1
because this message appeared in the log file:
"
ERROR: (shr_dmodel_readgrid) ERROR: scmmode2 tasks
(shr_dmodel_readgrid) ERROR: scmmode must be run on one pe

"
 

wvsi3w

wvs3iw
Member
Thanks for the heads up

I tried it with that also and it failed, I guess it is because of not setting the NTASK to 1
because this message appeared in the log file:
"
ERROR: (shr_dmodel_readgrid) ERROR: scmmode2 tasks
(shr_dmodel_readgrid) ERROR: scmmode must be run on one pe

"
I think because I set the NTASKS to 1 this error is showing up:

"
File /cesm2_1_3_OUT/testPTS/LockedFiles/env_mach_pes.xml has been modified
found difference in NTASKS : case 1 locked 80
found difference in NTASKS_PER_INST : case 1 locked 80
ERROR: Invoke case.setup --reset
"

am I doing this right? or there are multiple files that I should change their NTASKS value from 80 to 1?

Thanks for your response @oleson
 

wvsi3w

wvs3iw
Member
You need to do this as stated:

Invoke case.setup --reset
I did but it failed again after submitting the job.

This is the cesm log file error message:

Code:
MCT::m_SparseMatrixPlus:: FATAL--length of vector y different from row count of sMat.Length of y =        1 Number of rows in sMat =    13824
000.MCT(MPEU)::die.: from MCT::m_SparseMatrixPlus::initDistributed_()
application called MPI_Abort(MPI_COMM_WORLD, 2) - process 0

I think as you mentioned this pts mode is not going to work (or maybe I am wrong).
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
As mentioned in the prior post you referenced:


I think you need to specify "stubs" for some of the components by using a long name version of the compset.
So, if your compset is I1850Clm50BgcCropCru the long name for that is:

1850_DATM%CRUv7_CLM50%BGC-CROP_SICE_SOCN_MOSART_CISM2%NOEVOLVE_SWAV

So instead specify stub GLC and stub ROF:

1850_DATM%CRUv7_CLM50%BGC-CROP_SICE_SOCN_SROF_SGLC_SWAV

when using create_newcase.
 

wvsi3w

wvs3iw
Member
As mentioned in the prior post you referenced:


I think you need to specify "stubs" for some of the components by using a long name version of the compset.
So, if your compset is I1850Clm50BgcCropCru the long name for that is:

1850_DATM%CRUv7_CLM50%BGC-CROP_SICE_SOCN_MOSART_CISM2%NOEVOLVE_SWAV

So instead specify stub GLC and stub ROF:

1850_DATM%CRUv7_CLM50%BGC-CROP_SICE_SOCN_SROF_SGLC_SWAV

when using create_newcase.
Thank you Keith for the clarification. I didn't realize that setting CLM_FORCE_COLDSTART=on would result in that error and might be due to a mismatch between the datasets and using a long name. Thanks for referring to that link I haven't read that part and probably missed it.

So the model did run with that change of compset in the create_newcase step.
I just tested it for a few years and it looks like it is doing fine.
The attached image is the TSOI_ICE for that point I simulated and it looks rational.
However, for my purpose of running single point simulations I think I should not use pts mode again (?) because I will use some other data as input and pts mode is not made for that (?)

Thanks again.
 

Attachments

  • tsoi ice pts mode run.png
    tsoi ice pts mode run.png
    242.9 KB · Views: 2

oleson

Keith Oleson
CSEG and Liaisons
Staff member
I'm not sure what you mean by using other data as input. But I would think you could modify the case you setup accordingly.
On the other hand, in more recent versions of CTSM, you could use the tools in tools/site_and_regional.
 

wvsi3w

wvs3iw
Member
I'm not sure what you mean by using other data as input. But I would think you could modify the case you setup accordingly.
On the other hand, in more recent versions of CTSM, you could use the tools in tools/site_and_regional.
Thanks.
By that I mean this part "Since you can NOT restart with PTS_MODE, it’s usage is limited." and I was thinking maybe my simulation sometime in the future needs restart, so I guess I should stick to CLM_USRDAT_NAME.

Thanks again for that CTSM suggestion, but the issue with my research is that I have to stick with CESM 2.1.3 (CLM5) because I would soon need to run other components (like CAM,...)
 
Top