/projects/offical-examples/example5.frame2d/BuildRCrectSection.tcl
TCL | 93 lines | 18 code | 5 blank | 70 comment | 0 complexity | 4a95e319d732c11499a45e833e740232 MD5 | raw file
- proc BuildRCrectSection {id HSec BSec coverH coverB coreID coverID steelID numBarsTop barAreaTop numBarsBot barAreaBot numBarsIntTot barAreaInt nfCoreY nfCoreZ nfCoverY nfCoverZ} {
- ################################################
- # BuildRCrectSection $id $HSec $BSec $coverH $coverB $coreID $coverID $steelID $numBarsTop $barAreaTop $numBarsBot $barAreaBot $numBarsIntTot $barAreaInt $nfCoreY $nfCoreZ $nfCoverY $nfCoverZ
- ################################################
- # Build fiber rectangular RC section, 1 steel layer top, 1 bot, 1 skin, confined core
- # Define a procedure which generates a rectangular reinforced concrete section
- # with one layer of steel at the top & bottom, skin reinforcement and a
- # confined core.
- # by: Silvia Mazzoni, 2006
- # adapted from Michael H. Scott, 2003
- #
- # Formal arguments
- # id - tag for the section that is generated by this procedure
- # HSec - depth of section, along local-y axis
- # BSec - width of section, along local-z axis
- # cH - distance from section boundary to neutral axis of reinforcement
- # cB - distance from section boundary to side of reinforcement
- # coreID - material tag for the core patch
- # coverID - material tag for the cover patches
- # steelID - material tag for the reinforcing steel
- # numBarsTop - number of reinforcing bars in the top layer
- # numBarsBot - number of reinforcing bars in the bottom layer
- # numBarsIntTot - TOTAL number of reinforcing bars on the intermediate layers, symmetric about z axis and 2 bars per layer-- needs to be an even integer
- # barAreaTop - cross-sectional area of each reinforcing bar in top layer
- # barAreaBot - cross-sectional area of each reinforcing bar in bottom layer
- # barAreaInt - cross-sectional area of each reinforcing bar in intermediate layer
- # nfCoreY - number of fibers in the core patch in the y direction
- # nfCoreZ - number of fibers in the core patch in the z direction
- # nfCoverY - number of fibers in the cover patches with long sides in the y direction
- # nfCoverZ - number of fibers in the cover patches with long sides in the z direction
- #
- # y
- # ^
- # |
- # --------------------- -- --
- # | o o o | | -- coverH
- # | | |
- # | o o | |
- # z <--- | + | HSec
- # | o o | |
- # | | |
- # | o o o o o o | | -- coverH
- # --------------------- -- --
- # |-------Bsec------|
- # |---| coverB |---|
- #
- # y
- # ^
- # |
- # ---------------------
- # |\ cover /|
- # | \------Top------/ |
- # |c| |c|
- # |o| |o|
- # z <-----|v| core |v| HSec
- # |e| |e|
- # |r| |r|
- # | /-------Bot------\ |
- # |/ cover \|
- # ---------------------
- # Bsec
- #
- #
- # Notes
- # The core concrete ends at the NA of the reinforcement
- # The center of the section is at (0,0) in the local axis system
- #
- set coverY [expr $HSec/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
- set coverZ [expr $BSec/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-$coverH]; # The distance from the section z-axis to the edge of the core concrete -- edge of the core concrete/inner edge of cover concrete
- set coreZ [expr $coverZ-$coverB]; # The distance from the section y-axis to the edge of the core concrete -- edge of the core concrete/inner edge of cover concrete
- set numBarsInt [expr $numBarsIntTot/2]; # number of intermediate bars per side
-
- # Define the fiber section
- section fiberSec $id {
- # Define the core patch
- patch quadr $coreID $nfCoreZ $nfCoreY -$coreY $coreZ -$coreY -$coreZ $coreY -$coreZ $coreY $coreZ
-
- # Define the four cover patches
- patch quadr $coverID 2 $nfCoverY -$coverY $coverZ -$coreY $coreZ $coreY $coreZ $coverY $coverZ
- patch quadr $coverID 2 $nfCoverY -$coreY -$coreZ -$coverY -$coverZ $coverY -$coverZ $coreY -$coreZ
- patch quadr $coverID $nfCoverZ 2 -$coverY $coverZ -$coverY -$coverZ -$coreY -$coreZ -$coreY $coreZ
- patch quadr $coverID $nfCoverZ 2 $coreY $coreZ $coreY -$coreZ $coverY -$coverZ $coverY $coverZ
-
- # define reinforcing layers
- layer straight $steelID $numBarsInt $barAreaInt -$coreY $coreZ $coreY $coreZ; # intermediate skin reinf. +z
- layer straight $steelID $numBarsInt $barAreaInt -$coreY -$coreZ $coreY -$coreZ; # intermediate skin reinf. -z
- layer straight $steelID $numBarsTop $barAreaTop $coreY $coreZ $coreY -$coreZ; # top layer reinfocement
- layer straight $steelID $numBarsBot $barAreaBot -$coreY $coreZ -$coreY -$coreZ; # bottom layer reinforcement
-
- }; # end of fibersection definition
- }; # end of procedure
-