Grassl Group
Concrete Mechanics for Performance Based Design
OOFEM examples for using CDPM2 (Student projects)
Below are example analyses with CDPM2 (Concrete Damage–Plasticity Model 2) for MSc and undergraduate projects. For general setup guidance, see Info for student projects.
Quick start
Download all files for the reinforced prism example:
- Generate mesh with T3D:
- Convert to OOFEM:
- Run OOFEM:
t3d -d 0.02 -p 8 -i mesh.in -o mesh.out
t3d2oofem oofem.t3d.ctrl mesh.out oofem.in
oofem -f oofem.in > std.out &
Visualise: open the generated .pvd
/.vtu
in ParaView.
Outline
Example: Reinforced concrete prism subjected to tension (OOFEM)
We demonstrate the full pipeline (mesh → convert → run → postprocess) for a prism reinforced by a single rebar at its centre. The specimen is tensioned via the rebar.

Reinforcement can be modelled with discrete beam/truss elements. Options:
- (a) rebar embedded/constrained in the solid mesh (perfect bond via hanging nodes)
- (b) shared nodes between rebar and solid
- (c) coincident nodes with slip (see DOI; inputs linked from LS-DYNA page)
Pipeline
- Generate mesh with T3D
- Convert T3D mesh to OOFEM using
t3d2oofem
- Run OOFEM
- Postprocess (ParaView, extractor)
1) Generate mesh with T3D
We use T3D for tetrahedral meshes and flexible rebar handling. Constant-strain tets are robust for localisation problems in nonlinear fracture analyses.

Typical command:
t3d -d 0.02 -p 8 -i mesh.in -o mesh.out
Key T3D snippets (vertices, curves incl. centre rebar, and faces):
# Centre rebar curve written to output (option a/b) curve 13 order 2 vertex 9 10 output yes # Example facets (patches) patch 1 normal 0 0 1 boundary curve 1 2 3 4 patch 2 normal 0 0 1 boundary curve 5 6 7 8 ...
For option (b) (shared nodes), “fix” the rebar vertices into the faces and region:
# patches containing control vertices patch 1 normal 0 0 1 boundary curve 1 2 3 4 fixed vertex 9 patch 2 normal 0 0 1 boundary curve 5 6 7 8 fixed vertex 10 # region includes rebar curve as fixed region 1 boundary patch -1 2 3 -4 -5 6 size def fixed curve 13
To debug geometry interactively (if compiled with X11):
t3d -X -d 0.02 -p 8 -i mesh.in -o mesh.out
2) Convert T3D → OOFEM
Basic syntax:
t3d2oofem oofem.t3d.ctrl mesh.out oofem.in
The control file (oofem.t3d.ctrl
) defines analysis control, materials, sections, outputs, and how T3D geometry maps to OOFEM parts
(e.g., region → concrete; curve 13 → truss rebar; vertex 9/10 → BCs). Example (abridged):
oofem.out Reinforced prism NonLinearStatic nmsteps 1 nmodules 1 nsteps 1 profileopt 1 contextOutputStep 1000 nsteps 100 rtolf 1.e-3 stiffMode 2 maxiter 1000 controllmode 1 donotfixload manrmsteps 1 vtkxml primvars 1 1 cellvars 6 1 2 4 5 13 46 tstep_step 1 domain_all domain 3d OutputManager tstep_all dofman_output { 9 10 } ncrosssect 2 nmat 2 nbc 2 nic 0 nltf 2 SimpleCS 1 SimpleCS 2 area 2.0106e-4 con2dpm 1 d 2400 E 30.e9 n 0.2 talpha 0. wf 1.85e-4 fc 24.e6 ft 2.4e6 hp 0.01 ... misesmat 2 d 7600 n 0.3 e 200.e9 talpha 0. sig0 500.e6 h 1.e6 BoundaryCondition 1 loadTimeFunction 1 prescribedvalue 0.0 BoundaryCondition 2 loadTimeFunction 2 prescribedvalue 0.003 ConstantFunction 1 f(t) 1.0 PiecewiseLinFunction 2 t 2 0. 100. f(t) 2 0.0 1.0 # geometry mapping region 1 elemprop crossSect 1 mat 1 tetratype ltrspace curve 13 nodetype hangingnode elemprop crossSect 2 mat 2 edgetype truss3d nodeprop doftype 3 2 2 2 vertex 9 nodeprop bc 3 1 1 1 vertex 10 nodeprop bc 3 1 1 2 ###### Used for Extractor (copy into oofem.in and uncomment) #%BEGIN_CHECK% #DOFMAN number 10 dof 3 type d #REACTION number 9 dof 3 #%END_CHECK%
The example uses an implicit incremental–iterative scheme with displacement control at the rebar end. You can also switch to explicit (see commented control lines in the file).
3) Run OOFEM
From the input folder:
oofem -f oofem.in > std.out &
Review std.out
for convergence information and errors/warnings.
4) Postprocess
ParaView reads OOFEM’s .vtu
(and .pvd
) files. For curves, use the extractor:
extractor.py -f oofem.in > ld.dat &
Tensile splitting test (OOFEM)
Coming soon.
Single-element test (OOFEM)
Coming soon.
Last updated by Peter Grassl