yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #14018
Re: [Question #429604]: Cylinder and periodic boundary conditions
Question #429604 on Yade changed:
https://answers.launchpad.net/yade/+question/429604
Status: Answered => Open
Raphaël Maurin is still having a problem:
Hi Bruno,
Thanks for your answer, there are still some points that are unclear to me, I probably didn't understand everything:
- How do you get the normal component of the relative velocity only from the shear one ? I would need to evaluate the relative velocity for that and if I want to account for the ratcheting effect correction, it seems to me that I need to call again getIncidentVel, maybe I missed something.
>I'm not following you fully. 1/ I don't see a trick/approximation, to
me it is just ordinary code. So when you ask "why" I tend to just think
"why not?". 2/ why do you think it is irrelevant to include the 0.5*un
term in the branch between e.g. sphere and box or spheres of different
sizes? How would you like it? Did you realize that the same 0.5 is also
used between facets and spheres whatever the law functor?
>From what I understand the contact point is then always considered to be at half the penetration depth. Two things. 1/Why not from a modeling point of view as you say, but from a physical point of view I believe that the question of the contact point is not that simple and is fundamental. If you consider an interaction between two objects that have a different curvature, the definition of the contact point is not straightforward and you should consider the position of the contact point which gives you the right physical behavior for the normal and tangential contact force. Defining it as half the penetration depth is a choice (which I do not know if it is well reproducing the "physical"/expected behavior). 2/ If you say that the contact point is always considered as half the penetration depth, then I do not understand why that:
const State& de1 = *static_cast<State*>(bodies[id1]->state.get());
const State& de2 = *static_cast<State*>(bodies[id2]->state.get());
const Vector3r shift2 = scene->isPeriodic ? scene->cell->intrShiftPos(I->cellDist): Vector3r::Zero();
const Vector3r c1x = (geom.contactPoint - de1.pos);
const Vector3r c2x = (geom.contactPoint - de2.pos - shift2);
gives different results from that:
const Vector3r c1x = geom->radius1-0.5*geom->penetrationDepth*geom->normal;
const Vector3r c2x = -geom->radius2-0.5*geom->penetrationDepth*geom->normal;
?
> However, guess why ViscElPhys_Basic has a bug that CundallStrack does
not have? Because they are two different functors instead of one, i.e.
more lines of code with less eyes/fingers for each of them. Hence if
someone wants to do something very useful for the years to come he could
merge some of the existing functors. That was my point.
I am ok with that, but this would mean keeping all the compatibility
with the existing ViscElPhys_Basic law (prescription possible of (young,
poisson) or (kn, ks) with (en, et) or (cn, cs)) in the new one and
suppressing the ViscElPhys_Basic contact law. Is this possible ? In
which file(s) should it be included ?
Raphael
--
You received this question notification because your team yade-users is
an answer contact for Yade.