difference in returned stress

Hi,

I am playing with Peri3dController with label e.g. 'biax', but I find the stress returned by biax.stress is different from that by calling utils.stressTensorOfPeriodicCell(). The formula used by stressTensorOfPeriodicCell is what we commonly adopt in DEM. How stress is calculated in Peri3dController?

Ning

Question information

Language:
English Edit question
Status:
Solved
For:
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
2012-02-15
Last query:
2012-02-15
2012-02-15
 Jan Stránský (honzik) said on 2012-02-15: #1

Hi Ning,

the formula used is exactly the same (actually the same function is
called). The difference could be because of different type of
stressTensorOfPeriodicCell() and Peri3dController.stress. The first one
returns a tensor stress=Matrix3(sxx,sxy,sxz, syx,syy,syz, szx,szy,szz),
while the second one is in "vectorized" (Voigt's) notation
stess=Vector6(sxx,syy,szz, syz,szx,sxy). Is this the source of the
difference?

Jan

ceguo píše v St 15. 02. 2012 v 02:50 +0000:
> New question #187798 on Yade:
>
> Hi,
>
> I am playing with Peri3dController with label e.g. 'biax', but I find the stress returned by biax.stress is different from that by calling utils.stressTensorOfPeriodicCell(). The formula used by stressTensorOfPeriodicCell is what we commonly adopt in DEM. How stress is calculated in Peri3dController?
>
> Ning
>

 ceguo (hhh-guo) said on 2012-02-15: #2

Hi Jan,

Actually not. The difference is NOT format difference. Here is an example (if you remember the script I sent to you before):

>>> packing.consolidate() # calls Peri3dController and labels as 'cons'
>>> packing.getStress() # this calls utils.stressTensorOfPeriodicCell()
Matrix3(-48965.9,100.619,0, 100.619,-48972.5,0, 0,0,0)
>>> cons.stress # labelled as 'cons'
Vector6(-50002.634879037054,-50002.541124107054,0, 0,0,100.14402045344963)
>>> packing.shear() # calls Peri3dController and labels as 'biax'
>>> packing.getStress() # this calls utils.stressTensorOfPeriodicCell()
Matrix3(-38680.7,300.731,0, 300.731,-56123,0, 0,0,0)
>>> biax.stress # labelled as 'biax'
Vector6(-39449.714550942866,-57438.815800571429,0, 0,0,312.58387791336929)

You see, the results are different. May this be due to 2d simulation? To use the current formula in 2d, I set:
O.cell.hSize=utils.Matrix3(3,0,0, 0,3,0, 0,0,1). Here the size in the third direction is set to unity. I think this will work smoothly without modification within the code. Am I right?

Ning

 Jan Stránský (honzik) said on 2012-02-15: #3

Hi Ning,

try tu use utils.stressTensorOfPeriodicCell(True), this is the only
difference in both cases, as in both approaches the same c++ function is
called (but with different parameter by default).

Jan

ceguo píše v St 15. 02. 2012 v 09:11 +0000:
> Question #187798 on Yade changed:
>
>
> ceguo is still having a problem:
> Hi Jan,
>
> Actually not. The difference is NOT format difference. Here is an
> example (if you remember the script I sent to you before):
>
> >>> packing.consolidate() # calls Peri3dController and labels as 'cons'
> >>> packing.getStress() # this calls utils.stressTensorOfPeriodicCell()
> Matrix3(-48965.9,100.619,0, 100.619,-48972.5,0, 0,0,0)
> >>> cons.stress # labelled as 'cons'
> Vector6(-50002.634879037054,-50002.541124107054,0, 0,0,100.14402045344963)
> >>> packing.shear() # calls Peri3dController and labels as 'biax'
> >>> packing.getStress() # this calls utils.stressTensorOfPeriodicCell()
> Matrix3(-38680.7,300.731,0, 300.731,-56123,0, 0,0,0)
> >>> biax.stress # labelled as 'biax'
> Vector6(-39449.714550942866,-57438.815800571429,0, 0,0,312.58387791336929)
>
> You see, the results are different. May this be due to 2d simulation? To use the current formula in 2d, I set:
> O.cell.hSize=utils.Matrix3(3,0,0, 0,3,0, 0,0,1). Here the size in the third direction is set to unity. I think this will work smoothly without modification within the code. Am I right?
>
> Ning
>

 ceguo (hhh-guo) said on 2012-02-15: #4

Thanks Jan Stránský, that solved my question.

 Bruno Chareyre (bruno-chareyre) said on 2012-02-15: #5

utils.stressTensorOfPeriodicCell(False) is always exact, so why is there
this option of assuming small strain?
Can't we remove this flag?

Bruno

 Jan Stránský (honzik) said on 2012-02-15: #6

Hi Bruno,

ok, why not, if somebody wanted to implement other type than Cauchy
stress tensor, he/she can add more parameters..

Jan

Chareyre píše v St 15. 02. 2012 v 19:00 +0000:
> Question #187798 on Yade changed: