# Making Sense Out of Concrete02

Those three extra parameters for Concrete02 are usually enough to make me stick with Concrete01. I struggle to come up with good values for the parameters $\lambda$, $f_t$, and $E_{ts}$ shown in the following image from the OpenSees Concrete02 wiki page.

The four compressive backbone parameters make sense–they are the same inputs as for Concrete01. But why come up with reasonable values for the other three parameters every time I want to use Concrete02, only to forget what the parameters mean the next time around? It’s a vicious cycle.

So, I set out to do something I should have done 20 years ago: determine and implement reasonable default values for $\lambda$, $f_t$, and $E_{ts}$ so that Concrete02 can take the same four input parameters as Concrete01.

The tensile rupture strength of concrete is typically about 10% of the compressive strength, so $f_t=0.1f'_c$.

The stiffness of the tension softening branch is approximately the tension strength divided by the strain at which zero stress is reached in tension. I will assume this tension strain is roughly equal in magnitude to $\varepsilon_{c0}$, so $E_{ts}=0.1f'_c/\varepsilon_{c0}$ sounds good to me. I don’t think the $E_{ts}$ parameter matters too much, unless you get excited by localization issues of concrete in tension.

The parameter $\lambda$ has nothing to do with the concrete tension behavior, but rather the unloading and reloading loops in compression. Below are compressive stress-strain loops for three values of $\lambda$ with the aforementioned values for $f_t$ and $E_{ts}$.

I don’t know, $\lambda=0.1$ seems reasonable to me.

So, with PR #644, the Concrete02 constructor was overloaded to set default values ( $\lambda=0.1$, $f_t=0.1f'_c$, and $E_{ts}=0.1f'_c/\varepsilon_{c0}$). In addition, the Tcl and Python input commands were updated to take either 4 or 7 inputs, as shown below for Python.

fc = 4.0
epsc0 = 0.002
fcu = 1.0
epscu = 0.006

# Same inputs
ops.uniaxialMaterial('Concrete01',1,-fc,-epsc0,-fcu,-epscu)
ops.uniaxialMaterial('Concrete02',2,-fc,-epsc0,-fcu,-epscu)

# If you want to use non-default values
lam = 0.07
ft = 0.08*fc
Ets = 0.12*fc/epsc
ops.uniaxialMaterial('Concrete02',3,-fc,-epsc0,-fcu,-epscu,lam,ft,Ets)

PR #644 also made similar changes to Concrete02IS, which differs from Concrete02 in that the user can set the initial stiffness (IS) of the model. In another post, I’ll examine the effect of the initial stiffness on the stress-strain response of Concrete02IS–it’s not as simple as I initially assumed.

But let me know if you think the default Concrete02 inputs should be different. If you would like to see similar modifications to Concrete23, you’re on your own.

This site uses Akismet to reduce spam. Learn how your comment data is processed.