← Back to team overview

yade-dev team mailing list archive

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