Q about modeling special spring
Moderators: silvia, selimgunay, Moderators
Q about modeling special spring
hi all
I need to define in OpenSees a constitutive model for a spring with the following characteristics
1- Zero stiffness for negative displacements ( tension ) and for positive displacements ( compression )up to given displacement ( d )
2- Infinite ( or nearly infinite ) stiffness for positive displacements greater than ( d )
finally thank you for your response
I need to define in OpenSees a constitutive model for a spring with the following characteristics
1- Zero stiffness for negative displacements ( tension ) and for positive displacements ( compression )up to given displacement ( d )
2- Infinite ( or nearly infinite ) stiffness for positive displacements greater than ( d )
finally thank you for your response
Re: Q about modeling special spring
Hysteretic material looks like the right one for you: http://opensees.berkeley.edu/wiki/index ... c_Material
Re: Q about modeling special spring
i am so happy for your reply
but when i used it something happened
uniaxialMaterial Hysteretic 10 0.04 0.04 0.06 0.06 <0.1 0.1> -0.04 -0.04 -0.06 -0.06 <-100000000 -0.1> 1 1 0 0 0
warning invalid mom3p
Hysteretic material: 10
expected floating-point number but got "<0.1"
finally thank you for your reply again
but when i used it something happened
uniaxialMaterial Hysteretic 10 0.04 0.04 0.06 0.06 <0.1 0.1> -0.04 -0.04 -0.06 -0.06 <-100000000 -0.1> 1 1 0 0 0
warning invalid mom3p
Hysteretic material: 10
expected floating-point number but got "<0.1"
finally thank you for your reply again
Re: Q about modeling special spring
Your material has to be defined in the following way (no brackets needed):
uniaxialMaterial Hysteretic 10 0.04 0.04 0.06 0.06 0.1 0.1 -0.04 -0.04 -0.06 -0.06 -100000000 -0.1 1 1 0 0 0
When you see this type of brackets < .. > in the command line, that means that the arguments inside of the brackets are optional. In case you want to specify optional arguments you do not need the brackets.
uniaxialMaterial Hysteretic 10 0.04 0.04 0.06 0.06 0.1 0.1 -0.04 -0.04 -0.06 -0.06 -100000000 -0.1 1 1 0 0 0
When you see this type of brackets < .. > in the command line, that means that the arguments inside of the brackets are optional. In case you want to specify optional arguments you do not need the brackets.
Re: Q about modeling special spring
hi
first thank you, your replay make the model to be run.
but i found this message during running the model in this statement
#perform the gravity load analysis, requires 10 steps to reach the load level
set ok [analyze 10]
WARNING :: node set TrailDisp<> - incompatable sizes
WARNING :: node set TrailDisp<> - incompatable sizes
WARNING :: node set TrailDisp<> - incompatable sizes
WARNING :: node set TrailDisp<> - incompatable sizes
and then the program stop running
may you help me to fix this problem ?
first thank you, your replay make the model to be run.
but i found this message during running the model in this statement
#perform the gravity load analysis, requires 10 steps to reach the load level
set ok [analyze 10]
WARNING :: node set TrailDisp<> - incompatable sizes
WARNING :: node set TrailDisp<> - incompatable sizes
WARNING :: node set TrailDisp<> - incompatable sizes
WARNING :: node set TrailDisp<> - incompatable sizes
and then the program stop running
may you help me to fix this problem ?
Re: Q about modeling special spring
based on the warning message I can not figure out where the problem can be. If you have a simple model post it and I will take a look.
Re: Q about modeling special spring
How can i send you the file ?
could you send me email address or tell me other way to use.
thank you very much
could you send me email address or tell me other way to use.
thank you very much
Re: Q about modeling special spring
you can post it on the board.
Re: Q about modeling special spring
# ------------------------------
# Start of model generation
# ------------------------------
# Create ModelBuilder (with two-dimensions and 3 DOF/node)
model basic -ndm 2 -ndf 3
# Create nodes
# tag X Y
node 1 0.0 7.0
node 2 8.0 7.0
node 3 16.0 7.0
node 4 24.0 7.0
node 5 32.0 7.0
node 61 39.5 7.0
node 610 39.5 7.0
node 62 40.5 7.0
node 620 40.5 7.0
node 7 48.0 7.0
node 8 56.0 7.0
node 9 64.0 7.0
node 10 72.0 7.0
node 111 79.5 7.0
node 1110 79.5 7.0
node 112 80.5 7.0
node 1120 80.5 7.0
node 12 88.0 7.0
node 13 96.0 7.0
node 14 104.0 7.0
node 15 112.0 7.0
node 16 120.0 7.0
node 17 40.0 0.0
node 18 40.0 0.7
node 19 40.0 1.4
node 20 40.0 2.1
node 21 40.0 2.8
node 22 40.0 3.5
node 23 40.0 4.2
node 24 40.0 4.9
node 25 40.0 5.6
node 26 40.0 6.3
node 260 40.0 6.9
node 263 40.0 6.9
node 261 39.5 6.9
node 262 40.5 6.9
node 27 80.0 0.0
node 28 80.0 0.7
node 29 80.0 1.4
node 30 80.0 2.1
node 31 80.0 2.8
node 32 80.0 3.5
node 33 80.0 4.2
node 34 80.0 4.9
node 35 80.0 5.6
node 36 80.0 6.3
node 360 80.0 6.9
node 363 80.0 6.9
node 361 79.5 6.9
node 362 80.5 6.9
equalDOF 260 263 1 2
equalDOF 263 261 1 2 6
equalDOF 263 262 1 2 6
equalDOF 261 610 1 2
equalDOF 262 620 1 2
equalDOF 360 363 1 2
equalDOF 363 361 1 2 6
equalDOF 363 362 1 2 6
equalDOF 361 1110 2 6
equalDOF 362 1120 2 6
# Fix supports at base of columns
# tag DX DY RZ
fix 1 0 1 0
fix 16 0 1 0
fix 17 1 1 1
fix 27 1 1 1
# Define materials for nonlinear columns
# ------------------------------------------
# CONCRETE tag f'c ec0 f'cu ecu
# Core concrete (confined)
uniaxialMaterial Concrete01 1 -3500 -0.0035 -3500 -0.014
# Cover concrete (unconfined)
uniaxialMaterial Concrete01 2 -2800 -0.0035 0.0 -0.0035
# STEEL
set fys 42000; # Yield stress
set Es 20000000; # Young's modulus
# tag fy E0 b
uniaxialMaterial Steel01 6 $fys $Es 0.01
uniaxialMaterial MinMax 4 1 -min -0.014 -max 10
uniaxialMaterial MinMax 5 2 -min -0.0035 -max 10
uniaxialMaterial Elastic 8 0
uniaxialMaterial Elastic 9 100
uniaxialMaterial Hysteretic 10 0.0 0.04 0.0 0.06 0.0 1 0.0 -0.04 0.0 -0.06 -10000000000 -0.1 1 1 0 0 0
element zeroLength 100 260 263 -mat 8 -dir 6
element zeroLength 101 360 363 -mat 8 -dir 6
element zeroLength 102 61 610 -mat 10 -dir 1
element twoNodeLink 103 61 610 -mat 9 -dir 1
element zeroLength 104 62 620 -mat 10 -dir 1
element twoNodeLink 105 62 620 -mat 9 -dir 1
element zeroLength 106 111 1110 -mat 10 -dir 1
element twoNodeLink 107 111 1110 -mat 9 -dir 1
element zeroLength 108 112 1120 -mat 10 -dir 1
element twoNodeLink 109 112 1120 -mat 9 -dir 1
# Define cross-section for nonlinear columns
# ------------------------------------------
# set some paramaters
set colWidth 6
set colDepth 1
set cover 0.05
set As 0.000491; # area of fi 25
# some variables derived from the parameters
set y1 [expr $colDepth/2.0]
set z1 [expr $colWidth/2.0]
section Fiber 1 {
# Create the concrete core fibers
patch rect 4 10 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]
# Create the concrete cover fibers (top, bottom, left, right)
patch rect 5 10 1 [expr -$y1] [expr $z1-$cover] $y1 $z1
patch rect 5 10 1 [expr -$y1] [expr -$z1] $y1 [expr $cover-$z1]
patch rect 5 2 1 [expr -$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover]
patch rect 5 2 1 [expr $y1-$cover] [expr $cover-$z1] $y1 [expr $z1-$cover]
# Create the reinforcing fibers (left, middle, right)
layer straight 6 60 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 6 2 $As [expr $y1-$cover-0.1] [expr $z1-$cover] [expr $y1-$cover-0.1] [expr $cover-$z1]
layer straight 6 2 $As [expr $y1-$cover-0.2] [expr $z1-$cover] [expr $y1-$cover-0.2] [expr $cover-$z1]
layer straight 6 2 $As [expr $y1-$cover-0.3] [expr $z1-$cover] [expr $y1-$cover-0.1] [expr $cover-$z1]
layer straight 6 2 $As [expr $y1-$cover-0.4] [expr $z1-$cover] [expr $y1-$cover-0.1] [expr $cover-$z1]
layer straight 6 2 $As [expr $cover-$y1+0.1] [expr $z1-$cover] [expr $cover-$y1+0.1] [expr $cover-$z1]
layer straight 6 2 $As [expr $cover-$y1+0.2] [expr $z1-$cover] [expr $cover-$y1+0.2] [expr $cover-$z1]
layer straight 6 2 $As [expr $cover-$y1+0.3] [expr $z1-$cover] [expr $cover-$y1+0.3] [expr $cover-$z1]
layer straight 6 2 $As [expr $cover-$y1+0.4] [expr $z1-$cover] [expr $cover-$y1+0.4] [expr $cover-$z1]
layer straight 6 60 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]
}
# Define column elements
# ----------------------
# Geometry of column elements
# tag
geomTransf Linear 1
# Number of integration points along length of element
set np 10
puts ok1
# Create the coulumns using dispBeam-column elements
#element dispBeamColumn $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag <-mass $massDens> <-iter $maxIters $tol> <-integration $intType>
# tag ndI ndJ nsecs secID transfTag
element dispBeamColumn 1 17 18 $np 1 1
element dispBeamColumn 2 18 19 $np 1 1
element dispBeamColumn 3 19 20 $np 1 1
element dispBeamColumn 4 20 21 $np 1 1
element dispBeamColumn 5 21 22 $np 1 1
element dispBeamColumn 6 22 23 $np 1 1
element dispBeamColumn 7 23 24 $np 1 1
element dispBeamColumn 8 24 25 $np 1 1
element dispBeamColumn 9 25 26 $np 1 1
element dispBeamColumn 10 26 260 $np 1 1
element dispBeamColumn 11 27 28 $np 1 1
element dispBeamColumn 12 28 29 $np 1 1
element dispBeamColumn 13 29 30 $np 1 1
element dispBeamColumn 14 30 31 $np 1 1
element dispBeamColumn 15 31 32 $np 1 1
element dispBeamColumn 16 32 33 $np 1 1
element dispBeamColumn 17 33 34 $np 1 1
element dispBeamColumn 18 34 35 $np 1 1
element dispBeamColumn 19 35 36 $np 1 1
element dispBeamColumn 20 36 360 $np 1 1
# Define beam elment
# -----------------------------
# Geometry of column elements
# tag
geomTransf Linear 2
# Create the beam element
# tag ndI ndJ A E Iz transfTag
element elasticBeamColumn 21 1 2 6.25 3000000 5.0 2
element elasticBeamColumn 22 2 3 6.25 3000000 5.0 2
element elasticBeamColumn 23 3 4 6.25 3000000 5.0 2
element elasticBeamColumn 24 4 5 6.25 3000000 5.0 2
element elasticBeamColumn 25 5 61 6.25 3000000 5.0 2
element elasticBeamColumn 26 61 62 1.15 3000000 0.00095 2
element elasticBeamColumn 27 62 7 6.25 3000000 5.0 2
element elasticBeamColumn 28 7 8 6.25 3000000 5.0 2
element elasticBeamColumn 29 8 9 6.25 3000000 5.0 2
element elasticBeamColumn 30 9 10 6.25 3000000 5.0 2
element elasticBeamColumn 31 10 111 6.25 3000000 5.0 2
element elasticBeamColumn 32 111 112 1.15 3000000 0.00095 2
element elasticBeamColumn 33 112 12 6.25 3000000 5.0 2
element elasticBeamColumn 34 12 13 6.25 3000000 5.0 2
element elasticBeamColumn 35 13 14 6.25 3000000 5.0 2
element elasticBeamColumn 36 14 15 6.25 3000000 5.0 2
element elasticBeamColumn 37 15 16 6.25 3000000 5.0 2
puts ok2
# Define gravity loads
# --------------------
# Set a parameter for the axial load
set P 180; # 10% of axial capacity of columns
# Create a Plain load pattern with a Linear TimeSeries
pattern Plain 1 "Linear" {
# Create nodal loads at nodes
# nd FX FY MZ
load 1 0.0 -65 0.0
load 2 0.0 -130 0.0
load 3 0.0 -130 0.0
load 4 0.0 -130 0.0
load 5 0.0 -130 0.0
load 61 0.0 -65 0.0
load 62 0.0 -65 0.0
load 7 0.0 -130 0.0
load 8 0.0 -130 0.0
load 9 0.0 -130 0.0
load 10 0.0 -130 0.0
load 111 0.0 -65 0.0
load 112 0.0 -65 0.0
load 12 0.0 -130 0.0
load 13 0.0 -130 0.0
load 14 0.0 -130 0.0
load 15 0.0 -130 0.0
load 16 0.0 -65 0.0
load 18 0.0 -10.5 0.0
load 19 0.0 -10.5 0.0
load 20 0.0 -10.5 0.0
load 21 0.0 -10.5 0.0
load 22 0.0 -10.5 0.0
load 23 0.0 -10.5 0.0
load 24 0.0 -10.5 0.0
load 25 0.0 -10.5 0.0
load 26 0.0 -10.5 0.0
load 260 0.0 -5.25 0.0
load 28 0.0 -10.5 0.0
load 29 0.0 -10.5 0.0
load 30 0.0 -10.5 0.0
load 31 0.0 -10.5 0.0
load 32 0.0 -10.5 0.0
load 33 0.0 -10.5 0.0
load 34 0.0 -10.5 0.0
load 35 0.0 -10.5 0.0
load 36 0.0 -10.5 0.0
load 360 0.0 -5.25 0.0
}
# initialize in case we need to do an initial stiffness iteration
initialize
# ------------------------------
# End of model generation
# ------------------------------
# ------------------------------
# Start of analysis generation
# ------------------------------
# Create the system of equation, a sparse solver with partial pivoting
system BandGeneral
# Create the constraint handler, the transformation method
constraints Transformation
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-12 and a max number of iterations of 10
test NormDispIncr 1.0e-12 10 3
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton
# Create the integration scheme, the LoadControl scheme using steps of 0.1
integrator LoadControl 0.1
# Create the analysis object
analysis Static
puts ok5
# perform the gravity load analysis, requires 10 steps to reach the load level
analyze 10
puts ok6
# Start of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# Do operations of Example3.1 by sourcing in the tcl file
puts "Gravity load analysis completed"
# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
# ----------------------------------------------------
# End of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# ----------------------------------------------------
# Start of additional modelling for dynamic loads
# ----------------------------------------------------
# Define nodal mass in terms of axial load on columns
# tag MX MY RZ
mass 1 6.630 6.630 0.0
mass 2 13.25 13.25 0.0
mass 3 13.25 13.25 0.0
mass 4 13.25 13.25 0.0
mass 5 13.25 13.25 0.0
mass 61 6.630 6.630 0.0
mass 62 6.630 6.630 0.0
mass 7 13.25 13.25 0.0
mass 8 13.25 13.25 0.0
mass 9 13.25 13.25 0.0
mass 10 13.25 13.25 0.0
mass 111 6.630 6.630 0.0
mass 112 6.630 6.630 0.0
mass 12 13.25 13.25 0.0
mass 13 13.25 13.25 0.0
mass 14 13.25 13.25 0.0
mass 15 13.25 13.25 0.0
mass 16 6.630 6.630 0.0
mass 18 1.070 1.070 0.0
mass 19 1.070 1.070 0.0
mass 20 1.070 1.070 0.0
mass 21 1.070 1.070 0.0
mass 22 1.070 1.070 0.0
mass 23 1.070 1.070 0.0
mass 24 1.070 1.070 0.0
mass 25 1.070 1.070 0.0
mass 26 1.070 1.070 0.0
mass 260 0.535 0.535 0.0
mass 28 1.070 1.070 0.0
mass 29 1.070 1.070 0.0
mass 30 1.070 1.070 0.0
mass 31 1.070 1.070 0.0
mass 32 1.070 1.070 0.0
mass 33 1.070 1.070 0.0
mass 34 1.070 1.070 0.0
mass 35 1.070 1.070 0.0
mass 36 1.070 1.070 0.0
mass 360 0.535 0.535 0.0
# Define dynamic loads
# --------------------
# Set some parameters
#set outFile ARL360.g3
# Source in TCL proc to read PEER SMD record
#source ReadSMDFile.tcl
# Permform the conversion from SMD record to OpenSees record
# inFile outFile dt
#ReadSMDFile ARL360.at2 $outFile dt
# Set time series to be passed to uniform excitation
set accelSeries "Path -filePath LP89cap.txt -dt 0.005
-factor 9.81"
# Create UniformExcitation load pattern
# tag dir
pattern UniformExcitation 2 1 -accel $accelSeries
# set the rayleigh damping factors for nodes & elements
rayleigh 0.0 0.0 0.0 0.05
# ----------------------------------------------------
# End of additional modelling for dynamic loads
# ----------------------------------------------------
# -----------------------------------------------------
----
# Start of modifications to analysis for transient analysis
# -----------------------------------------------------
----
# Delete the old analysis and all it's component objects
#wipeAnalysis
puts ok3
# Create the system of equation, a banded general storage scheme
system BandGeneral
# Create the constraint handler, a plain handler as homogeneous boundary
constraints Plain
# Create the convergence test, the norm of the residual with a tolerance of
test NormDispIncr 1.0e-3 10
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the integration scheme, the Newmark with alpha =0.5 and beta =.25
integrator Newmark 0.5 0.25
# Create the analysis object
analysis Transient
# -----------------------------------------------------
----
# End of modifications to analysis for transient analysis
# -----------------------------------------------------
# ------------------------------
# Start of recorder generation
# ------------------------------
# Create a recorder to monitor nodal displacements
recorder Element -file member10Def.out -time -ele 10 section 10 deformation
recorder Element -file member10force.out -time -ele 10 section 10 force
recorder Element -file member20force.out -time -ele 20 section 10 force
recorder Element -file member20Def.out -time -ele 20 section 10 deformation
recorder node -file node61Def.out - time -node 61 610 -dof 1 disp
# End of recorder generation
# ---------------------------------
# ------------------------------
# Finally perform the analysis
# ------------------------------
# Perform an eigenvalue analysis
puts "eigen values at start of transient: [eigen 2]"
# set some variables
set tFinal [expr 10000 * 0.01]
set tCurrent [getTime]
set ok 0
# Perform the transient analysis
while {$ok == 0 && $tCurrent < $tFinal} {
set ok [analyze 1 .005]
# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed ..lets try an initail
stiffness for this step"
test NormDispIncr 1.0e-8 100 0
algorithm ModifiedNewton -initial
set ok [analyze 1 .01]
if {$ok == 0} {puts "that worked .. back to regular
newton"}
test NormDispIncr 1.0e-8 10
algorithm Newton
}
set tCurrent [getTime]
}
# Print a message to indicate if analysis succesfull or not
if {$ok == 0} {
puts "Transient analysis completed SUCCESSFULLY";
} else {
puts "Transient analysis completed FAILED";
}
# Perform an eigenvalue analysis
puts "eigen values at start of transient: [eigen 2]"
set lambda [eigen 1]
set omega [expr pow($lambda,0.5)]
set PI 3.142857
set Tperiod [expr 2*$PI/$omega]; # period (sec.)
puts $Tperiod
# Start of model generation
# ------------------------------
# Create ModelBuilder (with two-dimensions and 3 DOF/node)
model basic -ndm 2 -ndf 3
# Create nodes
# tag X Y
node 1 0.0 7.0
node 2 8.0 7.0
node 3 16.0 7.0
node 4 24.0 7.0
node 5 32.0 7.0
node 61 39.5 7.0
node 610 39.5 7.0
node 62 40.5 7.0
node 620 40.5 7.0
node 7 48.0 7.0
node 8 56.0 7.0
node 9 64.0 7.0
node 10 72.0 7.0
node 111 79.5 7.0
node 1110 79.5 7.0
node 112 80.5 7.0
node 1120 80.5 7.0
node 12 88.0 7.0
node 13 96.0 7.0
node 14 104.0 7.0
node 15 112.0 7.0
node 16 120.0 7.0
node 17 40.0 0.0
node 18 40.0 0.7
node 19 40.0 1.4
node 20 40.0 2.1
node 21 40.0 2.8
node 22 40.0 3.5
node 23 40.0 4.2
node 24 40.0 4.9
node 25 40.0 5.6
node 26 40.0 6.3
node 260 40.0 6.9
node 263 40.0 6.9
node 261 39.5 6.9
node 262 40.5 6.9
node 27 80.0 0.0
node 28 80.0 0.7
node 29 80.0 1.4
node 30 80.0 2.1
node 31 80.0 2.8
node 32 80.0 3.5
node 33 80.0 4.2
node 34 80.0 4.9
node 35 80.0 5.6
node 36 80.0 6.3
node 360 80.0 6.9
node 363 80.0 6.9
node 361 79.5 6.9
node 362 80.5 6.9
equalDOF 260 263 1 2
equalDOF 263 261 1 2 6
equalDOF 263 262 1 2 6
equalDOF 261 610 1 2
equalDOF 262 620 1 2
equalDOF 360 363 1 2
equalDOF 363 361 1 2 6
equalDOF 363 362 1 2 6
equalDOF 361 1110 2 6
equalDOF 362 1120 2 6
# Fix supports at base of columns
# tag DX DY RZ
fix 1 0 1 0
fix 16 0 1 0
fix 17 1 1 1
fix 27 1 1 1
# Define materials for nonlinear columns
# ------------------------------------------
# CONCRETE tag f'c ec0 f'cu ecu
# Core concrete (confined)
uniaxialMaterial Concrete01 1 -3500 -0.0035 -3500 -0.014
# Cover concrete (unconfined)
uniaxialMaterial Concrete01 2 -2800 -0.0035 0.0 -0.0035
# STEEL
set fys 42000; # Yield stress
set Es 20000000; # Young's modulus
# tag fy E0 b
uniaxialMaterial Steel01 6 $fys $Es 0.01
uniaxialMaterial MinMax 4 1 -min -0.014 -max 10
uniaxialMaterial MinMax 5 2 -min -0.0035 -max 10
uniaxialMaterial Elastic 8 0
uniaxialMaterial Elastic 9 100
uniaxialMaterial Hysteretic 10 0.0 0.04 0.0 0.06 0.0 1 0.0 -0.04 0.0 -0.06 -10000000000 -0.1 1 1 0 0 0
element zeroLength 100 260 263 -mat 8 -dir 6
element zeroLength 101 360 363 -mat 8 -dir 6
element zeroLength 102 61 610 -mat 10 -dir 1
element twoNodeLink 103 61 610 -mat 9 -dir 1
element zeroLength 104 62 620 -mat 10 -dir 1
element twoNodeLink 105 62 620 -mat 9 -dir 1
element zeroLength 106 111 1110 -mat 10 -dir 1
element twoNodeLink 107 111 1110 -mat 9 -dir 1
element zeroLength 108 112 1120 -mat 10 -dir 1
element twoNodeLink 109 112 1120 -mat 9 -dir 1
# Define cross-section for nonlinear columns
# ------------------------------------------
# set some paramaters
set colWidth 6
set colDepth 1
set cover 0.05
set As 0.000491; # area of fi 25
# some variables derived from the parameters
set y1 [expr $colDepth/2.0]
set z1 [expr $colWidth/2.0]
section Fiber 1 {
# Create the concrete core fibers
patch rect 4 10 1 [expr $cover-$y1] [expr $cover-$z1] [expr $y1-$cover] [expr $z1-$cover]
# Create the concrete cover fibers (top, bottom, left, right)
patch rect 5 10 1 [expr -$y1] [expr $z1-$cover] $y1 $z1
patch rect 5 10 1 [expr -$y1] [expr -$z1] $y1 [expr $cover-$z1]
patch rect 5 2 1 [expr -$y1] [expr $cover-$z1] [expr $cover-$y1] [expr $z1-$cover]
patch rect 5 2 1 [expr $y1-$cover] [expr $cover-$z1] $y1 [expr $z1-$cover]
# Create the reinforcing fibers (left, middle, right)
layer straight 6 60 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 6 2 $As [expr $y1-$cover-0.1] [expr $z1-$cover] [expr $y1-$cover-0.1] [expr $cover-$z1]
layer straight 6 2 $As [expr $y1-$cover-0.2] [expr $z1-$cover] [expr $y1-$cover-0.2] [expr $cover-$z1]
layer straight 6 2 $As [expr $y1-$cover-0.3] [expr $z1-$cover] [expr $y1-$cover-0.1] [expr $cover-$z1]
layer straight 6 2 $As [expr $y1-$cover-0.4] [expr $z1-$cover] [expr $y1-$cover-0.1] [expr $cover-$z1]
layer straight 6 2 $As [expr $cover-$y1+0.1] [expr $z1-$cover] [expr $cover-$y1+0.1] [expr $cover-$z1]
layer straight 6 2 $As [expr $cover-$y1+0.2] [expr $z1-$cover] [expr $cover-$y1+0.2] [expr $cover-$z1]
layer straight 6 2 $As [expr $cover-$y1+0.3] [expr $z1-$cover] [expr $cover-$y1+0.3] [expr $cover-$z1]
layer straight 6 2 $As [expr $cover-$y1+0.4] [expr $z1-$cover] [expr $cover-$y1+0.4] [expr $cover-$z1]
layer straight 6 60 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]
}
# Define column elements
# ----------------------
# Geometry of column elements
# tag
geomTransf Linear 1
# Number of integration points along length of element
set np 10
puts ok1
# Create the coulumns using dispBeam-column elements
#element dispBeamColumn $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag <-mass $massDens> <-iter $maxIters $tol> <-integration $intType>
# tag ndI ndJ nsecs secID transfTag
element dispBeamColumn 1 17 18 $np 1 1
element dispBeamColumn 2 18 19 $np 1 1
element dispBeamColumn 3 19 20 $np 1 1
element dispBeamColumn 4 20 21 $np 1 1
element dispBeamColumn 5 21 22 $np 1 1
element dispBeamColumn 6 22 23 $np 1 1
element dispBeamColumn 7 23 24 $np 1 1
element dispBeamColumn 8 24 25 $np 1 1
element dispBeamColumn 9 25 26 $np 1 1
element dispBeamColumn 10 26 260 $np 1 1
element dispBeamColumn 11 27 28 $np 1 1
element dispBeamColumn 12 28 29 $np 1 1
element dispBeamColumn 13 29 30 $np 1 1
element dispBeamColumn 14 30 31 $np 1 1
element dispBeamColumn 15 31 32 $np 1 1
element dispBeamColumn 16 32 33 $np 1 1
element dispBeamColumn 17 33 34 $np 1 1
element dispBeamColumn 18 34 35 $np 1 1
element dispBeamColumn 19 35 36 $np 1 1
element dispBeamColumn 20 36 360 $np 1 1
# Define beam elment
# -----------------------------
# Geometry of column elements
# tag
geomTransf Linear 2
# Create the beam element
# tag ndI ndJ A E Iz transfTag
element elasticBeamColumn 21 1 2 6.25 3000000 5.0 2
element elasticBeamColumn 22 2 3 6.25 3000000 5.0 2
element elasticBeamColumn 23 3 4 6.25 3000000 5.0 2
element elasticBeamColumn 24 4 5 6.25 3000000 5.0 2
element elasticBeamColumn 25 5 61 6.25 3000000 5.0 2
element elasticBeamColumn 26 61 62 1.15 3000000 0.00095 2
element elasticBeamColumn 27 62 7 6.25 3000000 5.0 2
element elasticBeamColumn 28 7 8 6.25 3000000 5.0 2
element elasticBeamColumn 29 8 9 6.25 3000000 5.0 2
element elasticBeamColumn 30 9 10 6.25 3000000 5.0 2
element elasticBeamColumn 31 10 111 6.25 3000000 5.0 2
element elasticBeamColumn 32 111 112 1.15 3000000 0.00095 2
element elasticBeamColumn 33 112 12 6.25 3000000 5.0 2
element elasticBeamColumn 34 12 13 6.25 3000000 5.0 2
element elasticBeamColumn 35 13 14 6.25 3000000 5.0 2
element elasticBeamColumn 36 14 15 6.25 3000000 5.0 2
element elasticBeamColumn 37 15 16 6.25 3000000 5.0 2
puts ok2
# Define gravity loads
# --------------------
# Set a parameter for the axial load
set P 180; # 10% of axial capacity of columns
# Create a Plain load pattern with a Linear TimeSeries
pattern Plain 1 "Linear" {
# Create nodal loads at nodes
# nd FX FY MZ
load 1 0.0 -65 0.0
load 2 0.0 -130 0.0
load 3 0.0 -130 0.0
load 4 0.0 -130 0.0
load 5 0.0 -130 0.0
load 61 0.0 -65 0.0
load 62 0.0 -65 0.0
load 7 0.0 -130 0.0
load 8 0.0 -130 0.0
load 9 0.0 -130 0.0
load 10 0.0 -130 0.0
load 111 0.0 -65 0.0
load 112 0.0 -65 0.0
load 12 0.0 -130 0.0
load 13 0.0 -130 0.0
load 14 0.0 -130 0.0
load 15 0.0 -130 0.0
load 16 0.0 -65 0.0
load 18 0.0 -10.5 0.0
load 19 0.0 -10.5 0.0
load 20 0.0 -10.5 0.0
load 21 0.0 -10.5 0.0
load 22 0.0 -10.5 0.0
load 23 0.0 -10.5 0.0
load 24 0.0 -10.5 0.0
load 25 0.0 -10.5 0.0
load 26 0.0 -10.5 0.0
load 260 0.0 -5.25 0.0
load 28 0.0 -10.5 0.0
load 29 0.0 -10.5 0.0
load 30 0.0 -10.5 0.0
load 31 0.0 -10.5 0.0
load 32 0.0 -10.5 0.0
load 33 0.0 -10.5 0.0
load 34 0.0 -10.5 0.0
load 35 0.0 -10.5 0.0
load 36 0.0 -10.5 0.0
load 360 0.0 -5.25 0.0
}
# initialize in case we need to do an initial stiffness iteration
initialize
# ------------------------------
# End of model generation
# ------------------------------
# ------------------------------
# Start of analysis generation
# ------------------------------
# Create the system of equation, a sparse solver with partial pivoting
system BandGeneral
# Create the constraint handler, the transformation method
constraints Transformation
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-12 and a max number of iterations of 10
test NormDispIncr 1.0e-12 10 3
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton
# Create the integration scheme, the LoadControl scheme using steps of 0.1
integrator LoadControl 0.1
# Create the analysis object
analysis Static
puts ok5
# perform the gravity load analysis, requires 10 steps to reach the load level
analyze 10
puts ok6
# Start of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# Do operations of Example3.1 by sourcing in the tcl file
puts "Gravity load analysis completed"
# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
# ----------------------------------------------------
# End of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# ----------------------------------------------------
# Start of additional modelling for dynamic loads
# ----------------------------------------------------
# Define nodal mass in terms of axial load on columns
# tag MX MY RZ
mass 1 6.630 6.630 0.0
mass 2 13.25 13.25 0.0
mass 3 13.25 13.25 0.0
mass 4 13.25 13.25 0.0
mass 5 13.25 13.25 0.0
mass 61 6.630 6.630 0.0
mass 62 6.630 6.630 0.0
mass 7 13.25 13.25 0.0
mass 8 13.25 13.25 0.0
mass 9 13.25 13.25 0.0
mass 10 13.25 13.25 0.0
mass 111 6.630 6.630 0.0
mass 112 6.630 6.630 0.0
mass 12 13.25 13.25 0.0
mass 13 13.25 13.25 0.0
mass 14 13.25 13.25 0.0
mass 15 13.25 13.25 0.0
mass 16 6.630 6.630 0.0
mass 18 1.070 1.070 0.0
mass 19 1.070 1.070 0.0
mass 20 1.070 1.070 0.0
mass 21 1.070 1.070 0.0
mass 22 1.070 1.070 0.0
mass 23 1.070 1.070 0.0
mass 24 1.070 1.070 0.0
mass 25 1.070 1.070 0.0
mass 26 1.070 1.070 0.0
mass 260 0.535 0.535 0.0
mass 28 1.070 1.070 0.0
mass 29 1.070 1.070 0.0
mass 30 1.070 1.070 0.0
mass 31 1.070 1.070 0.0
mass 32 1.070 1.070 0.0
mass 33 1.070 1.070 0.0
mass 34 1.070 1.070 0.0
mass 35 1.070 1.070 0.0
mass 36 1.070 1.070 0.0
mass 360 0.535 0.535 0.0
# Define dynamic loads
# --------------------
# Set some parameters
#set outFile ARL360.g3
# Source in TCL proc to read PEER SMD record
#source ReadSMDFile.tcl
# Permform the conversion from SMD record to OpenSees record
# inFile outFile dt
#ReadSMDFile ARL360.at2 $outFile dt
# Set time series to be passed to uniform excitation
set accelSeries "Path -filePath LP89cap.txt -dt 0.005
-factor 9.81"
# Create UniformExcitation load pattern
# tag dir
pattern UniformExcitation 2 1 -accel $accelSeries
# set the rayleigh damping factors for nodes & elements
rayleigh 0.0 0.0 0.0 0.05
# ----------------------------------------------------
# End of additional modelling for dynamic loads
# ----------------------------------------------------
# -----------------------------------------------------
----
# Start of modifications to analysis for transient analysis
# -----------------------------------------------------
----
# Delete the old analysis and all it's component objects
#wipeAnalysis
puts ok3
# Create the system of equation, a banded general storage scheme
system BandGeneral
# Create the constraint handler, a plain handler as homogeneous boundary
constraints Plain
# Create the convergence test, the norm of the residual with a tolerance of
test NormDispIncr 1.0e-3 10
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the integration scheme, the Newmark with alpha =0.5 and beta =.25
integrator Newmark 0.5 0.25
# Create the analysis object
analysis Transient
# -----------------------------------------------------
----
# End of modifications to analysis for transient analysis
# -----------------------------------------------------
# ------------------------------
# Start of recorder generation
# ------------------------------
# Create a recorder to monitor nodal displacements
recorder Element -file member10Def.out -time -ele 10 section 10 deformation
recorder Element -file member10force.out -time -ele 10 section 10 force
recorder Element -file member20force.out -time -ele 20 section 10 force
recorder Element -file member20Def.out -time -ele 20 section 10 deformation
recorder node -file node61Def.out - time -node 61 610 -dof 1 disp
# End of recorder generation
# ---------------------------------
# ------------------------------
# Finally perform the analysis
# ------------------------------
# Perform an eigenvalue analysis
puts "eigen values at start of transient: [eigen 2]"
# set some variables
set tFinal [expr 10000 * 0.01]
set tCurrent [getTime]
set ok 0
# Perform the transient analysis
while {$ok == 0 && $tCurrent < $tFinal} {
set ok [analyze 1 .005]
# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed ..lets try an initail
stiffness for this step"
test NormDispIncr 1.0e-8 100 0
algorithm ModifiedNewton -initial
set ok [analyze 1 .01]
if {$ok == 0} {puts "that worked .. back to regular
newton"}
test NormDispIncr 1.0e-8 10
algorithm Newton
}
set tCurrent [getTime]
}
# Print a message to indicate if analysis succesfull or not
if {$ok == 0} {
puts "Transient analysis completed SUCCESSFULLY";
} else {
puts "Transient analysis completed FAILED";
}
# Perform an eigenvalue analysis
puts "eigen values at start of transient: [eigen 2]"
set lambda [eigen 1]
set omega [expr pow($lambda,0.5)]
set PI 3.142857
set Tperiod [expr 2*$PI/$omega]; # period (sec.)
puts $Tperiod
Re: Q about modeling special spring
Your model is too big for me to test it.
When you have a problem the best thing is to make a simple model that will have all types of elements and materials as a full model but is easy to test for possible modeling errors (e.g., if modeling a 10 storey frame start from a portal frame). Can you make a small model with no more then 3 elements and test it? In case you have problems send it to me and I will take a look. When sending the model, please describe it (type of elements, materials,…).
When you have a problem the best thing is to make a simple model that will have all types of elements and materials as a full model but is easy to test for possible modeling errors (e.g., if modeling a 10 storey frame start from a portal frame). Can you make a small model with no more then 3 elements and test it? In case you have problems send it to me and I will take a look. When sending the model, please describe it (type of elements, materials,…).
Re: Q about modeling special spring
hi vesna
I relay feel grateful for your assistance to me
my model simply based on making element with the material 11 which is parallel material
uniaxialMaterial Elastic 9 100
uniaxialMaterial ElasticPPGap 10 1000000000 100000000 0.1
uniaxialMaterial Parallel 11 9 10
I just want to no how this element with this special material can be run ? I tried to use two ways (Broyden & Newton &...ect) but it makes bad results ( useless results )
best regards
mousa
I relay feel grateful for your assistance to me
my model simply based on making element with the material 11 which is parallel material
uniaxialMaterial Elastic 9 100
uniaxialMaterial ElasticPPGap 10 1000000000 100000000 0.1
uniaxialMaterial Parallel 11 9 10
I just want to no how this element with this special material can be run ? I tried to use two ways (Broyden & Newton &...ect) but it makes bad results ( useless results )
best regards
mousa