yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #00683
Re: Functions of MetaDispatchingEngine (1D, 2D)
Hello Kien,
You cannot remove those lines. The correspondance between the names of
the geometries (InteractingSphere/InteractingBox) and the names of the
engines is understood by the user but not auto-detected by Yade.
Without those lines, Yade would not be able to decide what engine to
call to define the interaction between two bodies, so the bodies would
not interact (that is why there is no interaction between boxes in the
triaxial test btw).
If you define a new type of geometry, like InteractingElipsoid, and want
to mix it with the previous ones in the same simulation, you need to
write new engines like :
InteractingElipsoid2InteractingSphere4SpheresContactGeometry
Or even :
InteractingElipsoid2InteractingSphere4NewTypeOfContactGeometry
Then tell yade to use them with :
interactionGeometryDispatcher->add("InteractingElipsoid","InteractingSphere","InteractingElipsoid2InteractingSphere4NewTypeOfContactGeometry
");
At the end, the dispatching engine is "pushed back" in the list of
engines (line 678 of TriaxialTest.cpp in my version) :
rootBody->engines.push_back(interactionGeometryDispatcher);
That way, the exact geometry of potential interactions (the potential
interactions being defined by the SAPcollider) is updated at each time step.
The mecanism is exactly the same for BoundingVolumeMetaEngine (1D),
PhysicalActionDamper (1D), or InteractionPhysicsMetaEngine (2D). The
dispatching is done in the function operator() inherited from
DynLibDispatcher.
Bruno
Kien Dang, Mr a écrit :
> hi,
>
> i tried to understand the function of MetaDispatchingEngine classes but I have not understand its function.
>
> i.e. in TriaxialTest.cpp, there are several objects involved to MetaDispatchingEngine such as the following syntax:
>
> shared_ptr<InteractionGeometryMetaEngine> interactionGeometryDispatcher(new InteractionGeometryMetaEngine);
> interactionGeometryDispatcher->add("InteractingSphere","InteractingSphere","InteractingSphere2InteractingSphere4SpheresContactGeometry");
> interactionGeometryDispatcher->add("InteractingSphere","InteractingBox","InteractingBox2InteractingSphere4SpheresContactGeometry");
>
> As I guess, without those lines,the program should still works. Is it correct?
>
> Can anyone please give me explaination about the function of the class?
>
> Thank you so much,
>
> Kien Dang
> _______________________________________________
> Yade-users mailing list
> Yade-users@xxxxxxxxxxxxxxxx
> https://lists.berlios.de/mailman/listinfo/yade-users
>
>
--
_______________
Chareyre Bruno
Maitre de conference
Institut National Polytechnique de Grenoble
Laboratoire 3S (Soils Solids Structures) - bureau I08
BP 53 - 38041, Grenoble cedex 9 - France
Tél : 33 4 56 52 86 21
Fax : 33 4 76 82 70 00
________________
_______________________________________________
Yade-users mailing list
Yade-users@xxxxxxxxxxxxxxxx
https://lists.berlios.de/mailman/listinfo/yade-users
Follow ups
References