Concrete Material Modeling and ANSYS Implementation Using SOLID65 Elements
Published:
Defining Material Properties for Concrete model using SOLID 65 elements in ANSYS
1. Overview of Concrete Material Properties
Concrete is a composite material with nonlinear behavior under compressive and tensile loads. When modeling concrete in ANSYS (especially using the SOLID65 element), key material properties must be defined, including:
- Density (ρ)
- Elastic modulus (Ec)
- Poisson’s ratio (ν)
- Tensile strength (ft)
- Yield surface models (Drucker-Prager or Multilinear Isotropic Hardening - MISO)
- Shear transfer coefficients
- Stress-strain curves
2. Key Material Parameters for Concrete in ANSYS using SOLID65 Elements
SOLID65 is a 3D solid element that simulates concrete cracking, crushing, and nonlinear behavior. The primary input parameters required for this element include:
Parameter | Description |
---|---|
Density (ρ) | Defines the mass density (kg/m³) |
Elastic Modulus (Ec) | Defines stiffness (MPa) |
Poisson’s Ratio (ν) | Defines lateral strain effects |
Tensile Strength (ft) | Defines cracking initiation |
Shear Transfer Coefficients | Controls shear across cracks |
Yield Surface Model | Drucker-Prager (DP) or Multilinear Isotropic Hardening (MISO) |
Stress-Strain Behavior | Defines the parabolic compressive response for MISO |
3. Density of Concrete
Concrete’s density depends on type and composition:
- Normal-weight concrete: 2300 - 2500 kg/m³
- Lightweight concrete: 1400 - 1800 kg/m³
- Heavyweight concrete: 3000 - 5000 kg/m³
🔹 ANSYS Implementation:
MP,DENS,1,0.0024 ! Normal-weight concrete
4. Elastic Modulus and Poisson’s Ratio
(a) Eurocode Equation
Elastic modulus (Ec) for concrete is estimated using Eurocode 2:
\[E_c = 22 \times (f_c + 8)^{0.3} \quad \text{(MPa)}\]✅ Example for \( f_c = 40 \) MPa:
\[E_c = 22 \times (40 + 8)^{0.3} = 34,145 \text{ MPa}\](b) ACI Equation
According to ACI 318, the elastic modulus is:
\[E_c = 4700 \sqrt{f_c} \quad \text{(MPa)}\]✅ Example for \( f_c = 40 \) MPa:
\[E_c = 4700 \times \sqrt{40} = 29,748 \text{ MPa}\]🔹 ANSYS Implementation:
MP,EX,1,34145 ! Eurocode
MP,EX,1,29748 ! ACI
MP,PRXY,1,0.2 ! Poisson's Ratio
5. Yield Surface Models
Concrete is modeled using two main yield surface models:
(a) Drucker-Prager (DP) Model
The Drucker-Prager model defines based on:
- \(c\) = cohesion (MPa)
- \(\phi\) = internal friction angle (°)
Interpolation for Cohesion & Friction Angle
Using data from Ertekin Öztekin et al [1]., cohesion (c) and friction angle (φ) are interpolated:
fc (MPa) | Cohesion (MPa) | Internal Friction Angle (°) |
---|---|---|
22.2 | 5.25 | 27.5 |
30.2 | 8.14 | 29.5 |
41.2 | 10.85 | 30.9 |
51.9 | 12.40 | 32.8 |
70.1 | 16.22 | 36.7 |
✅ Python Code for Interpolation:
import numpy as np
from scipy.interpolate import interp1d
fc_values = [22.2, 30.2, 41.2, 51.9, 70.1]
c_values = [5.25, 8.14, 10.85, 12.40, 16.22]
phi_values = [27.5, 29.5, 30.9, 32.8, 36.7]
fc_target = 40
c_interp = interp1d(fc_values, c_values, kind='linear')(fc_target)
phi_interp = interp1d(fc_values, phi_values, kind='linear')(fc_target)
print(f"Cohesion: {c_interp:.2f} MPa")
print(f"Friction Angle: {phi_interp:.2f}°")
🔹 ANSYS Implementation:
! Define Drucker-Prager Parameters
TB,DP,SOLID65_MATID
TBDATA,1,cohesion,friction_angle,0 ! Cohesion & Internal Friction Angle Interpolated
(b) Multilinear Isotropic Hardening (MISO) with Parabolic-Plastic Curve Stress-strain relationship
From PCA’s Notes on ACI 318, the compressive stress-strain relation is:
\[f_c = f_{c,max} \times (2(\epsilon/\epsilon_0) - (\epsilon/\epsilon_0)^2)\]🔹 ANSYS Implementation [2]:
TB,MISO,SOLID65_MATID,1,8,0
TBTEMP,22
! Assign Computed Stress-Strain Data to ANSYS
TBPT,,0,0
TBPT,,0.00036,13.1
TBPT,,0.00060,20.40
TBPT,,0.00130,35.10
TBPT,,0.00190,39.90
TBPT,,0.00200,40.00
TBPT,,0.00243,40.00
TBPT,,0.00350,40.00
6. Concrete-Specific Properties – Cracking and Shear Transfer
Shear Transfer Coefficients
- ShrCf-Op (Open Crack): 0.5 (normal), 0.25 (high-stress)
- ShrCf-Cl (Closed Crack): 0.9 - 1.0
🔹 ANSYS Implementation:
TB,CONC,1,1,9
TBDATA,1,0.5,0.9,ft,-1
7. Tensile Strength
(a) Eurocode 2:
For concrete class \(\leq\) C50/60
\[f_t = 0.3 \times f_c^{2/3}\]For concrete class \(\geq\) C50/60
\[f_{t} = 2.12 \times \ln\left(1 + \frac{f_{cm}}{10} \right) \quad \text{(MPa)}\]🔹 ANSYS Implementation:
! Compute Tensile Strength ft Based on EC2
*IF,fc,LE,50,THEN
ft=0.3*(fc)**(2/3)
*ELSE
ft=2.12*LOG(1+0.1*fc)
*ENDIF
✅ For \(f_c = 40\) MPa:
\[f_t = 0.3 \times 40^{2/3} = 3.5 \text{ MPa}\](b) ACI 318:
\[f_t = 0.623 \sqrt{f_c}\]✅ For \(f_c = 40\) MPa:
\[f_t = 0.623 \times \sqrt{40} = 3.94 \text{ MPa}\]8. Complete ANSYS Code
✅ MISO implementations
! Complete ANSYS implementation for fc = 40 MPa
!Author: Dr. Han
!Automatically determine parameters and define the material model for the SOLID65 concrete element, using the input values of fc and e0.
/PREP7
! Define Material ID
SOLID65_MATID = 1234 !Material ID
! Define Constants
f2max=40 ! Maximum compressive stress fc (MPa)
e0=0.002 ! Peak strain
! Compute Tensile Strength ft Based on EC2
*IF,f2max,LE,50,THEN
ft=0.3*(f2max)**(2/3)
*ELSE
ft=2.12*LOG(1+0.1*f2max)
*ENDIF
! Define Predefined Strain Values (ε2)
*DIM,eps_array,ARRAY,8
eps_array(1)=0.00000
eps_array(2)=0.00036
eps_array(3)=0.00060
eps_array(4)=0.00130
eps_array(5)=0.00190
eps_array(6)=0.00200
eps_array(7)=0.00243
eps_array(8)=0.00350
! Define Stress Values Manually
*DIM,f2_array,ARRAY,8
f2_array(1)=0.0
f2_array(2)=f2max*(2*(eps_array(2)/e0)-(eps_array(2)/e0)*(eps_array(2)/e0))
f2_array(3)=f2max*(2*(eps_array(3)/e0)-(eps_array(3)/e0)*(eps_array(3)/e0))
f2_array(4)=f2max*(2*(eps_array(4)/e0)-(eps_array(4)/e0)*(eps_array(4)/e0))
f2_array(5)=f2max*(2*(eps_array(5)/e0)-(eps_array(5)/e0)*(eps_array(5)/e0))
f2_array(6)=f2max ! Stress remains constant for ε ≥ ε0
f2_array(7)=f2max ! Stress remains constant for ε ≥ ε0
f2_array(8)=f2max ! Stress remains constant for ε ≥ ε0
EC=f2_array(2)/eps_array(2)
! Define Solid5 element
ET,SOLID65_MATID,SOLID65
R,SOLID65_MATID,0,0,0,0,0,0
RMORE,0,0,0,0,0
! Define Material Properties
MP,EX,SOLID65_MATID,EC ! Young's Modulus
MP,PRXY,SOLID65_MATID,0.2 ! Poisson's Ratio
MP,DENS,SOLID65_MATID,0.0024 ! Density of Concrete 2400 (kg/m³)
! Define Concrete Material Model
TB,CONCR,SOLID65_MATID,1,9
TBTEMP,22
TBDATA,1,0.3,0.8,ft,-1 ! Tensile strength automatically calculated
! Define Multilinear Isotropic Hardening for Stress-Strain
TB,MISO,SOLID65_MATID,1,8,0
TBTEMP,22
! Assign Computed Stress-Strain Data to ANSYS
TBPT,,eps_array(1),f2_array(1)
TBPT,,eps_array(2),f2_array(2)
TBPT,,eps_array(3),f2_array(3)
TBPT,,eps_array(4),f2_array(4)
TBPT,,eps_array(5),f2_array(5)
TBPT,,eps_array(6),f2_array(6)
TBPT,,eps_array(7),f2_array(7)
TBPT,,eps_array(8),f2_array(8)
✅ Drucker-Prager (DP) implementations
/PREP7
! Complete ANSYS implementation for fc = 40 MPa
!Author: Dr. Han
!Automatically determine parameters and define the material model for the SOLID65 concrete element, using the input values of fc
! Define Material ID
!SOLID65_MATID=1 ! Concrete Material
! Define Constants
fc=40 ! Given Compressive Strength (MPa)
! Compute Young’s Modulus Ec Based on Eurocode 2
Ec=22000*(((fc+8)/10)**0.3) ! Young's Modulus in MPa
! Define Sorted Data Points (fc, c, Ø) for Interpolation
*DIM,fc_table,ARRAY,16
fc_table(1)=22.216
fc_table(2)=24.717
fc_table(3)=30.240
fc_table(4)=40.618
fc_table(5)=41.175
fc_table(6)=45.232
fc_table(7)=51.934
fc_table(8)=53.209
fc_table(9)=56.498
fc_table(10)=58.838
fc_table(11)=61.803
fc_table(12)=62.235
fc_table(13)=70.109
fc_table(14)=71.562
fc_table(15)=81.164
fc_table(16)=84.443
*DIM,cohesion_table,ARRAY,16
cohesion_table(1)=5.245
cohesion_table(2)=5.907
cohesion_table(3)=8.142
cohesion_table(4)=9.013
cohesion_table(5)=10.849
cohesion_table(6)=10.638
cohesion_table(7)=12.403
cohesion_table(8)=12.814
cohesion_table(9)=13.807
cohesion_table(10)=13.839
cohesion_table(11)=14.319
cohesion_table(12)=14.530
cohesion_table(13)=16.228
cohesion_table(14)=16.735
cohesion_table(15)=17.875
cohesion_table(16)=18.892
*DIM,friction_table,ARRAY,16
friction_table(1)=27.497
friction_table(2)=28.765
friction_table(3)=29.479
friction_table(4)=31.087
friction_table(5)=30.904
friction_table(6)=33.071
friction_table(7)=32.805
friction_table(8)=33.897
friction_table(9)=34.184
friction_table(10)=34.564
friction_table(11)=35.368
friction_table(12)=35.572
friction_table(13)=36.732
friction_table(14)=36.399
friction_table(15)=37.133
friction_table(16)=38.636
! Linear Interpolation Function for Cohesion and Friction Angle
*DO,i,1,15
*IF,fc,GE,fc_table(i),THEN
*IF,fc,LE,fc_table(i+1),THEN
ratio=(fc - fc_table(i)) / (fc_table(i+1) - fc_table(i))
cohesion=cohesion_table(i) + ratio * (cohesion_table(i+1) - cohesion_table(i))
friction_angle=friction_table(i) + ratio * (friction_table(i+1) - friction_table(i))
*EXIT
*ENDIF
*ENDIF
*ENDDO
! Compute Tensile Strength ft Based on EC2
*IF,fc,LE,50,THEN
ft=0.3*(fc)**(2/3)
*ELSE
ft=2.12*LOG(1+0.1*fc)
*ENDIF
! Define Material Properties
MP,EX,SOLID65_MATID,Ec ! Young's Modulus from EC2
MP,PRXY,SOLID65_MATID,0.2 ! Poisson's Ratio
MP,DENS,SOLID65_MATID,0.0024 ! Density of Concrete 2400 (kg/m³)
! Define Drucker-Prager Parameters
TB,DP,SOLID65_MATID
TBDATA,1,cohesion,friction_angle,0 ! Cohesion & Internal Friction Angle Interpolated
! Define Concrete Cracking Properties
TB,CONC,SOLID65_MATID,1,9
TBTEMP,0
! Open Crack and Closed Crack Shear Transfer Coefficients
! - `β_t = 0.3` → Shear transfer coefficient for **open cracks** (low value reduces shear after cracking)
! - `β_c = 0.8` → Shear transfer coefficient for **closed cracks** (higher value restores shear when cracks close)
! - `ft` → Tensile strength (computed from EC2)
! - `-1` → Disables crushing capability (crushing not considered)
TBDATA,1,0.3,0.8,ft,-1
!*
ET,solid65_matid,SOLID65
!KEYOPT,solid65_matid,7,1 !Include tensile stress relaxation after cracking to help convergence
!KEYOPT,solid65_matid,6,3 !Print solution also at each integration point
References:
[1] Öztekin, E., Pul, S., & Hüsem, M. (2016). Experimental determination of Drucker-Prager yield criterion parameters for normal and high strength concretes under triaxial compression. Construction and Building Materials, 112, 725-732.
[2] Thanapon Buamongkol, ANSYS Tutorial: Learn APDL Command for SOLID65 Concrete Modeling Using ANSYS Workbench 2019, https://youtu.be/0JiKNWt095I?si=7lz3-Ja3Qj6o1dT2