# Define a procedure which generates a circular reinforced concrete section # with one layer of steel evenly distributed around the perimeter and a confined core.
# Writes section information in FEDEAS format to the TCL file stream fedeas
#
# Formal arguments
# id - tag for the section that is generated by this procedure
# ri - inner radius of the section
# ro - overall (outer) radius of the section
# cover - cover thickness
# coreID - material tag for the core patch
# coverID - material tag for the cover patches
# steelID - material tag for the reinforcing steel
# numBars - number of reinforcing bars around the section perimeter
# barArea - cross-sectional area of each reinforcing bar
# nfCoreR - number of radial divisions in the core (number of "rings")
# nfCoreT - number of theta divisions in the core (number of "wedges")
# nfCoverR - number of radial divisions in the cover
# nfCoverT - number of theta divisions in the cover
# fedeas - file stream to which FEDEAS information is written
# Calling procedure should define a TCL file stream, e.g.
# set fedeas [open fedeas.out w]
#
# Notes
# The center of the reinforcing bars are placed at the inner radius
# The core concrete ends at the inner radius (same as reinforcing bars)
# The reinforcing bars are all the same size
# The center of the section is at (0,0) in the local axis system
# Zero degrees is along section y-axis
# Assumes G3 material tags and FEDEAS material tags are consistent
#
proc RCcircSectionFEDEAS {id ri ro cover coreID coverID steelID numBars barArea nfCoreR nfCoreT nfCoverR nfCoverT fedeas} {
# Define the fiber section
section fiberSec $id {
puts $fedeas fsection; # FEDEAS fsection command
puts $fedeas $id; # fsection id
puts $fedeas 2,0; # 2 patches, reference axis is geometric centroid
# Core radius
set rc [expr $ro-$cover]
# Define the core patch
patch circ $coreID $nfCoreT $nfCoreR 0 0 $ri $rc 0 360
puts $fedeas $coreID,2,$nfCoreR,$nfCoreT,1,1; # matID,circular,nfRad,nfAng,propIJ,propJK
puts $fedeas 0,0; # (y,z) center of patch
puts $fedeas $ri,$rc; # R1,R2
puts $fedeas 0,360; # theta1,theta2
puts $fedeas 0,0; # NOT USED
# Define the cover patch
patch circ $coverID $nfCoverT $nfCoverR 0 0 $rc $ro 0 360
puts $fedeas $coverID,2,$nfCoverR,$nfCoverT,1,1
puts $fedeas 0,0
puts $fedeas $rc,$ro
puts $fedeas 0,360
puts $fedeas 0,0
if {$numBars <= 0} {
puts $fedeas 0
puts $fedeas ""
return
}
# Determine angle increment between bars
set theta [expr 360.0/$numBars]
puts $fedeas 1; # Number of layers
# Define the reinforcing layer
layer circ $steelID $numBars $barArea 0 0 $rc $theta 360
puts $fedeas $steelID,2,$numBars,,$barArea; # matID,circular,numBars,<barSize>,barArea
puts $fedeas 0,0; # (y,z) center of arc
puts $fedeas $rc; # RL
puts $fedeas $theta,360; # theta1,theta2
puts $fedeas ""
}
}