utils.wall acts like air...

Asked by Hanying Zhang on 2020-10-25

hi,

I wanna generate a 'wall' object to act as infinite axes-aligned plane, there is a example 'wall.py' in example file which runs as what i thought, somehow it wont work as it should be when i add it to my code...wall acted as air and sphere just went through it. please help me with this problem. below is two scripts 'wall.py' the example and my script 'air-wall.py'.

#--------------------------------------------wall.py---------------------------------------
O.materials.append(FrictMat(young=30e9,density=1000,poisson=.2,frictionAngle=.5))
O.bodies.append([
 wall(1,axis=2,sense=-1),
 wall(-5,axis=0,sense=1),
 wall(1,axis=1),
 wall((1,0,0),0),
 sphere([0,0,0],.5),
 sphere([-4,-4,-3],.5)
])
Gl1_Wall(div=10)

from yade import qt
qt.Controller()
qt.View()

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()],
 ),
 NewtonIntegrator(damping=0.01,gravity=[1e2,1e2,1e2]),
 ]

O.dt=PWaveTimeStep()
O.save('/tmp/a.xml')
O.saveTmp()
#---------------------------------------------------------------------------------------------------------

#------------------------------------------------------air-wall.py-------------------------------------
#sphere
O.materials.append(FrictMat(young=4.0e6,poisson=.3,frictionAngle=30,density=2630e+6,label='sphereMat'))#for sphere
s=utils.sphere(center=[0,100e-3,100e-3],radius=20e-3)
O.bodies.append(s)

#### Wall ####
O.materials.append(FrictMat(young=1.0e6,poisson=0.2,density=2.60e3,frictionAngle=20,label='wallmat'))
O.bodies.append(utils.wall(0,axis=2))

from yade import qt
qt.Controller()
qt.View()

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()],
 ),
 NewtonIntegrator(damping=0.01,gravity=[0,0,-1e2]),
 ]
#---------------------------------------------------------------------------------------------

thanks!!!!!!!

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
2020-10-27
Last query:
2020-10-27
Last reply:
2020-10-27

This question was reopened

Jan Stránský (honzik) said : #1

Hello,
stiffness is the answer. Try 1e6 times higher stiffness
###
O.materials.append(FrictMat(young=4.0e12,...
...
O.materials.append(FrictMat(young=1.0e12,...
###
and the sphere bounces back.
cheers
Jan

Hanying Zhang (xxxe) said : #2

hi Jan,

thanks, I tried and yes the sphere bounced back. actually it didnt bounce back the minute interaction happens, part of sphere still went through wall then back. what i really need is a 'ground' object( like a real ground that supports everything falling on it). how can i get it? thanks sooo much!

Jan Stránský (honzik) said : #3

> actually it didnt bounce back the minute interaction happens, part of sphere still went through wall then back

in DEM, (basically) a repulsive force is computed w.r.t overlap. So the sphere MUST go "through wall" to get some repulsive force to "go back".
Increase stiffness even more to reduce the overlap.

> what i really need is a 'ground' object

If increasing stiffness does not give you what you want, then please define "ground" more specifically.

cheers
Jan

Hanying Zhang (xxxe) said : #4

> Increase stiffness even more to reduce the overlap.

i see no overlap when increasing stiffness to 4e12/1e12, so what stiffness do? creating a harder surface? i also noticed that changing only sphere stiffness or wall doesnt work. could you please explain it specifically?

> hmmm... ground is like a platform in lab? sphere falls on it then settles down in a few seconds? i just need wall to support my sphere... why does sphere in wall.py settle down that fast?

(is there any other way to contact with other users? some kind of conversation without delay?)

still, thanks!

Jan Stránský (honzik) said : #5

> so what stiffness do? creating a harder surface?

stiffness "does" stiffer contact..
stiffness is (again, basically) ratio of force divided by length (penetration depth). The higher stiffness, the larger repulsive force for the same overlap.

> i also noticed that changing only sphere stiffness or wall doesnt work. could you please explain it specifically?

please be more specific (posting MWE with specific values).
Also please provide Yade version you use.

> hmmm... ground is like a platform in lab? sphere falls on it then settles down in a few seconds? i just need wall to support my sphere... why does sphere in wall.py settle down that fast?

Sorry, I did not get it. Please be more specific what you expect, what you get from simulation, how it differs, ...

> (is there any other way to contact with other users? some kind of conversation without delay?)

you can write to people directly or adjust some instant messaging with them.
But IMO the frequency of direct messages would be the same as answering here, as the motivation to answer is the same (after all it is for free, free-time activity).

cheers
Jan

Hanying Zhang (xxxe) said : #6

> please be more specific (posting MWE with specific values).
Also please provide Yade version you use.

i use 2018.02b version and these values wont work(air-wall.py).
###
O.materials.append(FrictMat(young=4.0e6,...
...
O.materials.append(FrictMat(young=1.0e12,...
###

> Sorry, I did not get it. Please be more specific what you expect, what you get from simulation, how it differs, ...

in wall.py i posted above the sphere falls then settles down quickly.

what i want to simulate is a 2D rectangular made of pfacets in which exist many sparse spheres, i need to add gravity so that they can fall down to a dense pack, the problem is that the pfacets fall down too...which is not what i want. so i guess a wall under pfacet would help, then the problem i posted above occurs...i will post my code here once i complete it.

thanks!

Best Jan Stránský (honzik) said : #7

> ###
> O.materials.append(FrictMat(young=4.0e6,...
> ...
> O.materials.append(FrictMat(young=1.0e12,...
> ###

the interaction stiffness is given by harmonic mean E=2/(1/E1+1/E2), i.e. it is "determined" by the lower stiffness.
In the case E2=inf, E=2/(1/E1+1/inf)=2E1.
This is the case, the overall stiffness is basically the same as in your air-wall example.

> NewtonIntegrator(damping=0.01,gravity=[0,0,-1e2]),
> in wall.py i posted above the sphere falls then settles down quickly.

what does "quickly" mean? In my case, the sphere bounces "many times" before settling.
Settling is the effect of numerical damping. Setting damping=0, it bounces "forever".

Law2_ScGeom_FrictPhys_CundallStrack, theoretically, should have no "settling" effect (for damping=0 of course).
For better control of coefficient of restitution, you have to use a more advanced constitutive law.

> what i want to simulate is a 2D rectangular made of pfacets

Then please open a new question for the problem (this thread should reamain wall-specific, related to the original question)

> the problem is that the pfacets fall down too...which is not what i want. so i guess a wall under pfacet would help

Isn't fixing the pfacets, such that they do not fall, a better approach?

cheers
Jan

Jan Stránský (honzik) said : #9

> how to fix them!!

> Then please open a new question for the problem (this thread should reamain wall-specific, related to the original question)

cheers
Jan

Hi,
I would kindly ask you to fix your username for my personal brain struggles to distinguish user "onyourself" from user "nobody".
Regards
Bruno

Hanying Zhang (xxxe) said : #11

@jan

here it is.
https://answers.launchpad.net/yade/+question/693670

@bruno

i changed it, bad at giving username..

thanks!

Hanying Zhang (xxxe) said : #12

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

Robert Caulk (rcaulk) said : #13

>(is there any other way to contact with other users? some kind of
conversation without delay?)

My 2 cents: I am usually more inclined to give higher quality and quicker
assistance to users who use their real name as their username here. It is
nice to know the researcher I am assisting. It becomes a bit difficult to
bring myself to continuously answer questions into the void for users liike
"nobody" and "mrhappy". It makes me feel a bit like a thanked-less Yade
robot being trolled by reddit users.

Cheers,

Robert

On Tue, Oct 27, 2020 at 1:41 PM bean <email address hidden>
wrote:

> Question #693640 on Yade changed:
> https://answers.launchpad.net/yade/+question/693640
>
> bean posted a new comment:
> @jan
>
> here it is.
> https://answers.launchpad.net/yade/+question/693670
>
> @bruno
>
> i changed it, bad at giving username..
>
> thanks!
>
> --
> You received this question notification because your team yade-users is
> an answer contact for Yade.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>

@bean
Thanks! Now at least I can remember you as a vegetable.
Hopefully nobody will not pick "soya". :)
B

Hanying Zhang (xxxe) said : #15

@Robert
thanks for your advice. I've changed it.

@Bruno
Now it's my real name. I don't use it most time since i hate it. sorry for "bean" it's actually my favorite cartoon character. thanks for your advice!

Zhy