A plane-stress formulation of CDPM2 — tested on notched three-point bending

Cohesive-frictional materials dilate, so even 1D or 2D loading drives a 3D response because of the lateral (out-of-plane) expansion. Using a 3D constitutive model for plane stress needs an additional iterative loop to satisfy that the out-of-plane stress is equal to zero. For localised deformations this is difficult to achieve and either requires many iterations or fails to iterate completely. A native plane stress CDPM2 avoids that issue because the model is formulated only in terms of in-plane stress components. Here, a notched bending beam, run to full failure for three meshes, is used as a robustness test for the 2D plane stress implementation of CDPM2.

What is the point of the plane stress formulation?

Cohesive-frictional (quasi-brittle) materials are dilatant. For shear and compression volumetric expansion is generated, which results, even in plane stress loading, in out-of-plane lateral plastic strains. Consequently, the inelastic strain is 3D even if the stress field is 2D. For plane strain and axisymmetric analyses the 3D constitutive model can be straightforwardly used, because the out-of-plane total strain components are known in advance. For plane stress, this is not the case, the out-of-plane stress component is zero, but the out-of-plane strain is non-zero. Therefore, using the 3D version of CDPM2 (the same applies to most other plasticity, and damage-plasticity models) an iterative loop has to be used to find the out-of-plane strain so that the corresponding stress component is zero. This iterative process is slow and not guaranteed to converge if the localised cracking and crushing occurs. A way out is to use a 2D plane stress implementation of CDPM2 by formulating the model components (yield function, plastic potential) directly in the form of the in-plane stress components. This removes the need for iterations to satisfy the out-of-plane components.

How does the plane stress return mapping differ from the full 3D one?

The 3D implementation of the stress-return of CDPM2 is special because the Lode angle is held fixed during the stress return. This simplification is possible because the plastic potential is independent of the Lode angle. Therefore, for the deviatoric stress component, the return is radial. For the plane stress implementation, the 2D yield function does not have these properties. Therefore, the Lode angle cannot be kept fixed during the plastic return. Consequently, the Lode angle is another unknown that has to be solved in the return mapping procedure.

How is robustness of the implementation tested?

The whole point of the simplifications of the 3D version of CDPM2 is to make the stress return robust. To ensure that the new stress-return exhibits a similar robust behaviour, a notched concrete three-point bending test previously used for size effect studies (see Related work) is modelled with the plane stress version of CDPM2. The loading is controlled by the Crack Mouth Opening Displacement (CMOD) which allows the beam to be broken completely. The geometry of the beam is described by a depth of 500 mm, an out-of-plane thickness of 40 mm, a span of L = 2.177 D = 1088.5 mm, and a notch which is 1.8 mm wide and 150 mm deep (relative notch depth of 0.3). The beam is analysed with three element sizes which differ only in the ligament area above the notch. For the rest of the beam, the same coarse mesh is used.

Material properties

The material parameters for CDPM2 are chosen as E = 35.6 GPa, ν = 0.172, fc = 50 MPa, ft = 5 MPa. Softening is modelled with a bilinear softening curve (stype 1) in uniaxial tension with ft1 = 0.3 ft, wf1 = 0.15 wf, and wf = 53.33 µm, which corresponds to a tensile fracture energy G_f = 0.5 ft wf1 + 0.5 ft1 wf = 60 J/m². Elastic constants E and ν are the values calibrated for this specimen by Havlásek, Grassl and Jirásek (2016) (see Related work).

Load–CMOD response

Load–CMOD curves for the three meshes: peak-region detail and full range

The load CMOD curves are shown in two panels. At the left is the peak-region part and the right shows the full range. All three meshes are overlaid. Pre-peak and peak are nearly mesh-independent. The coarse mesh overshoots the peak slightly and shows abrupt drops. With mesh refinement, the softening branch converges to a smooth curve.

Damage evolution (fine mesh)

The videos of the load versus CMOD and damage evolution of the fine mesh show (deformed mesh scaled by a factor 20) that damage localises from the notch tip to the top of the beam already during the initial part of the load CMOD curve. In the remaining part of the response, the crack opens up while hinging around a small compressive zone.

Fracture-energy check

To check if fracture is well reproduced by the model, it is checked that the area under the load vs load-point deflection curve divided by the ligament area is close to the input fracture energy. From the results of the analyses, it is shown that the recovered G_F converges to the input G_f = 60 J/m² from above as the ligament mesh is refined: Coarse 80.5 → Medium 67.3 → Fine 62.1 J/m² (Fine within ~4 %).

As an overall observation, the analyses run stably through the full softening response for all three meshes. This confirms that the plane stress CDPM2 implementation behaves correctly.

Reproduce

To reproduce the results, use my docker setup. Only a few commands are required to obtain the results.

git clone https://github.com/githubgrasp/oofem-examples.git
cd oofem-examples/cdpm2-bending
docker run --rm -v "$PWD":/work ghcr.io/githubgrasp/oofem-public:cdpm2-bending bash run-all.sh

The command run-all.sh runs all three meshes, builds the comparison figure, and prints the fracture-energy check. the committed ld.dat files ship the results. If running the analysis is not desired, use SKIP_RUNS=1 bash run-all.sh, which rebuilds the figure and check without re-running. Regarding the image versions, :cdpm2-bending is the immutable per-example tag; use :latest to track the current OOFEM build.

Two related papers:

Built with OOFEM.

← All posts