the displacement diagram using periodic boundary

Asked by liukeqi

Hi,
   I used a cubic model to simulate the behaviour of concrete under pressure load in the y direction. The boundary condition is periodic boundary. I used O.cell.velGrad to reach the goal strain. The goal strain is (0.06,0,0,0,-0.08,0,0,0,0). After the simulation, I output the particles' displacement diagram of a slice of the model along xy plane. I think the particles' displacement should be along on both sides of the x axis just like Figure 18(a) in [1] which used non periodic boundary(change the z direction to x direction). But the result indicates the particles' displacement are basically all along the positive direction of the x axis. I do not know why.
  If I run my code and used the "show 3D" button, I found the cell only deform toward positive direction of x and negative direction of y. The phenomenon also imply the same characteristic that the particles' displacement are basically all along the positive direction of the x axis. If I want to output the same result as [1] but use the periodic boundary, how to do it?

Can you give me some suggestions? My code is following.

Thank you.
Liu keqi

[1]http://ac.els-cdn.com/S0958946511000096/1-s2.0-S0958946511000096-main.pdf?_tid=71db5f42-d73d-11e6-b33a-00000aacb35f&acdnat=1484057138_e43f8ec5025799056019cb047b1ece96

#############################################################
#!/usr/bin/python
import string
from yade import plot,qt
from yade.pack import *
from yade import pack, plot

O.materials.append(CpmMat(young=24e9,density=4800,frictionAngle=atan(0.8),poisson=0.2,sigmaT=600e6,epsCrackOnset=1e-4,relDuctility=35))

initSize=0.025

sp=pack.randomPeriPack(radius=.000625,initSize=Vector3(initSize,initSize,initSize))
O.periodic=True
sp.toSimulation()

O.dt=1e-7

EnlargeFactor=1.5
EnlargeFactor=1.0
O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=EnlargeFactor,label='bo1s')]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=EnlargeFactor,label='ig2ss')],
  [Ip2_CpmMat_CpmMat_CpmPhys()],[Law2_ScGeom_CpmPhys_Cpm()]),
 NewtonIntegrator(),
]

dstrain = utils.Matrix3(0.06,0,0,0,-0.08,0,0,0,0)
ns=4000
O.cell.velGrad=dstrain/(ns*O.dt)
O.step()
bo1s.aabbEnlargeFactor=ig2ss.interactionDetectionFactor=1.
O.run(); O.wait()

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
liukeqi
Solved:
Last query:
Last reply:
Revision history for this message
Jan Stránský (honzik) said :
#1

Hi Liu,
you can
1) mirror the arrows (the sample is periodic)
2) add a rigid body displacement (something like (-x,0,0) ) to all
displacements to get symmetric picture
cheers
Jan

Revision history for this message
liukeqi (891979456-h) said :
#2

Thanks Jan for your reply.
 I want to konw why I can mirror the arrow. That is to say,what is the physical significance of mirroring the arrow,are there some paper can explain it?
If I add a rigid body displacement,how to value x?Are there some formulas to do this work?

Revision history for this message
Jan Stránský (honzik) said :
#3

Hi Liu,

the mirroring is maybe not the best ides. Marcoscopicall it should work,
but not on the lelev of individual particles..

to chose the value x for rigid body displacement, assuming at one side
(around origin) the displacement is very small and on the other side of the
cell the displacement is D, I would try -D/2..

let us know if it works :-)

cheers
Jan

Revision history for this message
liukeqi (891979456-h) said :
#4

Hi Jan,

Thank your for your reply. Your suggestion about choosing the value x works. But I still have confusion. If I should add a rigid body displacement like (-x,0,0) to get symmetric picture, why not add a rigid body displacement like (-x,y,0)? The latter seems more reasonable than the former.

And If I add a rigid body displacement, how can I explain the reason why I use it? Are there some argument or paper can prove its reasonability? Because I will write a paper, I need some evidence to support it.

Liu

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#5

Hi,
I don't think you need evidence about that for writting a paper: the problem you are pointing out simply does not exist, so you better don't mention it. ;)
A periodic problem is infinite in size and you are seeing of it is through a small window. Depending on where you put the window you see a different average (rigid body) displacement. In yade we look at a 3D window with corners (0,0,0) and (1,1,1), the problem would look symmetric in the window from (-0.5,-0.5,-0.5) to (0.5,0.5,0.5) but it would still be the same problem. That is all.
In this context adding a constant disp is equivalent to changing the origin of the reference frame, it does not change the problem itself. It is of course acceptable to choose the origin as you like and it if arrows look nicer, it does not need to be commented in a paper.
I hope it helps
Bruno

Revision history for this message
liukeqi (891979456-h) said :
#6

Hi, Bruno

  Thank you for your reply. Based on your discription, from what I understand, the periodic problem in yade use the minimum
coordinate as (0,0,0) and use the maximum coordinate as (1,1,1), even if the values of minimum coordiante and maximum coordinate in the absolute coordinate system are changing. So if I want to display the characteristic of displacement tendency under a certain load(such as pure shear), I should look symmetric in the window from (-0.5,-0.5,-0.5) to (0.5,0.5,0.5).

  What I understand is right?

Liu

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#7

>coordinate as (0,0,0) and use the maximum coordinate as (1,1,1), even if the values of minimum coordiante and maximum >coordinate in the absolute coordinate system are changing.

Unfortunately no, that's not what I meant, but I understand it was unclear. The minimum is always (0,0,0) but the maximum can be anything and it is changing with time (even in the negative quadran after some time if the velocity gradient is rotational).
Some implementations are indeed setting all coordinates between 0 and 1 as you suggest, but yade is not.
When writing (1,1,1) I was mentally thinking (1*v1+1*v2+1*v3) where the vi's are the vectors defining the periodic box (and they are changing with time), it is not represented in this way in the code.

>if I want to display the characteristic of displacement tendency under a certain load(such as pure shear), I should look >symmetric in the window from (-0.5,-0.5,-0.5) to (0.5,0.5,0.5).

I'm not sure what "characteristic of displacement tendency" means, but if you ask how to see it symmetric, yes, you need to look through a window between -0.5*(v+v2+v3) and +0.5*(v+v2+v3).
Which is technically impossible with yade without considerable changes in the source code, by the way.
So, by default, simple shear will look like [1].
If you want to see it (skew)symmetric you superimpose a constant rigidbody velocity, in the post processing as Jan suggested (by far the simplest) or even in the simulation itself by assigning the same initial velocity to all particles.

Bruno

http://www.flowillustrator.com/wp-content/uploads/2015/02/ViscosityShearFlow.png

Revision history for this message
liukeqi (891979456-h) said :
#8

Hi, Bruno

We konw the non periodic (for example, wall) apply load through moving itself and colliding with the particles and the coordinate system of the model will not change. But what about periodic boundary? Although you say its displacement diagram of particles is based on where I put the window, but I recorded the position of particles and found them indeed moved toward only one direction. So what coordinate system does yade use?

Actually, What I want to konw is how does the periodic boundary apply load in yade and how does it choose the origin of coordinate? Can you point out the position of the codes implementing the function if it is convenient to you.

Thank you.

Liu

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#9

>how does the periodic boundary apply load in yade

By changing the geometry of the periodic space.
Arrange a long (infinite) chain of spheres along a line, with initially 10 spheres/meter and the same patern of spheres repeated every meter, then at the next step you decide that 1m becomes 0.9m, there is now 10spheres/0.9meter - they are squeezed and repulsive forces appear: you exerted a load. This would be 1D periodicity.

And then, how can we plot this on a screen? We don't want to display and infinite number of spheres. So let's pick one randomly, call it "origin", and display the movement (relative to origin) of the next 10 spheres on its right hand side. It will look like they all go to the right in extension, and to the left in compression. That's really only a graphical display issue, not a mechanical question.

By the way, if you compress something between two plates do you agree that it is strictly the same (in statics) to 1/ move the bottom plate by h and keep the top fixed, or 2/ move top by -h with fixed bottom, or 3/ move both by +/- h/2?

Did you see the documentation btw? (theoretical background chapter)

>and how does it choose the origin of coordinate?

A puzzling question actually!
The origin is placed at the point where the displacement is null.
Where is it that the displacement is null? You may ask.
Well... it is at the origin.
Or are you asking the distance between the sun and the origin of the periodic space? ;)

Bruno

Revision history for this message
liukeqi (891979456-h) said :
#10

Hi, Bruno

Thank you for your detail explanation about my question.

cheers

Liu