woo

About Collisions

Asked by Zixuan Xu

Hi,

I am new to DEM and trying to find a good method to model coilable cylinders or coilable membranes.

But it seems that a cylinder element can't collide with another cylinder element, and a membrane element can't collide with another membrane element.

My question is : Is it possible to introduce collisions between these elements?

Thanks a lot,
Zixuan Xu

Question information

Language:
English Edit question
Status:
Solved
For:
woo Edit question
Assignee:
No assignee Edit question
Solved by:
Václav Šmilauer
Solved:
Last query:
Last reply:
Revision history for this message
Best Václav Šmilauer (eudoxos) said :
#1

Hi Zixuan,

if you use capsules to model cylinders, they will happily collide with each other - they just have hemispherical caps, which you can perhaps ignore. (Cylinders (InfCylinder) are infinite and always axis-aligned, that is maybe not something you need.)

For membranes, that is something on my TODO list in the next month or two. I implemented membrane-wall (infinite plane) collisions recently, as you can see at the http://www.youtube.com/watch?v=wZ0HKQwnH2U or http://www.youtube.com/watch?v=CYWYooTQ_7Y .

Just out of curiosity, what is the area of your problem?

Cheers, Václav

Revision history for this message
Zixuan Xu (xuzixuanatsjtu) said :
#2

Hi Václav, thanks for your explanation.

I'm currently working on the simulation of deployable solar sails using DEM. the solar sail membrane can be modeled as a mass - spring system, or a beam system. (membrane elements would be better)

During the deployment of solar sails, there're contacts between different parts of the folded membrane. And i think these contacts shouldn't be ignored. so I'm glad that the membrane-membrane collision is on your TODO list right now. I'm looking forward to it.

Since a capsule is a one-node particle and indeformable, I don't think it is suitable for my problem here.

BTW, you've done a great job here in Woo. :) Indeed you have introduced many more new elements into DEM, compared to yade. I think I'm going to work on DEM for at least 2 years, and I'm looking forward to seeing DEM being implemented on a more broader field.

Zixuan Xu

Revision history for this message
Zixuan Xu (xuzixuanatsjtu) said :
#3

Thanks Václav Šmilauer, that solved my question.

Revision history for this message
Václav Šmilauer (eudoxos) said :
#4

Thanks, Zixuan Xu. I will modify the membrane interface a bit in the weeks to come also (I think it will be called woo.fem.Membrane instead of woo.dem.FlexFacet), and most functor parameters will be removed in favor of per-membrane parameters (flags for considering bending or tension only and such). Cheers! Vaclav

Revision history for this message
Václav Šmilauer (eudoxos) said :
#5

Hi Zixuan,

the Facet-Facet collisions algorithm landed in rev. 3556, and an example script is in examples/facet-facet.py, it looks like this: http://youtu.be/jeiMXUdQwOM . There are a few caveats though you need to care about:

1. by default, facets have the DemField.loneMask [1] set, since we don't want to compute their contacts at all. So you either have to set mask when you call Facet.make(...,mask=...) or set DemField.loneMask=0 to avoid this feature altogether (not really recommended)

2. forces don't get applied on plain Facets (they could, but it has not been done), only to FlexFacets. So you need to create those with make.Facet(flex=True) or similar, and add the In2_FlexFacet_ElastMat functor.

3. if bending is not enabled, make sure you set In2_FlexFacet_ElastMat.applyBary=True [2], otherwise forces will be applied in thirds, which may be pretty strange physically.

4. as you perhaps already know, particles sharing nodes (neighboring facets) will never have a contacts - just that you are not surprised.

5. If you want your facets to fly freely, they should be added as clumps for stability; that probably does not apply to your scenario, anyway.

[1] http://woodem.eu/doc/tutorial/mesh.html#note-on-particle-masks
[2] http://woodem.eu/doc/woo.dem.html?highlight=applybary#woo.dem.In2_FlexFacet_ElastMat.applyBary

Revision history for this message
Václav Šmilauer (eudoxos) said :
#6

A new examples/tube.py script shows the self-intersection functionality: http://youtu.be/cOLMNqtCy1c

Revision history for this message
Zixuan Xu (xuzixuanatsjtu) said :
#7

Thanks very much for your detailed explanation, Václav. Currently I'm working with yade and not yet quite familiar with woo. I will play around with woo when I finish my current work. Cheers! Zixuan Xu