[MBDyn-users] Constitutive laws gain ...

Pierangelo Masarati masarati at aero.polimi.it
Wed Aug 29 19:10:59 CEST 2007


Rudi Jaeger wrote:

> I think my problem was a fixation on the way functions are usually declared in
> dependence on some variable.

but "const" is a function; only, it does not depend on any variable.

> Here is just a variant of the law above to see if I
> get things right now:
> 
> scalar function: "first_factor", pow, 1;
> scalar function: "second_factor", pow, 1;
> scalar function: "viscous", mul, "first_factor", "second_factor";
> constitutive law: 1000, 1, nlsf viscoelastic, 10.0, null, 0.0, "viscous"

Yes, but "pow, 1" is equivalent to "linear", AFAIR, just it has to be
zero-crossing: f(0) = 0.

As you may guess, I'm not that familiar with scalar functions, that's
why I was asking support from Marco (who's probably on vacation yet).

> If this can be done, it should also be possible to create that constitutive
> law I was originally talking about:
> 
>>>> I would like to do the following: If the angular velocity
>>>> in a deformable hinge is large, apply much damping,
>>>> if it is small, apply less damping.
> 
> Something like this should work:
> 
> set: real high_velo= 100.0;
> set: real limit_velo= 10.0;
> set: real eps= 0.01;
> set: real high_damp= 5.0;
> set: real low_damp= 0.2;
> 
> scalar function: "velo_step", multilinear,
>    -high_velo, high_damp,
>    -limit_velo-eps, high_damp,
>    -limit_velo+eps, low_damp,
>     limit_velo-eps, low_damp,
>     limit_velo+eps, high_damp,
>     high_velo, high_damp;

This is something like

high_damp
------------+                           +--------------
            |                           |
            +---------------------------+
low_damp   -limit_velo    0            limit_velo

but make sure that (-limit_velo + eps < limit_velo - eps), as with the
sample data you showed above (the code will complain, otherwise).

> 
> scalar function: "strain_rate", pow, 1;

This is "strain_rate" = strain_rate

> scalar function: "step_rate", mul, "velo_step", "strain_rate";

This is "step_rate" = "velo_step" * "strain_rate"

> constitutive law: 1000, 1, nlsf viscoelastic, null, null, 0.0, "step_rate"

This should be "1000" = 0.0 + "step_rate";  is this what you mean?

I note that this should be exactly equivalent to using the "nlp" law
with a stepwise k'' coefficient:

constitutive law: 1001, 1, nlp viscoelastic, null, null, 0.0, "velo_step";

Cheers, p.





More information about the Mbdyn-users mailing list