recorder in push analysis
Moderators: silvia, selimgunay, Moderators
recorder in push analysis
Dear sir or madam
while doing pushover analysis (with DisplacementControl integrator ) I record the node displacement and I asked Opensees to record time too.
Has the value which is printed in the first column of the .txt file, (time column) have any special meaning?
thank you very much
while doing pushover analysis (with DisplacementControl integrator ) I record the node displacement and I asked Opensees to record time too.
Has the value which is printed in the first column of the .txt file, (time column) have any special meaning?
thank you very much
Re: recorder in push analysis
Yes, it is a force.
Re: recorder in push analysis
Dear Vesna
thank you very much for your reply
would you please explain more or introduce me a reference?
As far as I checked for my model the base shear or the shear force of the base element, is becoming constant eventually , while this force (as you mentioned) is raising linearly!
best regards
Nahid
thank you very much for your reply
would you please explain more or introduce me a reference?
As far as I checked for my model the base shear or the shear force of the base element, is becoming constant eventually , while this force (as you mentioned) is raising linearly!
best regards
Nahid
-
- Posts: 93
- Joined: Mon Apr 14, 2008 10:53 pm
Re: recorder in push analysis
Nahid
You are using DisplacementControl integrator which means the control of displacement is set up by user and the output denotes force.
Your loading probably has a problem. Please send your script.
You are using DisplacementControl integrator which means the control of displacement is set up by user and the output denotes force.
Your loading probably has a problem. Please send your script.
Re: recorder in push analysis
Dear Sir or Madam
I tired to compress my program in a single file and print it here.
the structure is tee shape and consists of 5 sub elements in each span and four sun elements in column.
the base column is labeled No. 100 and the reaction is recorded in 3 ends. the structure is pushed out of plane in Z direction and the Vz force of the 100 element and base reaction differs from the first col. of the displacement file.
I'm quite sure about the modeling of the structure since the periods and mode shapes are correct
please help me to figure out that what is wrong with my model that the first column of the dispz.out varies linearly while the model is in the nonlinear stage, which can be seen by the force and base shear reaction??????
I tired to compress my program in a single file and print it here.
the structure is tee shape and consists of 5 sub elements in each span and four sun elements in column.
the base column is labeled No. 100 and the reaction is recorded in 3 ends. the structure is pushed out of plane in Z direction and the Vz force of the 100 element and base reaction differs from the first col. of the displacement file.
I'm quite sure about the modeling of the structure since the periods and mode shapes are correct
please help me to figure out that what is wrong with my model that the first column of the dispz.out varies linearly while the model is in the nonlinear stage, which can be seen by the force and base shear reaction??????
Last edited by nahid2011 on Mon Dec 12, 2011 9:10 pm, edited 1 time in total.
-
- Posts: 93
- Joined: Mon Apr 14, 2008 10:53 pm
Re: recorder in push analysis
Hi Nahid
It may be that the nonlinear effects are not very strong for your model. I suggest that increase the magnitude of your target displacement and then compare the results.
Iman Mansouri
-----------------
Univ. of Kerman
Iran
It may be that the nonlinear effects are not very strong for your model. I suggest that increase the magnitude of your target displacement and then compare the results.
Iman Mansouri
-----------------
Univ. of Kerman
Iran
-
- Posts: 93
- Joined: Mon Apr 14, 2008 10:53 pm
Re: recorder in push analysis
is your model a bridge?
Iman Mansouri
-----------------
Univ. of Kerman
Iran
Iman Mansouri
-----------------
Univ. of Kerman
Iran
Re: recorder in push analysis
yes it is.
-
- Posts: 64
- Joined: Sun Apr 05, 2009 12:48 am
- Location: Technical University of Crete, Greece
- Contact:
Re: recorder in push analysis
vesna wrote:
> Yes, it is a force.
Dear Vesna,
I wish you a happy new year!
Just to make a note on your reply, I'm wondering why the time (i.e. the 1st) column of the output file represents the base shear ONLY in the case that the sum of the load vector's component at each elevation is equal to 1 (i.e. when the load vector is [0.1 0.3 0.6] => 0.1+0.3+0.6=1)
Why is force related with time and why only in the above case the base shears equals to time?
Thank you
> Yes, it is a force.
Dear Vesna,
I wish you a happy new year!
Just to make a note on your reply, I'm wondering why the time (i.e. the 1st) column of the output file represents the base shear ONLY in the case that the sum of the load vector's component at each elevation is equal to 1 (i.e. when the load vector is [0.1 0.3 0.6] => 0.1+0.3+0.6=1)
Why is force related with time and why only in the above case the base shears equals to time?
Thank you
Re: recorder in push analysis
When using Linear time series the load multiplier (lambda) is equal to time. If the sum of the reference load vector (Fref) componenets is equal to 1, only then base shear (Vb) becomes equal to load multiplier and so equal to time. It comes from simple algebra. We know that load vector is F=lambda*Fref. Base shear is then:
Vb = sum(Fi)=sum(lambda*Fref,i)=lambda*sum(Fref,i). If sum(Fref,i)=1, then Vb=lamda=time.
I hope this answers your question.
Vb = sum(Fi)=sum(lambda*Fref,i)=lambda*sum(Fref,i). If sum(Fref,i)=1, then Vb=lamda=time.
I hope this answers your question.
-
- Posts: 64
- Joined: Sun Apr 05, 2009 12:48 am
- Location: Technical University of Crete, Greece
- Contact:
Re: recorder in push analysis
Thank you for your reply.
Your explanation is clear that Vb=lamda=time when Σ(Fi)=1. I had misunderstood the concept of all load patterns (even static ones) being associated with a time series.
However, the thing that still puzzles me is why lambda (=time) can be decreased in displacement-controlled pushover analysis, (i.e. after the maxVb). I mean in that case, time has no natural meaning.
Well, it doesn't represent something even for t before maxVb,i.e I think it is completely not related to time (that someone would expect to see in the first column of an .out file e.g. such as the one created by the recorder: recorder Node -file Vb.out -time -nodeRange 1 5 -dof 1 reaction) because it's only a multiplier for the load vector. Could we conclude something more from -time column in that case?
Your explanation is clear that Vb=lamda=time when Σ(Fi)=1. I had misunderstood the concept of all load patterns (even static ones) being associated with a time series.
However, the thing that still puzzles me is why lambda (=time) can be decreased in displacement-controlled pushover analysis, (i.e. after the maxVb). I mean in that case, time has no natural meaning.
Well, it doesn't represent something even for t before maxVb,i.e I think it is completely not related to time (that someone would expect to see in the first column of an .out file e.g. such as the one created by the recorder: recorder Node -file Vb.out -time -nodeRange 1 5 -dof 1 reaction) because it's only a multiplier for the load vector. Could we conclude something more from -time column in that case?
Re: recorder in push analysis
Each load pattern has a time series associated with it. If you look at the command page for the plain pattern (used to define a static load) you will see that it is defined like this:
pattern Plain $patternTag $tsTag {
load...
eleLoad...
sp…
…
}
where $tsTag is the tag of the time series to be used in the load pattern.
pattern Plain $patternTag $tsTag {
load...
eleLoad...
sp…
…
}
where $tsTag is the tag of the time series to be used in the load pattern.
-
- Posts: 64
- Joined: Sun Apr 05, 2009 12:48 am
- Location: Technical University of Crete, Greece
- Contact:
Re: recorder in push analysis
Indeed. It was a misunderstanding.
Thank you very much.
Thank you very much.
Re: recorder in push analysis
Dear Vesna,
I have tried to plot the base shear against the displacement but I am having some difficulties. I read in one of your post that I should plot the second column of Dfree.out and the Rbase.out but when I ran my file, my Rbase.out contains negative number, so I plotted without the negative number and compared it to a study done before on the same column but my results are slightly different. Please help me out. I need to understand why I have negative number? If my file contain errors that caused the results to be different? I will really appreciate any input.
Thank you
wipe
# This a texas standard single bent bridge for a 28' roadway.
# The Column is circular and the bent is square shape.
# In the Future we will set up a texas standard bridge with random node
# that can change at all times
#Units in kip/ft
# column.tcl
# No overlay load was considered in this model.
# This model is a 2D model
# SET UP ----------------------------------------------------------------------------
model basic -ndm 2 -ndf 3; # 2 spacial dimensions, 3 DOF's per nodey
set dataDir Data; # set up name for data directory
file mkdir $dataDir/; # create data directory
set GMdir "../GMfiles"; # ground-motion file directory
# -----------------------------------------------------
# --------------------------------------------------------------------------------------------------
# ------------- define system of units-----------------------------------------
#
# 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 g 386.4; # g.
set Ubig 1.e10; # a really large number
# Superstructure Weight+Rail+ Haunch; We neglected the bearing pad weight
# build important quantities from input paramters
set span [expr 120]; #forward and backward total span length
set triblength [expr $span/2]
set ngir 4; # the number of girder
set roadway 38; # roadway width
set girderw 0.851; # Standard Tx54 girder in ksi
set bentcap 3.5 ; #rectangular bent cap
set deckwidth 40; # width of the deck
set deck [expr 8.5/12] ; # Typical deck thickness in Texas
set trib [expr $deck*$triblength*$deckwidth]; # tributary area
set haunch 1.1; # factor for haunch dead load to be considered
set gamma 0.15; # the unit weight of concrete is in kcf)
set P1 [expr $haunch*$trib*$gamma]; # deck weight
set P2 [expr $ngir*$girderw*$triblength]; # girder weight kip/ft
set capweight [expr $bentcap*$bentcap*$roadway*$gamma]
set rwt [expr 2*0.382*$triblength]; # Standard T551 rail used in texas
#set P [expr $P1+$rwt+$P2+$capweight]; # superstructure weight
set P 800; # Load used by Choe and al.2008
# define section geometry
set Dcol [expr 5.5*$ft]; # Column Diameter
set LCol [expr 25*$ft]; # column length
set Weight [expr $P]
# calculated parameters
set Mass [expr $P/$g]; # nodal mass
# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 0 $LCol
# Single point constraints -- Boundary Conditions
fix 1 1 1 1; # node DX DY RZ
# nodal masses:
mass 2 $Mass 1e-9 0.;
# we need to set up parameters that are particular to the model.
set IDctrlNode 2; # node where displacement is read for displacement control
set IDctrlDOF 1; # degree of freedom of displacement read for displacement control
set iSupportNode "1"; # define support node, if needed.
# Define ELEMENTS & SECTIONS -------------------------------------------------------------
set ColSecTag 1; # assign a tag number to the column section
# Define Column geometry
set coverSec [expr 1.5*$in]; # Column cover to reinforcing steel NA.
set numBarsSec 40; # number of longitudinal-reinforcement bars in the column section
set barAreaSec [expr 1.56*$in*$in] ; # area of longitudinal-reinforcement bars #11
set fy [expr 65*$ksi]; # STEEL yield stress
# MATERIAL parameters -------------------------------------------------------------------
set IDconcC 1; # material ID tag -- confined core concrete
set IDconcU 2; # material ID tag -- unconfined cover concrete
set IDreinf 3; # material ID tag -- reinforcement
# nominal concrete compressive strength
set fc [expr 4.0*$ksi]; # CONCRETE Compressive Strength (+Tension, -Compression)
set E [expr (57*sqrt($fc*1000/$ksi))*$ksi]; # Concrete Elastic Modulus
# Define uniaxial materials
# Mander concrete model for confined and unconfined concrete
# requires rhos_trans = 4 Asp / (ds s)
# where Asp = cross sectional area of spiral reinforcement
# ds = center to center diameter inside spirals
# s = center to center spacing of spiral
set trans_bar 6.0
set As $barAreaSec
set rhos_trans 0.007
set pi [expr acos(-1.0)]
set epss 0.005
set eps0 0.002
set epsu 0.02
set f1 [expr 1.0/2.0*$rhos_trans*$fy]
set dcs [expr $Dcol-2.0*$coverSec-($trans_bar/8.0)]
set rho_cc [expr $As/($pi/4.0*pow($dcs,2))]
set spacing [expr $pi*pow($trans_bar/8.0,2)/$rhos_trans/$dcs]
set ke [expr (1.0-($spacing-$trans_bar/8.0)/2.0/$dcs)/(1.0-$rho_cc)]
set fcc [expr $fc*(-1.254+2.254*sqrt(1.0+7.94*$ke*$f1/$fc)-2.0*$ke*$f1/$fc)]
if { $fcc > 2.23*$fc } {
set fcc [expr 2.23*$fc]
}
set epsc [expr $eps0*(1.0+5.0*($fcc/$fc-1.0))]
set ecr [expr $E/($E-$fcc/$epsc)]
set fcu [expr $fcc*$epsu/$epsc*$ecr/($ecr-1.0+pow($epsu/$epsc,$ecr))]
# Cover concrete
# tag -f'c -epsco -f'cu -epscu
uniaxialMaterial Concrete01 1 -$fc -$eps0 0.0 -$epss
# Core concrete
uniaxialMaterial Concrete01 2 -$fcc -$epsc -$fcu -$epsu
# ----------- Reinforcing Steel --------
set Es [expr 29000.*$ksi]; # modulus of steel
set Esh [expr 2000.0*$ksi]; # Initial Hardening Modulus (estimated)
set Bs 0.01; # strain-hardening ratio
set R0 18; # control the transition from elastic to plastic branches
set cR1 0.925; # control the transition from elastic to plastic branches
set cR2 0.15; # control the transition from elastic to plastic branches
uniaxialMaterial Steel02 $IDreinf $fy $Es $Bs $R0 $cR1 $cR2;
# Generate a circular reinforced concrete section
# with one layer of steel evenly distributed around the perimeter and a confined core.
# confined core.
# by: Michael H. Scott, 2003
#
#
# Notes
# The center of the reinforcing bars are placed at the inner radius
# The core concrete ends at the inner radius (same as reinforcing bars)
# The reinforcing bars are all the same size
# The center of the section is at (0,0) in the local axis system
# Zero degrees is along section y-axis
#
set ri 0.0; # inner radius of the section, only for hollow sections
set ro [expr $Dcol/2]; # overall (outer) radius of the section
set nfCoreR 96; # number of radial divisions in the core (number of "rings")
set nfCoreT 36; # number of theta divisions in the core (number of "wedges")
set nfCoverR 24; # number of radial divisions in the cover
set nfCoverT 36; # number of theta divisions in the cover
# Define the fiber section
section fiberSec $ColSecTag {
set rc [expr $ro-$coverSec]; # Core radius
patch circ $IDconcC $nfCoreT $nfCoreR 0 0 $ri $rc 0 360; # Define the core patch
patch circ $IDconcU $nfCoverT $nfCoverR 0 0 $rc $ro 0 360; # Define the cover patch
set theta [expr 360.0/$numBarsSec]; # Determine angle increment between bars
layer circ $IDreinf $numBarsSec $barAreaSec 0 0 $rc $theta 360; # Define the reinforcing layer
}
# define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
set ColTransfTag 1; # associate a tag to column transformation
set ColTransfType Linear ; # options, Linear PDelta Corotational
geomTransf $ColTransfType $ColTransfTag ;
#Remember for Linear PDelta
# element connectivity:
set numIntgrPts 5; # number of integration points for force-based element
element nonlinearBeamColumn 1 1 2 $numIntgrPts $ColSecTag $ColTransfTag; # self-explanatory when using variables
# Column- Pile element connectivity:
# Create recorder
recorder Node -file $dataDir/DFree.out -time -node 2 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file $dataDir/DBase.out -time -node 1 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file $dataDir/RBase.out -time -node 1 -dof 1 2 3 reaction; # support reaction
recorder Drift -file $dataDir/Drift.out -time -iNode 1 -jNode 2 -dof 1 -perpDirn 2 ; # lateral drift
recorder Element -file $dataDir/FCol.out -time -ele 2 globalForce; # element forces -- column
recorder Element -file $dataDir/ForceColSec1.out -time -ele 1 section 1 force; # Column section forces, axial and moment, node i
recorder Element -file $dataDir/DefoColSec1.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node i
recorder Element -file $dataDir/ForceColSec$numIntgrPts.out -time -ele 1 section $numIntgrPts force; # section forces, axial and moment, node j
recorder Element -file $dataDir/DefoColSec$numIntgrPts.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node j
recorder Element -xml $dataDir/PlasticRotation.out -time -ele 1 plasticRotation; # section deformations, axial and curvature, node j
# define GRAVITY -------------------------------------------------------------
pattern Plain 1 Linear {
load 2 0 -$P 0
}
# Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-8; # convergence tolerance for test
constraints Plain; # how it handles boundary conditions
numberer Plain; # 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
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 1; # 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
print -node 2
puts "Model Built"
# --------------------------------------------------------------------------------------------------
# Example 3. 2D Cantilever -- Static Pushover
# Silvia Mazzoni & Frank McKenna, 2006
# execute this file after you have built the model, and after you apply gravity
#
#source coltest.tcl;
# characteristics of pushover analysis
set Dmax [expr 0.05*$LCol]; # maximum displacement of pushover. push to 10% drift.
set Dincr [expr 0.001*$LCol]; # displacement increment for pushover. you want this to be very small, but not too small to slow down the analysis
# create load pattern for lateral pushover load
set Hload [expr $Weight]; # define the lateral load as a proportion of the weight so that the pseudo time equals the lateral-load coefficient when using linear load pattern
pattern Plain 200 Linear {; # define load pattern -- generalized
load 2 $Hload 0.0 0.0
}
# STATIC-ANALYSIS parameters
# CONSTRAINTS handler -- Determines how the constraint equations are enforced in the analysis (http://opensees.berkeley.edu/OpenSees/m ... al/617.htm)
# Plain Constraints -- Removes constrained degrees of freedom from the system of equations (only for homogeneous equations)
# Lagrange Multipliers -- Uses the method of Lagrange multipliers to enforce constraints
# Penalty Method -- Uses penalty numbers to enforce constraints --good for static analysis with non-homogeneous eqns (rigidDiaphragm)
# Transformation Method -- Performs a condensation of constrained degrees of freedom
set constraintsType Plain; # default;
constraints $constraintsType
# DOF NUMBERER (number the degrees of freedom in the domain): (http://opensees.berkeley.edu/OpenSees/m ... al/366.htm)
# determines the mapping between equation numbers and degrees-of-freedom
# Plain -- Uses the numbering provided by the user
# RCM -- Renumbers the DOF to minimize the matrix band-width using the Reverse Cuthill-McKee algorithm
numberer Plain
# SYSTEM (http://opensees.berkeley.edu/OpenSees/m ... al/371.htm)
# Linear Equation Solvers (how to store and solve the system of equations in the analysis)
# -- provide the solution of the linear system of equations Ku = P. Each solver is tailored to a specific matrix topology.
# ProfileSPD -- Direct profile solver for symmetric positive definite matrices
# BandGeneral -- Direct solver for banded unsymmetric matrices
# BandSPD -- Direct solver for banded symmetric positive definite matrices
# SparseGeneral -- Direct solver for unsymmetric sparse matrices
# SparseSPD -- Direct solver for symmetric sparse matrices
# UmfPack -- Direct UmfPack solver for unsymmetric matrices
system BandGeneral
# TEST: # convergence test to
# Convergence TEST (http://opensees.berkeley.edu/OpenSees/m ... al/360.htm)
# -- Accept the current state of the domain as being on the converged solution path
# -- determine if convergence has been achieved at the end of an iteration step
# NormUnbalance -- Specifies a tolerance on the norm of the unbalanced load at the current iteration
# NormDispIncr -- Specifies a tolerance on the norm of the displacement increments at the current iteration
# EnergyIncr-- Specifies a tolerance on the inner product of the unbalanced load and displacement increments at the current iteration
set Tol 1.e-8; # Convergence Test: tolerance
set maxNumIter 6; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned
set printFlag 0; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
set TestType EnergyIncr; # Convergence-test type
test $TestType $Tol $maxNumIter $printFlag;
# Solution ALGORITHM: -- Iterate from the last time step to the current (http://opensees.berkeley.edu/OpenSees/m ... al/682.htm)
# Linear -- Uses the solution at the first iteration and continues
# Newton -- Uses the tangent at the current iteration to iterate to convergence
# ModifiedNewton -- Uses the tangent at the first iteration to iterate to convergence
set algorithmType Newton
algorithm $algorithmType;
# Static INTEGRATOR: -- determine the next time step for an analysis (http://opensees.berkeley.edu/OpenSees/m ... al/689.htm)
# LoadControl -- Specifies the incremental load factor to be applied to the loads in the domain
# DisplacementControl -- Specifies the incremental displacement at a specified DOF in the domain
# Minimum Unbalanced Displacement Norm -- Specifies the incremental load factor such that the residual displacement norm in minimized
# Arc Length -- Specifies the incremental arc-length of the load-displacement path
# Transient INTEGRATOR: -- determine the next time step for an analysis including inertial effects
# Newmark -- The two parameter time-stepping method developed by Newmark
# HHT -- The three parameter Hilbert-Hughes-Taylor time-stepping method
# Central Difference -- Approximates velocity and acceleration by centered finite differences of displacement
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
# ANALYSIS -- defines what type of analysis is to be performed (http://opensees.berkeley.edu/OpenSees/m ... al/324.htm)
# Static Analysis -- solves the KU=R problem, without the mass or damping matrices.
# Transient Analysis -- solves the time-dependent analysis. The time step in this type of analysis is constant. The time step in the output is also constant.
# variableTransient Analysis -- performs the same analysis type as the Transient Analysis object. The time step, however, is variable. This method is used when
# there are convergence problems with the Transient Analysis object at a peak or when the time step is too small. The time step in the output is also variable.
analysis Static
# --------------------------------- perform Static Pushover Analysis
set Nsteps [expr int($Dmax/$Dincr)]; # number of pushover analysis steps
set ok [analyze $Nsteps]; # this will return zero if no convergence problems were encountered
if {$ok != 0} {
# if analysis fails, we try some other stuff, performance is slower inside this loop
set ok 0;
set controlDisp 0.0;
set D0 0.0; # analysis starts from zero
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
while {$Dstep < 1.0 && $ok == 0} {
set controlDisp [nodeDisp $IDctrlNode $IDctrlDOF ]
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
set ok [analyze 1 ]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 2000 0
algorithm Newton -initial
set ok [analyze 1 ]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 ]
algorithm $algorithmType
}
}; # end while loop
}; # end if ok !0
puts "Pushover Done. Control Disp=[nodeDisp $IDctrlNode $IDctrlDOF]"
recorder display "Column" 10 10 600 600 -wipe
vup 0 1 0
prp 0 0 200
display 1 0 50
print -node 2
I have tried to plot the base shear against the displacement but I am having some difficulties. I read in one of your post that I should plot the second column of Dfree.out and the Rbase.out but when I ran my file, my Rbase.out contains negative number, so I plotted without the negative number and compared it to a study done before on the same column but my results are slightly different. Please help me out. I need to understand why I have negative number? If my file contain errors that caused the results to be different? I will really appreciate any input.
Thank you
wipe
# This a texas standard single bent bridge for a 28' roadway.
# The Column is circular and the bent is square shape.
# In the Future we will set up a texas standard bridge with random node
# that can change at all times
#Units in kip/ft
# column.tcl
# No overlay load was considered in this model.
# This model is a 2D model
# SET UP ----------------------------------------------------------------------------
model basic -ndm 2 -ndf 3; # 2 spacial dimensions, 3 DOF's per nodey
set dataDir Data; # set up name for data directory
file mkdir $dataDir/; # create data directory
set GMdir "../GMfiles"; # ground-motion file directory
# -----------------------------------------------------
# --------------------------------------------------------------------------------------------------
# ------------- define system of units-----------------------------------------
#
# 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 g 386.4; # g.
set Ubig 1.e10; # a really large number
# Superstructure Weight+Rail+ Haunch; We neglected the bearing pad weight
# build important quantities from input paramters
set span [expr 120]; #forward and backward total span length
set triblength [expr $span/2]
set ngir 4; # the number of girder
set roadway 38; # roadway width
set girderw 0.851; # Standard Tx54 girder in ksi
set bentcap 3.5 ; #rectangular bent cap
set deckwidth 40; # width of the deck
set deck [expr 8.5/12] ; # Typical deck thickness in Texas
set trib [expr $deck*$triblength*$deckwidth]; # tributary area
set haunch 1.1; # factor for haunch dead load to be considered
set gamma 0.15; # the unit weight of concrete is in kcf)
set P1 [expr $haunch*$trib*$gamma]; # deck weight
set P2 [expr $ngir*$girderw*$triblength]; # girder weight kip/ft
set capweight [expr $bentcap*$bentcap*$roadway*$gamma]
set rwt [expr 2*0.382*$triblength]; # Standard T551 rail used in texas
#set P [expr $P1+$rwt+$P2+$capweight]; # superstructure weight
set P 800; # Load used by Choe and al.2008
# define section geometry
set Dcol [expr 5.5*$ft]; # Column Diameter
set LCol [expr 25*$ft]; # column length
set Weight [expr $P]
# calculated parameters
set Mass [expr $P/$g]; # nodal mass
# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 0 $LCol
# Single point constraints -- Boundary Conditions
fix 1 1 1 1; # node DX DY RZ
# nodal masses:
mass 2 $Mass 1e-9 0.;
# we need to set up parameters that are particular to the model.
set IDctrlNode 2; # node where displacement is read for displacement control
set IDctrlDOF 1; # degree of freedom of displacement read for displacement control
set iSupportNode "1"; # define support node, if needed.
# Define ELEMENTS & SECTIONS -------------------------------------------------------------
set ColSecTag 1; # assign a tag number to the column section
# Define Column geometry
set coverSec [expr 1.5*$in]; # Column cover to reinforcing steel NA.
set numBarsSec 40; # number of longitudinal-reinforcement bars in the column section
set barAreaSec [expr 1.56*$in*$in] ; # area of longitudinal-reinforcement bars #11
set fy [expr 65*$ksi]; # STEEL yield stress
# MATERIAL parameters -------------------------------------------------------------------
set IDconcC 1; # material ID tag -- confined core concrete
set IDconcU 2; # material ID tag -- unconfined cover concrete
set IDreinf 3; # material ID tag -- reinforcement
# nominal concrete compressive strength
set fc [expr 4.0*$ksi]; # CONCRETE Compressive Strength (+Tension, -Compression)
set E [expr (57*sqrt($fc*1000/$ksi))*$ksi]; # Concrete Elastic Modulus
# Define uniaxial materials
# Mander concrete model for confined and unconfined concrete
# requires rhos_trans = 4 Asp / (ds s)
# where Asp = cross sectional area of spiral reinforcement
# ds = center to center diameter inside spirals
# s = center to center spacing of spiral
set trans_bar 6.0
set As $barAreaSec
set rhos_trans 0.007
set pi [expr acos(-1.0)]
set epss 0.005
set eps0 0.002
set epsu 0.02
set f1 [expr 1.0/2.0*$rhos_trans*$fy]
set dcs [expr $Dcol-2.0*$coverSec-($trans_bar/8.0)]
set rho_cc [expr $As/($pi/4.0*pow($dcs,2))]
set spacing [expr $pi*pow($trans_bar/8.0,2)/$rhos_trans/$dcs]
set ke [expr (1.0-($spacing-$trans_bar/8.0)/2.0/$dcs)/(1.0-$rho_cc)]
set fcc [expr $fc*(-1.254+2.254*sqrt(1.0+7.94*$ke*$f1/$fc)-2.0*$ke*$f1/$fc)]
if { $fcc > 2.23*$fc } {
set fcc [expr 2.23*$fc]
}
set epsc [expr $eps0*(1.0+5.0*($fcc/$fc-1.0))]
set ecr [expr $E/($E-$fcc/$epsc)]
set fcu [expr $fcc*$epsu/$epsc*$ecr/($ecr-1.0+pow($epsu/$epsc,$ecr))]
# Cover concrete
# tag -f'c -epsco -f'cu -epscu
uniaxialMaterial Concrete01 1 -$fc -$eps0 0.0 -$epss
# Core concrete
uniaxialMaterial Concrete01 2 -$fcc -$epsc -$fcu -$epsu
# ----------- Reinforcing Steel --------
set Es [expr 29000.*$ksi]; # modulus of steel
set Esh [expr 2000.0*$ksi]; # Initial Hardening Modulus (estimated)
set Bs 0.01; # strain-hardening ratio
set R0 18; # control the transition from elastic to plastic branches
set cR1 0.925; # control the transition from elastic to plastic branches
set cR2 0.15; # control the transition from elastic to plastic branches
uniaxialMaterial Steel02 $IDreinf $fy $Es $Bs $R0 $cR1 $cR2;
# Generate a circular reinforced concrete section
# with one layer of steel evenly distributed around the perimeter and a confined core.
# confined core.
# by: Michael H. Scott, 2003
#
#
# Notes
# The center of the reinforcing bars are placed at the inner radius
# The core concrete ends at the inner radius (same as reinforcing bars)
# The reinforcing bars are all the same size
# The center of the section is at (0,0) in the local axis system
# Zero degrees is along section y-axis
#
set ri 0.0; # inner radius of the section, only for hollow sections
set ro [expr $Dcol/2]; # overall (outer) radius of the section
set nfCoreR 96; # number of radial divisions in the core (number of "rings")
set nfCoreT 36; # number of theta divisions in the core (number of "wedges")
set nfCoverR 24; # number of radial divisions in the cover
set nfCoverT 36; # number of theta divisions in the cover
# Define the fiber section
section fiberSec $ColSecTag {
set rc [expr $ro-$coverSec]; # Core radius
patch circ $IDconcC $nfCoreT $nfCoreR 0 0 $ri $rc 0 360; # Define the core patch
patch circ $IDconcU $nfCoverT $nfCoverR 0 0 $rc $ro 0 360; # Define the cover patch
set theta [expr 360.0/$numBarsSec]; # Determine angle increment between bars
layer circ $IDreinf $numBarsSec $barAreaSec 0 0 $rc $theta 360; # Define the reinforcing layer
}
# define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system
set ColTransfTag 1; # associate a tag to column transformation
set ColTransfType Linear ; # options, Linear PDelta Corotational
geomTransf $ColTransfType $ColTransfTag ;
#Remember for Linear PDelta
# element connectivity:
set numIntgrPts 5; # number of integration points for force-based element
element nonlinearBeamColumn 1 1 2 $numIntgrPts $ColSecTag $ColTransfTag; # self-explanatory when using variables
# Column- Pile element connectivity:
# Create recorder
recorder Node -file $dataDir/DFree.out -time -node 2 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file $dataDir/DBase.out -time -node 1 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file $dataDir/RBase.out -time -node 1 -dof 1 2 3 reaction; # support reaction
recorder Drift -file $dataDir/Drift.out -time -iNode 1 -jNode 2 -dof 1 -perpDirn 2 ; # lateral drift
recorder Element -file $dataDir/FCol.out -time -ele 2 globalForce; # element forces -- column
recorder Element -file $dataDir/ForceColSec1.out -time -ele 1 section 1 force; # Column section forces, axial and moment, node i
recorder Element -file $dataDir/DefoColSec1.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node i
recorder Element -file $dataDir/ForceColSec$numIntgrPts.out -time -ele 1 section $numIntgrPts force; # section forces, axial and moment, node j
recorder Element -file $dataDir/DefoColSec$numIntgrPts.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node j
recorder Element -xml $dataDir/PlasticRotation.out -time -ele 1 plasticRotation; # section deformations, axial and curvature, node j
# define GRAVITY -------------------------------------------------------------
pattern Plain 1 Linear {
load 2 0 -$P 0
}
# Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-8; # convergence tolerance for test
constraints Plain; # how it handles boundary conditions
numberer Plain; # 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
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 1; # 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
print -node 2
puts "Model Built"
# --------------------------------------------------------------------------------------------------
# Example 3. 2D Cantilever -- Static Pushover
# Silvia Mazzoni & Frank McKenna, 2006
# execute this file after you have built the model, and after you apply gravity
#
#source coltest.tcl;
# characteristics of pushover analysis
set Dmax [expr 0.05*$LCol]; # maximum displacement of pushover. push to 10% drift.
set Dincr [expr 0.001*$LCol]; # displacement increment for pushover. you want this to be very small, but not too small to slow down the analysis
# create load pattern for lateral pushover load
set Hload [expr $Weight]; # define the lateral load as a proportion of the weight so that the pseudo time equals the lateral-load coefficient when using linear load pattern
pattern Plain 200 Linear {; # define load pattern -- generalized
load 2 $Hload 0.0 0.0
}
# STATIC-ANALYSIS parameters
# CONSTRAINTS handler -- Determines how the constraint equations are enforced in the analysis (http://opensees.berkeley.edu/OpenSees/m ... al/617.htm)
# Plain Constraints -- Removes constrained degrees of freedom from the system of equations (only for homogeneous equations)
# Lagrange Multipliers -- Uses the method of Lagrange multipliers to enforce constraints
# Penalty Method -- Uses penalty numbers to enforce constraints --good for static analysis with non-homogeneous eqns (rigidDiaphragm)
# Transformation Method -- Performs a condensation of constrained degrees of freedom
set constraintsType Plain; # default;
constraints $constraintsType
# DOF NUMBERER (number the degrees of freedom in the domain): (http://opensees.berkeley.edu/OpenSees/m ... al/366.htm)
# determines the mapping between equation numbers and degrees-of-freedom
# Plain -- Uses the numbering provided by the user
# RCM -- Renumbers the DOF to minimize the matrix band-width using the Reverse Cuthill-McKee algorithm
numberer Plain
# SYSTEM (http://opensees.berkeley.edu/OpenSees/m ... al/371.htm)
# Linear Equation Solvers (how to store and solve the system of equations in the analysis)
# -- provide the solution of the linear system of equations Ku = P. Each solver is tailored to a specific matrix topology.
# ProfileSPD -- Direct profile solver for symmetric positive definite matrices
# BandGeneral -- Direct solver for banded unsymmetric matrices
# BandSPD -- Direct solver for banded symmetric positive definite matrices
# SparseGeneral -- Direct solver for unsymmetric sparse matrices
# SparseSPD -- Direct solver for symmetric sparse matrices
# UmfPack -- Direct UmfPack solver for unsymmetric matrices
system BandGeneral
# TEST: # convergence test to
# Convergence TEST (http://opensees.berkeley.edu/OpenSees/m ... al/360.htm)
# -- Accept the current state of the domain as being on the converged solution path
# -- determine if convergence has been achieved at the end of an iteration step
# NormUnbalance -- Specifies a tolerance on the norm of the unbalanced load at the current iteration
# NormDispIncr -- Specifies a tolerance on the norm of the displacement increments at the current iteration
# EnergyIncr-- Specifies a tolerance on the inner product of the unbalanced load and displacement increments at the current iteration
set Tol 1.e-8; # Convergence Test: tolerance
set maxNumIter 6; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned
set printFlag 0; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
set TestType EnergyIncr; # Convergence-test type
test $TestType $Tol $maxNumIter $printFlag;
# Solution ALGORITHM: -- Iterate from the last time step to the current (http://opensees.berkeley.edu/OpenSees/m ... al/682.htm)
# Linear -- Uses the solution at the first iteration and continues
# Newton -- Uses the tangent at the current iteration to iterate to convergence
# ModifiedNewton -- Uses the tangent at the first iteration to iterate to convergence
set algorithmType Newton
algorithm $algorithmType;
# Static INTEGRATOR: -- determine the next time step for an analysis (http://opensees.berkeley.edu/OpenSees/m ... al/689.htm)
# LoadControl -- Specifies the incremental load factor to be applied to the loads in the domain
# DisplacementControl -- Specifies the incremental displacement at a specified DOF in the domain
# Minimum Unbalanced Displacement Norm -- Specifies the incremental load factor such that the residual displacement norm in minimized
# Arc Length -- Specifies the incremental arc-length of the load-displacement path
# Transient INTEGRATOR: -- determine the next time step for an analysis including inertial effects
# Newmark -- The two parameter time-stepping method developed by Newmark
# HHT -- The three parameter Hilbert-Hughes-Taylor time-stepping method
# Central Difference -- Approximates velocity and acceleration by centered finite differences of displacement
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
# ANALYSIS -- defines what type of analysis is to be performed (http://opensees.berkeley.edu/OpenSees/m ... al/324.htm)
# Static Analysis -- solves the KU=R problem, without the mass or damping matrices.
# Transient Analysis -- solves the time-dependent analysis. The time step in this type of analysis is constant. The time step in the output is also constant.
# variableTransient Analysis -- performs the same analysis type as the Transient Analysis object. The time step, however, is variable. This method is used when
# there are convergence problems with the Transient Analysis object at a peak or when the time step is too small. The time step in the output is also variable.
analysis Static
# --------------------------------- perform Static Pushover Analysis
set Nsteps [expr int($Dmax/$Dincr)]; # number of pushover analysis steps
set ok [analyze $Nsteps]; # this will return zero if no convergence problems were encountered
if {$ok != 0} {
# if analysis fails, we try some other stuff, performance is slower inside this loop
set ok 0;
set controlDisp 0.0;
set D0 0.0; # analysis starts from zero
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
while {$Dstep < 1.0 && $ok == 0} {
set controlDisp [nodeDisp $IDctrlNode $IDctrlDOF ]
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
set ok [analyze 1 ]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 2000 0
algorithm Newton -initial
set ok [analyze 1 ]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 ]
algorithm $algorithmType
}
}; # end while loop
}; # end if ok !0
puts "Pushover Done. Control Disp=[nodeDisp $IDctrlNode $IDctrlDOF]"
recorder display "Column" 10 10 600 600 -wipe
vup 0 1 0
prp 0 0 200
display 1 0 50
print -node 2