yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #01417
Re: [svn] r1843 - trunk/core
Does it mean, that if I have 3 particles from 3 different materials
I can make the next "database":
P1-P2 - Kn(1-2); Kt(1-2)...;
P2-P3 - Kn(2-3); Kt(2-3)...;
P1-P3 - Kn(1-3); Kt(1-3)...;
P1-P1 - Kn(1-1); Kt(1-1)...;
P2-P2 - Kn(2-2); Kt(2-2)...;
P3-P3 - Kn(3-3); Kt(3-3)...;
Particle interaction from different materials will use different
parameters from "database" depending on materials participated in
interactions?
Yes, this simple "solution" is very intuituve and it should be an
alternative to the current solution that anoying me sometimes because
of arbitrary choice (does frictionAngle should be the min/max/
mean/... value?).
I think that both these solutions can coexist although the new one
should be improved...
Practically, you don't need to fill the "database-parameters" one by
one. You simply say somethink like:
"There are two groupMasks": ngrp 2
"I declare the parameter Kn": parameter Kn
(It means that Kn(0-0) = Kn(0-1) = Kn(1-0) = Kn(1-1) = 0.0)
"I want that all Kn are 1e6": setall Kn 1e6
((It means that Kn(0-1) = Kn(1-0) = 1e8)
"I want that Kn between 0 and 1 is 1e8": set Kn 0 1 1e8
((It means that Kn(0-1) = Kn(1-0) = 1e8)
etc.
In *Relationships classes, we could do somethink like this:
// ...
contactPhysics* c = "cast...";
grpRelationData* data = "cast grpRelationData in Omega()";
if (data->isActivated())
{
mask1 = "from cast of Omega...bodies with interaction id1";
mask2 = "from cast of Omega...bodies with interaction id2";
if (data->exists("Kn")) c->kn = data->getParameter
("Kn",mask1,mask2); else c->kn = 0.0;
if (data->exists("Kt")) c->kt = data->getParameter
("Kt",mask1,mask2); else c->kt = 0.0;
// etc.
}
else
{
// current solution
}
I will add it in BasicViscoelasticRelationships...
VR
References