← Back to team overview

yade-users team mailing list archive

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