Problem in BOUC WEN model
Moderators: silvia, selimgunay, Moderators
Problem in BOUC WEN model
Hi Silvia,
I have tried many times to model the element nonlinear behavior with uniaxial material BOUC WEN model. As you know the model is based on stress and strain relationship but there is no any definition for the yielding properties of material .When we applied it in the model even by using fiber section the result is linear. I have attached the script of program for your kind attention. I would appreciate if let me know whether we need to use parallel or series material in the modelling or not.
# --------------------------------------------------------------------------------------------------
# Example 2. 2D cantilever column, dynamic eq ground motion
# Silvia Mazzoni & Frank McKenna, 2006
#
# ^Y
# |
# 2 __
# | |
# | |
# | |
# (1) LCol
# | |
# | |
# | |
# =1= _|_ -------->X
#
# SET UP ----------------------------------------------------------------------------
# units: kip, inch, sec
wipe; # clear memory of all past model definitions
file mkdir Data; # create data directory
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs
# define GEOMETRY -------------------------------------------------------------
set LCol 3.2; # column length
set Weight 51.0; # superstructure weight
# define section geometry
set HCol 0.25; # Column Depth
set BCol 0.25; # Column Width
# calculated parameters
set PCol $Weight; # nodal dead-load weight per column
set g 1.0; # g.
set Mass [expr $PCol/$g]; # nodal mass
# calculated geometry parameters
set ACol [expr 0.000000625]; # cross-sectional area, make stiff
set IzCol [expr 3.255E-4]; # Column moment of inertia
# 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.; # node#, Mx My Mz, Mass=Weight/g, neglect rotational inertia at nodes
# Define ELEMENTS & SECTIONS -------------------------------------------------------------
set ColMatTagFlex 2; # assign a tag number to the column flexural behavior
set ColMatTagFlexx 4; # assign a tag number to the column flexural behavior
set ColMatTagAxial 3; # assign a tag number to the column axial behavior
set ColSecTag 1; # assign a tag number to the column section tag
#set BeamSecTag 2; # assign a tag number to the beam section tag
# MATERIAL parameters
set fc -4.0; # CONCRETE Compressive Strength (+Tension, -Compression)
set Ec [expr 10.0]; # Concrete Elastic Modulus (the term in sqr root needs to be in psi
# COLUMN section
# set b 0.01 ;
# strain-hardening ratio (ratio between post-yield tangent and initial elastic tangent)
set alfa 0.05 ;
set k0 20000000;
set n 10.0 ;
set gamma 0.5;
set beta 0.5;
set A0 1.0 ;
set deltaA 1e-9 ;
set deltaNu 1e-9 ;
set deltaEta 1e-9;
set numModes 1;
set Fy 25000; # STEEL yield stress
set Es 20000000; # modulus of steel
set b 0.05; # strain-hardening ratio
# calculated stiffness parameters
set EICol [expr $Es*$IzCol]; # EI, for moment-curvature relationship
set EACol [expr $Es*$ACol]; # EA, for axial-force-strain relationship
uniaxialMaterial Steel01 $ColMatTagFlex $Fy $Es $b; # build reinforcement material
uniaxialMaterial BoucWen $ColMatTagFlexx $alfa $k0 $n $gamma $beta $A0 $deltaA $deltaNu $deltaEta ;
uniaxialMaterial Elastic $ColMatTagAxial $EACol; # this is not used as a material, this is an axial-force-strain response
#section Aggregator $ColSecTag $ColMatTagAxial P $ColMatTagFlex Mz; # combine axial and flexural behavior into one section (no P-M interaction here)
set coverY [expr $HCol/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZ [expr $BCol/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set nfY 8; # number of fibers for concrete in y-direction
set nfZ 8; # number of fibers for concrete in z-direction
section fiberSec $ColSecTag {; # Define the fiber section
patch quadr $ColMatTagFlex $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
patch quadr $ColMatTagFlexx $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
patch quadr $ColMatTagAxial $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
# patch quadr $ColSecTag $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
}; # end of fibersection definition
# 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
geomTransf Linear $ColTransfTag ;
# element connectivity:
set numIntgrPts 10; # number of integration points for force-based element
element nonlinearBeamColumn 1 1 2 $numIntgrPts $ColSecTag $ColTransfTag;
# Define RECORDERS -------------------------------------------------------------
recorder Node -file Data/DFree.out -time -node 2 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file Data/DBase.out -time -node 1 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file Data/RBase.out -time -node 1 -dof 1 2 3 reaction; # support reaction
recorder Drift -file Data/Drift.out -time -iNode 1 -jNode 2 -dof 1 -perpDirn 2 ; # lateral drift
recorder Element -file Data/FCol.out -time -ele 2 globalForce; # element forces -- column
recorder Element -file Data/ForceColSec1.out -time -ele 1 section 1 force; # Column section forces, axial and moment, node i
recorder Element -file Data/DefoColSec1.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node i
recorder Element -file Data/ForceColSec$numIntgrPts.out -time -ele 1 section $numIntgrPts force; # section forces, axial and moment, node j
recorder Element -file Data/DefoColSec$numIntgrPts.out -time -ele 1 section $numIntgrPts deformation; # section deformations, axial and curvature, node j
# perform eigen analysis#-----------------------------
set lambda [eigen $numModes];
# calculate frequencies and periods of the structure#---------------------------------------------------
set omega {}
set f {}
set T {}
set pi 3.141593
foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}
puts "periods are $T"
puts "Model Built"
# DYNAMIC EQ ANALYSIS --------------------------------------------------------
# Uniform Earthquake ground motion (uniform acceleration input at all support nodes)
set GMdirection 1; # ground-motion direction
set GMfile "BM68elc.acc" ; # ground-motion filenames
set GMfact 0.01; # ground-motion scaling factor
# set up ground-motion-analysis parameters
set DtAnalysis [expr 0.02]; # time-step Dt for lateral analysis
set TmaxAnalysis [expr 15.]; # maximum duration of ground-motion analysis -- should be 50*$sec
# DYNAMIC 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
# Lagrange Multipliers -- Uses the method of Lagrange multipliers to enforce constraints
# Penalty Method -- Uses penalty numbers to enforce constraints
# Transformation Method -- Performs a condensation of constrained degrees of freedom
constraints Transformation ;
# 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 (-piv option)
# SparseSPD -- Direct solver for symmetric sparse matrices
# UmfPack -- Direct UmfPack solver for unsymmetric matrices
system SparseGeneral -piv
# 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
# RelativeNormUnbalance --
# RelativeNormDispIncr --
# RelativeEnergyIncr --
set Tol 1.e-8; # Convergence Test: tolerance
set maxNumIter 10; # 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
# NewtonLineSearch --
# KrylovNewton --
# BFGS --
# Broyden --
set algorithmType ModifiedNewton
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
set NewmarkGamma 0.5; # Newmark-integrator gamma parameter (also HHT)
set NewmarkBeta 0.25; # Newmark-integrator beta parameter
integrator Newmark $NewmarkGamma $NewmarkBeta
# 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 Transient
# define DAMPING--------------------------------------------------------------------------------------
# apply Rayleigh DAMPING from $xDamp
# D=$alphaM*M + $betaKcurr*Kcurrent + $betaKcomm*KlastCommit + $beatKinit*$Kinitial
set xDamp 0.00; # 2% damping ratio
set lambda [eigen 1]; # eigenvalue mode 1
set omega [expr pow($lambda,0.5)];
set alphaM 0.436; # M-prop. damping; D = alphaM*M
set betaKcurr 0.; # K-proportional damping; +beatKcurr*KCurrent
set betaKcomm [expr 2.*$xDamp/($omega)]; # K-prop. damping parameter; +betaKcomm*KlastCommitt
set betaKinit 0.; # initial-stiffness proportional damping +beatKinit*Kini
# define damping
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm; # RAYLEIGH damping
# --------------------------------- perform Dynamic Ground-Motion Analysis
# Uniform EXCITATION: acceleration input
set IDloadTag 400; # load tag
set dt 0.02; # time step for input ground motion
set GMfatt [expr $g*$GMfact]; # data in input file is in g Unifts -- ACCELERATION TH
set AccelSeries "Series -dt $dt -filePath $GMfile -factor $GMfatt"; # time series information
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries ; # create Unifform excitation
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)];
set ok [analyze $Nsteps $DtAnalysis]; # actually perform analysis; returns ok=0 if analysis was successful
if {$ok != 0} { ; # if analysis was not successful.
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
# Time-controlled analysis
set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {
set ok [analyze 1 $DtAnalysis]
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 1000 0
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
}
}; # end if ok !0
puts "Ground Motion Done. End Time: [getTime]"
I have tried many times to model the element nonlinear behavior with uniaxial material BOUC WEN model. As you know the model is based on stress and strain relationship but there is no any definition for the yielding properties of material .When we applied it in the model even by using fiber section the result is linear. I have attached the script of program for your kind attention. I would appreciate if let me know whether we need to use parallel or series material in the modelling or not.
# --------------------------------------------------------------------------------------------------
# Example 2. 2D cantilever column, dynamic eq ground motion
# Silvia Mazzoni & Frank McKenna, 2006
#
# ^Y
# |
# 2 __
# | |
# | |
# | |
# (1) LCol
# | |
# | |
# | |
# =1= _|_ -------->X
#
# SET UP ----------------------------------------------------------------------------
# units: kip, inch, sec
wipe; # clear memory of all past model definitions
file mkdir Data; # create data directory
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs
# define GEOMETRY -------------------------------------------------------------
set LCol 3.2; # column length
set Weight 51.0; # superstructure weight
# define section geometry
set HCol 0.25; # Column Depth
set BCol 0.25; # Column Width
# calculated parameters
set PCol $Weight; # nodal dead-load weight per column
set g 1.0; # g.
set Mass [expr $PCol/$g]; # nodal mass
# calculated geometry parameters
set ACol [expr 0.000000625]; # cross-sectional area, make stiff
set IzCol [expr 3.255E-4]; # Column moment of inertia
# 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.; # node#, Mx My Mz, Mass=Weight/g, neglect rotational inertia at nodes
# Define ELEMENTS & SECTIONS -------------------------------------------------------------
set ColMatTagFlex 2; # assign a tag number to the column flexural behavior
set ColMatTagFlexx 4; # assign a tag number to the column flexural behavior
set ColMatTagAxial 3; # assign a tag number to the column axial behavior
set ColSecTag 1; # assign a tag number to the column section tag
#set BeamSecTag 2; # assign a tag number to the beam section tag
# MATERIAL parameters
set fc -4.0; # CONCRETE Compressive Strength (+Tension, -Compression)
set Ec [expr 10.0]; # Concrete Elastic Modulus (the term in sqr root needs to be in psi
# COLUMN section
# set b 0.01 ;
# strain-hardening ratio (ratio between post-yield tangent and initial elastic tangent)
set alfa 0.05 ;
set k0 20000000;
set n 10.0 ;
set gamma 0.5;
set beta 0.5;
set A0 1.0 ;
set deltaA 1e-9 ;
set deltaNu 1e-9 ;
set deltaEta 1e-9;
set numModes 1;
set Fy 25000; # STEEL yield stress
set Es 20000000; # modulus of steel
set b 0.05; # strain-hardening ratio
# calculated stiffness parameters
set EICol [expr $Es*$IzCol]; # EI, for moment-curvature relationship
set EACol [expr $Es*$ACol]; # EA, for axial-force-strain relationship
uniaxialMaterial Steel01 $ColMatTagFlex $Fy $Es $b; # build reinforcement material
uniaxialMaterial BoucWen $ColMatTagFlexx $alfa $k0 $n $gamma $beta $A0 $deltaA $deltaNu $deltaEta ;
uniaxialMaterial Elastic $ColMatTagAxial $EACol; # this is not used as a material, this is an axial-force-strain response
#section Aggregator $ColSecTag $ColMatTagAxial P $ColMatTagFlex Mz; # combine axial and flexural behavior into one section (no P-M interaction here)
set coverY [expr $HCol/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZ [expr $BCol/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set nfY 8; # number of fibers for concrete in y-direction
set nfZ 8; # number of fibers for concrete in z-direction
section fiberSec $ColSecTag {; # Define the fiber section
patch quadr $ColMatTagFlex $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
patch quadr $ColMatTagFlexx $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
patch quadr $ColMatTagAxial $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
# patch quadr $ColSecTag $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
}; # end of fibersection definition
# 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
geomTransf Linear $ColTransfTag ;
# element connectivity:
set numIntgrPts 10; # number of integration points for force-based element
element nonlinearBeamColumn 1 1 2 $numIntgrPts $ColSecTag $ColTransfTag;
# Define RECORDERS -------------------------------------------------------------
recorder Node -file Data/DFree.out -time -node 2 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file Data/DBase.out -time -node 1 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file Data/RBase.out -time -node 1 -dof 1 2 3 reaction; # support reaction
recorder Drift -file Data/Drift.out -time -iNode 1 -jNode 2 -dof 1 -perpDirn 2 ; # lateral drift
recorder Element -file Data/FCol.out -time -ele 2 globalForce; # element forces -- column
recorder Element -file Data/ForceColSec1.out -time -ele 1 section 1 force; # Column section forces, axial and moment, node i
recorder Element -file Data/DefoColSec1.out -time -ele 1 section 1 deformation; # section deformations, axial and curvature, node i
recorder Element -file Data/ForceColSec$numIntgrPts.out -time -ele 1 section $numIntgrPts force; # section forces, axial and moment, node j
recorder Element -file Data/DefoColSec$numIntgrPts.out -time -ele 1 section $numIntgrPts deformation; # section deformations, axial and curvature, node j
# perform eigen analysis#-----------------------------
set lambda [eigen $numModes];
# calculate frequencies and periods of the structure#---------------------------------------------------
set omega {}
set f {}
set T {}
set pi 3.141593
foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}
puts "periods are $T"
puts "Model Built"
# DYNAMIC EQ ANALYSIS --------------------------------------------------------
# Uniform Earthquake ground motion (uniform acceleration input at all support nodes)
set GMdirection 1; # ground-motion direction
set GMfile "BM68elc.acc" ; # ground-motion filenames
set GMfact 0.01; # ground-motion scaling factor
# set up ground-motion-analysis parameters
set DtAnalysis [expr 0.02]; # time-step Dt for lateral analysis
set TmaxAnalysis [expr 15.]; # maximum duration of ground-motion analysis -- should be 50*$sec
# DYNAMIC 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
# Lagrange Multipliers -- Uses the method of Lagrange multipliers to enforce constraints
# Penalty Method -- Uses penalty numbers to enforce constraints
# Transformation Method -- Performs a condensation of constrained degrees of freedom
constraints Transformation ;
# 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 (-piv option)
# SparseSPD -- Direct solver for symmetric sparse matrices
# UmfPack -- Direct UmfPack solver for unsymmetric matrices
system SparseGeneral -piv
# 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
# RelativeNormUnbalance --
# RelativeNormDispIncr --
# RelativeEnergyIncr --
set Tol 1.e-8; # Convergence Test: tolerance
set maxNumIter 10; # 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
# NewtonLineSearch --
# KrylovNewton --
# BFGS --
# Broyden --
set algorithmType ModifiedNewton
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
set NewmarkGamma 0.5; # Newmark-integrator gamma parameter (also HHT)
set NewmarkBeta 0.25; # Newmark-integrator beta parameter
integrator Newmark $NewmarkGamma $NewmarkBeta
# 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 Transient
# define DAMPING--------------------------------------------------------------------------------------
# apply Rayleigh DAMPING from $xDamp
# D=$alphaM*M + $betaKcurr*Kcurrent + $betaKcomm*KlastCommit + $beatKinit*$Kinitial
set xDamp 0.00; # 2% damping ratio
set lambda [eigen 1]; # eigenvalue mode 1
set omega [expr pow($lambda,0.5)];
set alphaM 0.436; # M-prop. damping; D = alphaM*M
set betaKcurr 0.; # K-proportional damping; +beatKcurr*KCurrent
set betaKcomm [expr 2.*$xDamp/($omega)]; # K-prop. damping parameter; +betaKcomm*KlastCommitt
set betaKinit 0.; # initial-stiffness proportional damping +beatKinit*Kini
# define damping
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm; # RAYLEIGH damping
# --------------------------------- perform Dynamic Ground-Motion Analysis
# Uniform EXCITATION: acceleration input
set IDloadTag 400; # load tag
set dt 0.02; # time step for input ground motion
set GMfatt [expr $g*$GMfact]; # data in input file is in g Unifts -- ACCELERATION TH
set AccelSeries "Series -dt $dt -filePath $GMfile -factor $GMfatt"; # time series information
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries ; # create Unifform excitation
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)];
set ok [analyze $Nsteps $DtAnalysis]; # actually perform analysis; returns ok=0 if analysis was successful
if {$ok != 0} { ; # if analysis was not successful.
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
# Time-controlled analysis
set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {
set ok [analyze 1 $DtAnalysis]
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 1000 0
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
}
}; # end if ok !0
puts "Ground Motion Done. End Time: [getTime]"
Re: Problem in BOUC WEN model
moharrami wrote:
> Hi Silvia,
>
> I have tried many times to model the element nonlinear behavior with uniaxial
> material BOUC WEN model. As you know the model is based on stress and strain
> relationship but there is no any definition for the yielding properties of material in the model
> .When I applied it in the model even by using fiber section the results are linear. I
> have attached the script of program for your kind attention. I would appreciate if you
> let me know whether we need to use parallel or series material in the modelling or
> not.
>
> # --------------------------------------------------------------------------------------------------
# 3 D FRAME 1 STORY ONE BAY
# nonlinearBeamColumn element, inelastic fiber section
#
# SET UP ----------------------------------------------------------------------------
wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 3 -ndf 6; # Define the model builder, ndm=#dimension, ndf=#dofs
set dataDir Data; # set up name of data directory -- remove
file mkdir $dataDir; # create data directory
# define GEOMETRY -------------------------------------------------------------
# define structure-geometry paramters
set LCol [expr 3.2]; # column height (parallel to Y axis)
set LBeam [expr 4.0]; # beam length (parallel to X axis)
set LGird [expr 5.0]; # girder length (parallel to Z axis)
# ------ frame configuration
set NStory 1; # number of stories above ground level
set NBay 1; # number of bays in X direction
set NBayZ 1; # number of bays in Z direction
puts "Number of Stories in Y: $NStory; Number of bays in X: $NBay; Number of bays in Z: $NBayZ"
# define NODAL COORDINATES
# calculate locations of beam/column intersections:
set X1 0.;
set X2 [expr $X1 + $LBeam];
set Y1 0.;
set Y2 [expr $Y1 + $LCol];
set Z1 0.0;
set Z2 [expr $Z1 + $LGird];
node 4 $X1 $Y1 $Z1; # frame 1
node 3 $X2 $Y1 $Z1;
node 8 $X1 $Y2 $Z1;
node 7 $X2 $Y2 $Z1;
node 1 $X1 $Y1 $Z2; # frame 2
node 2 $X2 $Y1 $Z2;
node 5 $X1 $Y2 $Z2;
node 6 $X2 $Y2 $Z2;
# define Rigid Floor Diaphragm
set RigidDiaphragm ON ; # options: ON, OFF. specify this before the analysis parameters are set the constraints are handled differently.
set Xa [expr ($X2+$X1)/2]; # mid-span coordinate for rigid diaphragm
set Za [expr ($Z2+$Z1)/2];
# rigid-diaphragm nodes in center of each diaphram
set RigidDiaphragm ON ; # this communicates to the analysis parameters that I will be using rigid diaphragms
node 100 $Xa $Y2 $Za; # master nodes for rigid diaphragm -- story 2, bay 1, frame 1-2
# Constraints for rigid diaphragm master nodes
fix 100 0 1 0 1 0 1
# ------------------------define Rigid Diaphram, dof 2 is normal to floor
set perpDirn 2;
rigidDiaphragm $perpDirn 100 5 6 7 8; # level 2
# determine support nodes where ground motions are input, for multiple-support excitation
set iSupportNode "1 2 3 4"
# BOUNDARY CONDITIONS
fix 1 1 1 1 1 1 1; # FIXED nodes
fix 2 1 1 1 1 1 1; # FIXED nodes
fix 3 1 1 1 1 1 1; # FIXED nodes
fix 4 1 1 1 1 1 1; # FIXED nodes
# calculated MODEL PARAMETERS, particular to this model
# Set up parameters that are particular to the model for displacement control
set IDctrlNode 5; # node where displacement is read for displacement control
set IDctrlDOF 1; # degree of freedom of displacement read for displacement control
set LBuilding [expr $Y2]; # total building height
set Ubig 1.e10; # a really large number
set Usmall [expr 1/$Ubig]; # a really small number
# Define SECTIONS -------------------------------------------------------------
set SectionType FiberSection ; # options: Elastic FiberSection
#set SectionType Elastic ; # options: Elastic FiberSection
# define section tags:
set ColSecTag 1
set BeamSecTag 2
set GirdSecTag 3
set ColSecTagFiber 4
set BeamSecTagFiber 5
set GirdSecTagFiber 6
set EABeamSecTag 7
set EACOLSecTag 8
set STEELMAT 9
set BOUCMAT 10
set SecTagTorsion 70
# Section Properties:
set HCol [expr 0.25]; # square-Column width
set BCol $HCol
#set JCol
set HBeam [expr 0.20]; # Beam depth -- perpendicular to bending axis
set BBeam [expr 0.20]; # Beam width -- parallel to bending axis
set HGird [expr 0.20]; # Girder depth -- perpendicular to bending axis
set BGird [expr 0.20]; # Girder width -- parallel to bending axis
set Jbeam [expr $Ubig];
set Jcol [expr $Ubig];
# Material Properties:
set alfa 0.05 ;
set k0 20000000;
set n 10.0 ;
set gamma 0.5;
set beta 0.5;
set A0 1.0 ;
set deltaA 1e-9 ;
set deltaNu 1e-9 ;
set deltaEta 1e-9;
set numModes 1;
set Fy 25000; # STEEL yield stress
set Es 20000000; # modulus of steel
set b 0.05; # strain-hardening ratio
set g 1.0;
# calculated stiffness parameters
#set EICol [expr $Es*$IzCol]; # EI, for moment-curvature relationship
set ACol [expr $HCol*$BCol];
set ABG [expr $HBeam*$BBeam];
set EACol [expr $Es*$ACol]; # EA, for axial-force-strain relationship
set EABeam [expr $Es*$ABG]; # EA, for axial-force-strain relationship
uniaxialMaterial Steel01 $STEELMAT $Fy $Es $b; # build reinforcement material
uniaxialMaterial BoucWen $BOUCMAT $alfa $k0 $n $gamma $beta $A0 $deltaA $deltaNu $deltaEta ;
uniaxialMaterial Elastic $EABeamSecTag $EABeam; # this is not used as a material, this is an axial-force-strain response
uniaxialMaterial Elastic $EACOLSecTag $EACol; # this is not used as a material, this is an axial-force-strain response
uniaxialMaterial Elastic $SecTagTorsion $Ubig;
# section Aggregator $ColSecTag $ColMatTagAxial P $ColMatTagFlex Mz; # combine axial and flexural behavior into one section (no P-M interaction here)
set coverYC [expr $HCol/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZC [expr $BCol/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set nfYC 16; # number of fibers for concrete in y-direction
set nfZC 16; # number of fibers for concrete in z-direction
section fiberSec $ColSecTagFiber {; # Define the fiber section
# patch quadr $STEELMAT $nfZC $nfYC -$coverYC $coverZC -$coverYC -$coverZC $coverYC -$coverZC $coverYC $coverZC; # Define the concrete patch
patch quadr $BOUCMAT $nfZC $nfYC -$coverYC $coverZC -$coverYC -$coverZC $coverYC -$coverZC $coverYC $coverZC; # Define the concrete patch
patch quadr $EACOLSecTag $nfZC $nfYC -$coverYC $coverZC -$coverYC -$coverZC $coverYC -$coverZC $coverYC $coverZC; # Define the concrete patch
# patch quadr $ColSecTag $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
};# end of fibersection definition
section Aggregator $ColSecTag $SecTagTorsion T -section $ColSecTagFiber;
set coverYB [expr $HBeam/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZB [expr $BBeam/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set nfYB 16; # number of fibers for concrete in y-direction
set nfZB 16; # number of fibers for concrete in z-direction
section fiberSec $BeamSecTagFiber {; # Define the fiber section
# patch quadr $STEELMAT $nfZB $nfYB -$coverYB $coverZB -$coverYB -$coverZB $coverYB -$coverZB $coverYB $coverZB; # Define the concrete patch
patch quadr $BOUCMAT $nfZB $nfYB -$coverYB $coverZB -$coverYB -$coverZB $coverYB -$coverZB $coverYB $coverZB; # Define the concrete patch
patch quadr $EABeamSecTag $nfZB $nfYB -$coverYB $coverZB -$coverYB -$coverZB $coverYB -$coverZB $coverYB $coverZB; # Define the concrete patch
# patch quadr $ColSecTag $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
};
section Aggregator $BeamSecTag $SecTagTorsion T -section $BeamSecTagFiber;
set coverYG [expr $HGird/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZG [expr $BGird/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set nfYG 16; # number of fibers for concrete in y-direction
set nfZG 16; # number of fibers for concrete in z-direction
section fiberSec $GirdSecTagFiber {; # Define the fiber section
# patch quadr $STEELMAT $nfZG $nfYG -$coverYG $coverZG -$coverYG -$coverZG $coverYG -$coverZG $coverYG $coverZG; # Define the concrete patch
patch quadr $BOUCMAT $nfZG $nfYG -$coverYG $coverZG -$coverYG -$coverZG $coverYG -$coverZG $coverYG $coverZG; # Define the concrete patch
patch quadr $EABeamSecTag $nfZG $nfYG -$coverYG $coverZG -$coverYG -$coverZG $coverYG -$coverZG $coverYG $coverZG; # Define the concrete patch
# patch quadr $ColSecTag $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
}; # end of fibersection definition
section Aggregator $GirdSecTag $SecTagTorsion T -section $GirdSecTagFiber;
# define ELEMENTS -------------------------------------------------------
# set up geometric transformations of element
# in 3D model, assign vector vecxz
set IDColTransf 1; # all columns
set IDBeamTransf 2; # all beams
set IDGirdTransf 3; # all girders
set ColTransfType Linear ; # options, Linear PDelta Corotational
geomTransf $ColTransfType $IDColTransf 0 0 1 ; # only columns can have PDelta effects (gravity effects)
geomTransf Linear $IDBeamTransf 0 0 1;
geomTransf Linear $IDGirdTransf 1 0 0;
# Define Beam-Column Elements
set numIntgrPts 10;
set np [expr $numIntgrPts];
# Frame 1
# columns
element nonlinearBeamColumn 1111 4 8 $np $ColSecTag $IDColTransf; # level 1-2
element nonlinearBeamColumn 1112 3 7 $np $ColSecTag $IDColTransf;
# beams
element nonlinearBeamColumn 1221 7 8 $np $BeamSecTag $IDBeamTransf; # level 2
# Frame 2
# columns
element nonlinearBeamColumn 2111 1 5 $np $ColSecTag $IDColTransf; # level 1-2
element nonlinearBeamColumn 2112 2 6 $np $ColSecTag $IDColTransf
# beams
element nonlinearBeamColumn 2221 5 6 $np $BeamSecTag $IDBeamTransf; # level 2
# girders connecting frames
# Frame 1-2
element nonlinearBeamColumn 1321 8 5 $np $GirdSecTag $IDGirdTransf; # level 2
element nonlinearBeamColumn 1322 6 7 $np $GirdSecTag $IDGirdTransf;
# 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)
set Mmid [expr 51.0];
# frame 1
mass 8 $Mmid 0 $Mmid 0. 0. 0.; # level 2
mass 7 $Mmid 0 $Mmid 0. 0. 0.;
# frame 2
mass 5 $Mmid 0 $Mmid 0. 0. 0.; # level 2
mass 6 $Mmid 0 $Mmid 0. 0. 0.;
# Define RECORDERS -------------------------------------------------------------
recorder Node -file $dataDir/DFree.out -time -node 5 -dof 1 2 3 disp; # displacements of free node
recorder Node -file $dataDir/DBase.out -time -node 1 2 5 6 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file $dataDir/RBase.out -time -node 1 2 5 6 -dof 1 2 3 reaction; # support reaction
recorder Element -file $dataDir/Fel1.out -time -ele 1111 localForce; # element forces in local coordinates
recorder Element -xml $dataDir/PlasticRotation1.out -time -ele 1111 plasticRotation; # element forces in local coordinates
recorder Element -file $dataDir/ForceEle1sec1.out -time -ele 1111 section 1 force; # section forces, axial and moment, node i
recorder Element -file $dataDir/DefoEle1sec1.out -time -ele 11111 section 1 deformation; # section deformations, axial and curvature, node i
recorder Element -file $dataDir/ForceEle1sec$np.out -time -ele 1111 section $np force; # section forces, axial and moment, node j
recorder Element -file $dataDir/DefoEle1sec$np.out -time -ele 1111 section $np deformation; # section deformations, axial and curvature, node j
# perform eigen analysis#-----------------------------
set lambda [eigen $numModes];
# calculate frequencies and periods of the structure#---------------------------------------------------
set omega {}
set f {}
set T {}
set pi 3.141593
foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}
puts "periods are $T"
puts "Model Built"
# DYNAMIC EQ ANALYSIS --------------------------------------------------------
# Uniform Earthquake ground motion (uniform acceleration input at all support nodes)
set GMdirection 1; # ground-motion direction
set GMfile "BM68elc.acc" ; # ground-motion filenames
set GMfact 0.01; # ground-motion scaling factor
# set up ground-motion-analysis parameters
set DtAnalysis [expr 0.02]; # time-step Dt for lateral analysis
set TmaxAnalysis [expr 15.]; # maximum duration of ground-motion analysis -- should be 50*$sec
# DYNAMIC ANALYSIS PARAMETERS
constraints Transformation ;
# DOF NUMBERER (number the degrees of freedom in the domain): (http://opensees.berkeley.edu/OpenSees/m ... al/366.htm)
numberer Plain
# SYSTEM (http://opensees.berkeley.edu/OpenSees/m ... al/371.htm)
system SparseGeneral -piv
# TEST: # convergence test to
# RelativeEnergyIncr --
set Tol 1.e-8; # Convergence Test: tolerance
set maxNumIter 10; # 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)
set algorithmType ModifiedNewton
algorithm $algorithmType;
# Static INTEGRATOR: -- determine the next time step for an analysis (http://opensees.berkeley.edu/OpenSees/m ... al/689.htm)
set NewmarkGamma 0.5; # Newmark-integrator gamma parameter (also HHT)
set NewmarkBeta 0.25; # Newmark-integrator beta parameter
integrator Newmark $NewmarkGamma $NewmarkBeta
# ANALYSIS -- defines what type of analysis is to be performed (http://opensees.berkeley.edu/OpenSees/m ... al/324.htm)
analysis Transient
# define DAMPING--------------------------------------------------------------------------------------
# apply Rayleigh DAMPING from $xDamp
# D=$alphaM*M + $betaKcurr*Kcurrent + $betaKcomm*KlastCommit + $beatKinit*$Kinitial
set xDamp 0.00; # 2% damping ratio
set lambda [eigen 1]; # eigenvalue mode 1
set omega [expr pow($lambda,0.5)];
set alphaM 0.436; # M-prop. damping; D = alphaM*M
set betaKcurr 0.; # K-proportional damping; +beatKcurr*KCurrent
set betaKcomm [expr 2.*$xDamp/($omega)]; # K-prop. damping parameter; +betaKcomm*KlastCommitt
set betaKinit 0.; # initial-stiffness proportional damping +beatKinit*Kini
# define damping
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm; # RAYLEIGH damping
# --------------------------------- perform Dynamic Ground-Motion Analysis
# Uniform EXCITATION: acceleration input
set IDloadTag 400; # load tag
set dt 0.02; # time step for input ground motion
set GMfatt [expr $g*$GMfact]; # data in input file is in g Unifts -- ACCELERATION TH
set AccelSeries "Series -dt $dt -filePath $GMfile -factor $GMfatt"; # time series information
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries ; # create Unifform excitation
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)];
set ok [analyze $Nsteps $DtAnalysis]; # actually perform analysis; returns ok=0 if analysis was successful
if {$ok != 0} { ; # if analysis was not successful.
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
# Time-controlled analysis
set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {
set ok [analyze 1 $DtAnalysis]
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 1000 0
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
}
}; # end if ok !0
puts "Ground Motion Done. End Time: [getTime]"
> Hi Silvia,
>
> I have tried many times to model the element nonlinear behavior with uniaxial
> material BOUC WEN model. As you know the model is based on stress and strain
> relationship but there is no any definition for the yielding properties of material in the model
> .When I applied it in the model even by using fiber section the results are linear. I
> have attached the script of program for your kind attention. I would appreciate if you
> let me know whether we need to use parallel or series material in the modelling or
> not.
>
> # --------------------------------------------------------------------------------------------------
# 3 D FRAME 1 STORY ONE BAY
# nonlinearBeamColumn element, inelastic fiber section
#
# SET UP ----------------------------------------------------------------------------
wipe; # clear memory of all past model definitions
model BasicBuilder -ndm 3 -ndf 6; # Define the model builder, ndm=#dimension, ndf=#dofs
set dataDir Data; # set up name of data directory -- remove
file mkdir $dataDir; # create data directory
# define GEOMETRY -------------------------------------------------------------
# define structure-geometry paramters
set LCol [expr 3.2]; # column height (parallel to Y axis)
set LBeam [expr 4.0]; # beam length (parallel to X axis)
set LGird [expr 5.0]; # girder length (parallel to Z axis)
# ------ frame configuration
set NStory 1; # number of stories above ground level
set NBay 1; # number of bays in X direction
set NBayZ 1; # number of bays in Z direction
puts "Number of Stories in Y: $NStory; Number of bays in X: $NBay; Number of bays in Z: $NBayZ"
# define NODAL COORDINATES
# calculate locations of beam/column intersections:
set X1 0.;
set X2 [expr $X1 + $LBeam];
set Y1 0.;
set Y2 [expr $Y1 + $LCol];
set Z1 0.0;
set Z2 [expr $Z1 + $LGird];
node 4 $X1 $Y1 $Z1; # frame 1
node 3 $X2 $Y1 $Z1;
node 8 $X1 $Y2 $Z1;
node 7 $X2 $Y2 $Z1;
node 1 $X1 $Y1 $Z2; # frame 2
node 2 $X2 $Y1 $Z2;
node 5 $X1 $Y2 $Z2;
node 6 $X2 $Y2 $Z2;
# define Rigid Floor Diaphragm
set RigidDiaphragm ON ; # options: ON, OFF. specify this before the analysis parameters are set the constraints are handled differently.
set Xa [expr ($X2+$X1)/2]; # mid-span coordinate for rigid diaphragm
set Za [expr ($Z2+$Z1)/2];
# rigid-diaphragm nodes in center of each diaphram
set RigidDiaphragm ON ; # this communicates to the analysis parameters that I will be using rigid diaphragms
node 100 $Xa $Y2 $Za; # master nodes for rigid diaphragm -- story 2, bay 1, frame 1-2
# Constraints for rigid diaphragm master nodes
fix 100 0 1 0 1 0 1
# ------------------------define Rigid Diaphram, dof 2 is normal to floor
set perpDirn 2;
rigidDiaphragm $perpDirn 100 5 6 7 8; # level 2
# determine support nodes where ground motions are input, for multiple-support excitation
set iSupportNode "1 2 3 4"
# BOUNDARY CONDITIONS
fix 1 1 1 1 1 1 1; # FIXED nodes
fix 2 1 1 1 1 1 1; # FIXED nodes
fix 3 1 1 1 1 1 1; # FIXED nodes
fix 4 1 1 1 1 1 1; # FIXED nodes
# calculated MODEL PARAMETERS, particular to this model
# Set up parameters that are particular to the model for displacement control
set IDctrlNode 5; # node where displacement is read for displacement control
set IDctrlDOF 1; # degree of freedom of displacement read for displacement control
set LBuilding [expr $Y2]; # total building height
set Ubig 1.e10; # a really large number
set Usmall [expr 1/$Ubig]; # a really small number
# Define SECTIONS -------------------------------------------------------------
set SectionType FiberSection ; # options: Elastic FiberSection
#set SectionType Elastic ; # options: Elastic FiberSection
# define section tags:
set ColSecTag 1
set BeamSecTag 2
set GirdSecTag 3
set ColSecTagFiber 4
set BeamSecTagFiber 5
set GirdSecTagFiber 6
set EABeamSecTag 7
set EACOLSecTag 8
set STEELMAT 9
set BOUCMAT 10
set SecTagTorsion 70
# Section Properties:
set HCol [expr 0.25]; # square-Column width
set BCol $HCol
#set JCol
set HBeam [expr 0.20]; # Beam depth -- perpendicular to bending axis
set BBeam [expr 0.20]; # Beam width -- parallel to bending axis
set HGird [expr 0.20]; # Girder depth -- perpendicular to bending axis
set BGird [expr 0.20]; # Girder width -- parallel to bending axis
set Jbeam [expr $Ubig];
set Jcol [expr $Ubig];
# Material Properties:
set alfa 0.05 ;
set k0 20000000;
set n 10.0 ;
set gamma 0.5;
set beta 0.5;
set A0 1.0 ;
set deltaA 1e-9 ;
set deltaNu 1e-9 ;
set deltaEta 1e-9;
set numModes 1;
set Fy 25000; # STEEL yield stress
set Es 20000000; # modulus of steel
set b 0.05; # strain-hardening ratio
set g 1.0;
# calculated stiffness parameters
#set EICol [expr $Es*$IzCol]; # EI, for moment-curvature relationship
set ACol [expr $HCol*$BCol];
set ABG [expr $HBeam*$BBeam];
set EACol [expr $Es*$ACol]; # EA, for axial-force-strain relationship
set EABeam [expr $Es*$ABG]; # EA, for axial-force-strain relationship
uniaxialMaterial Steel01 $STEELMAT $Fy $Es $b; # build reinforcement material
uniaxialMaterial BoucWen $BOUCMAT $alfa $k0 $n $gamma $beta $A0 $deltaA $deltaNu $deltaEta ;
uniaxialMaterial Elastic $EABeamSecTag $EABeam; # this is not used as a material, this is an axial-force-strain response
uniaxialMaterial Elastic $EACOLSecTag $EACol; # this is not used as a material, this is an axial-force-strain response
uniaxialMaterial Elastic $SecTagTorsion $Ubig;
# section Aggregator $ColSecTag $ColMatTagAxial P $ColMatTagFlex Mz; # combine axial and flexural behavior into one section (no P-M interaction here)
set coverYC [expr $HCol/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZC [expr $BCol/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set nfYC 16; # number of fibers for concrete in y-direction
set nfZC 16; # number of fibers for concrete in z-direction
section fiberSec $ColSecTagFiber {; # Define the fiber section
# patch quadr $STEELMAT $nfZC $nfYC -$coverYC $coverZC -$coverYC -$coverZC $coverYC -$coverZC $coverYC $coverZC; # Define the concrete patch
patch quadr $BOUCMAT $nfZC $nfYC -$coverYC $coverZC -$coverYC -$coverZC $coverYC -$coverZC $coverYC $coverZC; # Define the concrete patch
patch quadr $EACOLSecTag $nfZC $nfYC -$coverYC $coverZC -$coverYC -$coverZC $coverYC -$coverZC $coverYC $coverZC; # Define the concrete patch
# patch quadr $ColSecTag $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
};# end of fibersection definition
section Aggregator $ColSecTag $SecTagTorsion T -section $ColSecTagFiber;
set coverYB [expr $HBeam/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZB [expr $BBeam/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set nfYB 16; # number of fibers for concrete in y-direction
set nfZB 16; # number of fibers for concrete in z-direction
section fiberSec $BeamSecTagFiber {; # Define the fiber section
# patch quadr $STEELMAT $nfZB $nfYB -$coverYB $coverZB -$coverYB -$coverZB $coverYB -$coverZB $coverYB $coverZB; # Define the concrete patch
patch quadr $BOUCMAT $nfZB $nfYB -$coverYB $coverZB -$coverYB -$coverZB $coverYB -$coverZB $coverYB $coverZB; # Define the concrete patch
patch quadr $EABeamSecTag $nfZB $nfYB -$coverYB $coverZB -$coverYB -$coverZB $coverYB -$coverZB $coverYB $coverZB; # Define the concrete patch
# patch quadr $ColSecTag $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
};
section Aggregator $BeamSecTag $SecTagTorsion T -section $BeamSecTagFiber;
set coverYG [expr $HGird/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZG [expr $BGird/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set nfYG 16; # number of fibers for concrete in y-direction
set nfZG 16; # number of fibers for concrete in z-direction
section fiberSec $GirdSecTagFiber {; # Define the fiber section
# patch quadr $STEELMAT $nfZG $nfYG -$coverYG $coverZG -$coverYG -$coverZG $coverYG -$coverZG $coverYG $coverZG; # Define the concrete patch
patch quadr $BOUCMAT $nfZG $nfYG -$coverYG $coverZG -$coverYG -$coverZG $coverYG -$coverZG $coverYG $coverZG; # Define the concrete patch
patch quadr $EABeamSecTag $nfZG $nfYG -$coverYG $coverZG -$coverYG -$coverZG $coverYG -$coverZG $coverYG $coverZG; # Define the concrete patch
# patch quadr $ColSecTag $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
}; # end of fibersection definition
section Aggregator $GirdSecTag $SecTagTorsion T -section $GirdSecTagFiber;
# define ELEMENTS -------------------------------------------------------
# set up geometric transformations of element
# in 3D model, assign vector vecxz
set IDColTransf 1; # all columns
set IDBeamTransf 2; # all beams
set IDGirdTransf 3; # all girders
set ColTransfType Linear ; # options, Linear PDelta Corotational
geomTransf $ColTransfType $IDColTransf 0 0 1 ; # only columns can have PDelta effects (gravity effects)
geomTransf Linear $IDBeamTransf 0 0 1;
geomTransf Linear $IDGirdTransf 1 0 0;
# Define Beam-Column Elements
set numIntgrPts 10;
set np [expr $numIntgrPts];
# Frame 1
# columns
element nonlinearBeamColumn 1111 4 8 $np $ColSecTag $IDColTransf; # level 1-2
element nonlinearBeamColumn 1112 3 7 $np $ColSecTag $IDColTransf;
# beams
element nonlinearBeamColumn 1221 7 8 $np $BeamSecTag $IDBeamTransf; # level 2
# Frame 2
# columns
element nonlinearBeamColumn 2111 1 5 $np $ColSecTag $IDColTransf; # level 1-2
element nonlinearBeamColumn 2112 2 6 $np $ColSecTag $IDColTransf
# beams
element nonlinearBeamColumn 2221 5 6 $np $BeamSecTag $IDBeamTransf; # level 2
# girders connecting frames
# Frame 1-2
element nonlinearBeamColumn 1321 8 5 $np $GirdSecTag $IDGirdTransf; # level 2
element nonlinearBeamColumn 1322 6 7 $np $GirdSecTag $IDGirdTransf;
# 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)
set Mmid [expr 51.0];
# frame 1
mass 8 $Mmid 0 $Mmid 0. 0. 0.; # level 2
mass 7 $Mmid 0 $Mmid 0. 0. 0.;
# frame 2
mass 5 $Mmid 0 $Mmid 0. 0. 0.; # level 2
mass 6 $Mmid 0 $Mmid 0. 0. 0.;
# Define RECORDERS -------------------------------------------------------------
recorder Node -file $dataDir/DFree.out -time -node 5 -dof 1 2 3 disp; # displacements of free node
recorder Node -file $dataDir/DBase.out -time -node 1 2 5 6 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file $dataDir/RBase.out -time -node 1 2 5 6 -dof 1 2 3 reaction; # support reaction
recorder Element -file $dataDir/Fel1.out -time -ele 1111 localForce; # element forces in local coordinates
recorder Element -xml $dataDir/PlasticRotation1.out -time -ele 1111 plasticRotation; # element forces in local coordinates
recorder Element -file $dataDir/ForceEle1sec1.out -time -ele 1111 section 1 force; # section forces, axial and moment, node i
recorder Element -file $dataDir/DefoEle1sec1.out -time -ele 11111 section 1 deformation; # section deformations, axial and curvature, node i
recorder Element -file $dataDir/ForceEle1sec$np.out -time -ele 1111 section $np force; # section forces, axial and moment, node j
recorder Element -file $dataDir/DefoEle1sec$np.out -time -ele 1111 section $np deformation; # section deformations, axial and curvature, node j
# perform eigen analysis#-----------------------------
set lambda [eigen $numModes];
# calculate frequencies and periods of the structure#---------------------------------------------------
set omega {}
set f {}
set T {}
set pi 3.141593
foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}
puts "periods are $T"
puts "Model Built"
# DYNAMIC EQ ANALYSIS --------------------------------------------------------
# Uniform Earthquake ground motion (uniform acceleration input at all support nodes)
set GMdirection 1; # ground-motion direction
set GMfile "BM68elc.acc" ; # ground-motion filenames
set GMfact 0.01; # ground-motion scaling factor
# set up ground-motion-analysis parameters
set DtAnalysis [expr 0.02]; # time-step Dt for lateral analysis
set TmaxAnalysis [expr 15.]; # maximum duration of ground-motion analysis -- should be 50*$sec
# DYNAMIC ANALYSIS PARAMETERS
constraints Transformation ;
# DOF NUMBERER (number the degrees of freedom in the domain): (http://opensees.berkeley.edu/OpenSees/m ... al/366.htm)
numberer Plain
# SYSTEM (http://opensees.berkeley.edu/OpenSees/m ... al/371.htm)
system SparseGeneral -piv
# TEST: # convergence test to
# RelativeEnergyIncr --
set Tol 1.e-8; # Convergence Test: tolerance
set maxNumIter 10; # 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)
set algorithmType ModifiedNewton
algorithm $algorithmType;
# Static INTEGRATOR: -- determine the next time step for an analysis (http://opensees.berkeley.edu/OpenSees/m ... al/689.htm)
set NewmarkGamma 0.5; # Newmark-integrator gamma parameter (also HHT)
set NewmarkBeta 0.25; # Newmark-integrator beta parameter
integrator Newmark $NewmarkGamma $NewmarkBeta
# ANALYSIS -- defines what type of analysis is to be performed (http://opensees.berkeley.edu/OpenSees/m ... al/324.htm)
analysis Transient
# define DAMPING--------------------------------------------------------------------------------------
# apply Rayleigh DAMPING from $xDamp
# D=$alphaM*M + $betaKcurr*Kcurrent + $betaKcomm*KlastCommit + $beatKinit*$Kinitial
set xDamp 0.00; # 2% damping ratio
set lambda [eigen 1]; # eigenvalue mode 1
set omega [expr pow($lambda,0.5)];
set alphaM 0.436; # M-prop. damping; D = alphaM*M
set betaKcurr 0.; # K-proportional damping; +beatKcurr*KCurrent
set betaKcomm [expr 2.*$xDamp/($omega)]; # K-prop. damping parameter; +betaKcomm*KlastCommitt
set betaKinit 0.; # initial-stiffness proportional damping +beatKinit*Kini
# define damping
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm; # RAYLEIGH damping
# --------------------------------- perform Dynamic Ground-Motion Analysis
# Uniform EXCITATION: acceleration input
set IDloadTag 400; # load tag
set dt 0.02; # time step for input ground motion
set GMfatt [expr $g*$GMfact]; # data in input file is in g Unifts -- ACCELERATION TH
set AccelSeries "Series -dt $dt -filePath $GMfile -factor $GMfatt"; # time series information
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries ; # create Unifform excitation
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)];
set ok [analyze $Nsteps $DtAnalysis]; # actually perform analysis; returns ok=0 if analysis was successful
if {$ok != 0} { ; # if analysis was not successful.
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
# Time-controlled analysis
set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {
set ok [analyze 1 $DtAnalysis]
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 1000 0
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
}
}; # end if ok !0
puts "Ground Motion Done. End Time: [getTime]"
Re: Problem in BOUC WEN model
moharrami wrote:
moharrami wrote:
Hi Silvia,
In Bouc Wen model we did not specified the non-linearity properties of material.
I would appreciate if you let me know where we should define the material properties for Bouc Wen model.
moharrami wrote:
Hi Silvia,
In Bouc Wen model we did not specified the non-linearity properties of material.
I would appreciate if you let me know where we should define the material properties for Bouc Wen model.
Re: Problem in BOUC WEN model
Here you can find references where you can read more about how to define BoucWen material model to represent stress-strain relationships that you want:
http://opensees.berkeley.edu/wiki/index ... n_Material
http://opensees.berkeley.edu/wiki/index ... n_Material
Re: Problem in BOUC WEN model
vesna wrote:
> Here you can find references where you can read more about how to define
> BoucWen material model to represent stress-strain relationships that you
> want:
> http://opensees.berkeley.edu/wiki/index ... n_Material
Hi Vensa,
Thank you for your response. I followed exactly the rules but this is just relationship between the stress and strain and the yeilding criteria is not speicified in the model so when I analysis by considering like a uniaxial material properities (Steel01) and I used it in fiber section to assign the nonlinear properties to the elenment. The nonlinear time history reults such as displacemnet and shear in the column is linear response not nonlinear one. I would apreciate if you let me know why this happen in the modeling.
> Here you can find references where you can read more about how to define
> BoucWen material model to represent stress-strain relationships that you
> want:
> http://opensees.berkeley.edu/wiki/index ... n_Material
Hi Vensa,
Thank you for your response. I followed exactly the rules but this is just relationship between the stress and strain and the yeilding criteria is not speicified in the model so when I analysis by considering like a uniaxial material properities (Steel01) and I used it in fiber section to assign the nonlinear properties to the elenment. The nonlinear time history reults such as displacemnet and shear in the column is linear response not nonlinear one. I would apreciate if you let me know why this happen in the modeling.
Re: Problem in BOUC WEN model
Hi,
I have a simple 3DOF model. The first element is nonlinear Beam Column element with fiber section. I used BoucWen model for material nonlinearity, but to get a nonlinear model I should increase gamma and beta enormously; like Gamma=beta=1e11!
Do you think it is acceptable to have such values for these parameters?
The first mode frequency in my model is 14 Hz, and it is excited by VanNuys earthquake.
Thanks,
I have a simple 3DOF model. The first element is nonlinear Beam Column element with fiber section. I used BoucWen model for material nonlinearity, but to get a nonlinear model I should increase gamma and beta enormously; like Gamma=beta=1e11!
Do you think it is acceptable to have such values for these parameters?
The first mode frequency in my model is 14 Hz, and it is excited by VanNuys earthquake.
Thanks,
Re: Problem in BOUC WEN model
This values of gamma and beta look to big to me. They are usually in the range form 0 to 1. How did you calibrate your material?
Re: Problem in BOUC WEN model
I have changed the stiffness of the material ($ko) to fix the frequency to the range that I want. I should say that my model's first frequency is a little higher than normal (14 Hz) and to get the model nonlinear without changing gamma and beta I should have a huge factor on my input earthquake record. by the way, the other parameters are: Alpha=0.1, n=2, Ao=1, and there is no degrading of any kind. the main parameters that I have used are Ko, gamma and beta. I suppose that since the BoucWen is just applied on to the fibers, the nonlinearity in a bending element is concentrated on outer fibers and this requires large gamma and beta to produce nonlinearity for whole model.
Is it possible to use boucwen in another way, like for beamwithhinges and as force-deformation.
Thanks,
Is it possible to use boucwen in another way, like for beamwithhinges and as force-deformation.
Thanks,