PhAST: Matrix-Free, Differentiable PyTorch Solver for Phase-Field Fracture

Phase-field Autograd Solver in Torch

PhAST logo

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.

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
Kalthoff-Winkler impact crack growth
Dynamic fracture showcase: Kalthoff-Winkler impact crack growth.

Core Strengths

Matrix-free operators

Fracture and damage updates use operations on PyTorch tensors without persistent global stiffness assembly on the main dynamic path.

Formulation

Differentiable mechanics

Supported tensor operations remain compatible with PyTorch autograd, making forward runs inspectable and extensible for sensitivity studies.

API reference

Public benchmark bundles

Public examples include YAML inputs, setup figures, final fields, response histories, manifests, and compact animations.

Example gallery

YAML plus fluent API

Use declarative YAML for reproducible runs and phast.Problem for programmatic model authoring.

Python API

Documentation

Section

What it covers

Getting started

Installation, phast doctor, validation, first run, and result inspection.

Verify install

Backend visibility, expected doctor output, and a schema-validation smoke test.

User guide

Problem setup, YAML, Python API, physics, meshes, sparse solves, and result APIs.

Example gallery

Runnable fracture, solid-mechanics, and beta validation examples with visual outputs.

Performance and reproducibility

Device choice, backend policy, timing evidence, and torch.compile reporting.

Community

Issues, discussions, maintainer review, and contribution route.

Source repository

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:

  1. Learn the Basics: Read the “What is PhAST?” summary above, then follow the Phase-Field Primer and Visual Glossary.

  2. Install: Follow the Getting Started guide.

  3. Run a compact installation check: Execute python -m phast run examples/solid_mechanics_beta/linear_plate/config.yaml --output_dir runs/linear_plate.

  4. Understand the API: Read the Python API to understand how the models are defined.

  5. 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

User Guide

Performance & Reproducibility