RCcircSectionFEDEAS.tcl

# 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 ""

}

}