Generation of Steel Bracing with initial imperfection
Moderators: silvia, selimgunay, Moderators
-
- Posts: 2
- Joined: Mon Oct 23, 2006 1:43 pm
- Location: Ecole Polytechnique de Montreal
Generation of Steel Bracing with initial imperfection
Hi all,
I trying to make a tcl file for parametric generation of steel bracing member with initial imperfection. Initial Imperfection is a Sin function. when I run this file an unknown error will apear. Please check my file.
Here is the file:
# Units: kN, m
# Parameter identifying the number of Segments
# ------------------------------
# Start of model generation
# ------------------------------
# Create ModelBuilder
model BasicBuilder -ndm 2 -ndf 3
set L 6.0 ; # Overall Length of Bracing #
set Im 750; # Required Maximum Initail Imperfection ratio at Midlle of Bracing #
set numSeg 10; # Number of required Segment along Bracing Length #
set u0 [expr $L/$Im]; # Maximum Imperfection at Middle of Bracing 3
set pi [expr 2*asin(1.0)]
# Create nodes
# Set parameters for overall model geometry
set SegLen [expr $L/$numSeg]
set nodeID 1
# Define nodes
for {set i 0} {$i <= $numSeg} {incr i 1} {
set xDim [expr $i * $SegLen]
# tag X Y
node [expr $nodeID+1] [expr $u0*sin($pi*$xDim/$L)] 0
incr nodeID 1
}
# Boundry Condition for Each Ends of Bracing #
# node DX DY RZ
fix 1 1 1 0
fix [expr $numSeg+1] 0 1 0
# Define material #
set fy 240000; #Yield Stress
set E 2.1e8; #Young Modolus
set b 0.03; #Strain Hardeing Ratio
uniaxialMaterial Steel02 1 $fy $E $b 18.5 0.925 0.15
#Define Section #
source Wsection2.tcl
# Define H330-8-15*300 #
set dc 0.33
set tw 0.008
set tf 0.015
set bf1 0.3
set bf2 0.20
Wsection 1 1 $dc $tw $bf1 $tf 2 10 30 2
# Number of integration points
set nP 4
# Geometric transformation
geomTransf Corotational 1
set ElementID 1
# Define elements
for {set i 0} {$i < $numSeg} {incr i 1} {
# set some parameters
set iNode [expr $i + 1]
set jNode [expr $i + 2]
# add the Brace Element
for {set j $iNode} {$j <= [expr $jNode-1]} {incr j 1} {
element nonlinearBeamColumn $ElementID $j [expr $j+1] $nP 1 1
# increment the parameters
incr $ElementID 1
}
}
# End of model generation
# Define Pushing Load
pattern Plain 1 Linear {
load [expr $numSeg +1] 1 0.0 0.0
}
# Start of recorder generation
recorder Node -file NodeDisplacement.out -time -node [expr $numSeg +1] -dof 1 disp
recorder Node -file Reaction.out -time -node 1 -dof 1 Reaction
# Source in some commands to display the model
# comment out one of lines
set displayMode "displayON"
#set displayMode "displayOFF"
if {$displayMode == "displayON"} {
# a window to plot the nodal displacements versus load for node 3
recorder plot NodeDispalcement.out EndNodeDisplacement 10 400 300 300 -columns 2 1
}
# End of recorder generation
# Start of Nonlinear Buckling Analysis
# Define Loding Control #
set DmaxPush [expr -3*0.04*$L; # Maximum Dispalcement at end of Brace for Drift Angle 0.04 Radians #
set DxPush -0.001; # Incremental dispalcement
set Nsteps [expr int($DmaxPush/$DxPush)]
integrator DisplacementControl [expr $numSeg+1] 1 $DxPush
constraints Transformation
numberer RCM
system BandGeneral
test EnergyIncr 1.0e-20 25
algorithm Newton
analysis Static
analyze $Nsteps
----- source for Rotated Wide flamge section ----
# Wsection2.tcl: tcl procedure for creating a wide flange steel fiber section
# written: Remo M. de Souza
# date: 06/99
# modified: 08/99 (according to the new general modelbuilder)
# modified: 7/Oct/05, to include MatlabOut functionality, so
# that you can plot the section fibers in Matlab!
# +-----------------------+ + +
# | | | tf |
# +----------+ +----------+ + |
# | | | |
# y | | | |
# | | | | |
# z--+ ->| |<- tw | dw | d
# | | | |
# | | | |
# | | | |
# +----------+ +----------+ + |
# | | | tf |
# +-----------------------+ + +
# bf
# input parameters
# secID - section ID number
# matID - material ID number
# d = nominal depth
# tw = web thickness
# bf = flange width
# tf = flange thickness
# nfdw = number of fibers along web depth
# nftw = number of fibers along web thickness
# nfbf = number of fibers along flange width
# nftf = number of fibers along flange thickness
proc Wsection2 {secID matID d tw bf tf nfdw nftw nfbf nftf {MatlabOut 0}} {
set dw [expr $d - 2 * $tf]
if {$dw<=0} {
puts "Error: Wsection beam depth is too small"
exit
}
set y1 [expr -$bf/2]
set y2 [expr -$tw/2]
set y3 [expr $tw/2]
set y4 [expr $bf/2]
set z1 [expr -$d/2]
set z2 [expr -$dw/2]
set z3 [expr $dw/2]
set z4 [expr $d/2]
#
section fiberSec $secID {
# nfIJ nfJK yI zI yJ zJ yK zK yL zL
patch quadr $matID $nftf $nfbf $y1 $z2 $y1 $z1 $y4 $z1 $y4 $z2
patch quadr $matID $nfdw $nftw $y2 $z3 $y2 $z2 $y3 $z2 $y3 $z3
patch quadr $matID $nftf $nfbf $y1 $z4 $y1 $z3 $y4 $z3 $y4 $z4
}
if { $MatlabOut == 1 } {
set matfile [open "WsectionfiberS$secID.out" "w"]
puts $matfile "Wsection d=$d, tw=$tw, bf=$bf, tf=$tf"
puts $matfile "patch quadr $matID $nfbf $nftf $y1 $z1 $y1 $z2 $y4 $z2 $y4 $z1
"
puts $matfile "patch quadr $matID $nftw $nfdw $y2 $z2 $y2 $z3 $y3 $z3 $y3 $z2
"
puts $matfile "patch quadr $matID $nfbf $nftf $y1 $z3 $y4 $z3 $y4 $z4 $y1 $z4"
close $matfile
}
}
I trying to make a tcl file for parametric generation of steel bracing member with initial imperfection. Initial Imperfection is a Sin function. when I run this file an unknown error will apear. Please check my file.
Here is the file:
# Units: kN, m
# Parameter identifying the number of Segments
# ------------------------------
# Start of model generation
# ------------------------------
# Create ModelBuilder
model BasicBuilder -ndm 2 -ndf 3
set L 6.0 ; # Overall Length of Bracing #
set Im 750; # Required Maximum Initail Imperfection ratio at Midlle of Bracing #
set numSeg 10; # Number of required Segment along Bracing Length #
set u0 [expr $L/$Im]; # Maximum Imperfection at Middle of Bracing 3
set pi [expr 2*asin(1.0)]
# Create nodes
# Set parameters for overall model geometry
set SegLen [expr $L/$numSeg]
set nodeID 1
# Define nodes
for {set i 0} {$i <= $numSeg} {incr i 1} {
set xDim [expr $i * $SegLen]
# tag X Y
node [expr $nodeID+1] [expr $u0*sin($pi*$xDim/$L)] 0
incr nodeID 1
}
# Boundry Condition for Each Ends of Bracing #
# node DX DY RZ
fix 1 1 1 0
fix [expr $numSeg+1] 0 1 0
# Define material #
set fy 240000; #Yield Stress
set E 2.1e8; #Young Modolus
set b 0.03; #Strain Hardeing Ratio
uniaxialMaterial Steel02 1 $fy $E $b 18.5 0.925 0.15
#Define Section #
source Wsection2.tcl
# Define H330-8-15*300 #
set dc 0.33
set tw 0.008
set tf 0.015
set bf1 0.3
set bf2 0.20
Wsection 1 1 $dc $tw $bf1 $tf 2 10 30 2
# Number of integration points
set nP 4
# Geometric transformation
geomTransf Corotational 1
set ElementID 1
# Define elements
for {set i 0} {$i < $numSeg} {incr i 1} {
# set some parameters
set iNode [expr $i + 1]
set jNode [expr $i + 2]
# add the Brace Element
for {set j $iNode} {$j <= [expr $jNode-1]} {incr j 1} {
element nonlinearBeamColumn $ElementID $j [expr $j+1] $nP 1 1
# increment the parameters
incr $ElementID 1
}
}
# End of model generation
# Define Pushing Load
pattern Plain 1 Linear {
load [expr $numSeg +1] 1 0.0 0.0
}
# Start of recorder generation
recorder Node -file NodeDisplacement.out -time -node [expr $numSeg +1] -dof 1 disp
recorder Node -file Reaction.out -time -node 1 -dof 1 Reaction
# Source in some commands to display the model
# comment out one of lines
set displayMode "displayON"
#set displayMode "displayOFF"
if {$displayMode == "displayON"} {
# a window to plot the nodal displacements versus load for node 3
recorder plot NodeDispalcement.out EndNodeDisplacement 10 400 300 300 -columns 2 1
}
# End of recorder generation
# Start of Nonlinear Buckling Analysis
# Define Loding Control #
set DmaxPush [expr -3*0.04*$L; # Maximum Dispalcement at end of Brace for Drift Angle 0.04 Radians #
set DxPush -0.001; # Incremental dispalcement
set Nsteps [expr int($DmaxPush/$DxPush)]
integrator DisplacementControl [expr $numSeg+1] 1 $DxPush
constraints Transformation
numberer RCM
system BandGeneral
test EnergyIncr 1.0e-20 25
algorithm Newton
analysis Static
analyze $Nsteps
----- source for Rotated Wide flamge section ----
# Wsection2.tcl: tcl procedure for creating a wide flange steel fiber section
# written: Remo M. de Souza
# date: 06/99
# modified: 08/99 (according to the new general modelbuilder)
# modified: 7/Oct/05, to include MatlabOut functionality, so
# that you can plot the section fibers in Matlab!
# +-----------------------+ + +
# | | | tf |
# +----------+ +----------+ + |
# | | | |
# y | | | |
# | | | | |
# z--+ ->| |<- tw | dw | d
# | | | |
# | | | |
# | | | |
# +----------+ +----------+ + |
# | | | tf |
# +-----------------------+ + +
# bf
# input parameters
# secID - section ID number
# matID - material ID number
# d = nominal depth
# tw = web thickness
# bf = flange width
# tf = flange thickness
# nfdw = number of fibers along web depth
# nftw = number of fibers along web thickness
# nfbf = number of fibers along flange width
# nftf = number of fibers along flange thickness
proc Wsection2 {secID matID d tw bf tf nfdw nftw nfbf nftf {MatlabOut 0}} {
set dw [expr $d - 2 * $tf]
if {$dw<=0} {
puts "Error: Wsection beam depth is too small"
exit
}
set y1 [expr -$bf/2]
set y2 [expr -$tw/2]
set y3 [expr $tw/2]
set y4 [expr $bf/2]
set z1 [expr -$d/2]
set z2 [expr -$dw/2]
set z3 [expr $dw/2]
set z4 [expr $d/2]
#
section fiberSec $secID {
# nfIJ nfJK yI zI yJ zJ yK zK yL zL
patch quadr $matID $nftf $nfbf $y1 $z2 $y1 $z1 $y4 $z1 $y4 $z2
patch quadr $matID $nfdw $nftw $y2 $z3 $y2 $z2 $y3 $z2 $y3 $z3
patch quadr $matID $nftf $nfbf $y1 $z4 $y1 $z3 $y4 $z3 $y4 $z4
}
if { $MatlabOut == 1 } {
set matfile [open "WsectionfiberS$secID.out" "w"]
puts $matfile "Wsection d=$d, tw=$tw, bf=$bf, tf=$tf"
puts $matfile "patch quadr $matID $nfbf $nftf $y1 $z1 $y1 $z2 $y4 $z2 $y4 $z1
"
puts $matfile "patch quadr $matID $nftw $nfdw $y2 $z2 $y2 $z3 $y3 $z3 $y3 $z2
"
puts $matfile "patch quadr $matID $nfbf $nftf $y1 $z3 $y4 $z3 $y4 $z4 $y1 $z4"
close $matfile
}
}
Re: Generation of Steel Bracing with initial imperfection
Hello everybody
I've studied some articles about modeling braces in OpenSees considering initial imperfection,but the imperfection size was different.some of them assumed to be L/250, some of them L/1000 or L/500. what's the reason of this difference?
thank's in advance.
I've studied some articles about modeling braces in OpenSees considering initial imperfection,but the imperfection size was different.some of them assumed to be L/250, some of them L/1000 or L/500. what's the reason of this difference?
thank's in advance.
Re: Generation of Steel Bracing with initial imperfection
Sometimes the imperfection is used to reach the correct compression strenght stipulated by Codes. According to Steel Codes, the imperfection shall smaller than L/1000.
Edgar TAPIA
-
- Posts: 3
- Joined: Wed Sep 05, 2012 1:43 pm
- Location: urmia
Re: Generation of Steel Bracing with initial imperfection
you can at first make a text,only for imperfection
imperfection can assume as sine function with strain=0.001l
you should use fiber section .
i had a code
if you want it,please contact me
imperfection can assume as sine function with strain=0.001l
you should use fiber section .
i had a code
if you want it,please contact me
Re: Generation of Steel Bracing with initial imperfection
there is a proc:
proc HSSbrace {eleTag iNode jNode secType matTag numSeg Im transfTag args}
in the Steel2d.tcl file here:
http://opensees.berkeley.edu/WebSVN/lis ... dModels%2F
that you might want to look at.
proc HSSbrace {eleTag iNode jNode secType matTag numSeg Im transfTag args}
in the Steel2d.tcl file here:
http://opensees.berkeley.edu/WebSVN/lis ... dModels%2F
that you might want to look at.