How to rotate a predefined packing

Asked by Luc Scholtès on 2011-07-21

Hi there,

just wondering, is there a way to rotate a packing before or during a simulation?

In fact, I would like to load a predefined packing (doing ymport.text(packing.spheres)) in my simulation and rotate it before applying any loading. The idea would be to perform triaxial compressive tests respectively along the 3 principal directions of the packing to characterize its anisotropy (I work with special packings).

I tried to play with the definition of the walls ids in the triaxialCompressionEngine, but it seems that changing the ids in accordance with the translationAxis does not work (Am I right?). I know that there is a ThreeDTriaxialCompressionEngine, but it does not allow to perform the same loading than the classic version without going into the definition of an additional function to check for the state of stress and to consequently modify the stress/strain control.

If no solution exists, would it be possible to add a function "rotate" similar to the "shift" already implemented in the Ymport.text? If yes, would you have any suggestions to do it properly?

Thanks in advance


Question information

English Edit question
Yade Edit question
No assignee Edit question
Solved by:
Anton Gladky
Last query:
Last reply:
Best Anton Gladky (gladky-anton) said : #1


> just wondering, is there a way to rotate a packing before or during a simulation?


Even if you manage to rotate the spheres, the contact forces will have
junk values inherited from the non-rotated state.
I suggest using 3DCompressionEngine, it is designed exactly for what you
want. It will be simpler and it will avoid all weird effects.


Luc Scholtès (luc) said : #3

Thanks Anton Gladky, that solved my question.

Luc Scholtès (luc) said : #4

To Bruno,

Not sure about your comments...

1 - I vae never used the bodiesHandling function, but, If the rotation occurs before the beginning of the simulation (when the packing is loaded into the simulation, the "DEM loop" has not started yet), there should not be any inherited contact forces, no?

2 - I had a second look at the 3DCompressionEngine. As I said, it is adapted to do what I want (loading the sample in the 3 principal direction). However, in its current version, you cannot perform automatically the transition from isotropic to deviatoric compression as with the classic TriaxialCompressionEngine. You need to define a periodic function to check for the state of the simulation to do so (unless I am wrong?). For now, I have added few lines to the TriaxialCompressionEngine in order to allow for choosing the direction of straining in the deviatoric part of the loading path. Doing so, I just need to specify the translationAxis in my script. If you think that this feature could interest, I can upload the source file.



1/ If it's rotated before first step, you don't have the problem of
rotating forces indeed. The problem is you are not considering the same
sample: the dense states you obtain with or without rotation will not be
the same (even if theoreticaly they should). Or maybe you start with
dense states?

2/ I don't think there is a need for translation axis. Using 3DEngine
and defining conditions for the transitions is really easy. I'll commit
the scripts from Alert School soon, it gives good examples.