Sleeper on ballast layer

Asked by daalgi

Hi,

I'm trying to model a sleeper on a ballast layer. The sleeper should have a parallelepiped shape and should behave as a dynamic body. Also, it has to be subjected to a vertical force. So, my questions are:

1) How can I model the sleeper?
I've tried to do it by means of "utils.box", but this body neither interact with spheres nor with walls.
I also have tried to do it by means of "utils.geom.facetBox", but I can't achieve the facetBox to move like a dynamic body (dynamic=True,fixed=False), it just disappears when the simulation starts.

2) Can a force be set up in any point of the surface of a box or a facetBox? Or should this problem be treated as a force applied to the center of gravity and the corresponding moment?

Thanks!!

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
daalgi
Solved:
Last query:
Last reply:
Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#1

Hi Daalgi
Yade is not really rich in the variety of objects shapes presently. So your question is a bit challenging the code.

1/ box is not very well suited because a good implementation of the contacts on edges of the box is still lacking. Facets should be ok if I'm not wrong. It may need to introduce a degree of smoothness by discretizing the edges with many facets though, not sure. If they fly away however, the problem is probably on your side. What is the mass of the faceted box?

2/ An easy way: use another object (e.g. a small sphere) to apply the force at a contact point between this object and the sleeper. Alternatively, your method can be used (force+torque on center).

Bruno

Revision history for this message
daalgi (dag49) said :
#2

So, can a facetBox turn into a rigid body with dynamic properties? should all the facets be groupped in a clump so it the mass, center of gravity and inertia can be set up to the clump? is there any way to use a finer mesh of the facets?

The mass of the sleeper is equal to 318 kg, but I don't know how to assign it to the facetBox, since it is compounded of 12 facets. The code that I'm using to model the sleeper is this (something must be wrong because the facetBox just disappears when the simulation starts):
O.bodies.append(utils.geom.facetBox(
       center=(1,2,1),extents=(2,0.25,0.25),
       wallMask=63,material=Mat1,
       dynamic=true,fixed=False))

Thanks Bruno!

Revision history for this message
Christian Jakob (jakob-ifgt) said :
#3

Hi,

Can you please give us your definition of Mat1?

Is there density=0 ?

Christian

Revision history for this message
daalgi (dag49) said :
#4

Mat1=O.materials.append(FrictMat(
       young=27e9,poisson=0.20,density=2500,frictionAngle=0.8)

Revision history for this message
Anton Gladky (gladky-anton) said :
#5

2013/6/6 daalgi <email address hidden>:
> The mass of the sleeper is equal to 318 kg, but I don't know how to assign it to the facetBox, since it is compounded of 12 facets.

Facets are non-inertial bodies. They will not move due to
interactions, so the mass will not play a role in your case.

Anton

Revision history for this message
Christian Jakob (jakob-ifgt) said :
#6

Ok, I am not sure, but I think it should look like this:

Mat1= FrictMat(young=27e9,poisson=0.20,density=2500,frictionAngle=0.8)
id_Mat1 = O.materials.append(Mat1)

O.bodies.append(utils.geom.facetBox(
       center=(1,2,1),extents=(2,0.25,0.25),
       wallMask=63,material=Mat1,
       dynamic=true,fixed=False))

Do facets still disappear with these changes?

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

@Anton

>Facets are non-inertial bodies. They will not move

I was wondering...
If clumped facets cannot be dynamic yet, it is probably not a big deal to allow this, is it?

Revision history for this message
daalgi (dag49) said :
#8

Christian, modifying the code like this doesn't change anything, the facets still disappear.

Anton, the facets are non-inertial bodies, but can't they be turned into inertial bodies by modifying some properties? In that case, is there any other way to model the sleeper?

Revision history for this message
Christian Jakob (jakob-ifgt) said :
#9

> Christian, modifying the code like this doesn't change anything, the facets still disappear.

Do you have other materials defined in the model (Mat2, Mat3, ...)?
If yes, please send us their properties.

Revision history for this message
daalgi (dag49) said :
#10

Right now I just have material Mat1 defined in the model.

Revision history for this message
Christian Jakob (jakob-ifgt) said :
#11

Did you try it with dynamic=False and/or fixed=True?

Revision history for this message
Anton Gladky (gladky-anton) said :
#12

2013/6/6 Bruno Chareyre <email address hidden>:
> I was wondering...
> If clumped facets cannot be dynamic yet, it is probably not a big deal to allow this, is it?

Theoretically yes. But it needs to be checked, committed, tested etc.

Anton

Revision history for this message
Anton Gladky (gladky-anton) said :
#13

2013/6/6 daalgi <email address hidden>:
> Anton, the facets are non-inertial bodies, but can't they be turned into
> inertial bodies by modifying some properties? In that case, is there any
> other way to model the sleeper?

Did you try clumped spheres?

Anton

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

> Theoretically yes. But it needs to be checked, committed, tested etc.

That's it.

Revision history for this message
daalgi (dag49) said :
#15

>> Did you try it with dynamic=False and/or fixed=True?
Yes, I tried the four possible combinations. The True/True combination is the only one that makes the facetBox disappear, but the other ones doesn't work correctly for the puspose of my study.

>> Did you try clumped spheres?
Do you mean modelling the sleeper as a clump of spheres? I think this wouldn't be an accurate solution, but it seems the only possible one.

Thank you all so much for your help!!

Revision history for this message
daalgi (dag49) said :
#16

I figured it out! In case anyone needs it sometime, I explain it.

I used a box to model the sleeper, which allows the behavior as a dynamic body (dynamic=True,fixed=False), and spheres to model the ballast.

Then I just changed the default InteractionLoop to another one that allows the interaction between boxes and spheres. Here is the code:

O.engines=[
     ...
     InteractionLoop(
          [Ig2_Sphere_Sphere_ScGeom(),
               Ig2_Box_Sphere_ScGeom()],
          [Ip2_FrictMat_FrictMat_FrictPhys()],
          [Law2_ScGeom_FrictPhys_CundallStrack()]
     )
     ...
]

Revision history for this message
Anton Gladky (gladky-anton) said :
#17

That is why it is always desirable to provide the minimal working
script to triage the problem.

Anton

2013/6/7 daalgi <email address hidden>:
> Then I just changed the default InteractionLoop to another one that
> allows the interaction between boxes and spheres. Here is the code:

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

> Then I just changed the default InteractionLoop to another one that
> allows the interaction between boxes and spheres. Here is the code:

I was suspecting this mistake but I didn't bother to point it out, as for me it still not work properly. As said before:
"box is not very well suited because a good implementation of the contacts on edges of the box is still lacking."

And in your case there will be such contacts. Boxes are in fact only good to represent planes presently, unlike the name suggests...