Uniaxial Multi-Tool

UniaxialMaterial models are the work horses of OpenSees. Originally developed for the truss element, these models have proliferated thanks to fiber section models. However, because they are simply scalar functions, UniaxialMaterial models can be used in several other contexts.

The calling function knows the context, not the UniaxialMaterial model–it only provides an output for a given input. Accordingly, the user has to input parameters to the UniaxialMaterial models that are consistent with the context.

Multi Tools“Multi Tools” by pennuja is licensed under CC BY 2.0

This post summarizes the contexts in which UniaxialMaterial models are used in OpenSees along with the interpretation of the model input and output.

A Truss element uses UniaxialMaterial models as stress-strain response. The material stress and tangent are multiplied by cross-section area to get force and stiffness. For linear-elastic response, use E and for nonlinear response use stress parameters, e.g., as shown below for HardeningMaterial.

E = 29000.0 # Or whatever
Fy = 50.0
Hi = 0
Hk = 300.0

ops.uniaxialMaterial('Elastic',1,E)
ops.uniaxialMaterial('Hardening',2,E,Fy,Hi,Hk)

matTag = 1
A = 10.0
ops.element('truss',1,1,2,matTag,A)

Along the same lines, FiberSection objects use UniaxialMaterial models as stress-strain response. The material stress and tangent are multiplied by fiber area to get fiber force, which is summed over the section to get section stress resultants (axial force and bending moment).

E = 29000.0 # Or whatever
Fy = 50.0
Hi = 0
Hk = 300.0

ops.uniaxialMaterial('Elastic',1,E)
ops.uniaxialMaterial('Hardening',2,E,Fy,Hi,Hk)

matTag = 2
ops.section('Fiber',1)
ops.patch('quadr',matTag,...)

A SectionAggregator uses UniaxialMaterial models as section force-deformation (stress resultant) response. There is no integration of the model response, i.e., no automatic multiplication by area, so the user has to input resultant quantities of section stiffness and force.

nu = 0.3
G = E/(2*(1+nu))
Tauy = Fy/3**0.5
As = 6.5 # Shear area

GA = G*As
Vy = Tauy*As
Hi = 0
Hk = 0.01*GA # Or whatever

ops.uniaxialMaterial('Elastic',3,GA)
ops.uniaxialMaterial('Hardening',4,GA,Vy,Hi,Hk)

matTag = 4

ops.section('Aggregator',3,'Vy',matTag,'-section',1)

A ZeroLength element uses UniaxialMaterial models as force-deformation and moment-rotation response, basically as springs. There is no integration of the model response, so the user has to input force (or moment) and stiffness.

k = 200000.0
Fy = 500
Hi = 0
Hk = 0.01*k # Or whatever

ops.uniaxialMaterial('Elastic',5,k)
ops.uniaxialMaterial('Hardening',6,k,Fy,Hi,Hk)

matTag = 5

ops.element('zeroLength',1,1,2,'-mat',matTag,'-dir',2,...)

The zero length elements are often used as moment-rotation springs in concentrated plasticity beam elements where the interpretation is (force*length)/radian. There are also a few variants on the zero length element that use UniaxialMaterial models: twoNodeLink and flatSliderBearing among others.

Most of the OpenSees documentation refers to UniaxialMaterial models as stress-strain relationships, but know that these models can do so much more! Also, be careful not to use some UniaxialMaterials in odd contexts, e.g., it wouldn’t make sense to use Concrete23 in a section aggregator or zero length element.

2 thoughts on “Uniaxial Multi-Tool

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.