GLM Simulation Skill
SkillFiles & storageRunning the General Lake Model (GLM) with configuration files and parameter calibration
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the GLM Simulation Skill skill
What this skill tells your AI
The instructions your AI receives, as published by cxcscmu/skilllearnbench in skills/b1-one-shot-claude-haiku-4-5/temperature-simulation/glm-simulation/SKILL.md and read by ahel’s review.
Overview
The General Lake Model (GLM) is a 1-D hydrodynamic lake model that simulates vertical water temperature and mixing. It reads configuration from a Fortran namelist file (.nml) and produces NetCDF output.
Installation & Setup
Prerequisites
- GLM executable must be available in your PATH or current directory
- Configuration file in Fortran namelist format (
.nml) - Forcing data (meteorology, inflows, outflows) as CSV files
Configuration File Structure
The GLM configuration file contains multiple namelist sections:
&glm_setup
sim_name = 'Lake Name'
max_layers = 500
min_layer_vol = 0.025
min_layer_thick = 0.10
max_layer_thick = 0.50
/
&light
Kw = 0.3 ! Light extinction coefficient [0.1-0.5]
/
&mixing
coef_mix_hyp = 0.5 ! Hypolimnetic mixing coefficient [0.3-0.7]
/
&meteorology
wind_factor = 1.0 ! Wind speed scaling [0.7-1.3]
lw_factor = 1.0 ! Longwave radiation scaling [0.7-1.3]
ch = 0.0013 ! Heat transfer coefficient [0.0005-0.002]
/
&time
start = '2009-01-01 12:00:00'
stop = '2015-12-30 12:00:00'
dt = 3600
/
&init_profiles
the_depths = 0, 1, 2, ...
the_temps = 5.1, 5.1, 5.1, ...
/
Running GLM
Basic Command
glm -f glm3.nml
The model reads the configuration and produces output (typically NetCDF) to the directory specified in &output.
Key Parameters for Calibration
These 5 parameters can be modified within specified ranges:
- Kw (light extinction): [0.1, 0.5] - affects light penetration
- coef_mix_hyp (hypolimnetic mixing): [0.3, 0.7] - affects deep water mixing
- wind_factor: [0.7, 1.3] - scales wind speed forcing
- lw_factor: [0.7, 1.3] - scales longwave radiation
- ch (heat exchange): [0.0005, 0.002] - affects surface heat transfer
Modifying Parameters
To modify a parameter in the .nml file:
import re
def update_nml_parameter(nml_file, section, param, value):
"""Update a parameter in a Fortran namelist file"""
with open(nml_file, 'r') as f:
content = f.read()
# Find the section and update the parameter
pattern = r'(&' + section + r'.*?)(\s+' + param + r'\s*=\s*)([^,\n]+)'
replacement = r'\g<1>\g<2>' + str(value)
content = re.sub(pattern, replacement, content, flags=re.DOTALL)
with open(nml_file, 'w') as f:
f.write(content)
Validation
- Check that output files are created in the specified output directory
- Verify output is in NetCDF format if expected
- Compare simulation results to observations to evaluate model performance
Common Issues
- Parameter not changing: Ensure regex pattern matches exactly (spaces, case-sensitive)
- Model crash: Check forcing data file paths and formats
- Poor predictions: Indicates need for parameter calibration (RMSE optimization)
Signals
- GitHub stars
- 83
- Forks
- 5
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
glm-simulation- Source
- github.com/cxcscmu/skilllearnbench