OpenClaw-Medical-Skills numerical-stability

Analyze and enforce numerical stability for time-dependent PDE simulations. Use when selecting time steps, choosing explicit/implicit schemes, diagnosing numerical blow-up, checking CFL/Fourier criteria, von Neumann analysis, matrix conditioning, or detecting stiffness in advection/diffusion/reaction problems.

install
source · Clone the upstream repo
git clone https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/numerical-stability" ~/.claude/skills/freedomintelligence-openclaw-medical-skills-numerical-stability && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/numerical-stability" ~/.openclaw/skills/freedomintelligence-openclaw-medical-skills-numerical-stability && rm -rf "$T"
manifest: skills/numerical-stability/SKILL.md
source content

Numerical Stability

Goal

Provide a repeatable checklist and script-driven checks to keep time-dependent simulations stable and defensible.

Requirements

  • Python 3.8+
  • NumPy (for matrix_condition.py and von_neumann_analyzer.py)
  • See
    scripts/requirements.txt
    for dependencies

Inputs to Gather

InputDescriptionExample
Grid spacing
dx
Spatial discretization
0.01 m
Time step
dt
Temporal discretization
1e-4 s
Velocity
v
Advection speed
1.0 m/s
Diffusivity
D
Thermal/mass diffusivity
1e-5 m²/s
Reaction rate
k
First-order rate constant
100 s⁻¹
Dimensions1D, 2D, or 3D
2
Scheme typeExplicit or implicit
explicit

Decision Guidance

Choosing Explicit vs Implicit

Is the problem stiff (fast + slow dynamics)?
├── YES → Use implicit or IMEX scheme
│         └── Check conditioning with matrix_condition.py
└── NO → Is CFL/Fourier satisfied with reasonable dt?
    ├── YES → Use explicit scheme (cheaper per step)
    └── NO → Consider implicit or reduce dx

Stability Limit Quick Reference

PhysicsNumberExplicit Limit (1D)Formula
AdvectionCFLC ≤ 1
C = v·dt/dx
DiffusionFourierFo ≤ 0.5
Fo = D·dt/dx²
ReactionReactionR ≤ 1
R = k·dt

Multi-dimensional correction: For d dimensions, diffusion limit is

Fo ≤ 1/(2d)
.

Script Outputs (JSON Fields)

ScriptKey Outputs
scripts/cfl_checker.py
metrics.cfl
,
metrics.fourier
,
recommended_dt
,
stable
scripts/von_neumann_analyzer.py
results.max_amplification
,
results.stable
scripts/matrix_condition.py
results.condition_number
,
results.is_symmetric
scripts/stiffness_detector.py
results.stiffness_ratio
,
results.stiff
,
results.recommendation

Workflow

  1. Identify dominant physics (advection vs diffusion vs reaction)
  2. Run CFL checker with
    scripts/cfl_checker.py
  3. Compare to limits and adjust
    dt
    if needed
  4. Check stiffness with
    scripts/stiffness_detector.py
    if multiple scales
  5. Analyze custom schemes with
    scripts/von_neumann_analyzer.py
  6. Check conditioning with
    scripts/matrix_condition.py
    for implicit solves
  7. Document the stability verdict and recommended time step

Conversational Workflow Example

User: My phase-field simulation is blowing up after 100 steps. I'm using explicit Euler with dx=0.01, dt=1e-4, and diffusivity D=1e-3.

Agent workflow:

  1. Check stability criteria:
    python3 scripts/cfl_checker.py --dx 0.01 --dt 1e-4 --diffusivity 1e-3 --dimensions 2 --json
    
  2. Interpret results:
    • Fourier number:
      Fo = 1e-3 × 1e-4 / (0.01)² = 1.0
    • 2D limit:
      Fo ≤ 0.25
    • Violation: Fo = 1.0 > 0.25, unstable!
  3. Recommend fix:
    • Reduce dt to
      2.5e-5
      (to get Fo = 0.25)
    • Or increase dx, or switch to implicit

Pre-Simulation Stability Checklist

  • Identify dominant physics and nondimensional groups
  • Compute CFL/Fourier/Reaction numbers with
    cfl_checker.py
  • If explicit and limit violated, reduce
    dt
    or change scheme
  • If stiffness ratio > 1000, select implicit/stiff integrator
  • For custom schemes, verify amplification factor ≤ 1
  • Document stability reasoning with inputs and outputs

CLI Examples

# Check CFL/Fourier for 2D diffusion-advection
python3 scripts/cfl_checker.py --dx 0.1 --dt 0.01 --velocity 1.0 --diffusivity 0.1 --dimensions 2 --json

# Von Neumann analysis for custom 3-point stencil
python3 scripts/von_neumann_analyzer.py --coeffs 0.2,0.6,0.2 --dx 1.0 --nk 128 --json

# Detect stiffness from eigenvalue estimates
python3 scripts/stiffness_detector.py --eigs=-1,-1000 --json

# Check matrix conditioning for implicit system
python3 scripts/matrix_condition.py --matrix A.npy --norm 2 --json

Error Handling

ErrorCauseResolution
dx and dt must be positive
Zero or negative valuesProvide valid positive numbers
No stability criteria applied
Missing velocity/diffusivityProvide at least one physics parameter
Matrix file not found
Invalid pathCheck matrix file exists
Could not compute eigenvalues
Singular or ill-formed matrixCheck matrix validity

Interpretation Guidance

ScenarioMeaningAction
stable: true
All checked criteria satisfiedProceed with simulation
stable: false
At least one limit violatedReduce dt or change scheme
stable: null
No criteria could be appliedProvide more physics inputs
Stiffness ratio > 1000Problem is stiffUse implicit integrator
Condition number > 10⁶Ill-conditionedUse scaling/preconditioning

Limitations

  • Explicit schemes only for CFL/Fourier checks (implicit is unconditionally stable)
  • Von Neumann analysis assumes linear, constant-coefficient, periodic BCs
  • Stiffness detection requires eigenvalue estimates from user

References

  • references/stability_criteria.md
    - Decision thresholds and formulas
  • references/common_pitfalls.md
    - Frequent failure modes and fixes
  • references/scheme_catalog.md
    - Stability properties of common schemes

Version History

  • v1.1.0 (2024-12-24): Enhanced documentation, decision guidance, examples
  • v1.0.0: Initial release with 4 stability analysis scripts