Hi everyone,
first of all thank you for sharing Mfront, it is really a very powerful tool. While studying it I came across the line 47 in TensorConceptOperations.ixx
return a(0)b(0)+a(1)b(1)+a(2)b(2)+a(3)b(4)+a(4)*b(3);
This should represent a_{ij} b_{ij} in plane strain: This gives (omitting zero terms)
a_{11} b_{11} + a_{22} b_{22} + a_{33} b_{33} + a_{12} b_{12} + a_{21} b_{21}
However, considering the storage order a = [a_{11}, a_{22}, a_{33}, a_{12}, a_{21}] for non-symmetric tensors.
Schouldn't it be then?:
return a(0)b(0)+a(1)b(1)+a(2)b(2)+a(3)b(3)+a(4)*b(4);
Couldn't figure out why this should be mixed. Maybe the transpose was forgotten in a:b = tr(a^T b)?
Best regards
Tristan
Dear Tristian,
Thanks for your interest for
MFront
.It does seem that you found a very nasty bug.
Thanks for reporting this !
Thomas
Last edit: Helfer Thomas 2020-11-16
The trouble seems to mainly affect single crystal finite strain behaviours to a reasonnably limited example in the test cases of
MFront
. This is mostly due to the fact that the Mandel stress is almost symmetric.Fixed in:
rliv-3.0
rliv-3.1
rliv-3.2
rliv-3.3
trunk
Hello,
thank you for taking your time to look at that. Yes this seems fair, since double contraction of non-symmetric 2. order tensors hardly appear in material models. I guess Mandel stress get only unsymmetric if the material is very anisotropic and the principal direction of stress and strain don't coincide? I am not so familiar with this version control system, but to be sure: Did you also check the 3D specialisation of the | operator? I didn't look at that in detail but it seemed also to be twisted.
Best regards,
Tristan
Hi Tristian,
I am grateful to you for opening this ticket. I also corrected the 3D versions. I think that this bug is around for quite a long time now (TFEL-2.0.2 apparently)
Indeed, double contraction of unsymmetric tensors has almost never been used so for in practice, except for the specific case of finite strain single crystal behaviours. But no one noticed that, despite careful testing and cross-validation with other implementations. I guess that this is because the Mandel Stress is almost symmetric when the elastic strain is small, which is always the case in practice.
However, we are currently working on a Cosserat plastic behaviour which works on unsymmetric tensors (comparison to). Hence we would probably have faced this issue very soon. I thus owe a beer for saving us a few hours of debugging :)
Anyway, do not hesitate to contact me if you ever need help.
Regards,
Thomas