CFRP-confined concrete cylinder — hardening past the unconfined peak
Wrap a plain concrete cylinder in a CFRP jacket and its load–displacement curve no longer softens — it keeps hardening past the unconfined peak. Inside the wrap, though, the concrete is damaging. CDPM2 in OOFEM reproduces both stories from one input change.
Plain concrete under uniaxial compression softens — microcracks open, stiffness drops, and the load–displacement curve descends. Wrap the same cylinder in a CFRP sheet and the macroscopic curve no longer softens: load capacity keeps growing well past the unconfined peak, often two- or three-fold. Yet if you cut a tested FRP-wrapped specimen open, the concrete inside is damaged.
The two stories are not contradictory. They come from the competition
between two mechanisms. Both can be
reproduced in OOFEM with CDPM2 (con2dpm) by changing only the boundary:
add an array of circumferential truss hoops around the cylinder and the
softening curve becomes a hardening one.
The set-up
Two companion analyses share an identical 100 mm × 200 mm concrete
cylinder, the same CDPM2 parameters, and the same prescribed axial
displacement of 3 mm ramped over 100 steps. They differ in one thing:
the confined model has 31 intermediate circumferential CFRP hoops
along the cylinder plus two endcap hoops, each meshed as truss3d
elements that only carry hoop force; the unconfined model has none.
Concrete: CDPM2 with fc = 30 MPa, ft = 2.7 MPa, E = 31 GPa,
ν = 0.2, dilation 0.85.
CFRP: linear isotropic, E = 254 GPa, modelled with SimpleCS area = spacing × wrap thickness so the discrete hoops carry the same total
hoop force per unit height as a continuous wrap.
The two responses
The unconfined cylinder (blue) reaches its peak at about 0.4 mm shortening and then softens — by the end of the run the load has dropped back below half its peak value. The CFRP-wrapped cylinder (red) carries roughly the same initial load up to the unconfined peak, then continues to harden as the wrap further engages. It reaches over 670 kN at 3 mm shortening, about three times the unconfined peak.
What the damage field shows
The compressive damage variable ω_c at the same axial strain in both specimens, sliced through a vertical mid-plane. (Tensile damage ω_t follows ω_c under this load path; ω_c is the relevant story.)
Unconfined:
Confined:
Two things stand out.
First, damage in the unconfined case localises in region in the middle of the specimen rather than spreading uniformly. That is a boundary effect, not a property of CDPM2: the prescribed-displacement BCs at the top and bottom faces fix all three DOFs at the loaded nodes, which prevents the concrete near the end-faces from expanding radially. The end zones are effectively passively confined “for free” by the BC, much like a platen-bonded cylinder, and damage migrates to the middle where the end restraint has less influence.
Second, for the confined cylinder, the CFRP wrap holds it together macroscopically, but microcrack-equivalent damage spreads through the mid-region of the concrete. This matches what is observed experimentally when FRP-wrapped specimens are cut open: the wrap is intact and the load–displacement curve never softened, yet the interior concrete shows damage.
The mechanism in one sentence
As the concrete damages its stiffness drops and lateral expansion accelerates; the CFRP wrap reacts elastically to that expansion and applies a passive confining pressure; the increased confinement pushes the stress state up the CDPM2 yield surface fast enough to outrun the damage-driven stiffness loss, so the axial load capacity keeps growing. The two effects are competing, and under CFRP confinement the confinement wins.
Why model the wrap as truss hoops
A CFRP wrap is strongly orthotropic — stiff along the fibres,
compliant across them. A wrap wound circumferentially carries hoop
force essentially without contributing axial or shear stiffness, so
modelling it as truss3d elements in the hoop direction is the
right discretisation. A continuum shell would impose an axial
stiffness that the real material does not have. The hoop spacing is
controlled in the T3D mesh; each hoop’s SimpleCS area is set to
spacing × wrap thickness so the discrete hoops integrate to the
same total per-unit-height hoop force as a continuous wrap of that
thickness (here t = 0.334 mm, s = 6.25 mm). The spacing of the hoops is chosen to be smaller than the average element length, so that all surface nodes of the cylinder are connected to the hoops.
Reproduce
The committed oofem.in files mean you do not need T3D to rerun the
analyses — only OOFEM. Use the public image:
git clone https://github.com/githubgrasp/oofem-examples.git
cd oofem-examples/column-frp-confined
docker run --rm -v "$PWD":/work \
ghcr.io/githubgrasp/oofem-public:column-frp-confined bash run-all.sh
The :column-frp-confined tag is immutable — use :latest instead to
track the current OOFEM build (results may drift slightly as the code
evolves). If you want to regenerate the mesh from mesh.in (e.g. to
change the cylinder geometry or wrap layout) you need T3D, which is
bundled in the private image; see the
student-projects page for setup.
Each ld.dat is committed alongside oofem.in, so you can compare
your run against the reference curve without waiting for the analysis
to finish (unconfined ~30 min, confined ~10 min on a typical
workstation).
The example folder is at github.com/githubgrasp/oofem-examples/tree/main/column-frp-confined; issues and questions go on the issue tracker.
Built with OOFEM.