@ImposedStrain is meaningless for finite strain behaviours, please consider using @ImposedDeformationGradient.
@ImposedStress does work. At least for Cast3M behaviours.
Indeed, use @ImposedStress reveals a severe bug in MTest when using aster behaviours : the consistent tangent operator is not correctly converted (aster made a rather unsual and cumbersome choice for storing the consistent tangent operator).
The correction is straightforward and has been merged in revision 1080.
You will find attached the correction for tfel-2.0.2 and tfel-2.0.3 so you can recompile you local version.
Thank you Thomas.
I recompiled the 2.0.3 version of mfront using the new .cxx file you provided.
I could run an .mtest with @ImposedStress while it was impossible before.
But I face an integration problem, the timestep keeps being divided and no convergence is reached. The error message I get in the bash is the following:
...
iteration 99 : 1.10982e-39 8.67362e-19 (1 0.999999 0.999999 6.13925e-117 0 0 0 0 0)
iteration 100 : 1.10982e-39 8.67362e-19 (1 0.999999 0.999999 -5.97722e-117 0 0 0 0 0)
No convergence, the following criteria were not met :
imposed thermodynmic force not reached for component 0(imposed value : 0.00585938, computed value : 0, criteria : 0.001)
Result of test 'unit behaviour test' of group 'MTest' : FAILED
End of Test Suite : FAILED
Maybe I need to change one parameter in the .mfront convergence settings?
Actually I have
@Theta 1.0;
@Epsilon 1.e-6;
@MaximumIncrementValuePerIteration 1.e-3;
@IterMax 100 ;
Thank you
Félix
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thank you for testing. There are currently only a few dozen tests using this feature in finite strain.
@Epsilon 1.e-6 is a much too low value, in particular when the tangent operator is needed. I recommand a least 1.e-11 to get converged and stable results .
The problem with mtest is that it was initially meant for non regression tests and its convergence criteria are usually much too low for standard use. Please check the documentation of @StressEpsilton and @DeformationGradientEpsilon (or @StrainEpsilon if the last one is not documented yet):
Thank you for these inputs. I maybe replied too quckly concerning the use of @ImposedStress (my mtest was not correct). The @ImposedStress is finally not working, the bash output is
test 'unit behaviour test' has thrown an exception (LUDecomp::exe : null pivot)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Well, there are several possible explanation to that:
1) the patch was not taken into account
2) your system is not sufficiently constrained. It may happen with finite strain behavoiur as the number of degrees of freedom (F has 9 components) exceeds the number of equilibrium equations (the stresses has 6 components).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Sorry for the delay, it seems that one of my answer got lost and never was posted.
Indeed your problem is ill-posed : you impose the 6 stress components, but you have 9 degrees of freedom. So your jacobian matrix is singular. A new version would not change a thing.
MTest is limited to the case where you explicitely impose some terms (or relationship) on 3 terms of the deformation gradient. This is exactly like in a standard computations where you must set some dirichlet boundary conditions for the solution to exist.
Sincerly,
Thomas
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ok I tried a tensile test in [159] direction but then it is hard to know what conditions to impose on F??? In this case the simplest will be to rotate the orientation tensor (slip normals and slip directions) and apply a [001] tensile load.
But then I applied a tensile load in [001] direction and it works.
The examples are in the current revision. I have some trouble with the automatic source deployement. Maybe you shall ask an svn access to the official repository.
For your problem, you may have a look at the asterfinitestrainsinglecrystal-012.mtest.in. The @RotationMatrix keyword allows to specify a material orientation. I think that you can adapt it to our case (otherwise, I can search in my tests the definition of the rotation matrix for the 159 directions, but it may take some time...).
Sincerly,
Thomas
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thank you Thomas
I will provide a small script computing the rotation Matrix from the orientation using Miller indices... It is in one of my tests as well.
Thank you for pointing out the @RotationMatrix keyword.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Additional question : in some cases the integration fails (due to specific symmetries I guess and the redundant conditions on F I am imposing). The .mtest error message I get is:
...
iteration 98 : 1.22775e-11 4.41015e-06 (0.999875 0.999875 1.00036 9.41673e-43 0 0 0 0 0)
iteration 99 : 1.22701e-11 4.40913e-06 (0.999875 0.999875 1.00036 -1.82729e-40 0 0 0 0 0)
iteration 100 : 1.22627e-11 4.40811e-06 (0.999875 0.999875 1.00036 -1.82729e-40 0 0 0 0 0)
No convergence, the following criteria were not met :
test on driving variables (error : 1.22627e-11, criteria : 1e-12)
It seems this is because the prescribed F + conditions on imposed stress cannot be satisfied.
Where in the .mfront or .mtest is the 1e-12 criteria specified? I would like to try to increase it.
If I increase the iteration number the iteration will become very slow.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Félix,
Thank you for your question.
@ImposedStrain is meaningless for finite strain behaviours, please consider using @ImposedDeformationGradient.
@ImposedStress does work. At least for Cast3M behaviours.
Indeed, use @ImposedStress reveals a severe bug in MTest when using aster behaviours : the consistent tangent operator is not correctly converted (aster made a rather unsual and cumbersome choice for storing the consistent tangent operator).
The correction is straightforward and has been merged in revision 1080.
You will find attached the correction for tfel-2.0.2 and tfel-2.0.3 so you can recompile you local version.
Sincerly,
Helfer Thomas
For information, 6 tests case have been added in mfront/tests/behaviours/aster.
Thank you Thomas.
I recompiled the 2.0.3 version of mfront using the new .cxx file you provided.
I could run an .mtest with @ImposedStress while it was impossible before.
But I face an integration problem, the timestep keeps being divided and no convergence is reached. The error message I get in the bash is the following:
...
iteration 99 : 1.10982e-39 8.67362e-19 (1 0.999999 0.999999 6.13925e-117 0 0 0 0 0)
iteration 100 : 1.10982e-39 8.67362e-19 (1 0.999999 0.999999 -5.97722e-117 0 0 0 0 0)
No convergence, the following criteria were not met :
Result of test 'unit behaviour test' of group 'MTest' : FAILED
End of Test Suite : FAILED
Maybe I need to change one parameter in the .mfront convergence settings?
Actually I have
@Theta 1.0;
@Epsilon 1.e-6;
@MaximumIncrementValuePerIteration 1.e-3;
@IterMax 100 ;
Thank you
Félix
Hi Félix,
Thank you for testing. There are currently only a few dozen tests using this feature in finite strain.
@Epsilon 1.e-6 is a much too low value, in particular when the tangent operator is needed. I recommand a least 1.e-11 to get converged and stable results .
The problem with mtest is that it was initially meant for non regression tests and its convergence criteria are usually much too low for standard use. Please check the documentation of @StressEpsilton and @DeformationGradientEpsilon (or @StrainEpsilon if the last one is not documented yet):
mtest --help-keyword=@StressEpsilonor consult : http://tfel.sourceforge.net/MTest-keywords.html
Beware that the convergence criteria on stresses depends on the unit system you use.
Thomas
Thank you for these inputs. I maybe replied too quckly concerning the use of @ImposedStress (my mtest was not correct). The @ImposedStress is finally not working, the bash output is
test 'unit behaviour test' has thrown an exception (LUDecomp::exe : null pivot)
Well, there are several possible explanation to that:
1) the patch was not taken into account
2) your system is not sufficiently constrained. It may happen with finite strain behavoiur as the number of degrees of freedom (F has 9 components) exceeds the number of equilibrium equations (the stresses has 6 components).
1) Before compiling I replaced the file in this folder of the sources:
./tfel-2.0.3/mfront/mtest/
2) I tried a tensile test on [100] (SXX increasing, all other components=0)
then after your remark I also tried a test in [159] direction using:
@ImposedStress 'SXX' {0.: 0., 2.0E-1 : 0.93};
@ImposedStress 'SYY' {0.: 0., 2.0E-1 : 23.4};
@ImposedStress 'SZZ' {0.: 0., 2.0E-1 : 75.7};
@ImposedStress 'SXY' {0.: 0., 2.0E-1 : 4.67};
@ImposedStress 'SXZ' {0.: 0., 2.0E-1 : 8.41};
@ImposedStress 'SYZ' {0.: 0., 2.0E-1 : 42.0};
But the error remains.
If you have any advice I will take it
Maybe I can download the development version? (rev > 1080)
But I only find for download tfel2.1.0 and it seems last changes were done a while ago...
Hi Félix,
Sorry for the delay, it seems that one of my answer got lost and never was posted.
Indeed your problem is ill-posed : you impose the 6 stress components, but you have 9 degrees of freedom. So your jacobian matrix is singular. A new version would not change a thing.
MTest is limited to the case where you explicitely impose some terms (or relationship) on 3 terms of the deformation gradient. This is exactly like in a standard computations where you must set some dirichlet boundary conditions for the solution to exist.
Sincerly,
Thomas
Ok I tried a tensile test in [159] direction but then it is hard to know what conditions to impose on F??? In this case the simplest will be to rotate the orientation tensor (slip normals and slip directions) and apply a [001] tensile load.
But then I applied a tensile load in [001] direction and it works.
I prescribed it using
@ImposedStress 'SXX' {0.: 0., 2.0E-1 : 0.};
@ImposedStress 'SYY' {0.: 0., 2.0E-1 : 0.};
@ImposedStress 'SZZ' {0.: 0., 2.0E-1 : 300.};
@ImposedStress 'SXY' {0.: 0., 2.0E-1 : 0.};
@ImposedStress 'SXZ' {0.: 0., 2.0E-1 : 0.};
@ImposedStress 'SYZ' {0.: 0., 2.0E-1 : 0.};
@ImposedDeformationGradient 'FXY' {0.: 0., 2.0E-1 : 0. };
@ImposedDeformationGradient 'FYX' {0.: 0., 2.0E-1 : 0. };
@ImposedDeformationGradient 'FXZ' {0.: 0., 2.0E-1 : 0. };
@ImposedDeformationGradient 'FZX' {0.: 0., 2.0E-1 : 0. };
@ImposedDeformationGradient 'FYZ' {0.: 0., 2.0E-1 : 0. };
@ImposedDeformationGradient 'FZY' {0.: 0., 2.0E-1 : 0. };
@Times {0., 2.e-1 in 100};
Maybe I should see the 6 examples you added but I do not know where to find them.
Cheers
Félix
Hi Félix,
The examples are in the current revision. I have some trouble with the automatic source deployement. Maybe you shall ask an svn access to the official repository.
For your problem, you may have a look at the asterfinitestrainsinglecrystal-012.mtest.in. The @RotationMatrix keyword allows to specify a material orientation. I think that you can adapt it to our case (otherwise, I can search in my tests the definition of the rotation matrix for the 159 directions, but it may take some time...).
Sincerly,
Thomas
Thank you Thomas
I will provide a small script computing the rotation Matrix from the orientation using Miller indices... It is in one of my tests as well.
Thank you for pointing out the @RotationMatrix keyword.
This would also be a great extension to mtest @RotationMatrix keyword.
Additional question : in some cases the integration fails (due to specific symmetries I guess and the redundant conditions on F I am imposing). The .mtest error message I get is:
...
iteration 98 : 1.22775e-11 4.41015e-06 (0.999875 0.999875 1.00036 9.41673e-43 0 0 0 0 0)
iteration 99 : 1.22701e-11 4.40913e-06 (0.999875 0.999875 1.00036 -1.82729e-40 0 0 0 0 0)
iteration 100 : 1.22627e-11 4.40811e-06 (0.999875 0.999875 1.00036 -1.82729e-40 0 0 0 0 0)
No convergence, the following criteria were not met :
It seems this is because the prescribed F + conditions on imposed stress cannot be satisfied.
Where in the .mfront or .mtest is the 1e-12 criteria specified? I would like to try to increase it.
If I increase the iteration number the iteration will become very slow.
Sorry I found where to modify the criterions... In your answer a few lines above
@StressEpsilon
@DeformationGradientEpsilon