Example gallery¶
This section maps core solver capabilities to runnable workflows in the repository, so users can quickly see the public examples that are supported today.
How examples are classified¶
Label |
Meaning |
|---|---|
Runnable solve |
The checked-in input has a documented execution route and produces the stated output bundle. |
Validate-only |
The command checks configuration structure and implemented-option constraints; it does not solve the problem. |
Template or manifest |
The file documents fields or records artifacts and is not itself a solver input. |
Retained evidence |
Checked-in results may be inspected without implying that a new calculation was executed. |
Each example-local README is authoritative for its exact command, runtime, outputs, limitations, and evidence boundary.
Representative results¶
The panels below are lightweight documentation thumbnails, not raw benchmark archives. They point to the same workflows listed in the sections that follow.
Start With These¶
Example |
Status |
Modality |
Command |
Expected outputs |
Inspect with |
|---|---|---|---|---|---|
Miehe tension |
Supported |
YAML-first |
|
CSV histories, run metadata/lockfile, and gallery visuals; run explicit postprocessing if you need regenerated animations from a fresh solve |
|
Notched-holed plate |
Supported |
YAML-first |
|
final damage, response CSVs, comparison report, visual manifest |
|
Linear plate |
Supported |
YAML-first |
|
response curve, displacement, von Mises, strain energy, manifests |
|
Kalthoff-Winkler |
Supported |
YAML-first |
|
setup preview, damage image, energy/history CSVs, manifests |
|
Heterogeneous fields |
Teaching example |
Script contract |
|
elementwise |
|
Use the capability matrix before assuming a workflow status. Use the promoted example contract when adding or auditing a gallery entry.
Quasi-static fracture
Implicit AT1/AT2 crack-path workflows with comparison reports and standard run metadata.
Dynamic fracture
Explicit dynamics for impact, branching, and perforated-plate crack-growth benchmarks.
Microstructured media
Perforated-plate and heterogeneous fracture cases used for dataset and morphology studies.
Engineering outputs
Force-displacement, energy, convergence, lockfile, and visualization artifacts from reproducible runs.
Solid mechanics
Linear elastic, hyperelastic, and J2 mechanics examples backed by the same sparse-solve and material-update paths used by the solver.
Capability-first pathways¶
Quasi-static fracture¶
The quasi-static family provides documented pathways for selected literature comparisons.
SENT / SENS / TPB / L-panel: benchmark configs under
configs/benchmarks/quasistatic/and comparison scripts in matching example directories.Run example:
python -m phast run examples/quasistatic/notched_holed_plate/config.yaml --validate-onlyExpected outputs:
config.yaml,run_lockfile.json,results.csv, plots. Runcompare.pyinexamples/quasistatic/notched_holed_plate/for benchmark-level pass/fail summary.
Explicit dynamics fracture¶
Branching, impact, perforation, Kalthoff-Winkler:
configs/benchmarks/dynamic/*.yamlplus matching run folders underexamples/dynamic/*.B7 dynamic branching:
examples/dynamic/B7_dynamic_crack_branching_comsol/config.yamlis the full-plate COMSOL cross-check.Benchmark workflow:
Use the command in the example-local README and write to an explicit
--output_dir.Inspect the generated manifest, histories, and damage fields.
If the README provides a case-specific comparison command, run that exact command. Do not assume that every dynamic example provides a generic
compare.py.Where retained comparison evidence is supplied, the standard filenames are
compare_report.txtandcompare.png. Retained evidence is not a substitute for a comparison generated from a new run.
Solid mechanics FEA¶
python -m phast run examples/solid_mechanics_beta/linear_plate/config.yamlLinear elastic plate FEA with displacement, stress, deformed-shape, response, and visual-manifest outputs.python -m phast run examples/solid_mechanics_beta/neohookean_plate/config.yamlNonlinear neo-Hookean cantilever FEA with Newton convergence and final-state field outputs.python -m phast run examples/solid_mechanics_beta/j2_bar/config.yamlMesh-level J2 plasticity bar FEA with von Mises and equivalent-plastic-strain fields.
Heterogeneous material fields¶
python examples/heterogeneous_fields/run.py --config examples/heterogeneous_fields/parameters.yaml --output-dir runs/heterogeneous_fieldsconstructs element-orderedE(x)andGc(x)fields, evaluates a mechanics-derived tensile history under an imposed affine strain, and solves bounded AT2 damage.This is a script-contract teaching example because arbitrary material-field maps are not currently represented by the general YAML runner.
It is not a coupled equilibrium benchmark, cohesive interface model, or validated microstructure-fracture study. See the example README before adapting image or segmentation data.
Beta plasticity, cohesive, and PF-CZM validation¶
J2 plasticity and ductile PF-plasticity:
examples/plasticity_interface_beta/run_j2_validation.pyandexamples/plasticity_interface_beta/run_ductile_pf_plasticity_validation.py.Cohesive/interface benchmarks: mode-I jump, mixed-mode, contact-compression, delamination patch, structural DCB, diffuse-interface, and coupled PF-cohesive validation workflows live under
examples/plasticity_interface_beta/.Manifested reproduction set:
configs/benchmarks/plasticity_interface/reproducibility_contracts.yaml.Generated visual outputs: the scripts write
*.png, manifest metadata, and summaries into their chosen output directories. These are beta validation artifacts until the nonlinear support criteria in the capability matrix are satisfied.
Benchmark Catalogue¶
YAML-driven benchmark configurations live under configs/benchmarks/.
Runnable public examples carry their config.yaml files directly in
examples/. Prefer the example-local command when a case is curated, because
the folder also contains the README, setup image, result visuals, and
postprocessing scripts expected by the public example contract.
Use python -m phast run <config.yaml> --validate-only to parse and
schema-check a benchmark without running the solve. This is configuration
validation, not scientific or mesh-convergence validation. The full YAML schema is
documented in configs/REFERENCE.yaml.
Quasi-static Benchmarks¶
Config |
Material |
Reference |
Acceptance evidence |
Status |
|---|---|---|---|---|
|
concrete, Ambati-style |
Winkler 2001 path; Ambati 2015 load-displacement comparison |
comparison script available |
Reference CSV is stored outside the public repository. Do not mark as quantitatively validated until rerun evidence is documented through the public example contract. |
|
cement mortar, Ambati-style |
COMSOL 6.4 holed-plate example; Ambati 2015 phase-field formulation |
|
First-peak load is close; displacement mismatch is attributed to simplified rigid-pin boundary conditions pending full Lagrange-MPC support. |
Miehe tension is already documented as an example-local YAML workflow under
examples/quasistatic/miehe_tension/. Older Miehe shear and three-point
bending variants should stay outside the gallery until they satisfy the same
flat YAML, manifest, and visualization contract.
Dynamic Benchmarks¶
Config |
Material |
Reference |
Notes |
|---|---|---|---|
|
maraging steel |
Kalthoff 2000; Borden 2012 Fig. 12 |
Half-plate symmetry model with spectral split. |
|
Borden glass |
Borden 2012 SENT |
Spectral split, AT2; public folder contains a curated runnable configuration and visuals. |
|
PMMA, Bleyer-style |
Bleyer 2017 branching |
AT1 with Amor/volumetric-deviatoric split; two-step prestrain and dynamic release. |
|
PMMA, Bleyer-style |
Bleyer 2017 perforated plate |
Dynamic AT1 with Amor split; public layouts include one-hole near/far, 10-hole, and 30-hole variants. |
|
glass/PMMA-equivalent override |
COMSOL 6.4 dynamic crack-branching example |
AT1 with Amor/volumetric-deviatoric split; traction-controlled full-plate comparison. |
Acceptance Checks¶
Some curated benchmark examples provide a local comparison utility, such as
compare.py; others provide only retained comparison evidence. Follow the
example-local README rather than inferring a command from another case. When a
comparison utility is present, run it after the simulation completes so that it
loads the new output and reference data and writes case-specific artifacts. The
acceptance metric may concern peak load, load-displacement envelope error,
branching onset time, final crack-path morphology, or required-output checks.
For load-displacement comparisons, configure the reaction writer explicitly:
output:
reaction_node_set: <named_node_set>
reaction_component: 1 # 0=x, 1=y
The benchmark command should not be the only record of a claim. Keep the validated configuration, lockfile, metadata, histories, retained visuals, and comparison output together with the example or run artifact.
Capability boundaries¶
For current non-hardened features, review Capability matrix. This doc is also the source of truth for what can be promised publicly.
Sparse direct vs CG inner solve¶
Workflow |
Public route |
Evidence to keep |
|---|---|---|
Miehe tension |
|
run manifests, CSV histories, damage animation |
Notched-holed plate |
|
setup preview, response plot, final damage |
Driver: sparse_solve. Speedup is wall-time of the
sparse direct path versus the matrix-free CG inner-solve path on the same mesh,
tolerance, backend stack, and output settings. See
Performance and Reproducibility for
the reporting checklist before publishing numbers.