← Back to team overview

yade-users team mailing list archive

Re: Problem in ElasticContact law + needs clarification

 

> Elastic contact law is broken in the default TriaxialTest. I guess it is 
> linked with r1822.

I think not related, that was only renaming things. You can get
modifications here:
http://bazaar.launchpad.net/~vcs-imports/yade/trunk/annotate/head%
3A/pkg/dem/Engine/StandAloneEngine/ElasticContactLaw.cpp
.

> It looks like friction is almost inactive ("almost" because shearForce 
> is not null when I look into a xml, but the sample still has a 
> negligible shear strength).

> -What is the result of "#ifdef SCG_SHEAR" by default?

SpheresContactGeometry stores current shear and prevNormal (which, as is
the current practice, what various InteractionPhysics' do).

However, it is used by the ElasticContactLaw only if useShear==True. In
that case, there is SpheresContactGeometry::updateShear, which uses the
incremental formulation to update displacement (not force), which is
then used to compute the force.

Without useShear, it uses the old algorithm that was there since ages,
the incremental one updating force, which I moved (a few months back) to
SpheresContactGeometry::updateShearForce to make it usable from
different constitutive laws, since that code was duplicated at least 5x.
But the code itself did not change, and IIRC (not sure 100%) I verified
that by running TriaxialTest with both versions (inline shear update vs.
updateShearForce) with exacly same results.

> -TriaxialTest generates a contact law with useShear=0 by default, is 
> that correct? When I put useShear=1, the result looks better.

I know there was some difference for triaxial with and without useShear,
and thought that perhaps I didn't write updateShear correctly (as
updateShearForce didn't have influence on the results). I didn't have
time (and interest) to solve that back then, so I disabled useShear by
default in triaxial. You can compare SpheresContactGeometry::updateShear
and ::updateShearForce, they are almost the smae from the top down.

> -momentRotationLaw="1" by default, is that correct? (it has always been 
> that way perhaps, if nobody opposes, i'll set it false by default)

It must have been like that since ages, as it is the default (in
ElasticContactLaw's ctor) and nothing sets that in TriaxialTest.

> -Could we please keep the old version of this contact law by default?

Which one is it? I had the same results for useShear==False as for the
original contact law, but to you the results don't seem correct; does
that mean that the old results were incorrect as well? Confusing stuff.

Vaclav





Follow ups

References