PhAST

Phase-field Autograd Solver in Torch

PhAST logo

CEMS Lab · PyTorch-native FEM workflows

Matrix-free, differentiable phase-field fracture and FEM benchmarks in PyTorch.

What is PhAST? PhAST is a Python library built on PyTorch that allows you to solve phase-field fracture problems without assembling large global matrices. It is designed to be differentiable, making it easier to combine with machine learning techniques.

(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 public examples, reproducibility, batch runs, and exact reruns of published simulations.

Run a first check

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: Your First 15 Minutes

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 Simple Example: Run python -m phast run examples/quasistatic/miehe_tension/config.yaml to see a result quickly.

  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 | production / beta / scaffold labels |

Workflow In One Line

YAML / phast.Problem -> Mesh -> Operators -> Solver -> Result bundle

Get Started

User Guide

Performance & Reproducibility