← Back to team overview

yade-users team mailing list archive

Re: [Question #660585]: Why avoid reseting particle positions in DFNFlow?

 

Question #660585 on Yade changed:
https://answers.launchpad.net/yade/+question/660585

    Status: Answered => Open

Robert Caulk is still having a problem:
>The volume changes are still calculated as usual because it uses the
actual positions/velocities from O.bodies at each iteration, not the
coordinates of the triangulated points.

Thank you, Bruno. Do you mind checking my understanding really quick? I
am almost certain that stopping the setPositionsBuffer is ruining the
compressibility scheme:

The reason I said the volume changes are not calculated was that we are
computing cell->info().volume() here [1], which uses the
positionsBuffer. Next, we prepare cell->info().invVoidVolume() using
cell->info().volume() here [2]. Finally, we set up the A matrix, and we
consider compressibility due to mechanical volume changes [3]. If we
only set the positionBuffer once (as we do in DFNFlow), the positions
[4] used to compute cell->info().volume() will not change, the void
volume will remain the same and the compressibility correction will not
change in the solve stage.

Actually, just writing this I think I figured out an easy solution. We
just need to keep updating the positionsBuffer, but we just add an easy
flag for avoiding retriangulation if DFNFlow is activated. Currently,
DFNFlow setPositionsBuffer is not allowing us to continue setting
positions. I think we just need to get rid of it, let the FlowEngine
setPositionsBuffer do its work and add some flag that prohibits the
geometrical retriangulations.


>Which stability problem are we speaking about??

Is it possible that instability may occur when the A matrix changes
drastically between time steps due to appearing/disappearing
trickedpermeability facets?


>A facet is a set of three edges, if there is no edge then there is no facet... or maybe I missed your 

Of course, but surely we could consider an algorithm that looks for an
intersection between an interaction and a facet. For example: the
interaction pokes through the center of the facet (instead of lining up
with one of the facet's edges).

Best,

Robert

[1]https://github.com/yade/trunk/blob/master/pkg/pfv/FlowEngine.ipp.in#L602
[2]https://github.com/yade/trunk/blob/master/pkg/pfv/FlowEngine.ipp.in#L439
[3]https://github.com/yade/trunk/blob/master/lib/triangulation/FlowBoundingSphereLinSolv.ipp#L218
[4]https://github.com/yade/trunk/blob/master/pkg/pfv/DFNFlow.cpp#L182

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.