numerical-integration

Numerical Integration

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "numerical-integration" with this command: npx skills add heshamfs/materials-simulation-skills/heshamfs-materials-simulation-skills-numerical-integration

Numerical Integration

Goal

Provide a reliable workflow to select integrators, set tolerances, and manage adaptive time stepping for time-dependent simulations.

Requirements

  • Python 3.8+

  • NumPy (for some scripts)

  • No heavy dependencies for core functionality

Inputs to Gather

Input Description Example

Problem type ODE/PDE, stiff/non-stiff stiff PDE

Jacobian available Can compute ∂f/∂u? yes

Target accuracy Desired error level 1e-6

Constraints Memory, implicit allowed? implicit OK

Time scale Characteristic time 1e-3 s

Decision Guidance

Choosing an Integrator

Is the problem stiff? ├── YES → Is Jacobian available? │ ├── YES → Use Rosenbrock or BDF │ └── NO → Use BDF with numerical Jacobian └── NO → Is high accuracy needed? ├── YES → Use RK45 or DOP853 └── NO → Use RK4 or Adams-Bashforth

Stiff vs Non-Stiff Detection

Symptom Likely Stiff Action

dt shrinks to tiny values Yes Switch to implicit

Eigenvalues span many decades Yes Use BDF/Radau

Smooth solution, reasonable dt No Stay explicit

Script Outputs (JSON Fields)

Script Key Outputs

scripts/error_norm.py

error_norm , scale_min , scale_max

scripts/adaptive_step_controller.py

accept , dt_next , factor

scripts/integrator_selector.py

recommended , alternatives , notes

scripts/imex_split_planner.py

implicit_terms , explicit_terms , splitting_strategy

scripts/splitting_error_estimator.py

error_estimate , substeps

Workflow

  • Classify stiffness - Check eigenvalue spread or use stiffness_detector

  • Choose tolerances - See references/tolerance_guidelines.md

  • Select integrator - Run scripts/integrator_selector.py

  • Compute error norms - Use scripts/error_norm.py for step acceptance

  • Adapt step size - Use scripts/adaptive_step_controller.py

  • Plan IMEX/splitting - If mixed stiff/nonstiff, use scripts/imex_split_planner.py

  • Validate convergence - Repeat with tighter tolerances

Conversational Workflow Example

User: I'm solving the Allen-Cahn equation with a stiff double-well potential. What integrator should I use?

Agent workflow:

  • Check integrator options: python3 scripts/integrator_selector.py --stiff --jacobian-available --accuracy high --json

  • Plan the IMEX splitting (diffusion implicit, reaction explicit): python3 scripts/imex_split_planner.py --stiff-terms diffusion --nonstiff-terms reaction --coupling weak --json

  • Recommend: Use IMEX-BDF2 with diffusion term implicit, double-well reaction explicit.

Pre-Integration Checklist

  • Identify stiffness and dominant time scales

  • Set rtol /atol consistent with physics and units

  • Confirm integrator compatibility with stiffness

  • Use error norm to accept/reject steps

  • Verify convergence with tighter tolerance run

CLI Examples

Select integrator for stiff problem with Jacobian

python3 scripts/integrator_selector.py --stiff --jacobian-available --accuracy high --json

Compute scaled error norm

python3 scripts/error_norm.py --error 0.01,0.02 --solution 1.0,2.0 --rtol 1e-3 --atol 1e-6 --json

Adaptive step control with PI controller

python3 scripts/adaptive_step_controller.py --dt 1e-2 --error-norm 0.8 --order 4 --controller pi --json

Plan IMEX splitting

python3 scripts/imex_split_planner.py --stiff-terms diffusion,elastic --nonstiff-terms reaction --coupling strong --json

Estimate splitting error

python3 scripts/splitting_error_estimator.py --dt 1e-4 --scheme strang --commutator-norm 50 --target-error 1e-6 --json

Error Handling

Error Cause Resolution

rtol and atol must be positive

Invalid tolerances Use positive values

error-norm must be positive

Negative error norm Check error computation

Unknown controller

Invalid controller type Use i , pi , or pid

Splitting requires at least one term

Empty term list Specify stiff or nonstiff terms

Interpretation Guidance

Error Norm Values

Error Norm Meaning Action

< 1.0 Step acceptable Accept, maybe increase dt

≈ 1.0 At tolerance boundary Accept with current dt

1.0 Step rejected Reject, reduce dt

Controller Selection

Controller Properties Best For

I (integral) Simple, some overshoot Non-stiff, moderate accuracy

PI (proportional-integral) Smooth, robust General use

PID Aggressive adaptation Rapidly varying dynamics

IMEX Strategy

Coupling Strategy

Weak Simple operator splitting

Moderate Strang splitting

Strong Fully coupled IMEX-RK

Limitations

  • No automatic stiffness detection: Use stiffness_detector from numerical-stability

  • Splitting assumes separability: Terms must be cleanly separable

  • Jacobian requirement: Some methods need analytical or numerical Jacobian

References

  • references/method_catalog.md

  • Integrator options and properties

  • references/tolerance_guidelines.md

  • Choosing rtol/atol

  • references/error_control.md

  • Error norm and adaptation formulas

  • references/imex_guidelines.md

  • Stiff/non-stiff splitting

  • references/splitting_catalog.md

  • Operator splitting patterns

  • references/multiphase_field_patterns.md

  • Phase-field specific splits

Version History

  • v1.1.0 (2024-12-24): Enhanced documentation, decision guidance, examples

  • v1.0.0: Initial release with 5 integration scripts

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

nonlinear-solvers

No summary provided by upstream source.

Repository SourceNeeds Review
General

numerical-stability

No summary provided by upstream source.

Repository SourceNeeds Review
General

simulation-orchestrator

No summary provided by upstream source.

Repository SourceNeeds Review
General

mesh-generation

No summary provided by upstream source.

Repository SourceNeeds Review