PortalFrame.tcl

#

# Units: kips, in, sec

#

# Written: MHS

# Date: 3 August 1999

set ANALYSIS Static

#set ANALYSIS Dynamic

set PUSHOVER LoadControl

#set PUSHOVER DispControl

# Create ModelBuilder

model basic -ndm 3 -ndf 6

# -----

set PI [expr 2*asin(1.0)]

set g 386.4

set hCol 72.0; # Column diameter

set colAspect 4; # Column aspect ratio

set blTocl 1; # Beam length to column length ratio

set biToci 1; # Beam Ig to column Ig ratio

set v 0.05; # Column axial load --> P = v*f'c*Ag

set hBeam 96.0; # Beam depth

set lenCol [expr $hCol*2*$colAspect]; # Column length

set lenBeam [expr $lenCol*$blTocl]; # Beam length

set fc -5.5; # Concrete compressive strength

set Ec [expr 57000*sqrt(-$fc*1000)]; # Elastic concrete modulus (psi)

set Ec [expr $Ec/1000]; # Elastic concrete modulus (ksi)

set colArea [expr $PI*pow($hCol,2)/4]; # Column cross-section area

set P [expr $v*$fc*$colArea]; # Column axial load

set m [expr -$P/$g]; # Beam nodal mass

set cover [expr $hCol/15]; # Column cover

set rhoCol 0.015; # Column r/f ratio

set numBars 20; # Number of r/f bars in columns

set barArea [expr $rhoCol*$colArea/$numBars]; # r/f bar area

set beamArea $colArea; # Beam cross-section area

set Icol [expr $PI*pow($hCol,4)/64]; # Column gross second moment of area

set Ibeam [expr $Icol*$biToci]; # Beam gross second moment of area

set GJ 1.0e12; # Torsional stiffness

# Define uniaxial materials

# CONCRETE tag f'c ec0 f'cu ecu

# Core concrete (confined)

uniaxialMaterial Concrete01 1 [expr 1.26394*$fc] -0.004639 [expr 1.002753*$fc] -0.013667

# Cover concrete (unconfined)

uniaxialMaterial Concrete01 2 $fc -0.003 [expr 0.1*$fc] -0.006

# STEEL

# Reinforcing steel

# tag fy E0 b

uniaxialMaterial Steel01 3 60 30000 0.05

# -----

set lp [expr $lenCol/3]; # Plastic hinge length

# Define nodes

# tag X Y Z

node 1 0.0 0.0 0.0

node 2 $lenBeam 0.0 0.0

node 3 0.0 $lp 0.0

node 4 $lenBeam $lp 0.0

node 5 0.0 [expr $lenCol-$lp] 0.0

node 6 $lenBeam [expr $lenCol-$lp] 0.0

node 7 0.0 $lenCol 0.0

node 8 $lenBeam $lenCol 0.0

# Nodal mass

# node MX MY MZ RX RY RZ

mass 7 $m $m $m 0.0 0.0 0.0

mass 8 $m $m $m 0.0 0.0 0.0

# -----

# Boundary conditions

# node DX DY DZ RX RY RZ

fix 1 1 1 1 1 1 1

fix 2 1 1 1 1 1 1

fix 3 0 0 1 1 1 0

fix 4 0 0 1 1 1 0

fix 5 0 0 1 1 1 0

fix 6 0 0 1 1 1 0

fix 7 0 0 1 1 1 0

fix 8 0 0 1 1 1 0

# -----

# Define column section

set rCol [expr $hCol/2.0]; # Column radius

# Source in procedure to define circular fiber section

source RCcircSection.tcl

# tag ri ro cover coreID coverID steelID num area nfCoreR nfCoreT nfCoverR nfCoverT

RCcircSection 2 0.0 $rCol $cover 1 2 3 $numBars $barArea 8 16 2 10

# Define torsional stiffness and attach it to RC section

uniaxialMaterial Elastic 10 $GJ

# tag uniTag uniCode secTag

section Aggregator 1 10 T -section 2

# -----

set np 4; # Number of integration points

# Define column elements

# tag vecxz

geomTransf Linear 1 0 0 1

# Plastic region

# tag ndI ndJ nsecs secID transfTag

element nonlinearBeamColumn 1 1 3 $np 1 1

element nonlinearBeamColumn 2 2 4 $np 1 1

element nonlinearBeamColumn 5 5 7 $np 1 1

element nonlinearBeamColumn 6 6 8 $np 1 1

# Elastic region

# tag ndI ndJ A E G J Iy Iz transfTag

element elasticBeamColumn 3 3 5 $colArea $Ec $GJ 1.0 $Icol $Icol 1

element elasticBeamColumn 4 4 6 $colArea $Ec $GJ 1.0 $Icol $Icol 1

# Define beam element

# tag vecxz

geomTransf Linear 2 0 0 1

# tag ndI ndJ A E G J Iy Iz transfTag

element elasticBeamColumn 7 7 8 $beamArea $Ec $GJ 1.0 $Ibeam $Ibeam 2

# -----

# Record nodal displacements

recorder Node nodeDisp.out disp -time -node 7 8 -dof 1

# Record element forces

recorder Element 1 -time -file ele1Force.out force

recorder Element 2 -time -file ele2Force.out force

# Record section forces and deformations

recorder Element 1 -time -file ele1sec1Force.out section 1 forces

recorder Element 1 -time -file ele1sec1Def.out section 1 deformations

# -----

# Constant gravity load

pattern Plain 1 Constant {

# FX FY FZ MX MY MZ

load 7 0.0 $P 0.0 0.0 0.0 0.0

load 8 0.0 $P 0.0 0.0 0.0 0.0

}

system ProfileSPD

constraints Plain

numberer Plain

# tol max dispCode

test NormUnbalance 1.0e-5 20

algorithm Newton

# Integrator with zero time step for initial gravity analysis

integrator LoadControl 0 1 0 0

analysis Static

analyze 1

# -----

if {$ANALYSIS == "Static"} {

set H 28.0; # Reference lateral load

# Set lateral load pattern

pattern Plain 2 Linear {

load 7 $H 0.0 0.0 0.0 0.0 0.0

load 8 $H 0.0 0.0 0.0 0.0 0.0

}

if {$PUSHOVER == "LoadControl"} {

# init Jd min max

integrator LoadControl 0.2 4 0.1 2.0

set numSteps 20

analysis Static

analyze $numSteps

} elseif {$PUSHOVER == "DispControl"} {

set dU 0.1; # Displacement increment

set maxU 12.0; # Max displacement

# node dof init Jd min max

integrator DisplacementControl 7 1 $dU 1 $dU $dU

set numSteps [expr int($maxU/$dU)]

analysis Static

analyze $numSteps

} else {

puts stderr "Invalid PUSHOVER option"

}

} elseif {$ANALYSIS == "Dynamic"} {

wipeAnalysis

system BandGeneral

constraints Plain

test NormUnbalance 1.0e-5 20

algorithm Newton

numberer RCM

# gamma beta

integrator Newmark 0.5 0.25

analysis Transient

# Source in TCL proc to read PEER SMD record

source ReadSMDFile.tcl

set outFile A-e06230.g3

# inFile outFile dt

ReadSMDFile A-e06230.at2 $outFile dt

# Create EQ load pattern

# tag dir factor file dt

pattern UniformExcitation 2 1 $g -accel $outFile $dt

# N dt

analyze 2000 0.01

} else {

puts stderr "Invalid ANALYSIS option"

}