返回 Skill 列表
extension
分类: 数据与分析无需 API Key

glm-calibration

对水温模拟的GLM参数进行校准。适用于需要调整模型参数以最小化模拟与观测温度之间RMSE的情况。

person作者: wu-ukhubclawhub

GLM Calibration Guide

Overview

GLM calibration involves adjusting physical parameters to minimize the difference between simulated and observed water temperatures. The goal is typically to achieve RMSE < 2.0°C.

Key Calibration Parameters

| Parameter | Section | Description | Default | Range | |-----------|---------|-------------|---------|-------| | Kw | &light | Light extinction coefficient (m⁻¹) | 0.3 | 0.1 - 0.5 | | coef_mix_hyp | &mixing | Hypolimnetic mixing coefficient | 0.5 | 0.3 - 0.7 | | wind_factor | &meteorology | Wind speed scaling factor | 1.0 | 0.7 - 1.3 | | lw_factor | &meteorology | Longwave radiation scaling | 1.0 | 0.7 - 1.3 | | ch | &meteorology | Sensible heat transfer coefficient | 0.0013 | 0.0005 - 0.002 |

Parameter Effects

| Parameter | Increase Effect | Decrease Effect | |-----------|-----------------|-----------------| | Kw | Less light penetration, cooler deep water | More light penetration, warmer deep water | | coef_mix_hyp | More deep mixing, weaker stratification | Less mixing, stronger stratification | | wind_factor | More surface mixing | Less surface mixing | | lw_factor | More heat input | Less heat input | | ch | More sensible heat exchange | Less heat exchange |

Calibration with Optimization

from scipy.optimize import minimize

def objective(x):
    Kw, coef_mix_hyp, wind_factor, lw_factor, ch = x

    # Modify parameters
    params = {
        'Kw': round(Kw, 4),
        'coef_mix_hyp': round(coef_mix_hyp, 4),
        'wind_factor': round(wind_factor, 4),
        'lw_factor': round(lw_factor, 4),
        'ch': round(ch, 6)
    }
    modify_nml('glm3.nml', params)

    # Run GLM
    subprocess.run(['glm'], capture_output=True)

    # Calculate RMSE
    rmse = calculate_rmse(sim_df, obs_df)
    return rmse

# Initial values (defaults)
x0 = [0.3, 0.5, 1.0, 1.0, 0.0013]

# Run optimization
result = minimize(
    objective,
    x0,
    method='Nelder-Mead',
    options={'maxiter': 150}
)

Manual Calibration Strategy

  1. Start with default parameters, run GLM, calculate RMSE
  2. Adjust one parameter at a time
  3. If surface too warm → increase wind_factor
  4. If deep water too warm → increase Kw
  5. If stratification too weak → decrease coef_mix_hyp
  6. Iterate until RMSE < 2.0°C

Common Issues

| Issue | Likely Cause | Solution | |-------|--------------|----------| | Surface too warm | Low wind mixing | Increase wind_factor | | Deep water too warm | Too much light penetration | Increase Kw | | Weak stratification | Too much mixing | Decrease coef_mix_hyp | | Overall warm bias | Heat budget too high | Decrease lw_factor or ch |

Best Practices

  • Change one parameter at a time when manually calibrating
  • Keep parameters within physical ranges
  • Use optimization for fine-tuning after manual adjustment
  • Target RMSE < 2.0°C for good calibration