skills/core-numerical/convergence-study/SKILL.md
Perform spatial and temporal convergence analysis for solution verification — compute observed convergence orders from grid or timestep refinement studies, apply Richardson extrapolation to estimate discretization error, and calculate the Grid Convergence Index (GCI) per ASME V&V 20 standards. Use when verifying that a numerical solution converges at the expected rate, estimating the error on the finest mesh, checking whether grids are in the asymptotic range, or preparing formal verification reports, even if the user only asks "is my mesh fine enough" or "how accurate is my solution."
npx skillsauth add HeshamFS/materials-simulation-skills convergence-studyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provide script-driven convergence analysis for verifying that numerical solutions converge at the expected rate as the mesh or timestep is refined.
| Input | Description | Example |
|-------|-------------|---------|
| Grid spacings | Sequence of mesh sizes (coarse to fine) | 0.4,0.2,0.1,0.05 |
| Timestep sizes | Sequence of dt values | 0.04,0.02,0.01 |
| Solution values | QoI at each refinement level | 1.16,1.04,1.01,1.0025 |
| Expected order | Formal order of the numerical scheme | 2.0 |
| Safety factor | GCI safety factor (1.25 default) | 1.25 |
| Script | Key Outputs |
|--------|-------------|
| scripts/h_refinement.py | results.observed_orders, results.mean_order, results.richardson_extrapolated_value, results.convergence_assessment |
| scripts/dt_refinement.py | Same as h_refinement but for temporal convergence |
| scripts/richardson_extrapolation.py | results.extrapolated_value, results.error_estimate, results.observed_order |
| scripts/gci_calculator.py | results.observed_order, results.gci_fine, results.gci_coarse, results.asymptotic_ratio, results.in_asymptotic_range |
h_refinement.py or dt_refinement.pygci_calculator.pyDo you have 3+ refinement levels?
+-- YES --> Run h_refinement.py or dt_refinement.py
| +-- Observed order matches expected? --> Solution verified
| +-- Order too low? --> Check: pre-asymptotic, coding error, insufficient resolution
| +-- Order too high? --> Check: superconvergence or cancellation effects
+-- NO (only 2 levels) --> Use richardson_extrapolation.py with assumed order
(less reliable without order verification)
# Spatial convergence with 4 grid levels
python3 scripts/h_refinement.py --spacings 0.4,0.2,0.1,0.05 --values 1.16,1.04,1.01,1.0025 --expected-order 2.0 --json
# Temporal convergence with 3 timestep levels
python3 scripts/dt_refinement.py --timesteps 0.04,0.02,0.01 --values 2.12,2.03,2.0075 --expected-order 2.0 --json
# Richardson extrapolation with assumed 2nd-order
python3 scripts/richardson_extrapolation.py --spacings 0.02,0.01 --values 1.0032,1.0008 --order 2.0 --json
# GCI for 3-mesh verification
python3 scripts/gci_calculator.py --spacings 0.04,0.02,0.01 --values 1.0128,1.0032,1.0008 --json
| Error | Cause | Resolution |
|-------|-------|------------|
| spacings and values must have the same length | Mismatched input arrays | Provide equal-length lists |
| At least 2 refinement levels required | Too few data points | Add more refinement levels |
| Exactly 3 refinement levels required | GCI needs 3 levels | Provide fine/medium/coarse |
| Oscillatory convergence detected | Non-monotone convergence | Check mesh quality or scheme |
| Scenario | Meaning | Action | |----------|---------|--------| | Observed order matches expected | Solution in asymptotic range | Report GCI, extrapolate | | Observed order < expected | Pre-asymptotic or coding bug | Refine further or debug | | Negative observed order | Solution diverging | Check implementation | | GCI asymptotic ratio near 1.0 | Grids in asymptotic range | Results are reliable | | GCI asymptotic ratio far from 1.0 | Not in asymptotic range | Refine further |
spacings, timesteps, values, expected-order, order) are validated as finite positive numbersh_refinement.py, dt_refinement.py, richardson_extrapolation.py, gci_calculator.py) with explicit argument listseval(), exec(), or dynamic code generationshell=True)math module); no pickle loading or deserialization of untrusted datareferences/convergence_theory.md - Formal convergence order, log-log analysis, asymptotic rangereferences/gci_guidelines.md - Roache's GCI method, ASME V&V 20, safety factorsdevelopment
Plan verification and validation campaigns for simulation codes using manufactured solutions, canonical benchmark problems, grid/time refinement, uncertainty propagation, and pass/fail acceptance criteria. Use when an agent needs to prove a solver, model, or result is trustworthy rather than only plausible.
testing
Map computational materials tasks onto workflow engines such as atomate2, jobflow, AiiDA, pyiron, or a simple one-off script. Use when deciding how to structure a reproducible campaign, DAG, restart strategy, provenance record, storage layout, or migration path from ad hoc scripts to managed workflows.
development
Plan molecular dynamics post-processing for materials simulations, including RDF, MSD and diffusion, VACF/VDOS, coordination numbers, bond-angle distributions, stress-strain curves, equilibration detection, PBC unwrapping, and trajectory format choices. Use before writing MD analysis scripts or trusting trajectory-derived results.
development
Triage cross-code simulation failures and propose safe retry ladders for nonconvergence, NaN/Inf, exploding energies, unstable timesteps, pressure blow-up, missing potentials, bad pseudopotentials, corrupted output, and incomplete runs. Use when an agent sees a failed or suspicious materials simulation and needs a defensible first response.