parameter studies in tcl command language -...
TRANSCRIPT
Parameter Studies in Tcl Command Language
Silvia Mazzoni, Gregory L. Fenves
University of California, Berkeley
User Workshop 20 August 2001
Objective of Study
ðDetermine static and dynamic response of nonlinear structural systemðStatic Push-over Analysis (nonlinear)ðDynamic Time-history Analysis
(nonlinear,inelastic)
ðSeries of framesðSeries of ground motions
Analysis Procedure – the roadmap
RunFrame
Units
ParamList
GMFiles
Static
DynamicAnalysis
Parameters
NodalMesh
Materials
Elements RCcircSection
Output
Gravity
Lateral ReadSMDFile
runFRAME.tcl
FRAME
GROUND MOTION
1. wipe
2. source Units.tcl; # define units
3. source ParamList.tcl; # load up parameter values
4. source GMFiles.tcl; # load up ground-motion filenames
5. foreach Xframe $iXframe {
set Hcol [lindex $iHcol [expr $Xframe-1]]; set Lcol [lindex $iLcol [expr $Xframe-1]];
set Lbeam [lindex $iLbeam [expr $Xframe-1]]; set GrhoCol [lindex $iGrhoCol [expr $Xframe-1]]
set Weight [lindex $iWeight [expr $Xframe-1]]; set GMfact [lindex $iGMfact [expr $Xframe-1]];
set Hbeam [lindex $iHbeam [expr $Xframe-1]]; set Bbeam [lindex $iBbeam [expr $Xframe-1]];
6. source Static.tcl; # load procedure for static analysis
7. source Dynamic.tcl; # load procedure for dynamic analysis
8. puts FRAME$Xframe........FRAME$Xframe........
9. puts STATIC_ANALYSIS
10. Static $Xframe $Hcol $Lcol $Lbeam $GIbIc $GrhoCol $GPcol $GMfact ;
11. puts DYNAMIC_ANALYSIS
12. foreach GroundFile $iGroundFile {
13. puts GroundMotion$GroundFile
14. Dynamic $Xframe $Hcol $Lcol $Lbeam $GIbIc $GrhoCol $GPcol $GMfact $GroundFile;
15. }
16. }
constants
1. set in 1.;
2. set sec 1.;
3. set kip 1.;
4. set ksi [expr $kip/pow($in,2)];
5. set psi [expr $ksi/1000.];
6. set ft [expr 12.*$in];
7. set g [expr 32.2*$ft/pow($sec,2)];
8. set PI [expr 2*asin(1.0)];
9. set U 1.e10;
10. set u $U;
UNITS.tcl
basic units
engineering units
ParamList.tcl
Study Parameters Study Case
1. set iXframe “1 2 3 4 5 "
2. set iHcol "[expr 6.*$ft] [expr 5.*$ft] [expr 5*$ft] [expr 6*$ft] [expr 6*$ft] "
3. set iLcol "[expr 40.*$ft] [expr 40.25*$ft] [expr 42*$ft] [expr 42*$ft] [expr 34*$ft] "
4. set iLbeam "[expr 40.*$ft] [expr 40.25*$ft] [expr 42*$ft] [expr 42*$ft] [expr 42*$ft] "
5. set iGIbIc "1. 1. 1. 1. 1. "
6. set iGrhoCol "0.015 0.02 0.02 0.02 0.015 "
7. set iGPcol "0.05 0.0643 0.04823 0.04466 0.04466 "
8. set iGMfact "1.645 1.645 1.645 2.389 1.645 "
GMfiles.tcl
1. set iGroundFile {"CHI012" "QKP085" "E02140" "HOL360"
"ELC180" "RO3000" "CAS000“ "ARL360" }
2. # PEER/Silva Data set
3. # search: mag 6.0-7.5 # distance: 12-25km # USGS soil type C 180-360 m/sec # Free-Field Instruments
4. # filename = 'CHI012.at2'; # Imperial Valley, 1979 # 6621 Chiuauah, pga=0.27g
5. # filename = 'QKP085.at2'; # Imperial Valley, 1979 # Cucapah, pga=0.309g
6. # filename = 'E02140.at2'; # Imperial Valley, 1979 # 5515 El Centro Array #2, pga=0.315g
7. # filename = 'HOL360.at2'; # Northridge 1994 # 24303la Hollywood Stor FF, pga=0.364
8. # search: # PGA: 0.3-0.4 # distance: 12-25km # USGS soil type C 180-360 m/sec # Free-Field Instruments
9. # filename = 'ELC180.at2'; # Imperial Valley 1940 # 117 El Centro Arry #9, pga=0.314g
10. # filename = 'Ro3000.at2'; # Northridge 1994 # 90006 Sun Valley Roncoe blvd, pga=0.307g
11. # filename = 'CAS000.at2'; # Whittier-Narrows 1987# 90078 Compton Castlegate St., pga=0.334g
12. # random search:
13. # filename = 'ARL360.at2'; # Northridge 1994 # Arletta Nordhoff Fire Station, pga=0.310g
static.tcl
1. proc Static {Xframe Hcol Lcol Lbeam GIbIc GrhoCol GPcol GMfact} {
2. set ANALYSIS "Static";
3. source analysis.tcl
4. }
1. proc Dynamic {Xframe Hcol Lcol Lbeam GIbIc GrhoCol GPcol GMfact GroundFile} {
2. set ANALYSIS "Dynamic";
3. source analysis.tcl
4. }
dynamic.tcl
analysis.tcl
1. # Create modelbuilder
2. model basic -ndm 3 -ndf 6
3. source units.tcl;
4. source parameters.tcl;
5. source nodalmesh.tcl;
6. source materials.tcl;
7. source elements.tcl;
8. source output.tcl;
9. source gravity.tcl;
10. source lateral.tcl;
11. wipeanalysis
set up parameters and variables
set up structural model
specify data output
apply loading
parameters.tcl
1. set Rcol [expr $Hcol/2]; # COLUMN radius
2. set Acol [expr $PI*pow($Rcol,2)]; # column cross-sectional area
3. set cover [expr $Hcol/15]; # column cover width
4. set IgCol [expr $PI*pow($Rcol,4)/4]; # column gross moment of inertia,uncracked
5. set IyCol $IgCol; # elastic-column properties
6. set IzCol $IgCol; # elastic-column properties
7. set IzBeam [expr $GIbIc*$IgCol]; # BEAM gross moment of inertia -- horiz Z
8. set Hbeam [expr 8*$ft]; # beam depth, not really used
9. set Bbeam [expr $IzBeam*12/pow($Hbeam,3)]; # beam width not used
10. set IyBeam [expr $Hbeam*pow($Bbeam,3)/12]; # beam gross moment of inertia--vert Y
11. set Abeam [expr $Hbeam*$Bbeam*10000]; # beam cross-sectional area
12. set GLbLc [expr $Lbeam/$Lcol]; # beam-to-column length ratio
GEOMETRY
parameters.tcl
1. set fc [expr -5.5*$ksi]; # CONCRETE Compressive Strength
2. set Ec [expr 57*$ksi*sqrt(-$fc/$psi)]; # Concrete Elastic Modulus
3. set fc1C [expr 1.26394*$fc]; # CONFINED concrete max. stress (Mander)
4. set eps1C [expr 2.*$fc1C/$Ec]; # strain at maximum stress
5. set fc2C $fc; # ultimate stress
6. set eps2C [expr 2.*$fc2C/$Ec]; # strain at ultimate stress
7. set fc1U $fc; # UNCONFINED concrete maximum stress
8. set eps1U -0.003; # strain at maximum stress
9. set fc2U [expr 0.1*$fc]; # ultimate stress
10. set eps2U -0.006; # strain at ultimate stress
11. set Fy [expr 70.*$ksi]; # STEEL yield stress
12. set epsY 0.002; # steel yield strain
13. set Fu [expr 110.*$ksi]; # ultimate stress of steel
14. set epsU 0.1; # ultimate strain of steel
15. set Es [expr $Fy/$epsY]; # Young's Modulus of steel
16. set Bs [expr ($Fu-$Fy)/($epsU-$epsY)/$Es]; # post-yield stiffness ratio of steel
# (+Tension, -Compression)
MATERIAL PROPERTIES
parameters.tcl
1. set NbCol 20; # number of column longitudinal-reinf. bars
2. set AsCol [expr $GrhoCol*$Acol]; # total steel area in column section
3. set AbCol [expr $AsCol/$NbCol]; # bar area of column longitudinal reinforcement
4. set riCol 0.0; # inner radius of column section
5. set roCol $Rcol; # outer radius of column section
6. set np 5; # Number of integration points
7. set IDcore 1; # ID tag for core concrete
8. set IDcover 2; # ID tag for cover concrete
9. set IDsteel 3; # ID tag for steel
10. set nfCoreR 8; # number of radial fibers in core
11. set nfCoreT 16; # number of tangential fibers in core
12. set nfCoverR 2; # number of radial fibers in cover
13. set nfCoverT 16; # number of tangential fibers in cover
14. set IDcolFlex 2; # ID tag for column section in flexure
15. set IDcolTors 10; # ID tag for column section in torsion
16. set IDcolSec 1; # ID tag for column section
17. set IDcolTrans 1; # ID tag for column transformation, defining element normal
18. set IDbeamTrans 2; # ID tag for beam transformation, defining element normal
COLUMN & BEAM SECTION
1. set Pdl [expr -$GPcol*$Acol*$fc]; # gravity axial load per column (-ve value = )
2. set Weight [expr $Pdl*2]; # super-structure weight
3. set Wbeam [expr $Weight/$Lbeam]; # gravity DL distributed along beam length
4. set Mdl [expr $Wbeam*pow($Lbeam,2)/12]; # nodal moment due to distributed DL
5. set Mass [expr $Weight/$g]; # mass of superstructure
6. set Mnode [expr $Mass/2]; # nodal mass for each column joint
parameters.tcl DEAD LOAD
parameters.tcl
1. set xDamp 0.02; # modal damping ratio
2. set const [expr 12*$Ec*$IgCol/pow($Lcol,3)]; # condensed-K constant
3. set numer [expr $IgCol*$Lbeam+6*$IzBeam*$Lcol]; # condensed-K numerator
4. set denom [expr 3.*$IzBeam*$Lcol+2.*$IgCol*$Lbeam]; # condensed-K denominator
5. set Kgross [expr $const*$numer/$denom]; # condensed K of portal frame
6. set Gcrack 0.5; # cracked-stiffness factor
7. set Kcracked [expr $Kgross*$Gcrack]; # cracked stiffness
8. set omega [expr sqrt($Kcracked/$Mass)]; # natural frequency (rad/sec)
9. set Tperiod [expr 2*$PI/$omega]; # period (sec.)
10. set alphaM 0; # M-prop. RAYLEIGH damping
11. set betaK 0; # K-prop. RAYLEIGH damping – CURRENT K
12. set betaKcomm [expr 2*$xDamp/$omega]; # K-prop. RAYLEIGH damping – COMMITTED K
13. set betaKinit 0; # K-prop. RAYLEIGH damping – INITIAL K
DAMPING
D = alphaM*M + betaK*Kcurrent + betaKcomm*Kcommitted + betaKinit*Kinit
parameters.tcl
1. set DxPush [expr 0.1*$in]; # Displacement increment for pushover analysis
2. set DmaxPush [expr 20*$in]; # maximum displamcement for pushover analysis
3. set DtAnalysis [expr 0.005*$sec]; # time-step Dt for lateral analysis
4. set DtGround [expr 0.02*$sec]; # time-step Dt for input grond motion
5. set TmaxGround [expr 50 *$sec]; # maximum duration of ground-motion analysis
6. set gamma 0.5; # gamma value for newmark integration
7. set beta 0.25; # beta value for newmark integration
ANALYSIS
NodalMesh.tcl1. set IDctrlNode 3;
2. # Define nodes; # frame is in X-Y plane (X-horizontal, Y-vertical)
3. node 1 0.0 0.0 0.0
4. node 2 $Lbeam 0.0 0.0
5. node 3 0.0 $Lcol 0.0 -mass $Mnode 0.0 0.0 0.0 0.0 0.0
6. node 4 $Lbeam $Lcol 0.0 -mass $Mnode 0.0 0.0 0.0 0.0 0.0
7. # Boundary conditions; # node DX DY DZ RX RY RZ ! 1: fixed, 0: released
8. fix 1 1 1 1 1 1 1;
9. fix 2 1 1 1 1 1 1
10. fix 3 0 0 1 1 1 0
11. fix 4 0 0 1 1 1 0
12. # 3---------------------------4
13. # | |
14. # | |
15. # --1-- --2--
materials.tcl concrete
1. set ConcreteMaterialType “inelastic”
2. if {$ConcreteMaterialType == “elastic”} {
3. uniaxialMaterial Elastic $IDcore $Ec
4. uniaxialMaterial Elastic $Idcover $Ec
5. }
6. if {$ConcreteMaterialType == “inelastic”} {
7. # uniaxial Kent-Scott-Park concrete model w/ linear unload/reload, no T strength (-ve comp.)
8. uniaxialMaterial Concrete01 $Idcore $fc1C $eps1C $fc2C $eps2C; # Core
9. uniaxialMaterial Concrete01 $Idcover $fc1U $eps1U $fc2U $eps2U; # Cover
10. }
materials.tcl1. set SteelMaterialType “bilinear”
2. if {$SteelMaterialType == “elastic”} {
3. uniaxialMaterial Elastic $IDsteel $Es
4. }
5. if {$SteelMaterialType == “bilinear”} {
6. # Reinforcing steel, uniaxial bilinear steel model with isotropic hardening.
7. # Fy: yield strength, E0: initial elastic tangent modulus b: hardening ratio
8. # a1,a2,a3,a4 are optinonal parameters controlling isotropic hardening (default given)
9. # tag Fy E0 b <a1 a2 a3 a4>
10. uniaxialMaterial Steel01 $IDsteel $Fy $Es $Bs
11. }
12. if {$SteelMaterialType == “hysteretic”} {
13. # Reinforcing steel, uniaxial hysteretic steel model with isotropic hardening.
14. uniaxialMaterial Hysteretic $IDsteel $Fy $epsY $Fu $epsU -$Fy -$epsY -$Fu -$epsU
$pinchX $pinchY $damage1 $damage2 $betaMU
}
steel
elements.tcl
1. set ColumnType “inelastic”;
2. source RCcircSection.tcl; # proc to define circular fiber section– flexure
3. RCcircSection $IDcolFlex $riCol $roCol $cover $IDcore $IDcover $IDsteel $NbCol $AbCol $nfCoreR $nfCoreT $nfCoverR $nfCoverT
4. uniaxialMaterial Elastic $ IDcolTors $GJ; # Define torsion
5. section Aggregator $IDcolSec $IDcolTors T -section $IDcolFlex; # attach torsion & flex
6. geomTransf Linear $IDcolTrans 0 0 1; # no 2nd-order effects, define element normal
7.
8. if {$ColumnType == “elastic”} {
9. element elasticBeamColumn 1 1 3 $Acol $Ec $G $J $IyCol $IzCol $IDcolTrans
10. element elasticBeamColumn 2 2 4 $Acol $Ec $G $J $IyCol $IzCol $IDcolTrans }
11. if {$ColumnType == “inelastic”} {
12. # element element type ID, node I, node J, no. int pts, section ID, transf. ID
13. element nonlinearBeamColumn 1 1 3 $np $IDcolSec $IDcolTrans
14. element nonlinearBeamColumn 2 2 4 $np $IDcolSec $IDcolTrans }
15. geomTransf Linear $IDbeamTrans 0 0 1; # BEAM transformation, define element normal
16. element elasticBeamColumn 3 3 4 $Abeam $Ec $G $J $ IyBeam $IzBeam $IDbeamTrans
CO
LU
MN
BE
AM
output.tcl
1. if {$ANALYSIS == "Static"} {
2. # Record nodal displacements
3. recorder Node DStatFrame$Xframe.out disp -time -node $IDctrlNode -dof 1
4. # Record element forces
5. for {set iel 1} {$iel <= 2} {incr iel 1} {
6. recorder Element $iel -file El[expr $iel]FStatFrame$Xframe.out force
7. }
8. }
9. if {$ANALYSIS == "Dynamic"} {
10. # Record nodal displacements
11. recorder Node DDynaFrame[expr $Xframe]_$GroundFile.out disp -time -node
$IDctrlNode -dof 1
1. # Record element forces
2. for {set iel 1} {$iel <= 2} {incr iel 1} {
3. recorder Element $iel -time -file El[expr $iel]FDynaFrame[expr $Xframe]_$GroundFile.out force
4. }
5. }
gravity.tcl
1. # set up solution procedure
2. system SparseGeneral; # solution procedure, Super-LU, how it solves system of equations
3. constraints Plain; # how it handles boundary conditions, Plain: removes restrained DOFs
4. # set up convergence criteria
5. test NormUnbalance 1.e-5 20 0; # tolerance, max no. of iter., and print code, 1: every iter.
6. algorithm Newton; # use Newton's solution algorithm: updates tangent K at every iter.
7. numberer RCM; # renumber dof's to minimize band-width (optimization)
8. # set up load stepping # variable load-step
9. integrator LoadControl 0 1 0 0; # : Do init. incr., desired # of iter. to conv., Dmax, Dmin
10. analysis Static; # set up type of analysis, static for gravity
11. pattern Plain 1 Constant {
12. load $IDctrlNode 0.0 -$Pdl 0.0 0.0 0.0 -$Mdl; # Fx Fy Fz Mx My Mz
13. load [expr $IDctrlNode+1] 0.0 -$Pdl 0.0 0.0 0.0 +$Mdl }
14. analyze 1; # APPLY GRAVITY DL
lateral.tcl static
1. set PUSHOVER "DispControl"; # run displacement-controlled static pushover analysis
2. if {$ANALYSIS == "Static"} {
3. # Set lateral load pattern
4. pattern Plain 2 Linear {
5. load $IDctrlNode 100.0 0.0 0.0 0.0 0.0 0.0
6. load [expr $IDctrlNode+1] 100.0 0.0 0.0 0.0 0.0 0.0 }
7. if {$PUSHOVER == "LoadControl"} {
8. integrator LoadControl 0.2 4 0.1 2.0
9. set Nsteps 20
10. analysis Static
11. } elseif {$PUSHOVER == "DispControl"} {
12. integrator DisplacementControl $IDctrlNode 1 $DxPush 1 $DxPush $DxPush
13. set Nsteps [expr int($DmaxPush/$DxPush)]
14. analysis Static
15. } else { puts stderr "Invalid PUSHOVER option“ }
16. }
lateral.tcl dynamic
1. elseif {$ANALYSIS == "Dynamic"} {
2. wipeAnalysis
3. system SparseGeneral
4. constraints Plain
5. test NormUnbalance 1.0e-2 20 0
6. algorithm Newton
7. numberer RCM
8. integrator Newmark $gamma $beta $alphaM $betaK $betaKcomm $betaKinit; #damping
9. analysis Transient
10. set Nsteps [expr int($TmaxGround/$DtAnalysis)];
11. source ReadSMDFile.tcl; # read in procedure definition to convert data file types
12. set outFile $GroundFile.g3; # set variable holding new filename (PEER files have .at2 extension)
13. ReadSMDFile $GroundFile.at2 $outFile dt; # call procedure to convert the ground-motion file
14. set GMfatt [expr $g*$GMfact]; # data in input file is factor of g
15. set Gaccel "Series -dt $dt -filePath $outFile -factor $GMfatt"; # time series information
16. pattern UniformExcitation 2 1 -accel $Gaccel; # create uniform excit., 2:tag, 1:direxn
17. } else { puts stderr “Invalid ANALYSIS option” }
18. analyze $Nsteps $DtAnalysis Applies to both static & dynamic analyses