attached, you can find two procedures for generating double angle sections in which bending and buckling take place over 2-2 and 3-3 axes respectively.
I hope it will be useful.
Code: Select all
# written: Pejman Alanjari
# This Procedure creates a double angle for bending and buckling over 3-3 Axis
# input parameters
# secID - section ID number
# matID - material ID number
# h = Outside depth
# B = Horizental Leg width (BUCKLING OVER STRONGER(3-3) AXIS)
# tw = Leg thickness
# BB = Back to Back thickness
# nfslw = number of fibers along shorter leg width
# nfslt = number of fibers along shorter leg thickness
# nfllw = number of fibers along longer leg width
# nfllt = number of fibers along longer leg thickness
proc DoubleAngleS { secID matID h B tw BB nfslw nfslt nfllw nfllt} {
#
set b [expr $B-$tw]
set A [expr ($b*$tw+$h*$tw)*2.0]
set X [expr ($b*$tw*$tw/2.0+$h*$tw*$h/2.0)/$A]
set c [expr $B+$BB/2.0]
set y1 [expr $X-$tw]
set y2 $X
set y3 $y2
set y4 $y1
set y5 [expr -($h-$X)]
set y6 $y2
set y7 $y5
set z1 [expr $c-$b]
set z2 $z1
set z3 $c
set z4 $z3
set z5 [expr $BB/2]
set z6 $z5
set z7 $z1
set z8 [expr $z7*(-1)]
set z9 [expr $z2*(-1)]
set z10 [expr $z6*(-1)]
set z11 [expr $z5*(-1)]
set z12 [expr $z4*(-1)]
set z13 [expr $z3*(-1)]
set z14 [expr $z1*(-1)]
set nfb [expr $nfslw-$nfllt]
#puts "$y1 $z1 $y2 $z2 $y3 $z3 $y4 $z4 $y5 $z5 $y6 $z6 $y7 $y8"
section fiberSec $secID {
patch quadr $matID $nfllw $nfllt $y5 $z5 $y6 $z6 $y2 $z2 $y7 $z7
patch quadr $matID $nfslt $nfb $y1 $z1 $y2 $z2 $y3 $z3 $y4 $z4
patch quadr $matID $nfllw $nfllt $y7 $z8 $y2 $z9 $y6 $z10 $y5 $z11
patch quadr $matID $nfslt $nfb $y4 $z12 $y3 $z13 $y2 $z9 $y1 $z14
}
}
Code: Select all
# written: Pejman Alanjari
# This Procedure creates a double angle for bending and buckling over 2-2 Axis
# input parameters
# secID - section ID number
# matID - material ID number
# h = Outside depth
# B = Horizental Leg width (BUCKLING OVER 2-2 AXIS)
# tw = Leg thickness
# BB = Back to Back thickness
# nfslw = number of fibers along shorter leg width
# nfslt = number of fibers along shorter leg thickness
# nfllw = number of fibers along longer leg width
# nfllt = number of fibers along longer leg thickness
proc DoubleAngle { secID matID h B tw BB nfslw nfslt nfllw nfllt} {
#
set b [expr $B-$tw]
set A [expr ($b*$tw+$h*$tw)*2.0]
set X [expr ($b*$tw*$tw/2.0+$h*$tw*$h/2.0)/$A]
set c [expr $B+$BB/2.0]
set y1 [expr -$c]
set y2 [expr -($c-$b)]
set y3 $y1
set y4 $y2
set y5 $y2
set y6 [expr -($BB/2)]
set y7 [expr $y4*(-1)]
set y8 [expr $y3*(-1)]
set y9 [expr $y1*(-1)]
set y10 [expr $y2*(-1)]
set y11 [expr $y6*(-1)]
set y12 [expr $y5*(-1)]
set z1 [expr $X]
set z2 $z1
set z3 [expr $X-$tw]
set z4 $z3
set z5 [expr -($h-$X)]
set z6 $z5
set nfb [expr $nfslw-$nfllt]
#
#puts "$y1 $z1 $y2 $z2 $y3 $z3 $y4 $z4 $y5 $z5 $y6 $z6 $y7 $y8"
section fiberSec $secID {
patch quadr $matID $nfb $nfslt $y3 $z3 $y4 $z4 $y2 $z2 $y1 $z1
patch quadr $matID $nfllt $nfllw $y5 $z5 $y6 $z6 $y6 $z2 $y2 $z2
patch quadr $matID $nfb $nfslt $y7 $z4 $y8 $z3 $y9 $z1 $y10 $z2
patch quadr $matID $nfllt $nfllw $y11 $z6 $y12 $z5 $y10 $z2 $y11 $z2
}
}