yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #03373
Re: Elastic energy
-
To:
yade-users@xxxxxxxxxxxxxxxxxxx
-
From:
Janek Kozicki <janek_listy@xxxxx>
-
Date:
Sun, 4 Jul 2010 18:38:38 +0200
-
Face:
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEUBAQEtLS1KSkpRUVFXV1dYWFhjY2Nzc3N3d3eHh4eKioqdnZ24uLjLy8vc3NxVIagyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AIVEzgS1fgQtQAAAjRJREFUOMtt1DFv00AUAOAzFQNbjigSyoQaRaBMhKgLUyKXpVNNeUpk9vyDqFJhQ1kiBuaqAwJCqvPtSLY7RlTn5+5IdnYkkt/AOyfxXVLe5vf53Z1875kd34tOEax8djmj6GyjhB5bxz50GdsVZr9fqRjZwAtKOJw5Wqs2MMZ16ALHsaDncF7xAHix1oEFHAB8f+pRjcO4gfZDykcYzbiucRolOLUJ6kjA0xtVt+A6TySlM0RajIpK6DzwKZ/nOYbF/gclHMo1ZOHYY/+Ha+AWuM+3oMS4eeqYzZ8FiCltgUqI8cd2wwAVpJk+8LWYjBtnJdQpHQqJMd4Oxt4bU9ESiFGc5hkqaH74asAX4iabP5I5gZ+qjgGlJCqZa3h3lxhoeVcSE1qLQC4sqKOK9MGW9E3izFqqHokoztLFEgXg31sbZEKnWi2T74A4NxfVQqlkjKtcAWD+zcArFEES01dR0E/nnV0IgugmDd/2L84sOAouRBBHEc7gtc8teDkRlE0iNQPo2w3Xhh/D4TCIQ4LRLoTvgwjj6RRgavdurxYGMaIuGOyAW/PpNlCcU9/93AHenAWYjPoAwa+G3e3to/MgFNTAEKvKDjzuCzHTnY3qqdXtx24VijzQfZ0yewZ5cwRFQaa+mIYr1uI0I76+3W4xhlvoVRwOA0Fdl64HlJnxP6T8YpX/Lga4Wv4A3ErrU5oTfN7Mu/llXMl8RXEPji/lQkN3H7qXqgC2By47EXeU/7PJ/wPxRKMnuZwIeAAAAABJRU5ErkJggg==
-
In-reply-to:
<AANLkTilsTzlq9iVTJ1vYrlGsCNrYzWflzewJHt6fOF_8@mail.gmail.com>
chiara modenese said: (by the date of Sun, 4 Jul 2010 09:15:03 +0000)
> Thanks Janek for explanation! And thanks Bruno for remind me I should set to
> True the bool traceEnergy ;) I did it. But I do not understand the results.
> You can also reproduce them setting traceEnergy=True in the script I
> attached in this thread. Please just see the attached plot. The code of
> plasticDissipation() I am sure it is correct. There is sliding as expected
> in fact. But what is wrong now?
hmm. I remember calculating internal work, and in fact I remember
that we stumbled upon this problem.
(I hope that your UTF-8 works good, because I'm using UTF below)
What is the work of a typical spring?
W=∫F*dx
F=k*x
W=∫k*x*dx = k*x²/2
, see that squared distance factor?
But we need to integrate that in a little different manner, because
we are summing from one iteration to another. Let us make a plot of
force versus displacement and calculate the surface area below the
force. To make it simple we are integrating using the Trapezoidal Rule:
Wᵢ = (Fᵢ+Fᵢ₋₁)*Δxᵢ⁄2
, where ᵢ is the iteration, Fᵢ₋₁ is previous force, Fᵢ is
current force, Δxᵢ=xᵢ-xᵢ₋₁ is the displacement that happened from
iteration ᵢ₋₁ to ᵢ. Now if we perform summation over all
iterations, like that:
W += Wᵢ
we would get:
i="now"
W = ∑ (Fᵢ+Fᵢ₋₁)*(xᵢ-xᵢ₋₁)⁄2
i=1
In the end we were using that formula for all DOFs, to get a total
work, as a sum of normal, shearing and rotational displacements over
respective forces (and moment).
W=Wn+Ws+Wr
Wn =∑ (Fnᵢ+Fnᵢ₋₁)*(xᵢ-xᵢ₋₁)⁄2
Ws =∑ (Fsᵢ+Fsᵢ₋₁)*(sᵢ-sᵢ₋₁)⁄2
Wr =∑ (Mᵢ+Mᵢ₋₁)*quaternion_to_Euler_angle(qᵢ*(qᵢ₋₁)⁻¹).angle_in_radians⁄2
I don't have the implementation at hand right now, I'll find it
tomorrow. I might have made some mistake above, but you should get
the general idea.
If I find a mistake I'll let you know :)
best regards
--
Janek Kozicki http://janek.kozicki.pl/ |
Follow ups
References