RC fiber sections modeling
Moderators: silvia, selimgunay, Moderators
RC fiber sections modeling
I read from this board, and it is quite acceptable for me, that a fiber section doesn't even know the meaning of "overlap": the fact that fibers or patches are located in a same position is not relevant from a computational point of view.
My question to users with more experience than me is: should I model the RC sections removing in some way concrete fibers from positions where reinforcement bars are located? If yes how would you do that? (I tried removing negative areas with same patch of the bars, but it doesn'work because an positive number seems to be requested. I think the solution could be the creation of another patch of concrete between the bars.)
I'm asking this because I think I once read a tip in the user documentation saying something like "remove RC material from bars locations" but I'm not able to find it anymore. Moreover I think this idea is correct: even though the area that would be removed is quite small (say 1-2%), its location is on the external part of the section, thus it has greater influence over inertia, tensions, etc.
I would be grateful for any comment or reply to this topic.
Thank you.
My question to users with more experience than me is: should I model the RC sections removing in some way concrete fibers from positions where reinforcement bars are located? If yes how would you do that? (I tried removing negative areas with same patch of the bars, but it doesn'work because an positive number seems to be requested. I think the solution could be the creation of another patch of concrete between the bars.)
I'm asking this because I think I once read a tip in the user documentation saying something like "remove RC material from bars locations" but I'm not able to find it anymore. Moreover I think this idea is correct: even though the area that would be removed is quite small (say 1-2%), its location is on the external part of the section, thus it has greater influence over inertia, tensions, etc.
I would be grateful for any comment or reply to this topic.
Thank you.
m12s12sa
-FL-
-FL-
Re: RC fiber sections modeling
Simplest way would be to modify the elastic modulus of the steel in position of the concrete fibers by subtracting the elastic modulus of concrete from the steel
-
- Posts: 1
- Joined: Thu Aug 04, 2011 7:11 am
- Location: UC Berkeley
Re: RC fiber sections modeling
For a circular section, I've created concrete patches between bar locations skipping over the bar diameter using the code below. This only creates the portion between bars, it doesn't create the concrete cover or confined concrete.
set i 0
while {$i<[expr $Nbars+1]} {
set i [expr $i+1]
set startAngU1 [expr $startAngR+$theta+($i-1)*360/$Nbars]
set endAngU1 [expr $startAngR-$theta+($i)*360/$Nbars]
patch circ $ID_concU $numSubdivCircU1 $numSubdivRadU1 $yCenter $zCenter $extRadC $intRadU $startAngU1 $endAngU1
}
where
Nbars is the number of bars in the concentric layer
startAngR is the angle to the first bar in degrees
theta is the angle to skip over: 1/2 of the bar diameter
set theta [expr ($db/2/$radius)*180/$pi];
radius is the distance from the section centroid to the center of the longitudinal bar
Most of the other variables should be self explanatory or are discernible from the circ command documentation.
set i 0
while {$i<[expr $Nbars+1]} {
set i [expr $i+1]
set startAngU1 [expr $startAngR+$theta+($i-1)*360/$Nbars]
set endAngU1 [expr $startAngR-$theta+($i)*360/$Nbars]
patch circ $ID_concU $numSubdivCircU1 $numSubdivRadU1 $yCenter $zCenter $extRadC $intRadU $startAngU1 $endAngU1
}
where
Nbars is the number of bars in the concentric layer
startAngR is the angle to the first bar in degrees
theta is the angle to skip over: 1/2 of the bar diameter
set theta [expr ($db/2/$radius)*180/$pi];
radius is the distance from the section centroid to the center of the longitudinal bar
Most of the other variables should be self explanatory or are discernible from the circ command documentation.
Re: RC fiber sections modeling
Thanks mschoettler, your solution is very similar to mine.
By the way I finally found the 'reference' that gave me the idea of subtracting reinforcing steel from bar location: it wasn't on the user documentation, but on this board:
http://opensees.berkeley.edu/community/ ... =2&t=48236&
in the second reply by vesna.
I'm working with opensees because I need its flexibility for the parametric analysis of RC piers I'm doing. However, given the huge number of the combinations of parameters, I need to the fiber model of the section to be as light as possible. If I place one concrete intra-bar fiber for every reinforcement fiber section the model will be consistently more complex. Do other opensees users consider these subtraction from bar locations, or is it a nonessential detail?
I have another question about fibers. Is it possible to set a recorder element to follow a fiber generated by a patch or a layer? How would you do that with a circular patch for example? For a single fiber I would use something like:
recorder Element -xml out/MomentCurvature/reinfib$ID.xml -time -ele 1 section $secTag fiber 1 strain
By the way I finally found the 'reference' that gave me the idea of subtracting reinforcing steel from bar location: it wasn't on the user documentation, but on this board:
http://opensees.berkeley.edu/community/ ... =2&t=48236&
in the second reply by vesna.
I'm working with opensees because I need its flexibility for the parametric analysis of RC piers I'm doing. However, given the huge number of the combinations of parameters, I need to the fiber model of the section to be as light as possible. If I place one concrete intra-bar fiber for every reinforcement fiber section the model will be consistently more complex. Do other opensees users consider these subtraction from bar locations, or is it a nonessential detail?
I have another question about fibers. Is it possible to set a recorder element to follow a fiber generated by a patch or a layer? How would you do that with a circular patch for example? For a single fiber I would use something like:
recorder Element -xml out/MomentCurvature/reinfib$ID.xml -time -ele 1 section $secTag fiber 1 strain
m12s12sa
-FL-
-FL-
Re: RC fiber sections modeling
Example for a circular RC section with evenly distributed steel bars
-------TCL SCRIPT for the FIBER SECTION-------------------------------------
section fiberSec $count_1sect {
set rc [expr $dc/2]; # Core radius
patch circ $IDconcCoreMinMax $nfCoreT $nfCoreR 0. 0. $r_i $rc 0. 360.; # Define the core patch
patch circ $IDconcCoverMinMax $nfCoverT $nfCoverR 0. 0. $rc $r_o 0. 360.; # Define the cover patch
set theta [expr 360.0/$n]; # Determine angle increment between bars
# Define the reinforcing layer; starting angle (optional, default = 0.0) , ending angle (optional, default = 360.0 - 360/$numFiber)
layer circ $IDreinfMinMax $n $Arein 0. 0. $rc
}
------------------------------------------------------------------------------------
Suppose I want to set a recorder for a particular steel bar, let's say the one placed on the z axis, positioned at ($rc ; 0).
The wiki says: In an element recorder you can ask a FiberSection for it's 'deformations', 'forces', 'forceAndDeformation', 'fiber $fiberNum $matArg1 ..', 'fiber $yLoc $zLoc $matTag $matArg1 '
Thus I would write:
recorder Element -xml out/MomentCurvature/fib/reinfib$ID.xml -time -ele 1 section $secTag fiber 0. $rc 31 stressStrain
However this line doesn't generete stresses or strains, only the 'time' colums appears in the output file.
I also wonder about the meaning of 'fiber $fiberNum $matArg1 ..' What is $fiberNum? Are fibers in a fiber section numbered? That would be nice, but I cant' figure out how.
I would appreciate and be grateful for any help, thank you.
-------TCL SCRIPT for the FIBER SECTION-------------------------------------
section fiberSec $count_1sect {
set rc [expr $dc/2]; # Core radius
patch circ $IDconcCoreMinMax $nfCoreT $nfCoreR 0. 0. $r_i $rc 0. 360.; # Define the core patch
patch circ $IDconcCoverMinMax $nfCoverT $nfCoverR 0. 0. $rc $r_o 0. 360.; # Define the cover patch
set theta [expr 360.0/$n]; # Determine angle increment between bars
# Define the reinforcing layer; starting angle (optional, default = 0.0) , ending angle (optional, default = 360.0 - 360/$numFiber)
layer circ $IDreinfMinMax $n $Arein 0. 0. $rc
}
------------------------------------------------------------------------------------
Suppose I want to set a recorder for a particular steel bar, let's say the one placed on the z axis, positioned at ($rc ; 0).
The wiki says: In an element recorder you can ask a FiberSection for it's 'deformations', 'forces', 'forceAndDeformation', 'fiber $fiberNum $matArg1 ..', 'fiber $yLoc $zLoc $matTag $matArg1 '
Thus I would write:
recorder Element -xml out/MomentCurvature/fib/reinfib$ID.xml -time -ele 1 section $secTag fiber 0. $rc 31 stressStrain
However this line doesn't generete stresses or strains, only the 'time' colums appears in the output file.
I also wonder about the meaning of 'fiber $fiberNum $matArg1 ..' What is $fiberNum? Are fibers in a fiber section numbered? That would be nice, but I cant' figure out how.
I would appreciate and be grateful for any help, thank you.
m12s12sa
-FL-
-FL-
Re: RC fiber sections modeling
Your recorder should be like this:
recorder Element -xml out/MomentCurvature/fib/reinfib$ID.xml -time -ele 1 section $secTag fiber 0. $rc stressStrain
or
recorder Element -xml out/MomentCurvature/fib/reinfib$ID.xml -time -ele 1 section $secTag fiber 31 stressStrain
Yes, each fiber has its own tag that you can use to create its recorder.
Numbering is defined by the way you generate your section. For your case, the numbering will start with the core patches, follow with the cover patches and end with the steel patches. If you are not sure if you are recording the right fiber record it first in -xml format to see the coordinates of the fiber whose response you want to record.
recorder Element -xml out/MomentCurvature/fib/reinfib$ID.xml -time -ele 1 section $secTag fiber 0. $rc stressStrain
or
recorder Element -xml out/MomentCurvature/fib/reinfib$ID.xml -time -ele 1 section $secTag fiber 31 stressStrain
Yes, each fiber has its own tag that you can use to create its recorder.
Numbering is defined by the way you generate your section. For your case, the numbering will start with the core patches, follow with the cover patches and end with the steel patches. If you are not sure if you are recording the right fiber record it first in -xml format to see the coordinates of the fiber whose response you want to record.
Re: RC fiber sections modeling
Vesna, thank you for your reply.
Indeed now I am able to record stress-strain output for fibers in a section.
However I'm not completely satisfied. As you see in my previous post I generated the rc fiber section with circular patches for core and cover concrete and a circular layer for reinforcement bars. When I look to the .xml file the coordinates of these fibers don't match the coordinates I would say are correct: all the fibers have zLoc=0 and different values for yLoc.
With some basic calculation on the reinforcement layer (which is simplier to handle) I noticed that the yLoc is indeed correct and equal to $rc*cos(k(360/n)) k=0,n
So I have the first reinforcement fiber at yLoc=$rc, the second at yLoc=$rc*cos(360/n), the third at yLoc=$rc*cos(2*(360/n)) and so on.
Still zLoc is 0 for each fiber; shouldn't it be equal to $rc*sin(k(360/n)) k=0,n)?
Is this the way fibers are seen by recorders or am I missing some type of coordinate transformation?
Thank you for your help.
Example: fibers 0,1,2 of the section (they are core concrete fibers)
recorder Element -xml out/MomentCurvature/fib/{$ID}core0.xml -time -ele 1 section $secTag fiber 0 stressStrain
Output:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="131.796" zLoc="0" yLoc="25.7768">
-<UniaxialMaterialOutput matTag="19" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
recorder Element -xml out/MomentCurvature/fib/{$ID}core1.xml -time -ele 1 section $secTag fiber 1 stressStrain
Output:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="131.796" zLoc="0" yLoc="24.9936">
-<UniaxialMaterialOutput matTag="19" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
recorder Element -xml out/MomentCurvature/fib/{$ID}core2.xml -time -ele 1 section $secTag fiber 2 stressStrain
Output:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="131.796" zLoc="0" yLoc="23.4509">
-<UniaxialMaterialOutput matTag="19" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
fibers 863, 864 (the first two reinforcement fibers):
recorder Element -xml out/MomentCurvature/fib/{$ID}rein863.xml -time -ele 1 section $secTag fiber 863 stressStrain
recorder Element -xml out/MomentCurvature/fib/{$ID}rein864.xml -time -ele 1 section $secTag fiber 864 stressStrain
Output 863:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="1282.82" zLoc="0" yLoc="749.383">
-<UniaxialMaterialOutput matTag="29" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
Output 864:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="1452.2" zLoc="0" yLoc="701.3">
-<UniaxialMaterialOutput matTag="39" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
Indeed now I am able to record stress-strain output for fibers in a section.
However I'm not completely satisfied. As you see in my previous post I generated the rc fiber section with circular patches for core and cover concrete and a circular layer for reinforcement bars. When I look to the .xml file the coordinates of these fibers don't match the coordinates I would say are correct: all the fibers have zLoc=0 and different values for yLoc.
With some basic calculation on the reinforcement layer (which is simplier to handle) I noticed that the yLoc is indeed correct and equal to $rc*cos(k(360/n)) k=0,n
So I have the first reinforcement fiber at yLoc=$rc, the second at yLoc=$rc*cos(360/n), the third at yLoc=$rc*cos(2*(360/n)) and so on.
Still zLoc is 0 for each fiber; shouldn't it be equal to $rc*sin(k(360/n)) k=0,n)?
Is this the way fibers are seen by recorders or am I missing some type of coordinate transformation?
Thank you for your help.
Example: fibers 0,1,2 of the section (they are core concrete fibers)
recorder Element -xml out/MomentCurvature/fib/{$ID}core0.xml -time -ele 1 section $secTag fiber 0 stressStrain
Output:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="131.796" zLoc="0" yLoc="25.7768">
-<UniaxialMaterialOutput matTag="19" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
recorder Element -xml out/MomentCurvature/fib/{$ID}core1.xml -time -ele 1 section $secTag fiber 1 stressStrain
Output:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="131.796" zLoc="0" yLoc="24.9936">
-<UniaxialMaterialOutput matTag="19" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
recorder Element -xml out/MomentCurvature/fib/{$ID}core2.xml -time -ele 1 section $secTag fiber 2 stressStrain
Output:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="131.796" zLoc="0" yLoc="23.4509">
-<UniaxialMaterialOutput matTag="19" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
fibers 863, 864 (the first two reinforcement fibers):
recorder Element -xml out/MomentCurvature/fib/{$ID}rein863.xml -time -ele 1 section $secTag fiber 863 stressStrain
recorder Element -xml out/MomentCurvature/fib/{$ID}rein864.xml -time -ele 1 section $secTag fiber 864 stressStrain
Output 863:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="1282.82" zLoc="0" yLoc="749.383">
-<UniaxialMaterialOutput matTag="29" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
Output 864:
-<ElementOutput node2="2" node1="1" eleTag="1" eleType="ForceBeamColumn2d">
-<GaussPointOutput eta="0" number="1">
-<SectionOutput secTag="1" secType="FiberSection2d">
-<FiberOutput area="1452.2" zLoc="0" yLoc="701.3">
-<UniaxialMaterialOutput matTag="39" matType="MinMaxMaterial">
<ResponseType>sig11</ResponseType>
<ResponseType>eps11</ResponseType>
m12s12sa
-FL-
-FL-
Re: RC fiber sections modeling
The developer of the section command always displays the local z coordinate as 0 when in 2D domain. If you switch to 3D domain you will be able to see the z-cooridnte as well.
Re: RC fiber sections modeling
Thank you Vesna, you were right; and I should have thought about it. Switching to 3D has solved that problem.
However I am facing another issue with fibers coordinates. When I use the patch quadr/patch rect command and I request recorders for the fibers I don't get the coordinates for each of the fibers in the patch. In fact, the same local coordinates appear in near all the -xml recorders.
To be clearer I'm using the OpenSees Example 9. Build & Analyze a Section Example (http://opensees.berkeley.edu/wiki/index ... on_Example).
I build the model with Ex9d.build.RCSection.RectConfinedSymm3D.tcl; then I perform moment-curvature analysis with Ex9.analyze.MomentCurvature3D.tcl (with MomentCurvature3D.tcl for the procedure.) I will add the following lines to the procedure file where the moment-curvature recorder is created
recorder Element -xml data/core0.xml -time -ele 2001 section $secTag fiber 0 stressStrain
recorder Element -xml data/core1.xml -time -ele 2001 section $secTag fiber 1 stressStrain
recorder Element -xml data/core2.xml -time -ele 2001 section $secTag fiber 2 stressStrain
recorder Element -xml data/core3.xml -time -ele 2001 section $secTag fiber 3 stressStrain
recorder Element -xml data/core4.xml -time -ele 2001 section $secTag fiber 4 stressStrain
recorder Element -xml data/core5.xml -time -ele 2001 section $secTag fiber 5 stressStrain
These recorders should track the first six fibers of the core patch quadr. I would expect the local coordinates of all these fibers to be different from each other. What I get instead is
-<ElementOutput node2="1002" node1="1001" eleTag="2001" eleType="ZeroLengthSection"> -<SectionOutput secTag="1" secType="FiberSection3d"> -<FiberOutput area="17.1875" zLoc="15.5758" yLoc="-1.72348">
for all of these fibers. If I record other patches the coordinates change, but I get the same coordinates for all the fibers in a patch rect or a patch quadr.
Is this normal? Is there any way to get the coordinates of the fibers in a patch quadr / patch rect?
I would be grateful to any user who could explain the behaviour of these recorders.
However I am facing another issue with fibers coordinates. When I use the patch quadr/patch rect command and I request recorders for the fibers I don't get the coordinates for each of the fibers in the patch. In fact, the same local coordinates appear in near all the -xml recorders.
To be clearer I'm using the OpenSees Example 9. Build & Analyze a Section Example (http://opensees.berkeley.edu/wiki/index ... on_Example).
I build the model with Ex9d.build.RCSection.RectConfinedSymm3D.tcl; then I perform moment-curvature analysis with Ex9.analyze.MomentCurvature3D.tcl (with MomentCurvature3D.tcl for the procedure.) I will add the following lines to the procedure file where the moment-curvature recorder is created
recorder Element -xml data/core0.xml -time -ele 2001 section $secTag fiber 0 stressStrain
recorder Element -xml data/core1.xml -time -ele 2001 section $secTag fiber 1 stressStrain
recorder Element -xml data/core2.xml -time -ele 2001 section $secTag fiber 2 stressStrain
recorder Element -xml data/core3.xml -time -ele 2001 section $secTag fiber 3 stressStrain
recorder Element -xml data/core4.xml -time -ele 2001 section $secTag fiber 4 stressStrain
recorder Element -xml data/core5.xml -time -ele 2001 section $secTag fiber 5 stressStrain
These recorders should track the first six fibers of the core patch quadr. I would expect the local coordinates of all these fibers to be different from each other. What I get instead is
-<ElementOutput node2="1002" node1="1001" eleTag="2001" eleType="ZeroLengthSection"> -<SectionOutput secTag="1" secType="FiberSection3d"> -<FiberOutput area="17.1875" zLoc="15.5758" yLoc="-1.72348">
for all of these fibers. If I record other patches the coordinates change, but I get the same coordinates for all the fibers in a patch rect or a patch quadr.
Is this normal? Is there any way to get the coordinates of the fibers in a patch quadr / patch rect?
I would be grateful to any user who could explain the behaviour of these recorders.
m12s12sa
-FL-
-FL-
-
- Posts: 12
- Joined: Mon Apr 25, 2011 12:19 pm
- Location: University of Tehran
Re: RC fiber sections modeling
hi
I want to use fiber section command but i have one question.
what is difference between this Command:
section fiberSec $id {
patch quadr
and this:
section Fiber $id {
patch quad
?
I want to use fiber section command but i have one question.
what is difference between this Command:
section fiberSec $id {
patch quadr
and this:
section Fiber $id {
patch quad
?
Re: RC fiber sections modeling
quad is the valid argument. i am not sure if quadr will work. if it works it should generate fibers in the same way as quad.