Skip to content

Commit

Permalink
Merge pull request #26 from yisangriB/master
Browse files Browse the repository at this point in the history
Just locating the multi-fidelity test example files under the Ex02 folder, but the original example files are unchanged
  • Loading branch information
fmckenna authored Oct 1, 2024
2 parents 2a55778 + 8fa1584 commit 88c73f2
Show file tree
Hide file tree
Showing 6 changed files with 892 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
[

{
"id": 34,
"mainScript": "./model1/Ex5.Frame2D.build.ElasticSection.tcl",
"type": "OpenSeesInput",
"NodeMapping":
[
{
"node": 11,
"cline": "response",
"floor": "0"
},
{
"node": 21,
"cline": "response",
"floor": "1"
},
{
"node": 31,
"cline": "response",
"floor": "2"
},
{
"node": 41,
"cline": "response",
"floor": "3"
}
],
"numStory": 3,
"ndm": 2,
"ndf": 3,
"dampingRatio": 0.02
},
{
"id": [1,3,5],
"mainScript": "./model2/MRF_2Story_Concentrated.tcl",
"type": "OpenSeesInput",
"NodeMapping":
[
{
"node": 11,
"cline": "response",
"floor": "0"
},
{
"node": 12,
"cline": "response",
"floor": "1"
},
{
"node": 13,
"cline": "response",
"floor": "2"
}
],
"numStory": 2,
"ndm": 2,
"ndf": 3,
"dampingRatio": 0.02
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
# --------------------------------------------------------------------------------------------------
# Example 5. 2D Frame -- Build Model
# nonlinearBeamColumn element, uniaxial elastic section
# Silvia Mazzoni & Frank McKenna, 2006
#

# SET UP ----------------------------------------------------------------------------
wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs
set dataDir Data; # set up name of data directory (you can remove this)
file mkdir $dataDir; # create data directory
#set GMdir "../GMfiles/"; # ground-motion file directory
source LibUnits.tcl; # define units

# define GEOMETRY -------------------------------------------------------------
# define structure-geometry paramters
set LCol [expr 14*$ft]; # column height
set LBeam [expr 24*$ft]; # beam length

# calculate locations of beam/column intersections:
set X1 0.;
set X2 [expr $X1 + $LBeam];
set X3 [expr $X2 + $LBeam];
set X4 [expr $X3 + $LBeam];
set Y1 0.;
set Y2 [expr $Y1 + $LCol];
set Y3 [expr $Y2 + $LCol];
set Y4 [expr $Y3 + $LCol];

# define nodal coordinates
node 11 $X1 $Y1
node 12 $X2 $Y1
node 13 $X3 $Y1
node 14 $X4 $Y1
node 21 $X1 $Y2
node 22 $X2 $Y2
node 23 $X3 $Y2
node 24 $X4 $Y2
node 31 $X1 $Y3
node 32 $X2 $Y3
node 33 $X3 $Y3
node 34 $X4 $Y3
node 41 $X1 $Y4
node 42 $X2 $Y4
node 43 $X3 $Y4
node 44 $X4 $Y4

# Set up parameters that are particular to the model for displacement control
set IDctrlNode 41; # node where displacement is read for displacement control
set IDctrlDOF 1; # degree of freedom of displacement read for displacement control
set NStory 3; # number of stories above ground level
set NBay 3; # number of bays
set LBuilding $Y4; # total building height

# BOUNDARY CONDITIONS
fix 11 1 1 0
fix 12 1 1 0
fix 13 1 1 0
fix 14 1 1 0

# Structural-Steel W-section properties
# material properties:
set Es [expr 29000*$ksi]; # Steel Young's Modulus
set nu 0.3;
set Gs [expr $Es/2./[expr 1+$nu]]; # Torsional stiffness Modulus

# column sections: W27x114
set AgCol [expr 33.5*pow($in,2)]; # cross-sectional area
set IzCol [expr 4090.*pow($in,4)]; # moment of Inertia
# beam sections: W24x94
set AgBeam [expr 27.7*pow($in,2)]; # cross-sectional area
set IzBeam [expr 2700.*pow($in,4)]; # moment of Inertia

set ColSecTag 1
set BeamSecTag 2
section Elastic $ColSecTag $Es $AgCol $IzCol
section Elastic $BeamSecTag $Es $AgBeam $IzBeam

# define ELEMENTS
# set up geometric transformations of element
# separate columns and beams, in case of P-Delta analysis for columns
set IDColTransf 1; # all columns
set IDBeamTransf 2; # all beams
set ColTransfType Linear ; # options, Linear PDelta Corotational
geomTransf $ColTransfType $IDColTransf ; # only columns can have PDelta effects (gravity effects)
geomTransf Linear $IDBeamTransf


# Define Beam-Column Elements
set np 5; # number of Gauss integration points for nonlinear curvature distribution-- np=2 for linear distribution ok
# columns
element nonlinearBeamColumn 111 11 21 $np $ColSecTag $IDColTransf; # level 1-2
element nonlinearBeamColumn 112 12 22 $np $ColSecTag $IDColTransf
element nonlinearBeamColumn 113 13 23 $np $ColSecTag $IDColTransf
element nonlinearBeamColumn 114 14 24 $np $ColSecTag $IDColTransf
element nonlinearBeamColumn 121 21 31 $np $ColSecTag $IDColTransf; # level 2-3
element nonlinearBeamColumn 122 22 32 $np $ColSecTag $IDColTransf
element nonlinearBeamColumn 123 23 33 $np $ColSecTag $IDColTransf
element nonlinearBeamColumn 124 24 34 $np $ColSecTag $IDColTransf
element nonlinearBeamColumn 131 31 41 $np $ColSecTag $IDColTransf; # level 3-4
element nonlinearBeamColumn 132 32 42 $np $ColSecTag $IDColTransf
element nonlinearBeamColumn 133 33 43 $np $ColSecTag $IDColTransf
element nonlinearBeamColumn 134 34 44 $np $ColSecTag $IDColTransf
# beams
element nonlinearBeamColumn 221 21 22 $np $BeamSecTag $IDBeamTransf; # level 2
element nonlinearBeamColumn 222 22 23 $np $BeamSecTag $IDBeamTransf;
element nonlinearBeamColumn 223 23 24 $np $BeamSecTag $IDBeamTransf;
element nonlinearBeamColumn 231 31 32 $np $BeamSecTag $IDBeamTransf; # level 3
element nonlinearBeamColumn 232 32 33 $np $BeamSecTag $IDBeamTransf;
element nonlinearBeamColumn 233 33 34 $np $BeamSecTag $IDBeamTransf;
element nonlinearBeamColumn 241 41 42 $np $BeamSecTag $IDBeamTransf; # level 4
element nonlinearBeamColumn 242 42 43 $np $BeamSecTag $IDBeamTransf;
element nonlinearBeamColumn 243 43 44 $np $BeamSecTag $IDBeamTransf;


# Define GRAVITY LOADS, weight and masses
# calculate dead load of frame, assume this to be an internal frame (do LL in a similar manner)
# calculate distributed weight along the beam length
set GammaConcrete [expr 150*$pcf]; # Reinforced-Concrete floor slabs
set Tslab [expr 6*$in]; # 6-inch slab
set Lslab [expr 2*$LBeam/2]; # assume slab extends a distance of $LBeam1/2 in/out of plane
set Qslab [expr $GammaConcrete*$Tslab*$Lslab];
set QBeam [expr 94*$lbf/$ft]; # W-section weight per length
set QdlBeam [expr $Qslab + $QBeam]; # dead load distributed along beam.
set QdlCol [expr 114*$lbf/$ft]; # W-section weight per length
set WeightCol [expr $QdlCol*$LCol]; # total Column weight
set WeightBeam [expr $QdlBeam*$LBeam]; # total Beam weight

# assign masses to the nodes that the columns are connected to
# each connection takes the mass of 1/2 of each element framing into it (mass=weight/$g)
mass 21 [expr ($WeightCol/2 + $WeightCol/2 +$WeightBeam/2)/$g] 0. 0.; # level 2
mass 22 [expr ($WeightCol/2 + $WeightCol/2 +$WeightBeam/2 +$WeightBeam/2)/$g] 0. 0.;
mass 23 [expr ($WeightCol/2 + $WeightCol/2 +$WeightBeam/2 +$WeightBeam/2)/$g] 0. 0.;
mass 24 [expr ($WeightCol/2 + $WeightCol/2 +$WeightBeam/2)/$g] 0. 0.;
mass 31 [expr ($WeightCol/2 + $WeightCol/2 +$WeightBeam/2)/$g] 0. 0.; # level 3
mass 32 [expr ($WeightCol/2 + $WeightCol/2 +$WeightBeam/2 +$WeightBeam/2)/$g] 0. 0.;
mass 33 [expr ($WeightCol/2 + $WeightCol/2 +$WeightBeam/2 +$WeightBeam/2)/$g] 0. 0.;
mass 34 [expr ($WeightCol/2 + $WeightCol/2 +$WeightBeam/2)/$g] 0. 0.;
mass 41 [expr ($WeightCol/2 +$WeightBeam/2)/$g] 0. 0.; # level 4
mass 42 [expr ($WeightCol/2 +$WeightBeam/2 +$WeightBeam/2)/$g] 0. 0.;
mass 43 [expr ($WeightCol/2 +$WeightBeam/2 +$WeightBeam/2)/$g] 0. 0.;
mass 44 [expr ($WeightCol/2 +$WeightBeam/2)/$g] 0. 0.;
# # calculate total Floor Mass
# set WeightFloor2 [expr $WeightCol*4/2+$WeightCol*4/2+3*$WeightBeam]; # level 2 weight
# set WeightFloor3 [expr $WeightCol*4/2+$WeightCol*4/2+3*$WeightBeam];
# set WeightFloor4 [expr $WeightCol*4/2+3*$WeightBeam];
# set WeightTotal [expr $WeightFloor2 + $WeightFloor3 + $WeightFloor4]; # total frame weight
# set MassFloor2 [expr $WeightFloor2/$g];
# set MassFloor3 [expr $WeightFloor3/$g];
# set MassFloor4 [expr $WeightFloor4/$g];
# set MassTotal [expr $MassFloor2+$MassFloor3+$MassFloor4]; # total frame mass

# # LATERAL-LOAD distribution for static pushover analysis
# # calculate distribution of lateral load based on mass/weight distributions along building height
# # Fj = WjHj/sum(WiHi) * Weight at each floor j
# set sumWiHi [expr $WeightFloor2*$Y2 + $WeightFloor3*$Y3 + $WeightFloor4*$Y4]; # denominator
# set Fj2 [expr $WeightFloor2*$Y2/$sumWiHi*$WeightTotal]; # total for floor 2
# set Fj3 [expr $WeightFloor3*$Y3/$sumWiHi*$WeightTotal]; # total for floor 3
# set Fj4 [expr $WeightFloor4*$Y4/$sumWiHi*$WeightTotal]; # total for floor 4
# set Fi2 [expr $Fj2/4]; # per node on floor 2
# set Fi3 [expr $Fj3/4]; # per node on floor 3
# set Fi4 [expr $Fj4/4]; # per node on floor 4
# set iFi "$Fi2 $Fi3 $Fi4"; # vectorize

# # Define RECORDERS -------------------------------------------------------------
# recorder Node -file $dataDir/DFree.out -time -node 41 -dof 1 2 3 disp; # displacements of free node
# recorder Node -file $dataDir/DBase.out -time -node 11 12 13 14 -dof 1 2 3 disp; # displacements of support nodes
# recorder Node -file $dataDir/RBase.out -time -node 11 12 13 14 -dof 1 2 3 reaction; # support reaction
# recorder Drift -file $dataDir/DrNode.out -time -iNode 41 -jNode 11 -dof 1 -perpDirn 2; # lateral drift
# recorder Element -file $dataDir/Fel1.out -time -ele 111 localForce; # element forces in local coordinates
# recorder Element -file $dataDir/ForceEle1sec1.out -time -ele 111 section 1 force; # section forces, axial and moment, node i
# recorder Element -file $dataDir/DefoEle1sec1.out -time -ele 111 section 1 deformation; # section deformations, axial and curvature, node i
# recorder Element -file $dataDir/ForceEle1sec$np.out -time -ele 111 section $np force; # section forces, axial and moment, node j
# recorder Element -file $dataDir/DefoEle1sec$np.out -time -ele 111 section $np deformation; # section deformations, axial and curvature, node j

# # define GRAVITY -------------------------------------------------------------
# # GRAVITY LOADS # define gravity load applied to beams and columns -- eleLoad applies loads in local coordinate axis
# pattern Plain 101 Linear {
# eleLoad -ele 221 222 223 -type -beamUniform -$QdlBeam; ; # beams level 2 (in -ydirection)
# eleLoad -ele 231 232 233 -type -beamUniform -$QdlBeam;
# eleLoad -ele 241 242 243 -type -beamUniform -$QdlBeam
# eleLoad -ele 111 112 113 114 -type -beamUniform 0 -$QdlCol; # columns level 1-2 (in -xdirection)
# eleLoad -ele 121 122 123 124 -type -beamUniform 0 -$QdlCol;
# eleLoad -ele 131 132 133 134 -type -beamUniform 0 -$QdlCol;
# }
# # Gravity-analysis parameters -- load-controlled static analysis
# set Tol 1.0e-8; # convergence tolerance for test
# variable constraintsTypeGravity Plain; # default;
# if { [info exists RigidDiaphragm] == 1} {
# if {$RigidDiaphragm=="ON"} {
# variable constraintsTypeGravity Lagrange; # large model: try Transformation
# }; # if rigid diaphragm is on
# }; # if rigid diaphragm exists
# constraints $constraintsTypeGravity ; # how it handles boundary conditions
# numberer RCM; # renumber dof's to minimize band-width (optimization), if you want to
# system BandGeneral ; # how to store and solve the system of equations in the analysis (large model: try UmfPack)
# test NormDispIncr $Tol 6 ; # determine if convergence has been achieved at the end of an iteration step
# algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
# set NstepGravity 10; # apply gravity in 10 steps
# set DGravity [expr 1./$NstepGravity]; # first load increment;
# integrator LoadControl $DGravity; # determine the next time step for an analysis
# analysis Static; # define type of analysis static or transient
# analyze $NstepGravity; # apply gravity

# # ------------------------------------------------- maintain constant gravity loads and reset time to zero
# loadConst -time 0.0

puts "Model Built"


42 changes: 42 additions & 0 deletions E2MDOFBuildingResponse/multi_fidelity_files/model1/LibUnits.tcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# --------------------------------------------------------------------------------------------------
# LibUnits.tcl -- define system of units
# Silvia Mazzoni & Frank McKenna, 2006
#

# define UNITS ----------------------------------------------------------------------------
# set in 1.; # define basic units -- output units
# set kip 1.; # define basic units -- output units
# set sec 1.; # define basic units -- output units
# set LunitTXT "inch"; # define basic-unit text for output
# set FunitTXT "kip"; # define basic-unit text for output
# set TunitTXT "sec"; # define basic-unit text for output
# set ft [expr 12.*$in]; # define engineering units
# set ksi [expr $kip/pow($in,2)];
# set psi [expr $ksi/1000.];
# set lbf [expr $psi*$in*$in]; # pounds force
# set pcf [expr $lbf/pow($ft,3)]; # pounds per cubic foot
# set psf [expr $lbf/pow($ft,3)]; # pounds per square foot
# set in2 [expr $in*$in]; # inch^2
# set in4 [expr $in*$in*$in*$in]; # inch^4
# set cm [expr $in/2.54]; # centimeter, needed for displacement input in MultipleSupport excitation
# set PI [expr 2*asin(1.0)]; # define constants
# set g [expr 32.2*$ft/pow($sec,2)]; # gravitational acceleration
# set Ubig 1.e10; # a really large number
# set Usmall [expr 1/$Ubig]; # a really small number

set ft 1.; # define engineering units
set in [expr $ft*12.] ; # define basic units -- output units
set kip 1.; # define basic units -- output units
set sec 1.; # define basic units -- output units
set ksi [expr $kip/pow($in,2)];
set psi [expr $ksi/1000.];
set lbf [expr $psi*$in*$in]; # pounds force
set pcf [expr $lbf/pow($ft,3)]; # pounds per cubic foot
set psf [expr $lbf/pow($ft,3)]; # pounds per square foot
set in2 [expr $in*$in]; # inch^2
set in4 [expr $in*$in*$in*$in]; # inch^4
set cm [expr $in/2.54]; # centimeter, needed for displacement input in MultipleSupport excitation
set PI [expr 2*asin(1.0)]; # define constants
set g [expr 32.2*$ft/pow($sec,2)]; # gravitational acceleration
set Ubig 1.e10; # a really large number
set Usmall [expr 1/$Ubig]; # a really small number
Loading

0 comments on commit 88c73f2

Please sign in to comment.