agentsclimarketplace

Glm simulation

Skill cxcscmu/SkillLearnBench/skills/b1-one-shot-claude-haiku-4-5/temperature-simulation/glm-simulation

Running the General Lake Model (GLM) with configuration files and parameter calibrationFrom its SKILL.md

Install
npx -y skills add cxcscmu/SkillLearnBench --skill glm-simulation

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

2.9 KB, 848 tokens by cl100k_base, as published. Nobody here has run it

GLM Simulation Skill

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:

  1. Kw (light extinction): [0.1, 0.5] - affects light penetration
  2. coef_mix_hyp (hypolimnetic mixing): [0.3, 0.7] - affects deep water mixing
  3. wind_factor: [0.7, 1.3] - scales wind speed forcing
  4. lw_factor: [0.7, 1.3] - scales longwave radiation
  5. 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

  1. Parameter not changing: Ensure regex pattern matches exactly (spaces, case-sensitive)
  2. Model crash: Check forcing data file paths and formats
  3. Poor predictions: Indicates need for parameter calibration (RMSE optimization)

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.