yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #01650
Re: all yade users, please introduce yourself!
> Ok, I'm discovering this new collider now. 2x faster? That is good.
> But I don't understand why a collider scaling with Nparticles is so bad,
> other engines scale the same way don't they?
> Did you implement the x/y/z threads trick for parallel collider?
> Ok for using it in triaxial test.
It scales N*log(N) (theoretically), and that is bad enough (black and
red curves at http://yade.wikia.com/wiki/Colliders_performace ).
It is bad because efficiency of parallelization (of the interaction
loop) grows with number of particles - as one step takes longer time,
the constant overhead of parallelization scheduling (etc) gets
proportionally smaller. And this nice effect is pretty much killed by
the collider.
> Another option, for quasistatic simulations, is to use triangulation or
> one of the old collider with radiusFactor = 1.2, and update the contact
> list only once per N iterations. Depending on max velocity in the model,
> N can be set to at least 10. You can adjust N during runtime
> automatically if maxVel increases somewhere. In some very slow
> compression tests, N could really be 50 or so.
Agreed. But is there such collider written? (I know there are papers
about that.) What is the computation complexity of triangulation
collider? I know that the grid-based ones achieve O(N), but we don't
have that implemented either.
> > If taucs runs multi-threaded (it seems it
> > does), it may interact badly with openMP threads which will be allocated
> > independently. You will see.
> >
> Mmmmh... Interesting, but not a very good news. Taucs works impressively
> well in single thread. Do you know anything equivalent designed for openMP?
Maybe
http://software.intel.com/en-us/intel-mkl/, but there must be more, I am
quite sure. But you can easily limit current number of threads for
openMP and allocate those to taucs, or just let the OS do the
thread-battle by itself.
> I confirm that the current behaviour of ElasticContactLaw (requesting
> deletion of interactions as soon as contact is lost), disable capillary
> forces between distant grains.
> I'm about to implement a "interactionDetectionFactor" in ElasticLaw the
> same way as in
> InteractingSphere2InteractingSphere4SpheresContactGeometry, and delete
> interactions only if distance is larger than (r1+r2)*factor.
>
> Anybody has a better idea?
Before, it was the geometry functor deciding on which interaction to
delete (and there had to be IS2IS4SCGWater), now this responsibility
shifted to the constitutive law; so it is logical.
Wouldn't it be better, however, to create a separate constitutive law? I
fear a little that at some point everybody will ad his/her own
parameters into ElasticContactLaw. Maybe not grounded, though; this one
distanceFactor seems OK to me.
Don't add it to ElasticContactLaw, however, but to
ef2_Spheres_Elastic_ElasticLaw (shouldn't it be renamed to
Law2_Spheres[ContactGeometry]_Elastic[ContactInteraction]_Elastic for
clarity) and use ConstitutiveLawDispatcher/InteractionDispatchers.
ElasticContactLaw is nothing but loop around calls to
ef2_Spheres_Elastic_ElasticLaw with typecheck. Slower and
non-parallelizable.
Oh, BTW, is there agreement on having useShear by default and
progressively remove prevNormal from various InteractionPhysics classes?
Vaclav
Follow ups
References
-
all yade users, please introduce yourself!
From: Václav Šmilauer, 2009-07-05
-
Re: all yade users, please introduce yourself!
From: Václav Šmilauer, 2009-07-07
-
Re: all yade users, please introduce yourself!
From: Bruno Chareyre, 2009-07-07
-
Re: all yade users, please introduce yourself!
From: Václav Šmilauer, 2009-07-07
-
Re: all yade users, please introduce yourself!
From: Bruno Chareyre, 2009-07-08