← Back to team overview

yade-dev team mailing list archive

Re: Material and body State

 


Le 14 juil. 09 à 09:52, Václav Šmilauer a écrit :

Hi,

based on discussion with Vincent and also (older) proposal of Janek, and
for other reasons of simplicity, I would like to create new Material
class that would hold material properties of bodies. There would be only
a few instances of it typically:

MetaBody::vector<Material> (plus some convenience function to get index
based on name, for convenience in the generators -- like "steel",
"mortar", "stone1" etc.)

int Body::materialId would have the number

Body::physicalParameters would be renamed to Body::state (and
PhysicalParameters to State), holding non-const things, basically only
Se3.

Tentative proposition::

Material (Real density)
+-- ElasticMaterial (Real young, Real poisson)
    +-- FrictionalMaterial (Real frictionAngle)

BodyState (same as PhysicalParameters now)
+-- ParticleState (=ParticleParameters)
    +-- RigidBodyState (=RigidBodyParameters)

ElasticBodyParameters and BodyMacroParameters add only material
properties to RigidBodyParameters and would have no equivalents in
BodyStates. Other classes deriving from RigidBodyParameters are adding
internal state constants/variables, which is exactly what they should
do. (see
http://beta.arcig.cz/~eudoxos/yade/doxygen/d2/d7b/ classPhysicalParameters.html)

InteractionPhysicsMetaEngine would dispatch based on 2x body- >state, and
it would be the user's responsibility that the type of body's material
is of the type expected by the functor (it could be checked, since that
would be used only when the contact is created).


As I said before, the solution described here before seems to be nice (although the question of random-values dispatching remains, cf. Bruno's comments). Personally, when I use the DEM, the elements are RIGID bodies and I only care with their se3 and shape parameters. My original query is not resolved with this solution, but I think it allows us to save memory.

Note for Vincent: interactions will still have all their properties
inside them (like stiffness, frictionAngle etc computed from materials).
There is probably not much to do about it -- except for deriving those
constant parameters that depend only on material beforehand and can be
shared between interactions, for all possible (/requested) combinations
of materials, perhaps using something like GroupRelationData. In that
case InteractionPhysics (interactionState??) would hold something like
interactionParametersId, with container of a few shared "cross- section"
characteristics (rigidity, frictionAngle etc).

This way, we would get something similar to typical FEM: material class (http://www.oofem.org/resources/doc/oofemlibrefman/ classMaterial.html),
cross-section (i.e. shared interaction properties, for different
combinations of materials perhaps) class
(http://www.oofem.org/resources/doc/oofemlibrefman/ classCrossSection.html). InteractionPhysics would correspond to per- interaction state (http://www.oofem.org/resources/doc/ oofemlibrefman/classMaterialStatus.html). Addionally, we would have the BodyState, which is on a body, not on interaction (which corresponds to a FEM element -- at least for cohesive materials).

(end of note for Vincent. I propose to have shared Material and per- body State first, then perhaps extend it to shared interaction data as well.)

Opinions?

When I designed the GroupRelationData (which is very basic), I decided to select the properties as a function of groupMasks combination instead of Materials combination. I did this choice precisely because the interaction parameters can be set depending on the bodies shape, material, surface state, role (driven wall or sample element), etc.
I'd like to keep this flexibility.

Vincent




Follow ups

References