[MBDyn-users] Constitutive laws gain ...

Pierangelo Masarati masarati at aero.polimi.it
Mon Aug 27 19:16:42 CEST 2007

[please keep posting to the list, so others can benefit from any 

Rudi Jaeger wrote:

> It would be great to try those new constitutive laws.

I just posted to mbdyn-devel a pointer to the freshly, but unofficially, 
released 1.3.0-Alpha, which contains all of those features:

It's sort of immature, I'd basically like to have some feedback about 
any build issues, as I could only compile it on few combinations of 
architectures and Linux distributions.  But feel free to give it a try.

> As far as I can see,
> input to them is always provided via scalar functions. There is an example
> for the nlsf viscoelastic law. In the definition of the corresponding
> scalar function, the word "coefficient" seems to indicate where the 
> epsilon^dot
> should go.

I think the formulas, although not quite well rendered in html, should 
be self explanatory.  The nlsf constitutive law is made of an optional 
linear part that is specified as a pair of fully coupled constant 
matrices and that multiply the strain (k') and the strain rate (k''), 
respectively, and a nonlinear part that is diagonal, a linear 
combination of a strain-dependent (f') and a strain rate-dependent (f'') 
function.  I understand this is not as general as it could be, but it 
was designed under very specific requirements.

> Or am I wrong? How will this look like in a multilinear function
> or the sum, sub, etc. operations? Is it possible to do something like:

> scalar function: "first_factor", const, coefficient;
> scalar function: "second_factor", const, coefficient;
> scalar function: "quadratic", mul, "first_factor", "second_factor"
> constitutive law: 1000, 1, nlsf viscoelastic, 10.0, null, 0.0, "quadratic"

I think the above would not work much like you expect, if I got you 
right.  In fact, by multiplying two const functions you'd get another 
const coefficient.  If what you want to obtain is a function that is 
linear wrt/ the strain and quadratic wrt/ the strain rate, you should use:

scalar function: "viscous_factor", const, d;
scalar function: "viscous_quadratic", pow, 2;
scalar function: "viscous", mul, "viscous_factor", "viscous_quadratic";
constitutive law: 1000, 1, nlsf viscoelastic, 10.0, null, 0.0, "viscous"

so that the const "viscous_factor" multiplies the power of two function 
of the strain rate "viscous_quadratic", and the result is added to 10.0 
times the strain.

But I might be not 100% right, as I'm not quite familiar with scalar 
functions; perhaps Marco Morandini will correct me, if he's online.

> There is maybe a small typo in the example of the nlp-law:
> The matrix shown there is "diag" but it should probably be "sym".

Right, thanks.  I'll fix it ASAP.

Cheers, p.

PS: BTW, can you tell us what you're using MBDyn for, or what you plan 
to use it for?  If you have a link to a site that describes your 
activity, that would be great.

More information about the Mbdyn-users mailing list