1.6.3. Generic single-point runs
While there are capabilities to run single-point cases at specific tower sites with forcing data from those observations (see Supported tower sites for single-point runs), users can also run CTSM at a single lat/lon point of their choosing using the instructions below.
1.6.3.1. subset_data:
subset_data
enables you to run the model using global datasets, but just picking a single point from those datasets and operating on it. It can be a very quick way to do fast simulations and get a quick turnaround. This can also be done for regional simulations in the next section but first we will describe how to use subset_data for a single point.
For single-point cases, you need to subset a surface dataset and (optionally) DATM data. The Python script to subset this data can be found in the CTSM repository at tools/site_and_regional/subset_data
.
Note that you will need to have a python environment set up that includes the packages scipy
, xarray
, and numpy
. If you have conda or miniconda installed, you can create a conda environment for this and other CTSM python tools using the script py_env_create
at the top level of your CTSM checkout. See Installing the CTSM Python environment for more information.
To subset surface data and climate forcings (DATM) for a single point, use the command:
tools/site_and_regional/subset_data point \
--lat $my_lat --lon $my_lon --lon-type $my_lon_type --site $my_site_name \
--create-surface --create-datm \
--datm-syr $my_start_year --datm-eyr $my_end_year \
--create-user-mods --outdir $my_output_dir
$my_lat
: latitude of point, must be between -90 and 90 degrees. E.g., Boulder, CO, USA: 40.$my_lon
: longitude of point. Must be between -180 and 360 degrees. E.g., Boulder, CO, USA: 255 or -105.$my_lon_type
: 180 if your longitude is in the [-180, 180] format (i.e., centered at the Prime/0th Meridian); 360 if it’s in the [0, 360] format (i.e., centered at the 180th Meridian). Note that--lon-type $my_lon_type
is not necessary if your longitude is unambiguous—i.e., it’s only needed if your longitude is in the range [0, 180].$my_site_name
: name of site, used for file naming$my_start_year
: start year for DATM data to subset, default between 1901 and 2014$my_end_year
: end year for DATM data to subset, default between 1901 and 2014; the default CRUJRA2024 DATM data ends in 2023, while the old default GSWP3 ends in 2014; see note below about switching the default DATM data$my_output_dir
: output directory to place the subset data and user_mods directory. This should be something specific to just your data for$my_site_name
.
You can also have the script subset land-use data. See the help (tools/site_and_regional/subset_data --help
) for all argument options. For example, depending on your application, it may be helpful to specify a dominant PFT using --dompft
and --pctpft
flags. This allows you to control the PFTs that are present on your surface dataset
Note
This script defaults to subsetting specific surface data, land-use timeseries, and the CRUJRA2024 DATM data. It can currently only be run as-is on Derecho. If you’re not on Derecho, use --inputdata-dir
to specify where the top level of your CESM input data is.
Also, to subset GSWP3 instead of CRUJRA2024 DATM data, you currently need to hardwire datm_type = "datm_gswp3"
(instead of the default "datm_crujra"
) in python/ctsm/subset_data.py
.
The --create-user-mods
command tells the script to set up a user mods directory in your specified $my_output_dir
and to specify the required PTS_LAT
and PTS_LON
settings. You can then use this user mods directory to set up your CTSM case, as described below. subset_data
will default to subsetting surface data and land-use timeseries from the default, nominal one-degree resolution (f09) datasets.
1.6.3.2. Create the case
You can use the user mods directory set up in the previous subset data step to tell CIME/CTSM where your subset files are located.
cime/scripts/create_newcase --case $my_case_name --res CLM_USRDAT \
--compset $compset --run-unsupported \
--user-mods-dirs $my_output_dir/user_mods
$my_case_name
: the path of the case directory you want to create$compset
: the compset you would like to use (for example,I2000Clm60Bgc
)Note the use of
$my_output_dir/user_mods
which is theuser_mods/
directory that the subset data script set up within your specified$my_output_dir
.
Note that ./case.setup
on Derecho will automatically set queue to develop
and walltime to one hour. You might need a longer walltime, but the maximum walltime for develop
is one hour. To change it to two hours on Derecho:
./xmlchange --subgroup case.run JOB_QUEUE=main,JOB_WALLCLOCK_TIME=2:00:00