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.

Image developed by Dr. Silvia Mazzoni

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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

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