Use VUMAT-PD to run a compatible Fortran material routine in a standalone C++ correspondence-peridynamics solver. Start with the included Johnson–Cook routine to see how material properties, stress and state variables pass through the interface. Then use the same workflow to check a routine of your own before running it in PD.
| What you want to do | Where to start |
|---|---|
| Run a small example | Johnson–Cook material point |
| Bring your own material routine | Plugin integration guide and tensor and state conventions |
| Follow a time increment through the code | Architecture and source map |
| Reproduce the paper’s PD and H8 FEM comparison | Benchmark workflow |
The shared Johnson–Cook plugin runs in both hosts. This lets you inspect how each host supplies kinematics and uses the returned stress while keeping the constitutive routine fixed. Compatibility depends on the component order, stress frame and state layout documented in the interface guide.
| Directory | Start here when you want to… |
|---|---|
| examples/ | Learn how to use VUMAT-PD. Run the small Johnson–Cook material-point example and inspect its stress and history output before trying your own material. |
| tests/ | Check a code change. Run CTest to check specific behavior such as tensor ordering, material history transfer, and rotation updates. Each check has a pass or fail criterion. |
| benchmarks/ | Reproduce the paper's numerical results. Run the tensile cases or use the archived outputs to compare PD with H8 FEM and regenerate the reported metrics. |
Case inputs are stored once. The two affine elastic inputs exercise the extension and shear regression tests. CTest runs the same examples/jc_material_point.json file used in the quick start. The benchmark keeps separate inputs for runs that vary the grid, horizon, or time step because each run measures a different numerical effect.
The diagram shows where the material plugin fits into one PD increment. The paper compares PD and H8 FEM with the same Johnson–Cook routine. At matched fine resolution, the stress-history NRMSE is 0.55%, the displacement RMSE divided by the imposed displacement is 0.96%, and the maximum local plastic-strain difference is 11.50%.
Figure 4. Coarse-grid comparison of axial stress and equivalent plastic strain.
Figure 5. Fine-grid comparison for the same loading and material routine.
Figure 6. PD deviations from the finest H8 FEM reference as grid spacing, horizon and time step vary. These comparisons use a common reference, while Figures 4 and 5 pair PD and FEM at matched resolutions.
Paper figures and provenance · Supplementary Movie S1
Use CMake 3.25+, Ninja, GNU C++/Fortran, OpenMP and Python. Run from the repository root.
cmake --preset release
cmake --build --preset release
ctest --preset release
./build/release/bin/vumat_pd_run examples/jc_material_point.jsonOn Windows use vumat_pd_run.exe. The example writes stress and material history to examples/output/jc_material_point/timeseries.csv. Use the integration guide to replace the supplied plugin and verify your own routine at a material point before coupling it to PD.
The tensile benchmark guide gives the commands to recalculate the paper's metrics from archived data, run a coarse PD/H8 FEM pair, or recompute the full case matrix.



