Skip to content
Back to skills

Docs

ASecurity

Configure a CLM5/CTSM simulation by selecting the appropriate compset (component set), resolution, machine, and physics options. This stage determines the entire model behavior — incorrect configuration leads to wrong science or build failures downstream.

  • 200 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 11, 2026
developmentgobashgit

Works with

  • cli

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add lzwei196/KISS---Knowledge-Infrastructure-for-Scientific-Simulation --skill docs --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Docs?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Docs
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lzwei196-docs-2ea457b5/badge)](https://www.skillsdirectory.com/skills/lzwei196-docs-2ea457b5)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Stage 0: Configuration and Compset Selection

## Purpose

Configure a CLM5/CTSM simulation by selecting the appropriate compset
(component set), resolution, machine, and physics options. This stage
determines the entire model behavior — incorrect configuration leads to
wrong science or build failures downstream.

## Prerequisites

- CTSM source code checked out with all submodules (via `git-fleximod`)
- CIME infrastructure available at `$CTSMROOT/cime`
- Machine configuration file (either built-in or custom in `~/.cime/`)
- Minimum: MPI, NetCDF-Fortran >= 4.7.4, ESMF, Fortran compiler

## Inputs

| Input | Description | Example |
|---|---|---|
| Compset | Physics/forcing combination | `I2000Clm60BgcCrop` |
| Resolution | Grid specification | `f09_g17` (0.9x1.25 deg) |
| Machine | Computing platform | `cheyenne`, `derecho`, custom |
| Project | Allocation account | depends on HPC center |

### Key Compset Naming Convention

```
TIME_ATM[%phys]_LND[%phys]_ICE_OCN_ROF_GLC_WAV[_BGC%phys]
```

Common compsets:
- `I2000Clm60Sp` — Year-2000 satellite phenology (simplest, fastest)
- `I2000Clm60Bgc` — Year-2000 with full biogeochemistry (CN cycling)
- `I2000Clm60BgcCrop` — BGC with prognostic crops
- `I1850Clm60BgcCrop` — Pre-industrial for spinup
- `IHistClm60BgcCrop` — Transient historical (1850-2015)
- `I2000Clm60Fates` — With FATES ecosystem demography

### Key CLM Physics Versions

| Version | Key Features |
|---|---|
| CLM4.5 | Legacy, CN biogeochemistry |
| CLM5.0 | Improved hydrology, LUNA photosynthesis, FUN nitrogen |
| CLM6.0 | Updated soil biogeochemistry, hillslope hydrology, FATES |

## Procedure

### Step 1: Create a new case

```bash
cd $CIMEROOT/scripts
./create_newcase --case ~/cases/my_test \
    --compset I2000Clm60Sp \
    --res f09_g17 \
    --run-unsupported
```

### Step 2: Modify case settings

```bash
cd ~/cases/my_test

# Set run length
./xmlchange STOP_OPTION=nmonths
./xmlchange STOP_N=12

# Set output frequency
./xmlchange HIST_OPTION=nmonths
./xmlchange HIST_N=1

# For BGC: enable accelerated spinup
./xmlchange CLM_ACCELERATED_SPINUP=on
```

### Step 3: Customize namelists

Edit `user_nl_clm` to add custom namelist settings:

```fortran
! Add extra history variables
hist_fincl1 = 'GPP', 'NPP', 'NEE', 'QRUNOFF', 'EFLX_LH_TOT'

! Change output frequency to daily
hist_nhtfrq = -24
hist_mfilt = 365

! Set CO2
co2_ppmv = 400.0
```

### Step 4: Setup and build

```bash
./case.setup
./case.build
```

## Outputs

| Output | Location | Description |
|---|---|---|
| Case directory | `~/cases/my_test/` | All scripts and configs |
| env_run.xml | Case directory | Runtime configuration |
| user_nl_clm | Case directory | User namelist overrides |
| CaseDocs/lnd_in | Case directory | Generated CLM namelist |
| Build directory | `bld/` subdirectory | Compiled binary |

## Verification

1. Check `CaseDocs/lnd_in` for correct physics options
2. Verify `./xmlquery COMPSET` matches intent
3. Confirm `./xmlquery LND_TUNING_MODE` is appropriate for forcing data
4. Run `./preview_namelists` to see generated namelists without building

## Common Traps

- **dt_007**: Calendar mismatch between forcing and model. GSWP3 uses noleap;
  ERA5 uses gregorian. Set via `./xmlchange CALENDAR=NO_LEAP`
- Using `Clm50` physics with `Clm60` tuning mode or vice versa — causes
  parameter mismatches and incorrect results
- Forgetting `--run-unsupported` for non-standard compsets causes immediate
  failure
- Not setting `CLM_FORCE_COLDSTART=on` when no initial conditions file
  is available for the chosen resolution/physics combination

## Example

Create a single-point simulation for a flux tower site:

```bash
cd $CIMEROOT/scripts
./create_newcase --case ~/cases/US-Ha1 \
    --compset I2000Clm60BgcCrop \
    --res CLM_USRDAT \
    --run-unsupported

cd ~/cases/US-Ha1
./xmlchange CLM_USRDAT_NAME=1x1_harvardForest
./xmlchange STOP_OPTION=nyears
./xmlchange STOP_N=5
./xmlchange DATM_CLMNCEP_YR_START=2000
./xmlchange DATM_CLMNCEP_YR_END=2005

cat >> user_nl_clm << 'EOF'
hist_nhtfrq = -24
hist_mfilt = 365
hist_fincl1 = 'GPP','NEE','EFLX_LH_TOT','FSH','QRUNOFF'
co2_ppmv = 380.0
EOF

./case.setup
./case.build
./case.submit
```

Files in this skill

  • REFERENCES.md2.7 KB
  • format_spec.yaml31.7 KB
  • papers.json5.5 KB
  • s0_configuration_skill.md4.1 KB
  • s2_forcing_skill.md5.1 KB
  • s3_soil_params_skill.md5 KB
  • s6_execution_skill.md4.9 KB
  • s7_output_analysis_skill.md5.9 KB
  • validation_convention.yaml9.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…