Spring
Moderators: silvia, selimgunay, Moderators
Spring
Hi, I made a simple model for a spring with zerolength element and did try to obtain the stress-strain curves as displayed here : http://opensees.berkeley.edu/wiki/index ... c_Material
However, it doesn't work very well.
Here's the script I use :
wipe all;
model BasicBuilder -ndm 1 -ndf 1
node 1 0.
node 2 0.
fix 1 1
fix 2 0
uniaxialMaterial ElasticPP 1 1676143.602 0.000638
element zeroLength 1 1 2 -mat 1 -dir 1
pattern Plain 101 "Linear" {
load 2 1.
}
system BandGeneral
test NormDispIncr 1.e-10 20 1
constraints Transformation
integrator DisplacementControl 2 1 0.00000638
algorithm Newton
numberer RCM
analysis Static
recorder Node -file F_D.out -time -node 2 -dof 1 disp
recorder Element -file Deformation.out -ele 1 deformation
recorder Element -file Forces.out -ele 1 forces
for {set i 1} {$i<=100} {incr i 1} {
set okay [analyze 1]
if {$okay!=0} {break}
print node 2
}
When I run the analysis using a "Linear" timeseries, the curve from the Force-deformation at node 2 is linear and the ratio of the force divided by the deformation/displacement gives the selected E (1676143.602) and the analysis crash when it reached deformation close to the yield limits (next time steps deformation would be higher than the maximum epsyP).
So the timesteps being linear will increase the loadfactor and since the yield limits is reached, there is no convergence because there is no displacement associated with a stress that is over the yield limit since the plastic curve is flat. How do you obtain a elastic-perfectly plastic curve then? Is it possible?
P.S. : since am using a zero-leng element, I supposed that k = E and forces = stress (no A nor L so I hard to relate k = AE/L, I supposed that A = L = 1?)
However, it doesn't work very well.
Here's the script I use :
wipe all;
model BasicBuilder -ndm 1 -ndf 1
node 1 0.
node 2 0.
fix 1 1
fix 2 0
uniaxialMaterial ElasticPP 1 1676143.602 0.000638
element zeroLength 1 1 2 -mat 1 -dir 1
pattern Plain 101 "Linear" {
load 2 1.
}
system BandGeneral
test NormDispIncr 1.e-10 20 1
constraints Transformation
integrator DisplacementControl 2 1 0.00000638
algorithm Newton
numberer RCM
analysis Static
recorder Node -file F_D.out -time -node 2 -dof 1 disp
recorder Element -file Deformation.out -ele 1 deformation
recorder Element -file Forces.out -ele 1 forces
for {set i 1} {$i<=100} {incr i 1} {
set okay [analyze 1]
if {$okay!=0} {break}
print node 2
}
When I run the analysis using a "Linear" timeseries, the curve from the Force-deformation at node 2 is linear and the ratio of the force divided by the deformation/displacement gives the selected E (1676143.602) and the analysis crash when it reached deformation close to the yield limits (next time steps deformation would be higher than the maximum epsyP).
So the timesteps being linear will increase the loadfactor and since the yield limits is reached, there is no convergence because there is no displacement associated with a stress that is over the yield limit since the plastic curve is flat. How do you obtain a elastic-perfectly plastic curve then? Is it possible?
P.S. : since am using a zero-leng element, I supposed that k = E and forces = stress (no A nor L so I hard to relate k = AE/L, I supposed that A = L = 1?)
Re: Spring
look at the script given with the elastically perfectly plastic gap material page to see how to use commands strain, stress and tangent when using the model builder testUniaxial
Re: Spring
Thanks for the reply.
I checked the script; it's in a different builder and the relation are directly given so yes it works (setting eta=0 and gap = 0 I get a elastic-perfectly plastic curve which yield at strain = 0.2 (Fy / E = 10 / 50 = 0.2)).
But using the basicbuilder and standard uniaxial ElasticPPGap mat I cannot obtain the plastic flat part of the stress-strain curve.
Say u_incr is the increment in strain in the next step, and u is the current strain, I will crash in the step where u+u_incr > u_yield is true.
Where u_yield = Fy/E
If I add a little slope (say I use eta = 0.01) then I won't crash... but am not perfectly plastic then.
I checked the script; it's in a different builder and the relation are directly given so yes it works (setting eta=0 and gap = 0 I get a elastic-perfectly plastic curve which yield at strain = 0.2 (Fy / E = 10 / 50 = 0.2)).
But using the basicbuilder and standard uniaxial ElasticPPGap mat I cannot obtain the plastic flat part of the stress-strain curve.
Say u_incr is the increment in strain in the next step, and u is the current strain, I will crash in the step where u+u_incr > u_yield is true.
Where u_yield = Fy/E
If I add a little slope (say I use eta = 0.01) then I won't crash... but am not perfectly plastic then.
Re: Spring
That's very normal in non linear problems. I recommend you to use a very little hardering slope because at the end it's the same than without hardering behaviour . Your force/stress is going to grow like nothing.
Re: Spring
This is the conclusion to which I came too; just wasn't sure about it and thought I would ask for advice on the subject
In the normative document I use they ask for elastic perfectly-plastic bilinear ... so I was trying to do it!
Thanks for the answer, and have a good day!
In the normative document I use they ask for elastic perfectly-plastic bilinear ... so I was trying to do it!
Thanks for the answer, and have a good day!