Download as pdf or txt
Download as pdf or txt
You are on page 1of 53

University of Naples Federico II

Department of Structures for Engineering and Architecture


PhD program in Structural Engineering Geotechnics and Seismic Risk

Nonlinear modeling of RC structures using OpenSees


prof. P. Ricci
dr. M. Di Domenico

Lecture 1
Introduction and basic commands
part 1 - theory

June 7th, 2021


What is OpenSees?
OpenSees is an open-source software for structural modeling and analysis
What is OpenSees?
OpenSees is an open-source software for structural modeling and analysis

open-source software
What is OpenSees?
OpenSees is an open-source software for structural modeling and analysis

✓ free

open-source software

Free download at http://opensees.berkeley.edu/


What is OpenSees?
OpenSees is an open-source software for structural modeling and analysis

✓ free

open-source software ✓ each user can access the code lines associated with whichever existing command

Language: C++
What is OpenSees?
OpenSees is an open-source software for structural modeling and analysis

✓ free

open-source software ✓ each user can access the code lines associated with whichever existing command

✓ each user can add new commands (e.g., materials, elements etc.) to the software

Even the user guide can be edited by registered users at: http://opensees.berkeley.edu/wiki/index.php/Main_Page
Tcl language

Not in the course program Not in the course program


Tcl language

Not in the course program basic OpenSees-oriented tcl programming will be taught Not in the course program
Tcl language

Not in the course program basic OpenSees-oriented tcl programming will be taught Not in the course program

Example: a sum in tcl language


set a 5
set b 10 input code
set c [expr $a+$b]
puts $c
Tcl language

Not in the course program basic OpenSees-oriented tcl programming will be taught Not in the course program

Example: a sum in tcl language


set a 5
set b 10 input code
set c [expr $a+$b]
puts $c
15 video output
Tcl language

Not in the course program basic OpenSees-oriented tcl programming will be taught Not in the course program

Example: a sum in tcl language


set a 5
set b 10 input code
set c [expr $a+$b]
puts $c
15 video output

However, for our purposes, tcl language is used to call OpenSees functions
Tcl language
For our purposes, Tcl language is used to call OpenSees functions
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…]

X
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…]

X
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
node tag
element 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…]

X
node 1
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000
node (X,Y,Z)0coordinates0 input code
element 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…]

X
node 1
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…]

X
node 1 node 2
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element elasticBeamColumn 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…] element type

X
node 1 node 2
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element elasticBeamColumn 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…] element tag

X
node 1 node 2
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element elasticBeamColumn 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…] element initial node

X
node 1 node 2
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element elasticBeamColumn 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…] element end node

X
node 1 node 2
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element elasticBeamColumn 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…] Some element properties (to be explained in due course…)

X
node 1 element 1 node 2
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element elasticBeamColumn 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…]

These commands are used


to construct objects Y

X
node 1 element 1 node 2
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0 This command constructs a node object
node 2 1000 0 0 input code
element elasticBeamColumn 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…]

These commands are used


to construct objects Y

X
node 1 element 1 node 2
Tcl language
For our purposes, Tcl language is used to call OpenSees functions

Example: some OpenSees commands in Tcl


[…]
node 1 0 0 0
node 2 1000 0 0 input code
element elasticBeamColumn 1 1 2 90000 30000 12000 1.00e12 6.75e8 6.75e8 1
[…] This command constructs an element object

These commands are used


to construct objects Y

X
node 1 element 1 node 2
What objects are?
Tcl language
To run a structural analysis in OpenSees, different types of objects shall be constructed by means of appropriate commands.
Tcl language
To run a structural analysis in OpenSees, different types of objects shall be constructed by means of appropriate commands.
An aggregation of different types of objects constitutes a domain.

COMPLETE OPENSEES MODEL


Tcl language
To run a structural analysis in OpenSees, different types of objects shall be constructed by means of appropriate commands.
An aggregation of different types of objects constitutes a domain.

COMPLETE OPENSEES MODEL

MODELING OBJECTS/DOMAIN ANALYSIS OBJECTS OUTPUT OBJECTS


Tcl language
To run a structural analysis in OpenSees, different types of objects shall be constructed by means of appropriate commands.
An aggregation of different types of objects constitutes a domain.

COMPLETE OPENSEES MODEL

MODELING OBJECTS/DOMAIN ANALYSIS OBJECTS OUTPUT OBJECTS

▪ model
▪ node
▪ mass
▪ SP_constraint
▪ MP_constraint
▪ uniaxialMaterial
▪ section
▪ element
▪ timeSeries
▪ pattern
▪ … and others
Tcl language
To run a structural analysis in OpenSees, different types of objects shall be constructed by means of appropriate commands.
An aggregation of different types of objects constitutes a domain.

COMPLETE OPENSEES MODEL

MODELING OBJECTS/DOMAIN ANALYSIS OBJECTS OUTPUT OBJECTS

▪ model ▪ constraints
▪ node ▪ numberer
▪ mass ▪ system
▪ SP_constraint ▪ test
▪ MP_constraint ▪ algorithm
▪ uniaxialMaterial ▪ integrator
▪ section ▪ analysis
▪ element ▪ eigen
▪ timeSeries ▪ analyze
▪ pattern ▪ … and others
▪ … and others
Tcl language
To run a structural analysis in OpenSees, different types of objects shall be constructed by means of appropriate commands.
An aggregation of different types of objects constitutes a domain.

COMPLETE OPENSEES MODEL

MODELING OBJECTS/DOMAIN ANALYSIS OBJECTS OUTPUT OBJECTS

▪ model ▪ constraints ▪ recorder


▪ node ▪ numberer ▪ print
▪ mass ▪ system ▪ logFile
▪ SP_constraint ▪ test ▪ … and others
▪ MP_constraint ▪ algorithm
▪ uniaxialMaterial ▪ integrator
▪ section ▪ analysis
▪ element ▪ eigen
▪ timeSeries ▪ analyze
▪ pattern ▪ … and others
▪ … and others
Tcl language
To run a structural analysis in OpenSees, different types of objects shall be constructed by means of appropriate commands.
An aggregation of different types of objects constitutes a domain.

COMPLETE OPENSEES MODEL

MODELING OBJECTS/DOMAIN ANALYSIS OBJECTS OUTPUT OBJECTS

▪ model ▪ constraints ▪ recorder


▪ node ▪ numberer ▪ print
▪ mass ▪ system ▪ logFile
▪ SP_constraint ▪ test ▪ … and others
▪ MP_constraint ▪ algorithm
▪ uniaxialMaterial ▪ integrator
▪ section ▪ analysis
▪ element ▪ eigen
▪ timeSeries ▪ analyze
▪ pattern ▪ … and others
▪ … and others

+ useful general-purpose tcl commands


Basic geometric modelling commands
MODELING COMMANDS

wipe command

This command is used to destroy all constructed objects, i.e. all components of the model, all components of the analysis and all
recorders.

wipe

Usually, the wipe command is used at the very beginning of the main tcl script, similarly to

clc
clear all

in MATLAB

example:
wipe
MODELING COMMANDS

model command

This command is used to define spatial dimension of model and number of degrees-of-freedom at nodes.

model BasicBuilder -ndm $ndm <-ndf $ndf>


$ndm spatial dimension of problem (1,2, or 3)
$ndf number of degrees of freedom at node (optional)

default value depends on value of ndm:


ndm=1 -> ndf=1
ndm=2 -> ndf=3
ndm=3 -> ndf=6

example:
model BasicBuilder -ndm 3 -ndf 6
MODELING COMMANDS

model command

This command is used to define spatial dimension of model and number of degrees-of-freedom at nodes.

model BasicBuilder -ndm $ndm <-ndf $ndf>


$ndm spatial dimension of problem (1,2, or 3)
$ndf number of degrees of freedom at node (optional)

default value depends on value of ndm: optional


ndm=1 -> ndf=1
ndm=2 -> ndf=3
ndm=3 -> ndf=6

example:
model BasicBuilder -ndm 3 -ndf 6
MODELING COMMANDS

node command

This command is used to construct a Node object. It assigns coordinates and masses to the Node object.

node $nodeTag (ndm $coords) <-mass (ndf $massValues)>


$nodeTag integer tag identifying node

$coords nodal coordinates (ndm arguments)

$massValues nodal mass corresponding to each DOF (ndf arguments) (optional))

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates
MODELING COMMANDS

node command

This command is used to construct a Node object. It assigns coordinates and masses to the Node object.

node $nodeTag (ndm $coords) <-mass (ndf $massValues)>


$nodeTag integer tag identifying node

$coords nodal coordinates (ndm arguments)

$massValues nodal mass corresponding to each DOF (ndf arguments) (optional))

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates

node 2 0 1000 1000 –mass 200 0 200 0 0 0 Construct a node object at (0,1000,1000) coordinates with mass equal
to 200 active along X and Z global axes
MODELING COMMANDS

node command

This command is used to construct a Node object. It assigns coordinates and masses to the Node object.

node $nodeTag (ndm $coords) <-mass (ndf $massValues)>


$nodeTag integer tag identifying node

$coords nodal coordinates (ndm arguments)

$massValues nodal mass corresponding to each DOF (ndf arguments) (optional))

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates

node 2 0 1000 1000 –mass 200 0 200 0 0 0 Construct a node object at (0,1000,1000) coordinates with mass equal
to 200 active along X and Z global axes

Units are not specified nor declared. The user shall use consistent units for the entire model.
For example, if lengths are given in mm and forces in N, the elastic modulus of materials shall be provided in N/mm2
MODELING COMMANDS

mass command

This command is used to set the mass at a node.

mass $nodeTag (ndf $massValues)


$nodeTag integer tag identifying node

$massValues nodal mass corresponding to each DOF

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates

node 2 0 1000 1000 Construct a node object at (0,1000,1000) coordinates


MODELING COMMANDS

mass command

This command is used to set the mass at a node.

mass $nodeTag (ndf $massValues)


$nodeTag integer tag identifying node

$massValues nodal mass corresponding to each DOF

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates

node 2 0 1000 1000 Construct a node object at (0,1000,1000) coordinates


mass 2 200 0 200 0 0 0 Assign mass equal to 200 active along X and Z global axes to node 2
MODELING COMMANDS

mass command

This command is used to set the mass at a node.

mass $nodeTag (ndf $massValues)


$nodeTag integer tag identifying node

$massValues nodal mass corresponding to each DOF

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates

node 2 0 1000 1000 Construct a node object at (0,1000,1000) coordinates


mass 2 200 0 200 0 0 0 Assign mass equal to 200 active along X and Z global axes to node 2

node 2 0 1000 1000


node 2 0 1000 1000 –mass 200 0 200 0 0 0 is equivalent to
mass 2 200 0 200 0 0 0
Restraints and constraints
MODELING COMMANDS

fix command (SinglePoint_Constraint)

This command is used to construct single-point homogeneous boundary constraints.

fix $nodeTag (ndf $constrValues)


$nodeTag integer tag identifying node
$constrValues ndf constraint values (0 or 1) corresponding to the ndf degrees-of-freedom.
0 unconstrained (or free)
1 constrained (or fixed)

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates
MODELING COMMANDS

fix command (SinglePoint_Constraint)

This command is used to construct single-point homogeneous boundary constraints.

fix $nodeTag (ndf $constrValues)


$nodeTag integer tag identifying node
$constrValues ndf constraint values (0 or 1) corresponding to the ndf degrees-of-freedom.
0 unconstrained (or free)
1 constrained (or fixed)

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates

fix 1 1 1 1 1 1 1 Fix dofs 1,2,3,4,5,6 of node object 1


MODELING COMMANDS

fix command (SinglePoint_Constraint)

This command is used to construct single-point homogeneous boundary constraints.

fix $nodeTag (ndf $constrValues)


$nodeTag integer tag identifying node
$constrValues ndf constraint values (0 or 1) corresponding to the ndf degrees-of-freedom.
0 unconstrained (or free)
1 constrained (or fixed)

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates

fix 1 1 1 1 1 1 1 Fix dofs 1,2,3,4,5,6 of node object 1


fix 2 1 0 1 0 1 0 Fix dofs 1,3,5 of node object 2
MODELING COMMANDS

equalDOF command (MultiPoint_Constraint)

This command is used to construct a multi-point constraint between nodes.

equalDOF $rNodeTag $cNodeTag $dof1 $dof2 ...


$rNodeTag integer tag identifying the retained, or master node (rNode)
$cNodeTag integer tag identifying the constrained, or slave node (cNode)
$dof1 $dof2 ... nodal degrees-of-freedom that are constrained at the cNode to be the same as those at the rNode
Valid range is from 1 through ndf, the number of nodal degrees-of-freedom.

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates
MODELING COMMANDS

equalDOF command (MultiPoint_Constraint)

This command is used to construct a multi-point constraint between nodes.

equalDOF $rNodeTag $cNodeTag $dof1 $dof2 ...


$rNodeTag integer tag identifying the retained, or master node (rNode)
$cNodeTag integer tag identifying the constrained, or slave node (cNode)
$dof1 $dof2 ... nodal degrees-of-freedom that are constrained at the cNode to be the same as those at the rNode
Valid range is from 1 through ndf, the number of nodal degrees-of-freedom.

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates

equalDOF 1 2 1 3 5 Impose the displacements of node 2 equal to those of node 1 at dofs 1, 3, 5


MODELING COMMANDS

rigidLink command (MultiPoint_Constraint)

This command is used to construct a single MP_Constraint object.

rigidLink $type $masterNodeTag $slaveNodeTag


$type string-based argument for rigid-link type:
bar only the translational degree-of-freedom will be constrained to be exactly the same as those at the master node
beam both the translational and rotational degrees of freedom are constrained.
$masterNodeTag integer tag identifying the master node
$slaveNodeTag integer tag identifying the slave node

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates
MODELING COMMANDS

rigidLink command (MultiPoint_Constraint)

This command is used to construct a single MP_Constraint object.

rigidLink $type $masterNodeTag $slaveNodeTag


$type string-based argument for rigid-link type:
bar only the translational degree-of-freedom will be constrained to be exactly the same as those at the master node
beam both the translational and rotational degrees of freedom are constrained.
$masterNodeTag integer tag identifying the master node
$slaveNodeTag integer tag identifying the slave node

example:
node 1 0 0 0 Construct a node object at (0,0,0) coordinates
node 2 0 1000 0 Construct a node object at (0,1000,0) coordinates

rigidLink beam 1 2 Impose the displacements of node 2 equal to those of node 1 at dofs 1,2,3,4,5,6
MODELING COMMANDS

rigidDiaphragm command (MultiPoint_Constraint)

This command is used to construct a number of Multi-Point Constraint (MP_Constraint) objects. These objects will constraint
certain degrees-of-freedom at the listed slave nodes to move as if in a rigid plane with the master node.
rigidDiaphragm $perpDirn $masterNodeTag $slaveNodeTag1 $slaveNodeTag2 ...
$perpDirn direction perpendicular to the rigid plane (i.e. direction 3 corresponds to the 1-2 plane)
$masterNodeTag integer tag identifying the master node
$slaveNodeTag1 $slaveNodeTag2 ... integer tags identifying the slave node
MODELING COMMANDS

rigidDiaphragm command (MultiPoint_Constraint)

This command is used to construct a number of Multi-Point Constraint (MP_Constraint) objects. These objects will constraint
certain degrees-of-freedom at the listed slave nodes to move as if in a rigid plane with the master node.
rigidDiaphragm $perpDirn $masterNodeTag $slaveNodeTag1 $slaveNodeTag2 ...
$perpDirn direction perpendicular to the rigid plane (i.e. direction 3 corresponds to the 1-2 plane)
$masterNodeTag integer tag identifying the master node
$slaveNodeTag1 $slaveNodeTag2 ... integer tags identifying the slave node

example:
Z

node 5 node 4
Y
node 10

node 2 node 3

X
MODELING COMMANDS

rigidDiaphragm command (MultiPoint_Constraint)

This command is used to construct a number of Multi-Point Constraint (MP_Constraint) objects. These objects will constraint
certain degrees-of-freedom at the listed slave nodes to move as if in a rigid plane with the master node.
rigidDiaphragm $perpDirn $masterNodeTag $slaveNodeTag1 $slaveNodeTag2 ...
$perpDirn direction perpendicular to the rigid plane (i.e. direction 3 corresponds to the 1-2 plane)
$masterNodeTag integer tag identifying the master node
$slaveNodeTag1 $slaveNodeTag2 ... integer tags identifying the slave node

example:
Z

node 5 node 4
Y
node 10

node 2 node 3

rigidDiaphragm 3 10 2 3 4 5 Nodes 2,3,4,5 are constrained to Node 10 by a rigid diaphragm perpendicular to Z global axis

You might also like