# Written by wyy # Units: N, m, sec
wipe; #wipe memery for new calculation
model basic -ndm 2 -ndf 3; #2-d problem, 3-degree of freedom per node ## Define constant
set PI [expr 2*asin(1.0)] #等于π set g 9.81; ## Data input
set hCol 0.36; # Height of Column set bCol 0.50; # Width of Column
set colAspect 4.86; # Column aspect ratio: L/D 柱子的纵横比
set v [expr 0.1]; # Column axial load rate --> P = v*f'c*Ag 轴向荷载率 set LCol [expr $hCol*$colAspect]; # Column length 柱长 set fc -4.16E7; # Concrete compressive strength set fpc -5.747E+7 set epsc0 -0.006328 set fpcu -3.302E+7 set epsu -0.0215 #set ratio 0.3 #set ft 5.474E+5 set Ec 2.43E10
set colArea [expr $hCol*$bCol]; # Column cross-section area 横截面积 set P [expr 2*$v*$fc*$colArea]; # Column axial load 轴向荷载 #set P [expr -576000-691484]
set m [expr -$P/$g]; # Beam nodal mass 节点质量 set beamArea $colArea; # Beam cross-section area set GJ 1.0e15; # Torsional stiffness 扭转刚度 set np 3; # Number of integration points
## Define uniaxial materials
# Core concrete (confined约束混凝土)
uniaxialMaterial Concrete01 1 [expr $fpc] $epsc0 $fpcu $epsu
#uniaxialMaterial Concrete02 1 [expr $fpc] $epsc0 $fpcu $epsu $ratio $ft $Ets
# Cover concrete (unconfined无约束)
uniaxialMaterial Concrete01 2 [expr $fc] -0.002 0 -0.005 # STEEL
## Cover steel Tube
#set fy 3.67e8; # Yield stress
#set E 2.0E11; # Young's modulus E=200000000kN/m # tag fy E0 b
#uniaxialMaterial Steel01 3 $fy $E 0.01 # STEEL
set fy 3.2E8 set fu 4.59E8 set Es 2.0E11
set Esh 6E9 ; # 0.03*Es set esh 0.016 ; # 8*ey set eult 0.08 ;# 40*ey set lsr 6.0 set beta 1.0 set r 0.8
set gama 0.8 set Cf 0.7
set alpha 0.506 set Cd 0.7
uniaxialMaterial ReinforcingSteel 3 $fy $fu $Es $Esh $esh $eult -GABuck $lsr $beta $r $gama -CMFatigue $Cf $alpha $Cd
# Post-tension threaded rod tag E0 eyt eyc initial strain(以负为正) set beta1 1.0 set r1 0.5 set gama1 0.5 set Cf1 0.4
set alpha1 0.3 set Cd1 0.3
uniaxialMaterial ReinforcingSteel 4 1.25E9 1.5E9 1.95E11 $Esh 0.06 0.3 -GABuck $lsr $beta1 $r1 $gama1 -CMFatigue $Cf1 $alpha1 $Cd1
# ---
# Post-tension threaded rod tag E0 eyt eyc initial strain(以负为正,通过输入初始应变的方式施加预应力)
#uniaxialMaterial ElasticPP 4 1.95e11 [expr 0.0086+0.0043] [expr 0.0086-0.0043] -0.0043
# -----
## Define nodes # tag X Y
node 1 0.0 0.0
node 2 0.0 [expr 0.2*$LCol] node 3 0.0 [expr 0.4*$LCol] node 4 0.0 [expr 0.6*$LCol] node 5 0.0 [expr 0.8*$LCol] node 6 0.0 $LCol ## Nodal mass # node MX MY RZ mass 6 $m $m 0.0
# Boundary conditions # node DX DY RZ fix 1 1 1 1 #fix 2 0 0 0 #fix 3 0 0 0 #fix 4 0 0 0 #fix 5 0 0 0 fix 6 0 0 0
# Define cross-section for nonlinear columns # ------------------------------------------ # set some parameters set colWidth 0.36 set colDepth 0.5
set cover 0.024
set As [expr $PI*pow(0.01,2)/4]; # area of no. 7 bars π*D2/4 (PI=π) set APs [expr 7*$PI*pow(0.005,2)/4]; # area of no. 7 bars
# some variables derived from the parameters
set y1 [expr $colWidth/2.0] set z1 [expr $colDepth/2.0]
section Fiber 2 {
# Create the concrete core fibers patch rect 1 20 20 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]
# Create the concrete cover fibers (top, bottom, left, right) patch rect 2 20 1 [expr -$y1] [expr $z1-$cover] $y1 $z1
patch rect 2 20 1 [expr -$y1] [expr -$z1] $y1 [expr $cover-$z1]
patch rect 2 2 1 [expr -$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover] patch rect 2 2 1 [expr $y1-$cover] [expr $cover-$z1] $y1 [expr $z1-$cover] # Create the reinforcing fibers (left, right,top,bottom)
layer straight 3 9 $As [expr $cover-$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover]
layer straight 3 9 $As [expr $y1-$cover] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover] layer straight 3 4 $As [expr $y1-$cover-(0.360-0.048)/5] [expr $z1-$cover] [expr $cover+(0.360-0.048)/5-$y1] [expr $z1-$cover] layer straight 3 4 $As [expr $y1-$cover-(0.360-0.048)/5] [expr $cover-$z1] [expr $cover+(0.360-0.048)/5-$y1] [expr $cover-$z1] layer straight 4 3 $APs -0.13 -0.20 -0.13 0.20 layer straight 4 3 $APs 0.13 -0.20 0.13 0.20 }
## Define torsional stiffness and attach it to section uniaxialMaterial Elastic 10 $GJ
## attach torsion to flexure and create a new section IDtag ## tag uniTag uniCode secTag
section Aggregator 1 10 T -section 2 # Define column elements # tag vecxz
geomTransf Linear 1 # Plastic region
# tag ndI ndJ nsecs secID transfTag element nonlinearBeamColumn 1 1 2 $np 1 1 element nonlinearBeamColumn 2 2 3 $np 1 1 element nonlinearBeamColumn 3 3 4 $np 1 1 element nonlinearBeamColumn 4 4 5 $np 1 1 element nonlinearBeamColumn 5 5 6 $np 1 1 # Define beam element
# tag $iNode $jNode $secTag
# Record nodal displacements
recorder Node -file S3-1.out -time -node 6 -dof 1 disp
recorder plot S3-1.out nodeDispbpc 10 10 300 600 -columns 2 1
recorder Element -file date/steel-p.out -time -ele 1 section 1 fiber [expr $cover-$y1] [expr $cover-$z1] stressStrain
recorder Element -file date/steel-l.out -time -ele 1 section 1 fiber [expr -$cover+$y1] [expr $cover-$z1] stressStrain
recorder Element -file date/confined-concrete-p.out -time -ele 1
section 1 fiber [expr 2*$cover-$y1] [expr 2*$cover-$z1] stressStrain recorder Element -file date/confined-concrete-l.out -time -ele 1
section 1 fiber [expr -2*$cover+$y1] [expr 2*$cover-$z1] stressStrain recorder Element -file date/cover-concrete-p.out -time -ele 1 section 1 fiber [expr 0.5*$cover-$y1] [expr 0.5*$cover-$z1] stressStrain
recorder Element -file date/cover-concrete-l.out -time -ele 1 section 1 fiber [expr -0.5*$cover+$y1] [expr 0.5*$cover-$z1] stressStrain
# -----
########################## Constant gravity load pattern Plain 1 Linear { # FX FY FZ MX MY MZ
load 6 0.0 [expr $P] 0.0 }
system BandGeneral
constraints Transformation numberer RCM
test NormDispIncr 1.0e-12 1000 3 algorithm KrylovNewton
integrator LoadControl 0.1 analysis Static initialize analyze 10
puts \
loadConst -time 0.0
########################cyclic loading
set H 1.0; # Reference lateral load # Set lateral load pattern pattern Plain 2 Linear { load 6 $H 0.0 0.0 }
set Dincr 0.001 set DmaxPush 100
integrator DisplacementControl 6 1 $Dincr
puts \开始Pushover分析\set IDctrlNode 6
set DxPush [expr $Dincr]
set NDxPush [expr -1*$Dincr]
# node dof init Jd min max
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 2; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 4; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 5; puts \
#3Dx #-Dx #3Dx integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 6; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 8; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 10; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 12; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; #-Dx #3Dx #-Dx #3Dx #-Dx analyze 14; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 17; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 20; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 25; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 30; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 35; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 40; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 45; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 50; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 55; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 60; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 65; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 70; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 75; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 80; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 85; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 90; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ;
#3Dx #-Dx #3Dx #-Dx #3Dx #-Dx #3Dx #-Dx #3Dx #-Dx #3Dx #-Dx #3Dx #-Dx #3Dx #-Dx #3Dx
analyze 95; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 100; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 105; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 110; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; #-Dx #3Dx #-Dx #3Dx analyze 115; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 120; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 125; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 130; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush; analyze 135; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 140; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 145; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 150; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 155; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 160; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 165; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 170; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 175; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 180; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 185; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 190; puts \
integrator DisplacementControl $IDctrlNode 1 $DxPush ; analyze 195; puts \
integrator DisplacementControl $IDctrlNode 1 $NDxPush ; analyze 200; puts \
#-Dx #3Dx
#-Dx
#-Dx #-Dx #-Dx #-Dx #3Dx #-Dx #3Dx #-Dx #3Dx #-Dx #3Dx #-Dx #3Dx
#-Dx