I have two problems with fibers coordinates and fibers response in a fiber section.
--------------
PROBLEM 1
--------------
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 i set.
To be clearer I will refer to OpenSees Example 9. Build & Analyze a Section as an example 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.) The model is 3D so I expect that each fiber has both y and z local coordinates.
Then I will add the following lines to the procedure tcl 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 when I look in the -xml file is instead
-<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 anyone who could explain the behaviour of the coordinates in these patch recorders.
--------------
PROBLEM 2
--------------
I would like to check the fiber response during the analysis. For example during the moment curvature analysis I would like to know when a steel fiber reaches a user defined stress limit. I read OpenSees & Output (http://opensees.berkeley.edu/wiki/index ... %26_Output) presentation and I think the eleResponse command could do this for me:
set resp [eleResponse $eleTag section $secTag fiber $fibernum stress]
but how can I use it during an analysis?
Would you be so kind to give me advice? Thank you
Fiber section output
Moderators: silvia, selimgunay, Moderators
Fiber section output
m12s12sa
-FL-
-FL-
Re: Fiber section output
Thanks for reporting a problem with a recorder. I'll test it myself and see what is going on.
Yes, you can get stresses at each step of analysis using a eleResponse command. I did not understand exactly what do you want after a specific value of stress is reached, but I guess that you want to condition your analysis on that value. To do so you need to do your analysis in a loop. Here is an example where I perform the analysis until a specified stress value is reached (I am also taking care of convergence problems):
set maxS 15.0; # Max stress
set ok 0
set currentStress 0.0
# perform the analysis
while {$ok == 0 && $currentStress < $maxS} {
set ok [analyze 1]
# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed .. lets try an initail stiffness for this step"
test NormDispIncr 1.0e-12 1000
algorithm ModifiedNewton -initial
set ok [analyze 1]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-12 10
algorithm Newton
}
}
set currentStress [eleResponse $eleTag section $secTag fiber $fibernum stress]
}
Yes, you can get stresses at each step of analysis using a eleResponse command. I did not understand exactly what do you want after a specific value of stress is reached, but I guess that you want to condition your analysis on that value. To do so you need to do your analysis in a loop. Here is an example where I perform the analysis until a specified stress value is reached (I am also taking care of convergence problems):
set maxS 15.0; # Max stress
set ok 0
set currentStress 0.0
# perform the analysis
while {$ok == 0 && $currentStress < $maxS} {
set ok [analyze 1]
# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed .. lets try an initail stiffness for this step"
test NormDispIncr 1.0e-12 1000
algorithm ModifiedNewton -initial
set ok [analyze 1]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-12 10
algorithm Newton
}
}
set currentStress [eleResponse $eleTag section $secTag fiber $fibernum stress]
}
Re: Fiber section output
Thank you Vesna, this was exactly what I was looking for!
About that problem with the recorder I found out what was going on: it was the zeroLenghtSection element to cause the problem!
Here it's how it worked for me, I'm reporting it because it may be useful to other users.
The "normal" element recorder for fiber strains and stresses is
recorder Element -xml data/core0.xml -time -ele 2001 section $secTag fiber 0 stressStrain
In this command $secTag refer to a particular integration point along the element lenght (if I have set, say 5 integration points, then $secTag=1 is at node i, and $secTag=5 at node j).
Now, let's say the element 2001 is a zeroLenghSection element: by definition, it only has one section! One would think that $secTag=1 would work, but with this command the behaviour of the recorder is the one I described in my first post, and I wasn't getting fiber coordinates.
Instead the following command should be used to define an element recorder for fiber strains and stresses when dealing with a zeroLenghtSection element:
recorder Element -xml data/fiber${iRec}.xml -time -ele 2001 section fiber $iRec stressStrain
As you can notice, there is no section number. With this command all the fibers get their coordinates in the -xml output file, I tested with several different sections and it works great!
It's not a problem of the recorder after all; rather I would say it could be very useful to point out in the wiki description of the command this "exceptions" (to be honest what the wiki says right now in the zeroLenghtSection page is 100% correct, as there is no $numSec argument, but only $arg1, $arg2; but underlining a peculiarity like this can save the day to a careless user like me!)
About that problem with the recorder I found out what was going on: it was the zeroLenghtSection element to cause the problem!
Here it's how it worked for me, I'm reporting it because it may be useful to other users.
The "normal" element recorder for fiber strains and stresses is
recorder Element -xml data/core0.xml -time -ele 2001 section $secTag fiber 0 stressStrain
In this command $secTag refer to a particular integration point along the element lenght (if I have set, say 5 integration points, then $secTag=1 is at node i, and $secTag=5 at node j).
Now, let's say the element 2001 is a zeroLenghSection element: by definition, it only has one section! One would think that $secTag=1 would work, but with this command the behaviour of the recorder is the one I described in my first post, and I wasn't getting fiber coordinates.
Instead the following command should be used to define an element recorder for fiber strains and stresses when dealing with a zeroLenghtSection element:
recorder Element -xml data/fiber${iRec}.xml -time -ele 2001 section fiber $iRec stressStrain
As you can notice, there is no section number. With this command all the fibers get their coordinates in the -xml output file, I tested with several different sections and it works great!
It's not a problem of the recorder after all; rather I would say it could be very useful to point out in the wiki description of the command this "exceptions" (to be honest what the wiki says right now in the zeroLenghtSection page is 100% correct, as there is no $numSec argument, but only $arg1, $arg2; but underlining a peculiarity like this can save the day to a careless user like me!)
m12s12sa
-FL-
-FL-
Re: Fiber section output
Thanks for your comment!