From full
Computes observed convergence orders, Richardson extrapolation error estimates, and Grid Convergence Index (GCI) from grid or timestep refinement studies for solution verification per ASME V&V 20 standards.
How this skill is triggered — by the user, by Claude, or both
Slash command
/full:convergence-studyThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Provide script-driven convergence analysis for verifying that numerical solutions converge at the expected rate as the mesh or timestep is refined.
Provide script-driven convergence analysis for verifying that numerical solutions converge at the expected rate as the mesh or timestep is refined.
math).| 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, results.extrapolated_value, results.notes |
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 | Strongest evidence of 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 | See caveat below | Confirm with order comparison |
| GCI asymptotic ratio far from 1.0 | Not in asymptotic range | Refine further |
Asymptotic-ratio caveat (constant refinement ratios). When the refinement ratios are equal (
r21 == r32, the common case), the asymptotic ratioAR = GCI_coarse / (r^p * GCI_fine)reduces algebraically tof1/f2. It then only measures the relative gap between the two finest QoI values — not whether the data follow the assumed power law — so anARnear 1.0 can give false reassurance even when the observed order is far from expected. Thegci_calculator.pyJSON emits anotesentry flagging this. For a real asymptotic-range determination:
- Compare the observed order
pto the scheme's theoretical/expected order — a match is the meaningful evidence of being in the asymptotic range.- For stronger verification, use 4+ systematically refined grids and check that the observed order is consistent across successive grid triplets (
h_refinement.pyreports one order per triplet plusmean_order).
h_refinement.py / dt_refinement.py can report a results.mean_order; recorded the per-triplet results.observed_orders (a single-pair Richardson run does not verify order).results.mean_order and confirmed results.convergence_assessment reads PASS (observed order within 10% of the scheme's expected order); a FAIL or unknown means the result is not yet verified.results.in_asymptotic_range is true and that no notes entry reports pre-asymptotic (>50% order variation), negative/non-positive order, or zero error differences before quoting any GCI or extrapolated value.r21/r32 from gci_calculator.py are >= 1.3 (round-off noise floor) and that no Oscillatory convergence detected error was raised.results.gci_fine (with the safety factor used: 1.25 for >= 3 grids with verified order, 3.0 for 2 grids with assumed order) as the reported discretization uncertainty, plus results.extrapolated_value as the best estimate.asymptotic_ratio near 1.0 as proof of asymptotic range (it degenerates to f1/f2); confirmed the asymptotic range via observed-order-vs-expected and read the gci_calculator.py notes caveat.| Tempting shortcut | Why it's wrong / what to do |
|---|---|
| "Two grids agree closely, so it's converged" | Two levels cannot estimate observed order. Run h_refinement.py/dt_refinement.py with >= 3 levels; a 2-grid Richardson run uses an assumed order and needs safety factor 3.0, not 1.25. |
| "The asymptotic ratio is ~1.0, so we're in the asymptotic range" | With constant refinement ratios AR = GCI_coarse/(r^p*GCI_fine) reduces to f1/f2 and only measures the gap between the two finest QoI values. Verify the asymptotic range by comparing observed order to the expected order (and 4+ grid consistency). |
| "GCI_fine is tiny, so the solution is grid-independent" | A near-zero GCI can also mean the QoI is insensitive to refinement or the differences are in round-off noise (ratios < 1.3). Confirm in_asymptotic_range is true and refinement ratios are >= 1.3 first. |
| "Observed order is higher than expected, even better" | Order well above the formal order usually signals superconvergence or error cancellation, not extra accuracy. Treat it as a flag (convergence_assessment is FAIL when >10% off) and verify with more grid levels. |
| "The script printed an extrapolated value, so use it" | When the observed order is non-positive the solution is diverging and h_refinement.py returns richardson_extrapolated_value = null with a diverging note. Do not quote an extrapolated value or GCI in that case. |
| "Implicit/stable solver, so any timestep is fine for the study" | Temporal stability is not temporal accuracy. dt_refinement.py still needs >= 3 systematically reduced timesteps to recover the scheme's order; a too-coarse dt sequence stays pre-asymptotic. |
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 factorsnpx claudepluginhub heshamfs/materials-simulation-skills --plugin core-numericalPlans verification and validation campaigns for simulation codes using manufactured solutions (MMS), benchmark problems, grid/time refinement, uncertainty propagation, and pass/fail criteria. Use to prove solver, model, or result trustworthiness.
Designs rigorous numerical simulations with formal V&V: defines mathematical models, selects methods (Monte Carlo, FDM, FEM), specifies convergence criteria, and quantifies uncertainty.
Verifies math-heavy code for algorithm correctness, numerical stability, and standards alignment. For scientific computing, numerical methods, ML/AI models, and safety-critical calculations.