# DEFINE UNITS
set in 1.; # define basic unit -- length
set sec 1.; # define basic unit -- time
set kip 1.; # define basic unit -- weight (or define force, but not both)
set ksi [expr $kip/pow($in,2)]; # define engineering units
set psi [expr $ksi/1000.];
set ft [expr 12.*$in];
set g [expr 32.2*$ft/pow($sec,2)]; # gravitational acceleration
set PI [expr 2*asin(1.0)]; # define constants
set U 1.e10; # a really large number
set u [expr 1/$U]; # a really small number
# define GEOMETRY variables
set Hcol [expr 6.*$ft]; # column diameter
set Lcol [expr 36*$ft]; # column length
set GrhoCol 0.015; # column longitudinal-steel ratio
set Weight [expr 3000.*$kip]; # superstructure weight
set Rcol [expr $Hcol/2]; # COLUMN radius
set Acol [expr $PI*pow($Rcol,2)]; # column cross-sectional area
set cover [expr $Hcol/15]; # column cover width
set G $U; # Torsional stiffness Modulus
set J 1.; # Torsional stiffness of section
set GJ [expr $G*$J]; # Torsional stiffness
# define COLUMN REINFORCEMENT variables
set NbCol 20; # number of column longitudinal-reinforcement bars
set AsCol [expr $GrhoCol*$Acol]; # total steel area in column section
set AbCol [expr $AsCol/$NbCol]; # bar area of column longitudinal reinforcement
# define GRAVITY variables
set Mass [expr $Weight/$g]; # mass of superstructure
set Mnode [expr $Mass]; # nodal mass for each column joint
# define DAMPING variables from $xDamp --SDOF system, use stiffness proportional damping only
set xDamp 0.02; # modal damping ratio
# ------ set analysis variables
set DxPush [expr 0.1*$in]; # Displacement increment for pushover analysis
set DmaxPush [expr 0.05*$Lcol]; # maximum displamcement for pushover analysis
set gamma 0.5; # gamma value for newmark integration
set beta 0.25; # beta value for newmark integration
set DtAnalysis [expr 0.005*$sec]; # time-step Dt for lateral analysis
set DtGround [expr 0.02*$sec]; # time-step Dt for input grond motion
set TmaxGround [expr 50.*$sec]; # maximum duration of ground-motion analysis
# define ModelBuilder
model basic -ndm 2 -ndf 3; # basic: modelbuilder type, ndm= number of dimensions, ndf= #dof/node
# Nodal Coordinates and Nodal Masses
node 1 0. 0.; # column base is located at the origin of the plane
node 2 0. $Lcol -mass $Mnode 0. 0.; # the column end has one translational mass in the x direction, only
# Boundary Conditions
fix 1 1 1 1; # fixed base
fix 2 0 0 0; # free end
# Confined concrete:
set fc [expr -5.5*$ksi]; # CONCRETE Compressive Strength, ksi (+Tension, -Compression)
set Ec [expr 57*$ksi*sqrt(-$fc/$psi)]; # Concrete Elastic Modulus
set fc1C [expr 1.26394*$fc]; # CONFINED concrete (mander model), maximum stress
set eps1C [expr 2.*$fc1C/$Ec]; # strain at maximum stress
set fc2C $fc; # ultimate stress
set eps2C [expr 5*$eps1C]; # strain at ultimate stress
# Unconfined concrete:
set fc1U $fc; # UNCONFINED concrete (todeschini parabolic model), maximum stress
set eps1U -0.003; # strain at maximum stress
set fc2U [expr 0.1*$fc]; # ultimate stress
set eps2U -0.006; # strain at ultimate stress
# Concrete02 variables:
set lambda 0.1 ; # ratio between unloading slope at $epscu and initial slope
set ftC [expr -$fc1C/10.]; # tensile strength +tension
set ftU [expr -$fc1U/10.]; # tensile strength +tension
set Ets [expr $Ec/10.]; # tension softening stiffness
# reinforcing steel
set Fy [expr 68.*$ksi]; # STEEL yield stress
set Es [expr 29000.*$ksi]; # modulus of steel
set epsY [expr $Fy/$Es]; # steel yield strain
set Fu [expr 95.2*$ksi]; # ultimate stress of steel
set epsU 0.1; # ultimate strain of steel
set E2 [expr ($Fu-$Fy)/($epsU-$epsY)]; # post-yield tangent stiffness
set Bs [expr $E2/$Es]; # post-yield stiffness ratio of steel
# set up parameters for column section and element definition
set IDcore 1; # ID tag for core concrete
set IDcover 2; # ID tag for cover concrete
set IDsteel 3; # ID tag for steel
uniaxialMaterial Concrete02 $IDcore $fc1C $eps1C $fc2C $eps2C $lambda $ftC $Ets; # CORE CONCRETE
uniaxialMaterial Concrete02 $IDcover $fc1U $eps1U $fc2U $eps2U $lambda $ftU $Ets; # COVER CONCRETE
uniaxialMaterial Steel01 $IDsteel $Fy $Es $Bs; # REINFORCING STEEL
# element cross-section
# Notes
# The center of the reinforcing bars are placed at the inner radius
# The core concrete ends at the inner radius (same as reinforcing bars)
# The reinforcing bars are all the same size
# The center of the section is at (0,0) in the local axis system
# Zero degrees is along section y-axis
set IDcolFlex 2; # ID tag for column section in flexure, before aggregating torsion
set riCol 0.0; # inner radius of column section
set roCol $Rcol; # outer radius of column section
set nfCoreR 8; # number of radial fibers in core (number of "rings")
set nfCoreT 16; # number of tangential fibers in core (number of "wedges")
set nfCoverR 2; # number of radial fibers in cover
set nfCoverT 16; # number of tangential fibers in cover
# cover - cover thickness, has been defined with the geometry
# IDcore - material tag for the core patch, has been defined with the materials
# IDcover - material tag for the cover patches, has been defined with the materials
# IDsteel - material tag for the reinforcing steel, has been defined with the materials
# NbCol # number of column longitudinal-reinforcement bars, has been defined with the geometry
# AbCol # bar area of column longitudinal reinforcement, has been defined with the geometry
section fiberSec $IDcolFlex {
set rc [expr $roCol-$cover]; # Core radius
patch circ $IDcore $nfCoreT $nfCoreR 0 0 $riCol $rc 0 360; # Define the core patch
patch circ $IDcover $nfCoverT $nfCoverR 0 0 $rc $roCol 0 360; # Define the cover patch
set theta [expr 360.0/$NbCol]; # Determine angle increment between bars
layer circ $IDsteel $NbCol $AbCol 0 0 $rc $theta 360; # Define the reinforcing layer
}
# element connectivity
set IDcolTors 10; # ID tag for column section in torsion
set IDcolSec 1; # ID tag for column section
uniaxialMaterial Elastic $IDcolTors $GJ; # Define torsional stiffness
section Aggregator $IDcolSec $IDcolTors T -section $IDcolFlex; # attach torsion to flexure and create a new section IDtag
set IDcolTrans 1; # ID tag for column transformation, defining element normal
geomTransf Linear $IDcolTrans; # Linear: no second-order effects
set np 5; # Number of integration points
element nonlinearBeamColumn 1 1 2 $np $IDcolSec $IDcolTrans
# apply constant gravity load (and other constant loads)
set Pdl [expr $Weight]; # gravity axial load per column
pattern Plain 1 Linear {
load 2 0.0 -$Pdl 0.0
}
# set up solution procedure
system UmfPack; # solution procedure, Super-LU, how it solves system of equations
constraints Plain; # how it handles boundary conditions, enforce constraints through the transformation
# set up convergence criteria
test NormDispIncr 1.0e-5 10 0; # tolerance, max no. of iterations, and print code , 1: every iteration
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
numberer RCM; # renumber dof's to minimize band-width (optimization)
# set up load steppring
integrator LoadControl 0.1 1 0.1 0.1; # variable load-stepping
# set up type of analysis, static for gravity
analysis Static
initialize
# RUN GRAVITY ANALYSIS
analyze 10
loadConst -time 0.0
# print to screen that you are done with this step:
puts "Done with Structural Model Generation"
Please note the last command, it communicates to the user that all commands preceding it have been executed. The above commands can be submitted to OpenSees one-by-one, or they can be saved into a file, say input1.tcl.
Once the input file has been saved, it can be executed at the OpenSees command prompt:
Of course, you will likely not get the clean response I got above.
Say you make a mistake. Likely it is a simple mistake it and you go and fix it (most errors that we ALL commit are simple typing errors). To check it, you need to source the input file once more:
OpenSees does not allow you to define objects with the same IDtag more than once. To solve this problem, without exiting and re-entering OpenSees, you can use the wipe command:
Once you get confirmation that all the input commands have been executed correctly, you are ready to move on to the next step. Type exit, press enter and go on.