PhAST: Matrix-Free, Differentiable PyTorch Solver for Phase-Field Fracture¶
Phase-field Autograd Solver in Torch
CEMS Lab · PyTorch-native FEM workflows
PhAST is a matrix-free, differentiable PyTorch solver for phase-field fracture and FEM benchmarks.
What is PhAST? PhAST is a PyTorch finite-element solver for
two-dimensional phase-field fracture in explicit dynamics and
quasi-static mechanics. Its principal dynamic pathway evaluates
finite-element operators without retaining a global stiffness matrix.
Selected tensor operations remain compatible with autograd, subject to
the documented limitations of history updates, active sets, and optional
sparse backends.
(New to phase-field modeling? Read our Phase-Field Primer and the Visual Glossary to learn the basics).
Use the fluent phast.Problem API to author new models. Use YAML
configurations for documented examples, reproducibility, batch runs, and
reviewable reruns of published simulations.
Get started View examples Capability matrix Source on GitHub
Run a first check
The base source installation does not require a separate PhAST compilation step. Optional HPC backends are not required for validation.
pip install -e .
python -m phast doctor
python -m phast run examples/dynamic/B7_dynamic_crack_branching_comsol/config.yaml --validate-only
python -m phast run examples/quasistatic/miehe_tension/config.yaml --validate-only
Core Strengths¶
Matrix-free operators
Fracture and damage updates use operations on PyTorch tensors without persistent global stiffness assembly on the main dynamic path.
Differentiable mechanics
Supported tensor operations remain compatible with PyTorch autograd, making forward runs inspectable and extensible for sensitivity studies.
Public benchmark bundles
Public examples include YAML inputs, setup figures, final fields, response histories, manifests, and compact animations.
YAML plus fluent API
Use declarative YAML for reproducible runs and phast.Problem
for programmatic model authoring.
Documentation¶
Section |
What it covers |
|---|---|
Installation, |
|
Backend visibility, expected doctor output, and a schema-validation smoke test. |
|
Problem setup, YAML, Python API, physics, meshes, sparse solves, and result APIs. |
|
Runnable fracture, solid-mechanics, and beta validation examples with visual outputs. |
|
Device choice, backend policy, timing evidence, and |
|
Issues, discussions, maintainer review, and contribution route. |
|
Clone the code, open issues, inspect examples, and contribute through GitHub. |
For New Users¶
If you are new to PhAST, we recommend following this path:
Learn the Basics: Read the “What is PhAST?” summary above, then follow the Phase-Field Primer and Visual Glossary.
Install: Follow the Getting Started guide.
Run a compact installation check: Execute
python -m phast run examples/solid_mechanics_beta/linear_plate/config.yaml --output_dir runs/linear_plate.Understand the API: Read the Python API to understand how the models are defined.
Check Capabilities: Review the Capability Matrix to ensure your target problem is supported.
Which Path Should I Use?¶
| Goal | First page | Stable surface |
|—|—|
| Install and run a first case | Getting started | python -m phast doctor |
| Author new models | Python API and Setting up problems | phast.Problem |
| Reproduce or batch-run examples | YAML workflow | python -m phast run config.yaml |
| Inspect completed runs | Public API reference | phast.load_result(path) |
| Browse runnable examples | Example gallery | flat public example folders |
| Diagnose failed runs | Troubleshooting | units, mesh, backend, and output checks |
| Check supported physics | Capability matrix | supported / beta / experimental / scaffold labels |
Workflow In One Line¶
YAML / phast.Problem -> Mesh -> Operators -> Solver -> Result bundle
For phase-field fracture, this sequence expands to configuration validation, mesh construction, mechanics update, tensile-history update, bounded damage solution, irreversibility enforcement, and result/provenance output. See the solver overview for the algorithmic pathway.
Get Started
- Getting Started
- 1. Prerequisites
- 2. Create An Environment And Install
- 3. Verify The Environment
- 4. Know Which YAML Files Are Runnable
- 5. Run A Small End-To-End Example
- 6. Run A Phase-Field Fracture Example
- 7. Understand The Solver Sequence
- 8. Create A New Setup
- 9. Platform And Optional Backend Notes
- 10. If You Become Stuck
- 11. Build The Documentation
- Verify Install
- Public API Reference
- Agent Contribution Guide
- Citing PhAST
- Troubleshooting and Failure Modes
- Tutorials
- Phase-field primer for mechanics engineers
- Visual glossary for phase-field fracture
- Modular fracture problems and learned damage updates
- Exploration experiments
- Capability Matrix
User Guide
- User Guide Overview
- Setting Up New Problems
- FEM Workflow Map
- Units
- Setup Checklist
- Why this sequence matters
- Minimal Fluent Setup
- Start From a Solved Example
- Geometry and Meshes
- Regions
- Materials
- Initial Conditions
- Boundary Conditions
- Analysis Steps and Solver Settings
- Outputs
- Validate, Run, Inspect
- Acceptance Targets
- What Makes a Good Public Example?
- Python API
- Declarative YAML Workflows
- Physics, Units, and Formulation
- Configuration guide
- Learned damage predictor interface
- Mesh formats
- Geometry and setup gallery
- Curated example contract
- Example tiers
- example folder layout
- Output artifact contract
- README contract
- YAML-first rules
- Script-contract rules
- Tutorial readiness flags
- Inputs and provenance
- Required metadata files
- Required CSV outputs
- Required visual outputs
- Trajectory and visualization stores
- Result inspection
- HPC execution and batch curation
- README, gallery, and root-doc integration
- Capability-boundary wording
- Tests and drift checks
- Curation checklist
- Capability Matrix
- Sparse linear solver
Supported Workflows
Example Gallery
API Reference
- Public API Reference
- Public Workflow API
- Sparse linear solver
- Time integrators
- Mixed-precision CG
- Adaptive meshing
- Algorithm overview
- phast.solvers.adaptive.compute_refinement_indicator
- phast.solvers.adaptive.crack_tip_neighborhood_criterion
- phast.solvers.adaptive.damage_gradient_criterion
- phast.solvers.adaptive.interpolate_elem_field
- phast.solvers.adaptive.interpolate_field
- phast.solvers.adaptive.refine_mesh
- phast.solvers.adaptive.union_refine_set
Performance & Reproducibility
Community