X-Braced Frame

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
FedericoIori
Posts: 3
Joined: Mon Jan 21, 2013 10:38 am
Location: Università Degli Studi di Trento

X-Braced Frame

Post by FedericoIori » Fri Apr 26, 2013 11:35 am

Hi,

i'm trying to model an one story x-braced frame. So far i've been able to model the pushover analysis, which is running without any error, but when i try to model the pseudo-dynamic analysis (giving a displacement history) i'm not able to reach the convergence ( being more specific the analysis fails approximately at an half of the maximum displacement that i would like to reach and the error message i get is : "failed to get compatible element forces & deformation", for some elements of the braces and some element of the gusset plate). I've tried to change some parameters of the analysis but i'm not getting any improvement, so i wish you could help me out to find out which are the mistakes i'm making.
This is the code i made, based on the SCBF example made by Vesna Terzic:

#Source
#Telaio con controventi concentrici a X e colonne in acciaio ad alta resistenza
#Concentrically braced steel frames using CHS HSS columns.

###############################################################################
#Set-up & Source Definition
###############################################################################

wipe; # Clear memory of past model definitions
model BasicBuilder -ndm 3 -ndf 6; # Define the model builder, ndm = #dimension, ndf = #dofs
puts "- Concentrically braced steel frames using CHS HSS columns -";
source WSection3D.tcl; # procedure for creating standard steel W section
source USection3D.tcl; # procedure for creating standard steel U section
source CHSSection3D.tcl; # procedure for creating standard steel CHS section
source GPSection3D.tcl; # procedure for creating standard steel Gusset Plate Section

###############################################################################
# Define Analysis Type and create output folder
###############################################################################

# Define type of analysis: "pushover" = pushover; "dynamic" = dynamic
set analysisType "dynamic";

if {$analysisType == "pushover"} {
set dataDir Pushover-Output-Fiber
file mkdir $dataDir;
}
if {$analysisType == "dynamic"} {
set dataDir Dynamic-Output-Fiber
file mkdir $dataDir;
}

################################################################################
#Units&Constants
################################################################################

#Basic Units
set mm 1.;
set N 1.;
set s 1.;
set LunitTXT "mm"; # define basic-unit text for output
set FunitTXT "N"; # define basic-unit text for output
set TunitTXT "sec"; # define basic-unit text for output
#Dependent Units
set m [expr 1e3*$mm];
set mm2 [expr pow($mm,2.0)];
set mm4 [expr pow($mm,4.0)];
set kN [expr 1e3*$N];
set MPa [expr $N/$mm2];
set g [expr 9.81*$m/pow($s,2.0)];
set pi [expr 2.0*asin(1.0)];
set kg [expr $N*pow($s,2.0)/$m];

################################################################################
#Geometry, Nodes and Constraints
################################################################################

#define structure-geometry parameters
set NStories 1; #number of stories;
set NBays 1; #number of bays
set WBay [expr 6000*$mm]; #bay width in millimeters
set HStory [expr 3500*$mm]; #story height in millimeters
set HBuilding [expr $NStories*$HStory]; #height of building

#calculate locations frame node
set Pier1 [expr 0.0*$mm]; #leftmost column line
set Pier2 [expr $Pier1 + $WBay];
set Floor1 [expr 0.0*$mm]; #ground floor
set Floor2 [expr $Floor1 + $HStory];

#define offset distance for beam, column and brace ( from gusset plate geometry)
set jOff_brace [expr 219.63*$mm]; # joint offset of a braces (axial direction)
set jOff_beam [expr 130*$mm]; # joint offset for the beam at its ends

#define distance for floor 1 beam restraint
set j_beam_r1 [expr 847.5*$mm]; #first joint distance from external node
set j_beam_r2 [expr 2282.5*$mm]; #second joint distance from external node

#define distance for column restraint
set j_col_r [expr 2853.0262*$mm]; #column restraint distance from floor 1

#end node ofsets of the braces (from a work point to the beginning of the brace)
set nOff_brace [expr 449.63*$mm]; # bottom of a brace in axial direction

#define nodes and assign masses to beam-column intersection of frame
# command: node nodeID xcoord ycoord -mass mass_dof1 mass_dof2 mass_dof3
# nodeID convention: "xy" where x = Pier # and y = Floor #
node 11 $Pier1 $Floor1 [expr 0.0*$mm];
node 21 $Pier2 $Floor1 [expr 0.0*$mm];
node 12 $Pier1 $Floor2 [expr 0.0*$mm];
node 22 $Pier2 $Floor2 [expr 0.0*$mm];

#define extra restraint nodes for Floor1 beam
node 1001 [expr $Pier1+$j_beam_r1] $Floor1 0.0;
node 1002 [expr $Pier1+$j_beam_r2] $Floor1 0.0;
node 1003 [expr $Pier2-$j_beam_r2] $Floor1 0.0;
node 1004 [expr $Pier2-$j_beam_r1] $Floor1 0.0;

#define extra restraint nodes for columns
node 2001 $Pier1 [expr $Floor1+$j_col_r] 0.0;
node 2002 $Pier2 [expr $Floor1+$j_col_r] 0.0;

#define extra nodes for beam-column pin connection
# nodeID convention: "xba" where x = Floor; b=Bay; a=Location: 1=left; 2=right;
node 111 [expr $Pier1+$jOff_beam] $Floor1 [expr 0.0*$mm];
node 311 [expr $Pier1+$jOff_beam] $Floor1 [expr 0.0*$mm];
node 121 [expr $Pier2-$jOff_beam] $Floor1 [expr 0.0*$mm];
node 321 [expr $Pier2-$jOff_beam] $Floor1 [expr 0.0*$mm];
node 212 [expr $Pier1+$jOff_beam] $Floor2 [expr 0.0*$mm];
node 412 [expr $Pier1+$jOff_beam] $Floor2 [expr 0.0*$mm];
node 222 [expr $Pier2-$jOff_beam] $Floor2 [expr 0.0*$mm];
node 422 [expr $Pier2-$jOff_beam] $Floor2 [expr 0.0*$mm];

# brace effective lenght, number of elements per brace, and initial imperfection
set alpha [expr atan($HStory/$WBay)];
set Leff [expr ($WBay)/cos($alpha)-2*$nOff_brace]; #effective brace lenght
set noEle 10; #number of elements per brace
set p_ratio 500.; #coresponds to 0.02% of the effective lenght
set p [expr 1./$p_ratio*$Leff]; #imperfection of the brace

#define extra nodes for brace pin
node 511 [expr $Pier1+$jOff_brace*cos($alpha)] [expr $Floor1+$jOff_brace*sin($alpha)] [expr 0.0*$mm];
node 512 [expr $Pier1+$jOff_brace*cos($alpha)] [expr $Floor2-$jOff_brace*sin($alpha)] [expr 0.0*$mm];
node 521 [expr $Pier2-$jOff_brace*cos($alpha)] [expr $Floor1+$jOff_brace*sin($alpha)] [expr 0.0*$mm];
node 522 [expr $Pier2-$jOff_brace*cos($alpha)] [expr $Floor2-$jOff_brace*sin($alpha)] [expr 0.0*$mm];

# define extra nodes along the braces:
# nodeID convention: "3acd" where and a = left or right
# "a" convention: 1 = left; 2 = right;
# cd = node numbering for the brace (can be between 1 and 99)

# nodes of the left brace of storey 1
# puts "brace 1"
set orient "pos"
set shift 3100
set Xi [expr $Pier1+$nOff_brace*cos($alpha)]; #x coordinate of node 3100
set Yi [expr $Floor1+$nOff_brace*sin($alpha)]; #y coordinate of node 3100
set Zi [expr 0.0*$mm];
set eleL [expr $Leff/$noEle];
for { set i 0 } { $i <= $noEle } { incr i} {
#local coordinates
set xm [expr $eleL*$i*$mm];
set ym [expr 0.0*$mm];
set dm [expr sqrt(pow($xm,2)+pow($ym,2))];
set zm [expr $p*sin(2*$dm*$pi/$Leff)];
#global coordinates
if {$orient == "pos"} {
set Xm [expr $Xi+cos($alpha)*$xm];
set Ym [expr $Yi+sin($alpha)*$xm];
set Zm [expr $Zi+$zm];
} else {
set Xm [expr $Xi-cos($alpha)*$xm];
set Ym [expr $Yi+sin($alpha)*$xm];
set Zm [expr $Zi+$zm];
}
#define nodes
node [expr $shift+$i] $Xm $Ym $Zm
#puts "node: [expr $shift+$i] $Xm $Ym $Zm"
}

# nodes of the right brace of storey 1
# puts "brace 2"
set orient "neg"
set shift 3200
set Xi [expr $Pier2-$nOff_brace*cos($alpha)]; #x coordinate of node 3200
set Yi [expr $Floor1+$nOff_brace*sin($alpha)]; #y coordinate of node 3200
set Zi [expr 0.0*$mm];
for { set i 0 } { $i <= $noEle } { incr i} {
#local coordinates
set xm [expr $eleL*$i*$mm];
set ym [expr 0.0*$mm];
set dm [expr sqrt(pow($xm,2)+pow($ym,2))];
set zm [expr $p*sin(2*$dm*$pi/$Leff)];
#global coordinates
if {$orient == "pos"} {
set Xm [expr $Xi+cos($alpha)*$xm];
set Ym [expr $Yi+sin($alpha)*$xm];
set Zm [expr $Zi+$zm];
} else {
set Xm [expr $Xi-cos($alpha)*$xm];
set Ym [expr $Yi+sin($alpha)*$xm];
set Zm [expr $Zi+$zm];
}
#define nodes
node [expr $shift+$i] $Xm $Ym $Zm;
#puts "node: [expr $shift+$i] $Xm $Ym $Zm"
}

#Assign boundary conditions
# tag DX DY DZ RX RY RZ
fix 11 1 1 1 1 1 0; #fix the base of the frame
fix 21 1 1 1 1 1 0; #fix the base of the frame
fix 2001 0 0 1 0 0 0; #fix the first column for z displacement ( reproducing the effective specimen restraint)
fix 2002 0 0 1 0 0 0; #fix the second column for z displacement ( reproducing the effective specimen restraint)
fix 1001 1 1 1 0 0 0; #extra inferior beam restraint for shear transfer ( reproducing the effective specimen restraint)
fix 1002 1 1 1 0 0 0;
fix 1003 1 1 1 0 0 0;
fix 1004 1 1 1 0 0 0;

#assign constraints
#beam-column pin
equalDOF 212 412 1 2 3 4;
equalDOF 222 422 1 2 3 4;
equalDOF 111 311 1 2 3 4;
equalDOF 121 321 1 2 3 4;
#connection between braces
equalDOF [expr 3100+$noEle/2] [expr 3200+$noEle/2] 1 2 3 4 5;

#########################################################################################
#Define Materials and Sections
#########################################################################################

#define material for nonlinear Beams
set matID_Beam 1
set matID_fatBeam 2
set Es [expr 200000.0*$MPa]; #modulus of elasticity for steel
set Fy [expr 355.0*$MPa]; #yield stress of steel
set b 0.008; #strain hardening ratio
uniaxialMaterial Steel02 $matID_Beam $Fy $Es $b 10 0.925 0.15
uniaxialMaterial Fatigue $matID_fatBeam $matID_Beam

#define material for nonlinear Columns
set matID_Column 3
#set matID_fatColumn 4
set Es_c [expr 200000.0*$MPa]; #modulus of elasticity for steel
set Fy_c [expr 565.0*$MPa]; #yield stress of steel
uniaxialMaterial Steel02 $matID_Column $Fy_c $Es_c $b 10 0.925 0.15
#uniaxialMaterial Fatigue $matID_fatColumn $matID_Column

#define material for nonlinear Braces
set matID_Braces 5
#set matID_fatBraces 6
set Es_b [expr 200000.0*$MPa]; #modulus of elasticity for steel
set Fy_b [expr 330.1*$MPa]; #yield stress of steel
uniaxialMaterial Steel02 $matID_Braces $Fy_b $Es_b $b 5 0.925 0.15
#uniaxialMaterial Fatigue $matID_fatBraces $matID_Braces

# define material for ghost truss
set matID_GT 7
uniaxialMaterial Elastic $matID_GT [expr 210.0*$MPa];

# define material for gusset plates
set matID_GP 8
set Fy_gp [expr 355.0*$MPa];
uniaxialMaterial Steel02 $matID_GP $Fy_gp $Es $b 2 0.925 0.15

# define sections
#-----------------
set secTagBeam 20
set secTagColumn 30
set secTagBraces 40
set secTagGP 50

#Beam HE 260B
# command: WSection3D secID matID matTorsion d bf tf tw nfdw nftw nfbf nftf E J
WSection3D $secTagBeam $matID_fatBeam $secTagBeam [expr 260.0*$mm] [expr 260.0*$mm] [expr 17.5*$mm] [expr 10.0*$mm] 16 2 16 4 [expr 200000.0*$MPa] [expr 123.8e4*$mm4];

#CHS 139,7x816
CHSSection3D $secTagColumn $matID_Column $secTagColumn 16 4 0.0 0.0 [expr 62.15*$mm] [expr 69.85*$mm] 0 360 [expr 200000.0*$MPa] [expr 1440.58e4*$mm4]

#Braces UPN 180
# command: USection3D secID matID matTorsion d bf tf tw ys nfdw nftw nfbf nftf E J
USection3D $secTagBraces $matID_Braces $secTagBraces [expr 180.0*$mm] [expr 70.0*$mm] [expr 11.0*$mm] [expr 8.0*$mm] [expr 1.92*$mm] 16 2 16 4 [expr 200000.0*$MPa] [expr 9.55e4*$mm4];

# Gusset Plate
# command: GPsection3D secID matID matTorsion d t nfd nft E
GPsection3D $secTagGP $matID_GP $secTagGP [expr 220.0*$mm] [expr 16.0*$mm] 16 4 [expr 200000.0*$MPa]

##########################################################################################
# Define Geometric Transformation
##########################################################################################

set transfTag_C 1
set transfTag_Brace 2
set transfTag_B 3
set transfTag_GP 4

# columns
geomTransf PDelta $transfTag_C 0 0 1;

# braces
geomTransf Corotational $transfTag_Brace 0 0 1;

# beams
geomTransf PDelta $transfTag_B 0 0 1;

# gusset plate
geomTransf Corotational $transfTag_GP 0 0 1;

###########################################################################################
# Define Elements
##########################################################################################

set tol 1.e-8
set maxIter 50

# define columns
# eleID convention: "1x", 1 = column, x=Pier #
# command arguments: $eleID $iNode $jNode $numIntgrPts $secTag $transfTag
element forceBeamColumn 11 11 2001 3 $secTagColumn $transfTag_C -iter $maxIter $tol;
element forceBeamColumn 12 2001 12 3 $secTagColumn $transfTag_C -iter $maxIter $tol;
element forceBeamColumn 13 21 2002 3 $secTagColumn $transfTag_C -iter $maxIter $tol;
element forceBeamColumn 14 2002 22 3 $secTagColumn $transfTag_C -iter $maxIter $tol;


# define beams of a braced frame:
# eleID convention: "2y", 2 = beam, y = Floor
# command arguments: $eleID $iNode $jNode $numIntgrPts $secTag $transfTag
element forceBeamColumn 21 311 1001 3 $secTagBeam $transfTag_B -iter $maxIter $tol;
element forceBeamColumn 22 1001 1002 3 $secTagBeam $transfTag_B -iter $maxIter $tol;
element forceBeamColumn 23 1002 1003 3 $secTagBeam $transfTag_B -iter $maxIter $tol;
element forceBeamColumn 24 1003 1004 3 $secTagBeam $transfTag_B -iter $maxIter $tol;
element forceBeamColumn 25 1004 321 3 $secTagBeam $transfTag_B -iter $maxIter $tol;
element forceBeamColumn 26 412 422 3 $secTagBeam $transfTag_B -iter $maxIter $tol;

# define braces:
# eleID convention: "3acd", 3 = brace, a = brace number
# cd = element numbering for the brace (can be between 1 and 99)
# command arguments: $eleID $iNode $jNode $numIntgrPts $secTag $transfTag
set NIP 4
# storey 1 - left brace
set shift 3100
for { set i 0 } { $i < [expr $noEle] } { incr i} {
element forceBeamColumn [expr $shift+$i] [expr $shift+$i] [expr $shift+$i+1] $NIP $secTagBraces $transfTag_Brace -iter $maxIter $tol
}
# storey 1 - right brace
set shift 3200
for { set i 0 } { $i < [expr $noEle] } { incr i} {
element forceBeamColumn [expr $shift+$i] [expr $shift+$i] [expr $shift+$i+1] $NIP $secTagBraces $transfTag_Brace -iter $maxIter $tol
}

# define rigid links:
set Jrigid [expr 1.0e8*$mm4];
set G [expr $Es/2.0/(1+0.3)];

#beams
#-----------
set Arigid [expr 118.4e2*$mm2*10]; # area of the beam by 10
set IrigidZ [expr 14920e4*$mm4*10]; # Iz of the beam by 10
set IrigidY [expr 5135e4*$mm4*10]; # Iy of the beam by 10

# eleID convention: "6a", 6 = rigid link of beams, , a = location of the rigid link
# "a" convention: 1 = left; 2 = right; 3 = left-middle; 4 = right-middle;
# comand arguemnts: $eleTag $iNode $jNode $A $E $G $J $Iy $Iz $transfTag
element elasticBeamColumn 51 11 111 $Arigid $Es $G $Jrigid $IrigidY $IrigidZ $transfTag_B
element elasticBeamColumn 52 222 22 $Arigid $Es $G $Jrigid $IrigidY $IrigidZ $transfTag_B
element elasticBeamColumn 53 12 212 $Arigid $Es $G $Jrigid $IrigidY $IrigidZ $transfTag_B
element elasticBeamColumn 54 121 21 $Arigid $Es $G $Jrigid $IrigidY $IrigidZ $transfTag_B

#braces
#-----------
set Arigid [expr 28e2*$mm2*10.]; # area of the brace multiplied by 10
set IrigidZ [expr 6280e4*$mm4*10]; # I of the brace multiplied by 10
set IrigidY [expr 399e4*$mm4*10]; # I of the brace multiplied by 10
# eleID convention: "5xa", 5 = rigid link for braces, a = location of the rigid link
# "a" convention: 1 = left-botom; 2 = left-top; 3 = right-bottom; 4 = right-top;
# comand arguemnts: $eleTag $iNode $jNode $A $E $G $J $Iz $Iy $transfTag
element elasticBeamColumn 61 11 511 $Arigid $Es $G $Jrigid $IrigidY $IrigidZ $transfTag_B
element elasticBeamColumn 62 522 22 $Arigid $Es $G $Jrigid $IrigidY $IrigidZ $transfTag_B
element elasticBeamColumn 63 12 512 $Arigid $Es $G $Jrigid $IrigidY $IrigidZ $transfTag_B
element elasticBeamColumn 64 521 21 $Arigid $Es $G $Jrigid $IrigidY $IrigidZ $transfTag_B

# define gusset plates:
#----------------------
# eleID convention: "4ab", 4 = gusset plate, a, b = location of the gusset plate
# command arguments: $eleID $iNode $jNode $numIntgrPts $secTag $transfTag
set NIP 3
# left brace
set shift 3100
element forceBeamColumn 411 511 [expr $shift] $NIP $secTagGP $transfTag_GP
element forceBeamColumn 412 [expr $shift+$noEle] 522 $NIP $secTagGP $transfTag_GP
# right brace
set shift 3200
element forceBeamColumn 421 [expr $shift] 521 $NIP $secTagGP $transfTag_GP
element forceBeamColumn 422 512 [expr $shift+$noEle] $NIP $secTagGP $transfTag_GP

# ghost trusses to the braces (with very small stiffness) to diminish convergence problems
#------------------------------
#set Agt [expr 5*$mm2]; #truss area
# braces
#element corotTruss 81 3100 [expr 3100+$noEle] $Agt $matID_GT
#element corotTruss 82 3200 [expr 3200+$noEle] $Agt $matID_GT

############################################################################################
# Display the model
############################################################################################
recorder display "Model" 10 10 500 500 -wipe
prp 0 0 50
vup 0 1 0
vpn 2 -1 1
display 1 2 10

loadConst -time 0.0
puts "Model Built"

############################################################################################
# Gravity Loads & Gravity Analysis
############################################################################################

pattern Plain 101 Linear {

#column force = 0,5 N_b,Rd
set NbRd [expr 965*$kN];
load 12 0 [expr -0.5*$NbRd] 0 0 0 0; #load on Pier 1 column
load 22 0 [expr -0.5*$NbRd] 0 0 0 0; #load on Pier 2 column
#}

# Gravity-analysis: load-controlled static analysis
set Tol 1.0e-6; # convergence tolerance for test
constraints Plain; # how it handles boundary conditions
numberer RCM; # renumber dof's to minimize band-width (optimization)
system BandGeneral; # how to store and solve the system of equations in the analysis (large model: try UmfPack)
test NormDispIncr $Tol 10; # 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 20; # apply gravity in 10 steps
set DGravity [expr 1.0/$NstepGravity]; # load increment
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity

# maintain constant gravity loads and reset time to zero
loadConst -time 0.0
puts "Model Built"

#########################################################################################
# Pushover Analysis #
#########################################################################################

if {$analysisType == "pushover"} {
puts "Running Pushover..."
# assign lateral loads and create load pattern
pattern Plain 200 Linear {
load 12 [expr 1*$kN] 0.0 0.0 0.0 0.0 0.0;
}

# recorder disp at node 3 and reactions at the bottom nodels
recorder Node -file "$dataDir/node3D.out" -time -node 12 -dof 1 disp
recorder Node -file "$dataDir/reactions.out" -time -node 11 21 1001 1002 1003 1004 -dof 1 reaction

# displacement parameters
set IDctrlNode 12; # node where disp is read for disp control
set IDctrlDOF 1; # degree of freedom read for disp control (1 = x displacement)
set Dmax [expr 220*$mm]; # maximum displacement of pushover
set Dincr [expr $Dmax/100.]; # displacement increment

# pushover analysis commands
constraints Plain;
numberer RCM
system BandGeneral;
test NormDispIncr 1.0e-6 30;
algorithm Newton;
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr;
analysis Static;
set ok 0
set currentDisp 0.0
while {$ok == 0 && $currentDisp < $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
test EnergyIncr 1.0e-8 1000 1
algorithm ModifiedNewton –initial
set ok [analyze 1]
test EnergyIncr 1.0e-8 1000 0
algorithm ModifiedNewton
}
set currentDisp [nodeDisp $IDctrlNode 1]
}

puts "node12disp: [nodeDisp 12 1], node4disp: [nodeDisp 12 1]";
puts "TargetDisp: $Dmax";
}

###########################################################################################
# Pseudo Static Analysis
###########################################################################################

if {$analysisType == "dynamic"} {
set IDctrlNode 12; # node where displacement is read for displacement control
set IDctrlDOF 1; # degree of freedom of displacement read for displacement control

set filename "ECCSDisp.disp"
set dispID [open $filename r]; #Load the vector with the history of displacement
set disp_hist [read $dispID]
close $dispID

set lengthDisp [llength $disp_hist]
set Dincr 0.01;

source LibAnalysisStaticParameters.tcl

# create load pattern for lateral pushover load
set Hload $NbRd; # 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
set iPushNode 12; # define nodes where lateral load is applied in static lateral analysis
pattern Plain 200 Linear {
load $IDctrlNode [expr 1*$N] 0.0 0.0 0.0 0.0 0.0;
}

# recorder disp at node 3 and reactions at the bottom nodels
recorder Node -file "$dataDir/node3D.out" -time -node 12 -dof 1 disp
recorder Node -file "$dataDir/reactions.out" -time -node 11 21 1001 1002 1003 1004 -dof 1 reaction

set fmt1 "%s Cyclic analysis: CtrlNode %.3i, dof %.1i, Disp=%.4f %s"; # format for screen/file output of DONE/PROBLEM analysis
set zeroD 0
set D0 0.0
foreach Dstep $disp_hist {
set D1 $Dstep
set Dincr [expr $D1 - $D0]
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
analysis Static
# ----------------------------------------------first analyze command------------------------
set ok [analyze 1]
# ----------------------------------------------if convergence failure-------------------------
if {$ok != 0} {
# if analysis fails, we try some other stuff
# performance is slower inside this loop global maxNumIterStatic; # max no. of iterations performed before "failure to converge" is ret'd
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 3000 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
set putout [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
puts $putout
return -1
}; # end if
}; # end if
# -----------------------------------------------------------------------------------------------------
set D0 $D1; # move to next step
}; # end Dstep

# -----------------------------------------------------------------------------------------------------
if {$ok != 0 } {
puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
} else {
puts [format $fmt1 "DONE" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
}
}



The analysis parameters are the following:



# --------------------------------------------------------------------------------------------------
# static analysis parameters
# I am setting all these variables as global variables (using variable rather than set command)
# so that these variables can be uploaded by a procedure
# Silvia Mazzoni & Frank McKenna, 2006
#

# 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
variable constraintsTypeStatic Plain; # default;
if { [info exists RigidDiaphragm] == 1} {
if {$RigidDiaphragm=="ON"} {
variable constraintsTypeStatic Lagrange; # for large model, try Transformation
}; # if rigid diaphragm is on
}; # if rigid diaphragm exists
constraints $constraintsTypeStatic

# 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
set numbererTypeStatic RCM
numberer $numbererTypeStatic

# 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
set systemTypeStatic BandGeneral; # try UmfPack for large model
system $systemTypeStatic

# 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 --
variable TolStatic 1.e-6; # Convergence Test: tolerance
variable maxNumIterStatic 10; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned;
variable printFlagStatic 0; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
variable testTypeStatic EnergyIncr ; # Convergence-test type
test $testTypeStatic $TolStatic $maxNumIterStatic $printFlagStatic;
# for improved-convergence procedure:
variable maxNumIterConvergeStatic 2000;
variable printFlagConvergeStatic 0;


# 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 --
variable algorithmTypeStatic Newton
algorithm $algorithmTypeStatic;

# 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.
set analysisTypeStatic Static
analysis $analysisTypeStatic

If needed, i can also provide the code i've made to make the fiber section.

If you need some more explanation about the model, don't esitate to ask.

Thanks in advance, and sorry for my terrible english.

Federico Iori.

MahaModdather
Posts: 1
Joined: Sat Feb 09, 2013 6:14 am
Location: Cairo University

Re: X-Braced Frame

Post by MahaModdather » Tue Jun 04, 2013 5:32 am

I have the same problem. Have you found what is causing the problem?

punitbarwani
Posts: 19
Joined: Tue Aug 06, 2013 10:48 pm
Location: Indore, India

Comparision Of Opensees And IDARC

Post by punitbarwani » Wed Aug 07, 2013 12:29 am

# --------------------------------------------------------------------------------------------------
# Example4. 2D Portal Frame-- Dynamic EQ input analysis
#
# execute this file after you have built the model, and after you apply gravity
#

# Uniform Earthquake ground motion (uniform acceleration input at all support nodes)
set GMdirection 1; # ground-motion direction
set GMfile "H-E12140" ; # ground-motion filenames
set GMfact 0.005; # ground-motion scaling factor

# set up ground-motion-analysis parameters
set DtAnalysis [expr 1.0*$sec]; # time-step Dt for lateral analysis
set TmaxAnalysis [expr 40.0*$sec]; # maximum duration of ground-motion analysis -- should be 50*$sec

# ----------- set up analysis parameters
source LibAnalysisDynamicParameters.tcl; # constraintsHandler,DOFnumberer,system-ofequations,convergenceTest,solutionAlgorithm,integrator

# define DAMPING--------------------------------------------------------------------------------------
# apply Rayleigh DAMPING from $xDamp
# D=$alphaM*M + $betaKcurr*Kcurrent + $betaKcomm*KlastCommit + $beatKinit*$Kinitial
set xDamp 0.05; # 2% damping ratio
set lambda [eigen 1]; # eigenvalue mode 1
set omega [expr pow($lambda,0.5)];
set alphaM 0.; # 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
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm; # RAYLEIGH damping

# --------------------------------- perform Dynamic Ground-Motion Analysis
# the following commands are unique to the Uniform Earthquake excitation
set IDloadTag 400; # for uniformSupport excitation
# read a PEER strong motion database file, extracts dt from the header and converts the file
# to the format OpenSees expects for Uniform/multiple-support ground motions
source ReadSMDFile.tcl; # read in procedure Multinition
# Uniform EXCITATION: acceleration input
set inFile $GMdir/$GMfile.at2
set outFile $GMdir/$GMfile.g3; # set variable holding new filename (PEER files have .at2/dt2 extension)
ReadSMDFile $inFile $outFile dt; # call procedure to convert the ground-motion file
set GMfatt [expr $g*$GMfact]; # data in input file is in g Unifts -- ACCELERATION TH
set AccelSeries "Series -dt $dt -filePath $outFile -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} { ; # 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 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 $testTypeDynamic $TolDynamic $maxNumIterDynamic 0
algorithm $algorithmTypeDynamic
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmTypeDynamic
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmTypeDynamic
}
}
}; # end if ok !0


puts "Ground Motion Done. End Time: [getTime]"
##############################################################################



file 2:-
--------------------------------------------------------------------------------------------------
# Example4. 2D Portal Frame-- Build Model
# nonlinearBeamColumn element, inelastic fiber section
#
#
# ^Y
# |
# 3____________(3)___________4 __
# | | |
# | | |
# | | |
# (1) (2) LCol
# | | |
# | | |
# | | |
# =1= =2= _|_ -------->X
# |----------LBeam-----------|
#

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

# define GEOMETRY -------------------------------------------------------------
set LCol [expr 6000*$mm]; # column length
set LBeam [expr 6000*$mm]; # beam length
set Weight [expr 5*$N/$mm]; # superstructure weight
# define section geometry
set HCol [expr 400.*$mm]; # Column Depth
set BCol [expr 400.*$mm]; # Column Width
set HBeam [expr 500.*$mm]; # Beam Depth
set BBeam [expr 300.*$mm]; # Beam Width

# calculated parameters
set PCol [expr $Weight]; # nodal dead-load weight per column
set Mass [expr $PCol/$g]; # nodal mass
set MCol [expr 1./12.*($Weight/$LBeam)*pow($LBeam,2)]; # beam-end moment due to distributed load.
# calculated geometry parameters
set ACol [expr $BCol*$HCol]; # cross-sectional area
set ABeam [expr $BBeam*$HBeam];
set IzCol [expr 1./12.*$BCol*pow($HCol,3)]; # Column moment of inertia
set IzBeam [expr 1./12.*$BBeam*pow($HBeam,3)]; # Beam moment of inertia

# nodal coordinates:
node 1 0 0; # node#, X, Y
node 2 $LBeam 0
node 3 0 $LCol
node 4 $LBeam $LCol

# Single point constraints -- Boundary Conditions
fix 1 1 1 0; # node DX DY RZ
fix 2 1 1 0; # node DX DY RZ
#fix 3 0 0 1
#fix 4 0 0 1

# nodal masses:
mass 3 $Mass 0. 0.; # node#, Mx My Mz, Mass=Weight/g, neglect rotational inertia at nodes
mass 4 $Mass 0. 0.

# Define ELEMENTS & SECTIONS -------------------------------------------------------------
set ColSecTag 1; # assign a tag number to the column section
set BeamSecTag 2; # assign a tag number to the beam section
# define section geometry
set coverCol [expr 40.*$mm]; # Column cover to reinforcing steel NA.
set numBarsCol 4; # number of longitudinal-reinforcement bars in each side of column section. (symmetric top & bot)
set barAreaCol [expr 1256*$mm*$mm]; # area of longitudinal-reinforcement bars
#set coverBeam [expr 40.*$mm]; # Column cover to reinforcing steel NA.
#set numBarsBeam 8; # number of longitudinal-reinforcement bars in each side of column section. (symmetric top & bot)
#set barAreaBeam [expr 2512*$mm*$mm]; # area of longitudinal-reinforcement bars

# MATERIAL parameters -------------------------------------------------------------------
set IDconcU 1; # material ID tag -- unconfined cover concrete
set IDreinf 2; # material ID tag -- reinforcement
# nominal concrete compressive strength
set fc [expr -25*$MPa]; # CONCRETE Compressive Strength, ksi (+Tension, -Compression)
set Ec [expr 5700*$MPa*sqrt(-$fc)]; # Concrete Elastic Modulus
# unconfined concrete
set fc1U $fc; # UNCONFINED concrete (todeschini parabolic model), maximum stress
set eps1U -0.003; # strain at maximum strength of unconfined concrete
set fc2U [expr 0.2*$fc1U]; # ultimate stress
set eps2U -0.05; # strain at ultimate stress
set lambda 0.1; # ratio between unloading slope at $eps2 and initial slope $Ec
# tensile-strength properties
set ftU [expr -0.14*$fc1U]; # tensile strength +tension
set Ets [expr $ftU/0.002]; # tension softening stiffness
# -----------
set Fy [expr 415*$MPa]; # STEEL yield stress
set Es [expr 200000.*$MPa]; # modulus of steel
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 Concrete02 $IDconcU $fc1U $eps1U $fc2U $eps2U $lambda $ftU $Ets; # build cover concrete (unconfined)
uniaxialMaterial Steel02 $IDreinf $Fy $Es $Bs $R0 $cR1 $cR2; # build reinforcement material

# FIBER SECTION properties -------------------------------------------------------------
# symmetric section
# y
# ^
# |
# --------------------- -- --
# | o o o | | -- cover
# | | |
# | | |
# z <--- | + | H
# | | |
# | | |
# | o o o | | -- cover
# --------------------- -- --
# |-------- B --------|
#
# RC section:
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 coreY [expr $coverY-$coverCol]
set coreZ [expr $coverZ-$coverCol]
set nfY 16; # number of fibers for concrete in y-direction
set nfZ 16; # number of fibers for concrete in z-direction
section fiberSec $ColSecTag {; # Define the fiber section
patch quadr $IDconcU $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch
layer straight $IDreinf $numBarsCol $barAreaCol -$coreY $coreZ -$coreY -$coreZ; # top layer reinfocement
layer straight $IDreinf $numBarsCol $barAreaCol $coreY $coreZ $coreY -$coreZ; # bottom layer reinforcement
}; # end of fibersection definition

# BEAM section:
section Elastic $BeamSecTag $Ec $ABeam $IzBeam; # elastic beam section

# 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 BeamTransfTag 2; # associate a tag to beam transformation (good practice to keep col and beam separate)
set ColTransfType Linear ; # options, Linear PDelta Corotational
geomTransf $ColTransfType $ColTransfTag ; # only columns can have PDelta effects (gravity effects)
geomTransf Linear $BeamTransfTag ;

# element connectivity:
set numIntgrPts 5; # number of integration points for force-based element
element nonlinearBeamColumn 1 1 3 $numIntgrPts $ColSecTag $ColTransfTag; # self-explanatory when using variables
element nonlinearBeamColumn 2 2 4 $numIntgrPts $ColSecTag $ColTransfTag;
element nonlinearBeamColumn 3 3 4 $numIntgrPts $BeamSecTag $BeamTransfTag;

# Define RECORDERS -------------------------------------------------------------
recorder Node -file $dataDir/DFree.out -time -node 3 4 -dof 1 2 3 disp; # displacements of free nodes
recorder Node -file $dataDir/DBase.out -time -node 1 2 -dof 1 2 3 disp; # displacements of support nodes
recorder Node -file $dataDir/RBase.out -time -node 1 2 -dof 1 2 3 reaction; # support reaction
recorder Drift -file $dataDir/Drift.out -time -iNode 1 2 -jNode 3 4 -dof 1 -perpDirn 2 ; # lateral drift
recorder Element -file $dataDir/FCol.out -time -ele 1 2 globalForce; # element forces -- column
recorder Element -file $dataDir/FBeam.out -time -ele 3 globalForce; # element forces -- beam
recorder Element -file $dataDir/ForceColSec1.out -time -ele 1 2 section 1 force; # Column section forces, axial and moment, node i
recorder Element -file $dataDir/DefoColSec1.out -time -ele 1 2 section 1 deformation; # section deformations, axial and curvature, node i
recorder Element -file $dataDir/ForceColSec$numIntgrPts.out -time -ele 1 2 section $numIntgrPts force; # section forces, axial and moment, node j
recorder Element -file $dataDir/DefoColSec$numIntgrPts.out -time -ele 1 2 section $numIntgrPts deformation; # section deformations, axial and curvature, node j
recorder Element -file $dataDir/ForceBeamSec1.out -time -ele 3 section 1 force; # Beam section forces, axial and moment, node i
recorder Element -file $dataDir/DefoBeamSec1.out -time -ele 3 section 1 deformation; # section deformations, axial and curvature, node i
recorder Element -file $dataDir/ForceBeamSec$numIntgrPts.out -time -ele 3 section $numIntgrPts force; # section forces, axial and moment, node j
recorder Element -file $dataDir/DefoBeamSec$numIntgrPts.out -time -ele 3 section $numIntgrPts deformation; # section deformations, axial and curvature, node j

# define GRAVITY -------------------------------------------------------------
set WzBeam [expr $Weight/$LBeam];
timeSeries Linear 1
pattern Plain 1 Linear {
eleLoad -ele 3 -type -beamUniform -$WzBeam ; # distributed superstructure-weight on beam
}
# 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 10; # apply gravity in 10 steps
set DGravity [expr 1./$NstepGravity]; # first load increment;
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity
# ------------------------------------------------- maintain constant gravity loads and reset time to zero
loadConst -time 0.0

puts "Model Built"
#######################################################################################




file 3:-
# --------------------------------------------------------------------------------------------------
# dynamic-analysis parameters
# I am setting all these variables as global variables (using variable rather than set command)
# so that these variables can be uploaded by a procedure
#


# Set up 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
variable constraintsTypeDynamic Transformation;
constraints $constraintsTypeDynamic ;

# 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
variable numbererTypeDynamic RCM
numberer $numbererTypeDynamic

# 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
variable systemTypeDynamic BandGeneral; # try UmfPack for large problems
system $systemTypeDynamic

# 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 --
variable TolDynamic 1.e-8; # Convergence Test: tolerance
variable maxNumIterDynamic 10; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned
variable printFlagDynamic 0; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
variable testTypeDynamic EnergyIncr; # Convergence-test type
test $testTypeDynamic $TolDynamic $maxNumIterDynamic $printFlagDynamic;
# for improved-convergence procedure:
variable maxNumIterConvergeDynamic 2000;
variable printFlagConvergeDynamic 0;

# 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 --
variable algorithmTypeDynamic ModifiedNewton
algorithm $algorithmTypeDynamic;

# 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
variable NewmarkGamma 0.5; # Newmark-integrator gamma parameter (also HHT)
variable NewmarkBeta 0.25; # Newmark-integrator beta parameter
variable integratorTypeDynamic Newmark;
integrator $integratorTypeDynamic $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.
variable analysisTypeDynamic Transient
analysis $analysisTypeDynamic
###########################################################################################################



file 4:-
# --------------------------------------------------------------------------------------------------
# LibUnits.tcl -- define system of units
#
#

# define UNITS ----------------------------------------------------------------------------
set mm 1.; # define basic units -- output units
set N 1.; # define basic units -- output units
set sec 1.; # define basic units -- output units
set LunitTXT "mm"; # define basic-unit text for output
set FunitTXT "N"; # define basic-unit text for output
set TunitTXT "sec"; # define basic-unit text for output
set MPa [expr $N/pow($mm,2)];
set mm2 [expr $mm*$mm]; # mm^2
set mm3 [expr $mm*$mm*$mm]; # mm^3
set cm [expr $mm*10]; # centimeter, needed for displacement input in MultipleSupport excitation
set m [expr $mm*1000];
set KN [expr $N*1000];
set PI 3.14; # define constants
set g 9810*$mm/pow($sec,2); # gravitational acceleration
#################################################################################################



file 5:-
###########################################################################
# ReadSMDFile $inFilename $outFilename $dt #
###########################################################################
# read gm input format
#
#
#
# A procedure which parses a ground motion record from the PEER
# strong motion database by finding dt in the record header, then
# echoing data values to the output file.
#
# Formal arguments
# inFilename -- file which contains PEER strong motion record
# outFilename -- file to be written in format G3 can read
# dt -- time step determined from file header
#
# Assumptions
# The header in the PEER record is, e.g., formatted as follows:
# PACIFIC ENGINEERING AND ANALYSIS STRONG-MOTION DATA
# IMPERIAL VALLEY 10/15/79 2319, EL CENTRO ARRAY 6, 230
# ACCELERATION TIME HISTORY IN UNITS OF G
# NPTS= 3930, DT= .00500 SEC

proc ReadSMDFile {inFilename outFilename dt} {
# read gm input format

# Pass dt by reference
upvar $dt DT

# Open the input file and catch the error if it can't be read
if [catch {open $inFilename r} inFileID] {
puts stderr "Cannot open $inFilename for reading"
} else {
# Open output file for writing
set outFileID [open $outFilename w]

# Flag indicating dt is found and that ground motion
# values should be read -- ASSUMES dt is on last line
# of header!!!
set flag 0

# Look at each line in the file
foreach line [split [read $inFileID] \n] {

if {[llength $line] == 0} {
# Blank line --> do nothing
continue
} elseif {$flag == 1} {
# Echo ground motion values to output file
puts $outFileID $line
} else {
# Search header lines for dt
foreach word [split $line] {
# Read in the time step
if {$flag == 1} {
set DT $word
break
}
# Find the desired token and set the flag
if {[string match $word "DT="] == 1} {set flag 1}
}
}
}

# Close the output file
close $outFileID

# Close the input file
close $inFileID
}
};
###########################################################################



file 6:-
puts " -- Uniaxial Inelastic Material, Fiber RC-Section, Nonlinear Model --"
puts " -- Multiple-support Earthquake Excitation --"
source Ex4.Portal2D.build.InelasticFiberSection.tcl
source Ex4.Portal2D.analyze.Dynamic.EQ.Uniform.tcl

############################################################################



this is modelling, is there any problem with modelling, plz anyone can help me to compare it with idarc resutl of Story drift or Drift.....................

can anyone help me to compare drift result of OPENSEES and IDARC of a portal frame, analysis type is dynamic with time history everything in modelling is done but some due to some parameters the results are different
My email id is " punits95@hotmail.com " & " coolpunitrocks@gmail.com " plz plz plz contact me here or at mail i will send u all result and modelling of both OPENSEES and IDARC.....
thank you!!

Post Reply