Four single element tests of CDPM2
A single tetrahedron with one Gauss point, four monotonic loadings (tension, compression, simple shear, pure shear). Anyone implementing CDPM2 can test against those as a start. Reproducible in one Docker command.
Sometimes people contact me who are implementing our concrete constitutive model CDPM2 in OOFEM in their own finite element codes. Usually they ask for help with implementation and calibration. To help them to get started to check their implementation I built a small verification set in OOFEM, published it as a Docker image. If their implementation reproduces all four curves (tension, compression, simple shear and pure shear), then this is a good start.
The four tests
A single linear tetrahedron with one Gauss point, loaded under four distinct monotonic states. Same element, same material parameters; only the boundary conditions and loading differ.
| test | what’s imposed | stress state |
|---|---|---|
| Tension | uniaxial tension, lateral surfaces free | σxx ≠ 0; rest = 0 |
| Compression | uniaxial compression, lateral surfaces free | σxx ≠ 0; rest = 0 |
| Simple shear | only γxy nonzero, all normal strains = 0 | σxy + confining normals |
| Pure shear | only σxy nonzero (free normal strains) | σxy ≠ 0; rest = 0 |
The single-tet, single-GP setup is deliberate. Constant-strain element means the integration-point response is the element response — no mesh-bias, no spatial gradients, no quadrature artefacts. The harness is empty enough that any divergence between implementations comes straight from the constitutive law.
A few points to look at
Tension and pure shear both reach their peaks when the maximum principal stress equals ft (3 MPa for these parameters), but strain at peak is different. Pure shear has a lateral compression stress, which is not there for uniaxial tension.
In simple shear, the kinematic constraints suppress dilation. Compressive normal stresses build up as a result. The confining pressure affects the constitutive response. Damage is activated, but the shear stress keeps climbing instead of softening.
Reproduce
git clone https://github.com/githubgrasp/oofem-examples.git
cd oofem-examples/cdpm2-single-monotonic
docker run --rm -v "$PWD":/work ghcr.io/githubgrasp/oofem-public:latest bash run-all.sh
Outputs land in the example folder: per-test ld.pdf, combined 2×2
grid ld-all.pdf, and the OOFEM logs. The image is multi-arch, so
docker pull picks the right variant automatically — Apple Silicon,
Intel, Linux, Windows all work.
The image bakes in the OOFEM commit it was built from (recorded at
/opt/oofem/OOFEM_COMMIT inside the container), so this reproduction
will keep working even after upstream OOFEM moves on.
The example folder is at github.com/githubgrasp/oofem-examples/cdpm2-single-monotonic; issues and questions go on the issue tracker. More verification sets to follow.