← Back to team overview

yade-dev team mailing list archive

Re: moment law, doing it right

 

Bruno Chareyre said:     (by the date of Thu, 08 Jul 2010 11:41:10 +0200)

> Hi Janek,
> 
> Let's try and make something clean this time. ;-)
> >
> > I need to add two parameters:
> >
> > - Rolling stiffness coefficient β
> > - Moment limit coefficient η
> >
> >
> > Currently β has a fixed value of 2.0 in Ip2_2xCohFrictMat_CohFrictPhys.cpp line 52

> > How to name it? rollingStiffnessCoefficient comes to mind. But could
> > be also a rollingCoefficient, bendingCoefficient and so on.
> >   
> "Coefficient" is vague. I'd prefer 
> rolling/twisting+Stiffness/Friction/Cohesion.
> So that, for instance :
> trialTwist = twistAngle*twistStiffness //elastic behaviour
> maxTwist = twistFriction*fn+twistCohesion //elastic limit
> if (abs(trialTwist)>maxTwist) {do something, taking into account the 
> "fragile" flag}

just to make this clear - please correct me if I'm wrong:

this:

	rollingStiffness is Kr (rolling)
	twistingStiffness is Kr (twisting)

	?? is `Rolling stiffness coefficient β` (rolling)
	?? is `Rolling stiffness coefficient β` (twisting)

OR this:

	rollingStiffness is `Rolling stiffness coefficient β` (rolling)
	twistingStiffness is `Rolling stiffness coefficient β` (twisting)

?

Further:

rollingFriction is `Moment limit coefficient η` (rolling)
twistingFriction is `Moment limit coefficient η` (twisting)

rollingCohesion is a cohesion on rolling, that increases maximum
                allowed moment even if Fn is zero
twistingCohesion is a cohesion on twisting

=============

I looked up the formulas in the code how β is used:

  Kr=β*Ks*Ra*Rb

While, Jerome and Luc have a different formula:
  Kr=β*Ks*(Ra+Rb)^2/4.0


Moreover, my current formula for η is an average:
  η=(ηa*Ra+ηb*Rb)/2

Jerome and Luc are setting η globally so they don't have this formula.
But because η is very analogous to friction angle μ, then maybe it is
also better to take a minimum value of two materials:

  η=min(ηa,ηb)*(Ra+Rb)/2
  M ≤ η*Fn  + Mcohesion

To be able to avoid rolling on the walls if desired, just like with μ:
  μ=min(μa,μb)
  Fs ≤ tan(μ)*Fn + Fcohesion


I hope I didn't make mistake above :)


BTW, personally I'd be happy if g++ was able to compile UTF-8, and we
could use β,μ,η,Kn,Ks,Kr,Fs,Fn,M instead of lenghty names. But that
will cause too much incompatibility - did you know that this feature
is experimentally allowed?

  http://gcc.gnu.org/wiki/FAQ#What_is_the_status_of_adding_the_UTF-8_support_for_identifier_names_in_GCC.3F
  http://gcc.gnu.org/ml/gcc/2010-04/msg00827.html


In fact, now thanks to Vaclav, we have documentation EVERYWHERE.
So a short names will not hurt, just consult the docs if you don't remember!

-- 
Janek Kozicki                               http://janek.kozicki.pl/  |



Follow ups

References