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:

oofemFiles.zip →

  1. Generate mesh with T3D:
  2. t3d -d 0.02 -p 8 -i mesh.in -o mesh.out
  3. Convert to OOFEM:
  4. t3d2oofem oofem.t3d.ctrl mesh.out oofem.in
  5. Run OOFEM:
  6. 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.

Geometry and loading setup for reinforced prism
Geometry and loading setup.

Reinforcement can be modelled with discrete beam/truss elements. Options:

Pipeline

  1. Generate mesh with T3D
  2. Convert T3D mesh to OOFEM using t3d2oofem
  3. Run OOFEM
  4. Postprocess (ParaView, extractor)

Back to outline

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.

T3D vertex/curve/patch numbering for prism and rebar
Example vertex/curve/patch numbering for T3D.

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

Back to outline

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).

Back to outline

3) Run OOFEM

From the input folder:

oofem -f oofem.in > std.out &

Review std.out for convergence information and errors/warnings.

Back to outline

4) Postprocess

ParaView reads OOFEM’s .vtu (and .pvd) files. For curves, use the extractor:

extractor.py -f oofem.in > ld.dat &

Back to outline

Tensile splitting test (OOFEM)

Coming soon.

Back to outline

Single-element test (OOFEM)

Coming soon.

Back to outline

Last updated by Peter Grassl