← 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 => Solved

Robert Caulk confirmed that the question is solved:
>Why does it [the remesh interval] need to be smaller?

Trial and error show that there is indeed a stability threshold
associated with the remesh interval. I suspect that the compressibility
term in question (the one that is essentially ignored when we
updatePositions=False), is increasing the maximum eigenvalues of our A
matrix (since adding a term like this can only increase the distortion
of the system). Higher eigenvalues means a lower required time step.
Since we only update the A matrix every N mechanical timesteps (dt), we
are essentially asking the A matrix to accept a total-perturbation-
timestep of N*dt. Remember, this scheme allows us to cheat a little and
get sub total-perturbation-timestep forces, which compound to alter
volumes and change compressibility term for next A matrix update.  As
the remesh interval decreases, we decrease the total-perturbation-
timestep that we ask of each A matrix (since it is being updated more
frequently), and satisfy the higher eigenvalues of our compressibility-
augmented system. Disclaimer, this is just an educated guess.

We could calculate the maximum total-perturbation-timestep based on the
eigenvalues, but it would be expensive. It could be worth just checking
the eigenvalues/vectors once or twice during a simulation depending on
how dynamic it is.

I do see that Catalano looked at using a parameter based on pore volume
change to control the retriangulation frequency (Eq. 5.13 of [1]).
Unfortunately, 1% does not work well for hydraulic fracturing
simulations since we want to update the permeability as soon as cells
are tricked. We don't want to wait around for a volume change to reach a
threshold. I suppose we could use a smaller threshold, but still, I'd
rather just update as soon as cells perms are tricked.

I should also mention here that Catalano's max FlowEngine timestep based
on particle density, diameter, and fluid viscosity (Eq. 4.20 of [1])
seems to overestimate the time step by a couple orders of magnitude for
my hydraulic fracture stimulations. Or perhaps I didn't implement it
right...


>There is in fact no need to change the code to achieve "update positions always and re-triangulate never". It should be enough to set defTolerance<0, meshUpdateInterval=1e20 (*), updatePositions=True. Or does it give problems?

This would not work in the current code, since the remeshing also goes
through and checks for new cell perms to trick as bonds break.

> I'm not sure how it would look to have a facet "intersecting" a
cracked edge without having it as one of its edges. If there is a
solution to this it is probably a bit more involved, and probably not
necessary in most cases.

This is possible more often when we use extended interaction ranges for
particles, and less often when an interaction is in a location that does
not agree with the Delaunay triangulation.

>Last but important note, see
https://bugs.launchpad.net/yade/+bug/1734653 for another (and only)
known bug besides what we are discussing here.

I spent a good amount of time testing different methods for keeping a special positionsBuffer for triangulation only, and allowing the other positionsBuffers to keep doing their duty for updating volume changes. I ran into some multithreading headaches for some methods, and just annoying unexplainable bugs for others. Anyways, the current scheme works if we just updatePositions and remesh at a shorter interval...albeit at the expense of the Delaunay retriangulation only (how much does Delauany triangulation even cost...doesn't seem like much). 
 
[1]Catalano, E. (2012). A pore-scale coupled hydromechanical model for biphasic granular media. Application to granular sediment hydrodynamics, 200.

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