MTest
keywords@AccelerationAlgorithm
keyword@AccelerationAlgorithmParameter
keyword@Author
keyword@Behaviour
keyword@CastemAccelerationPeriod
keyword@CastemAccelerationTrigger
keyword@CohesiveForce
keyword@CohesiveForceEpsilon
keyword@CompareToNumericalTangentOperator
keyword@Date
keyword@DeformationGradient
keyword@DeformationGradientEpsilon
keyword@Description
keyword@DrivingVariable
keyword@DrivingVariableEpsilon
keyword@Evolution
keyword@ExternalStateVariable
keyword@HandleThermalExpansion
keyword@ImposedCohesiveForce
keyword@ImposedDeformationGradient
keyword@ImposedDrivingVariable
keyword@ImposedOpeningDisplacement
keyword@ImposedStrain
keyword@ImposedStress
keyword@ImposedThermodynamicForce
keyword@IntegerParameter
keyword@InternalStateVariable
keyword@MaterialProperty
keyword@MaximumNumberOfIterations
keyword@MaximumNumberOfSubSteps
keyword@ModellingHypothesis
keyword@NumericalTangentOperatorPerturbationValue
keyword@OpeningDisplacement
keyword@OpeningDisplacementEpsilon
keyword@OutputFile
keyword@OutputFilePrecision
keyword@Parameter
keyword@PredictionPolicy
keyword@Real
keyword@ResidualFile
keyword@ResidualFilePrecision
keyword@RotationMatrix
keyword@StiffnessMatrixType
keyword@StiffnessUpdatePolicy
keyword@Strain
keyword@StrainEpsilon
keyword@Stress
keyword@StressEpsilon
keyword@TangentOperatorComparisoncriterion
keyword@Test
keyword@ThermodynamicForce
keyword@ThermodynamicForceEpsilon
keyword@Times
keyword@UnsignedIntegerParameter
keyword@UseCastemAccelerationAlgorithm
keyword@AccelerationAlgorithm
keywordThe @AccelerationAlgorithm
keyword is used to give the
name of the acceleration algorithm used to accelerate the convergence
toward equilibrium.
The following algorithm are available:
Cast3M
Secant
Steffensen
Irons-Tuck
@AccelerationAlgorithm 'Secant';
@AccelerationAlgorithmParameter
keywordThe @AccelerationAlgorithmParameter
keyword allows the
user to fine-tune the acceleration algorithm used to reach equilibrium.
The parameter that can be defined depends on the acceleration algorithm
used.
This keyword is followed by a string giving the name of the parameter and a string giving the value of this parameter.
@AccelerationAlgorithmParameter 'AccelerationTrigger' '3';
@Author
keywordThe @Author
keyword is used give the name of the person
who wrote the mtest file.
All the following words are appended to the author’s name up to a final semicolon.
@Author Éric Brunon;
@Behaviour
keywordThe @Behaviour
keyword declares the behaviour used for
the test. This keyword must be followed by an option specifying the
interface used by the behaviour. The castem
,
cyrano
and aster
interfaces are supported.
Two strings are then expected:
@Behaviour<castem> 'libMFrontCastemBehaviours.so' 'umatnorton';
@CastemAccelerationPeriod
keywordThe keyword @CastemAccelerationPeriod
specifies the
number of iterations between two calls to the acceleration
algorithm.
This keyword is followed by a positive number.
@CastemAccelerationPeriod 3;
@CastemAccelerationTrigger
keywordThe keyword @CastemAccelerationTrigger
specifies the
number of iterations before the first call to the acceleration
algorithm.
This keyword is followed by a positive number.
@CastemAccelerationTrigger 4;
@CohesiveForce
keywordThe @CohesiveForce
let the user specify the initial
value of the cohesive forces.
This keyword is followed by an array. The size of this array must be
equal to the number of components of symmetric tensors for the modelling
hypothesis considered (see the @ModellingHypothesis
keyword).
@CohesiveForce {'T0,,0.,0.};
@CohesiveForceEpsilon
keywordThe global algorithm uses two criteria to check if a satisfying equilibrium has been found: one on opening displacements, the other on cohesive forces.
This criterion on cohesive forces checks that the residual of the Newton algorithm is low enough. By default, this value is equal to 1.e-3, which is a convenient value if cohesive force are expressed in Newton.
The @CohesiveEpsilon
let the user specify the criterion
value used for the criterion on cohesive force.
It is followed by the criterion value.
@CohesiveForce 1.e2;
@CompareToNumericalTangentOperator
keywordIf the @CompareToNumericalTangentOperator
is followed by
true
, a comparison of the tangent operator given by the
behaviour to a numerical approximation computed by a centered finite
difference is performed.
The value of the perturbation used to compute this numerical
approximation can be adjusted by the
@NumericalTangentOperatorPerturbationValue
.
The value used for to compare the tangent operator given by the
behaviour to a numerical approximation can be adjusted by the
@TangentOperatorComparisoncriterion
.
@CompareToNumericalTangentOperator true;
@Date
keywordThe @Date
keyword allows the user to precise when the
mtest file was written.
All the following words are appended to the date up to a final semicolon.
@Date 2008-11-17;
@DeformationGradient
keywordThe @DeformationGradient
let the user specify the
initial value of the deformation gradient.
This keyword is followed by an array. The size of this array must be
equal to the number of components of (non-symmetric) tensors for the
modelling hypothesis considered (see the
@ModellingHypothesis
keyword).
@DeformationGradient {1,1,1,0,0,0,0,0,0};
@DeformationGradientEpsilon
keywordThe global algorithm uses two criteria to check if a satisfying equilibrium has been found: one on deformation gradient, the other on stresses.
This criterion on the deformation gradient checks if two successive estimate of the strains are close enough. By default, the criterion value used is 1.e-12;
The @SDeformationGradient
let the user specify the
criterion value used for the criterion on strains.
It is followed by the criterion value.
@DeformationGradient 1.e-12;
@Description
keywordThe @Description
keywords describes the test which is
implemented in a mtest file.
This keyword is followed by a block containing all the relevant piece of information.
@Description
{
"Modélisation d'un tube sous pression"
}
@DrivingVariable
keywordThe keyword @DrivingVariable
is not documented yet
@DrivingVariableEpsilon
keywordThe keyword @DrivingVariableEpsilon
is not documented
yet
@Evolution
keywordThe @Evolution
specifies a function of time.
This keyword may have one option, which is the way the evolution will
be defined. Two values are accepted: evolution
and
function
. If no option is specified, the
evolution
option is chosen.
After the option, the name of evolution, which shall be given as string, is expected.
If the evolution
option has been selected, the user may
specify a constant evolution by simply giving its value. Otherwise,
complex evolutions can be build using an associative array where the key
is the time and the value of the evolution. Between two times, the
values will be interpolated linearly. Prior to the first declared time
given, the value corresponding to this first time is used. After the
last time given, the value corresponding this last time is used.
If the function
option has been selected, a string is
expected which wil be interpreted as a function of time. The time is
represented by the variable t
.
@Evolution 'Pressure' 1.e5;
@Evolution 'Pressure' {0:0.,1.:1.e5};
@Real P0 2.e5
@Real P1 4.e5
@Evolution<function> 'Pressure' 'P0+(P1-P0)*t**2';
@ExternalStateVariable
keywordThe @ExternalStateVariable
keyword let the user specify
the evolution of an external state variables, including the temperature
which is generally defined by default by behaviour interfaces.
This keyword may have one option, which is the way the evolution will
be defined. Two values are accepted: evolution
and
function
. If no option is specified, the
evolution
option is chosen.
After the option, the name of the external state variable, which shall be given as string, is expected.
If the evolution
option has been selected, the user may
specify a constant evolution by simply giving its value. Otherwise,
complex evolutions can be build using an associative array where the key
is the time and the value of the evolution. Between two times, the
values will be interpolated linearly. Prior to the first declared time
given, the value corresponding to this first time is used. After the
last time given, the value corresponding this last time is used.
If the function
option has been selected, a string is
expected which wil be interpreted as a function of time. The time is
represented by the variable t
.
@ExternalStateVariable 'Temperature' 293.15;
@ExternalStateVariable 'Temperature' {0:293.15,1.:800};
@Real T0 293.15
@Real T1 400.15
@ExternalStateVariable<function> 'Temperature' 'T0+(T1-T0)*t**2';
@HandleThermalExpansion
keywordThe keyword @HandleThermalExpansion
is not documented
yet
@ImposedCohesiveForce
keywordThe keyword @ImposedCohesiveForce
is not documented
yet
@ImposedDeformationGradient
keywordThe keyword @ImposedDeformationGradient
is not
documented yet
@ImposedDrivingVariable
keywordThe keyword @ImposedDrivingVariable
is not documented
yet
@ImposedOpeningDisplacement
keywordThe keyword @ImposedOpeningDisplacement
is not
documented yet
@ImposedStrain
keywordThe @ImposedStrain
keyword allows the user to impose the
evolution of a component of the strains.
This keyword may have one option, which is the way the evolution will
be defined. Two values are accepted: evolution
and
function
. If no option is specified, the
evolution
option is chosen.
After the option, the name of the component of the strains, which shall be given as string, is expected.
According to the modelling hypothesis selected (see the
@ModellingHypothesis
keyword), the following components
names are accepted:
If the evolution
option has been selected, the user may
specify a constant evolution by simply giving its value. Otherwise,
complex evolutions can be build using an associative array where the key
is the time and the value of the evolution. Between two times, the
values will be interpolated linearly. Prior to the first declared time
given, the value corresponding to this first time is used. After the
last time given, the value corresponding this last time is used.
If the function
option has been selected, a string is
expected which is interpreted as a function of time. The current time is
represented by the variable t
.
@ImposedStrain<evolution> 'EXX' 1e-3;
@ImposedStrain<evolution> 'EXX' {0.:0.,1:1e-3};
@ImposedStrain<function> 'EXX' 'e0*sin(t/900.)';
The off-diagonal terms shall be multiplied by a factor \(\sqrt(2)\) with respect to standard conventions.
@ImposedStress
keywordThe @ImposedStress
keyword allows the user to impose the
evolution of a component of the stresses.
This keyword may have one option, which is the way the evolution will
be defined. Two values are accepted: evolution
and
function
. If no option is specified, the
evolution
option is chosen.
After the option, the name of the component of the stresses, which shall be given as string, is expected.
According to the modelling hypothesis selected (see the
@ModellingHypothesis
keyword), the following components
names are accepted:
If the evolution
option has been selected, the user may
specify a constant evolution by simply giving its value. Otherwise,
complex evolutions can be build using an associative array where the key
is the time and the value of the evolution. Between two times, the
values will be interpolated linearly. Prior to the first declared time
given, the value corresponding to this first time is used. After the
last time given, the value corresponding this last time is used.
If the function
option has been selected, a string is
expected which is interpreted as a function of time. The current time is
represented by the variable t
.
@ImposedStress 'SXX' 50.e6;
@ImposedStress<evolution> 'SXX' {0.:0.,1:50e6};
@ImposedStress<function> 'SXX' 's0*sin(t/900.)';
The off-diagonal terms shall be multiplied by a factor \(\sqrt(2)\).
@ImposedThermodynamicForce
keywordThe keyword @ImposedThermodynamicForce
is not documented
yet
@IntegerParameter
keywordThe @IntegerParameter
keyword specifies the value of an
integer parameter of the behaviour.
@IntegerParameter 'iter' 12;
@InternalStateVariable
keywordThe @InternalStateVariable
keyword defines the initial
value of a state variable.
This keyword must be followed by the name of the internal state variable considered, given as a string.
If this internal state variable is scalar, a real value is then expected.
If this internal state variable is a symmetric tensor, an array of
real values of the appropriate size is expected. A symmetric tensor has
3 components in 1D, 4 components in 2D and 6 components in 3D (see the
@ModellingHypothesis
keyword). The off-diagonals components
shall be declared with a \(\sqrt(2)\)
factor.
@InternalStateVariable 'ElasticStrain' {'EELRR0','EELZZ0','EELZZ0',0.};
@MaterialProperty
keywordThe @MaterialProperty
keyword defines a material
property. Only the mechanical properties defined by the behaviour for
the modelling hypothesis considered may be used with the noticeable
exception of the thermal expansions:
ThermalExpansion
propertyThermalExpansion1
, ThermalExpansion2
and
ThermalExpansion3
material properties.This keyword takes the type of the material property as an option.
Three types of material properties are supported, constant
or castem
or function.
The name of the material property shall then be given.
If the material property is constant, its value is expected.
If the material property is of the castem
type, the name
of the library and the name of the function implementing the material
property are expected.
If the material property is a function, the function definition is expected.
@MaterialProperty<constant> 'YoungModulus' 150.e9;
@MaterialProperty<castem> 'YoungModulus' 'libInconel600MaterialProperties.so' 'Inconel600_YoungModulus';
@MaximumNumberOfIterations
keywordThe @MaximumNumberOfIterations
keyword let the user
specify the maximum number of iterations of the global algorithm to
reach the equilibrium.
This keyword is followed by an integer.
If the number of iterations reaches the maximal authorized value, the
time step is divided by two. The maximum number of sub-steps can be
specified using the @MaximumNumberOfSubSteps
keyword.
@MaximumNumberOfIterations 10;
@MaximumNumberOfSubSteps
keywordThe @MaximumNumberOfSubSteps
keyword let the user
specify the maximum number of sub steps allowed.
This keyword is followed by an integer.
When the global algorithm fails to reach equilibrium (see the
@MaximumNumberOfIterations
keyword), the time step can be
divided by two. The maximal number of times the time step is reduced if
given by maximum number of sub steps.
@MaximumNumberOfSubSteps 10;
@ModellingHypothesis
keywordThe @ModellingHypothesis
keyword allows the user to
choose the modelling hypothesis to use. The keywords shall be one of the
first keyword of the file: if not, some keywords, which requires the
modelling hypothesis to be defined, may force the default modelling
hypothesis to be used (Tridimensional
).
This keyword is followed by the desired modelling hypothesis given as a string. The following values are currently supported:
The modelling hypothesis changes the name of the components of symmetric tensors and their numbers. For example, the components of the strains are:
@NumericalTangentOperatorPerturbationValue
keywordThe @NumericalTangentOperatorPerturbationValue
keyword
can be used to adjust the value use to perform a numerical approximation
of the tangent operator. This keyword followed by the value to be
used.
@NumericalTangentOperatorPerturbationValue 1.e-9;
@OpeningDisplacement
keywordThe keyword @OpeningDisplacement
is not documented
yet
@OpeningDisplacementEpsilon
keywordThe keyword @OpeningDisplacementEpsilon
is not
documented yet
@OutputFile
keywordThe @OutputFile
keywords specifies the name of the
output file. By default, the name of output file is egal to the name of
the input file, minus the .mtest
extension if present, plus
.res
.
@OutputFile 'results.txt';
@OutputFilePrecision
keywordThe @OutputFilePrecision
specify the number of digits
used to print the results in the output file.
This keyword is followed by the number of digits wanted.
@OutputFilePrecision 15;
@Parameter
keywordThe @Parameter
keyword specifies the value of a
parameter of the behaviour.
@Parameter 'espilon' 1.e-8;
@PredictionPolicy
keywordThe @PredictionPolicy
keyword let the user how the
initial estimate of the solution shall be obtained.
This keyword is followed by a string. The following values are allowed:
@PredictionPolicy 'ElasticPrediction';
The ElasticPredictionFromMaterialProperties
policy is
only supported by the castem
interface as the
Cast3M
finite element solver requires the stiffness matrix
to be defined.
@Real
keywordThe @Real
keyword let the user define a constant.
This keyword is followed by the name of the constant, as a string and by the value of the constant.
@Real 'SXX0' 20.6;
@ResidualFile
keywordThe keyword @ResidualFile
is not documented yet
@ResidualFilePrecision
keywordThe keyword @ResidualFilePrecision
is not documented
yet
@RotationMatrix
keywordThe @RotationMatrix
let the user specify a rotation
matrix, so that the principal directions of the material are different
from those used for the resolution and the boundary conditions.
This keyword is followed by an array of array reprensentig a 3x3 matrix.
@RotationMatrix {{0,1,0},
{1,0,0},
{0,0,1}};
@StiffnessMatrixType
keywordThe @StiffnessMatrixType
keyword let the user specify
choose type of stiffness matrix that shall be given by the mechanical
behaviour and that will be used by the resolution algorithm.
This keyword is followed by a string. The following values are allowed:
@StiffnessMatrixType 'Elastic';
@StiffnessUpdatePolicy
keywordThis keyword is not yet implemented.
@Strain
keywordThe @Strain
let the user specify the initial value of
the strains.
This keyword is followed by an array. The size of this array must be
equal to the number of components of symmetric tensors for the modelling
hypothesis considered (see the @ModellingHypothesis
keyword).
The values must follow the TFEL
conventions. In \(3D\), strains are stored in the following
order: \[
\left(
varepsilon_{xx},\varepsilon_{yy},\varepsilon_{zz},\sqrt{2}\,\varepsilon_{xy},\sqrt{2}\,\varepsilon_{xz},\sqrt{2}\,\varepsilon_{yz}
\right)
\]
@Strain {0.000239466253465591,
-7.18398760396772e-05,
-7.18398760396772e-05,
0.,0.,0.};
@StrainEpsilon
keywordThe global algorithm uses two criteria to check if a satisfying equilibrium has been found: one on strains, the other on stresses.
This criterion on strains checks if two successive estimate of the strains are close enough. By default, the criterion value used is 1.e-12;
The @StrainEpsilon
let the user specify the criterion
value used for the criterion on strains.
It is followed by the criterion value.
@StrainEpsilon 1.e-12;
@Stress
keywordThe @Stress
let the user specify the initial value of
the stresses.
This keyword is followed by an array. The size of this array must be
equal to the number of components of symmetric tensors for the modelling
hypothesis considered (see the @ModellingHypothesis
keyword).
@Stress {'YoungModulus*EXX0',
'-PoissonRatio*YoungModulus*EXX0',
'-PoissonRatio*YoungModulus*EXX0',
0.,0.,0.};
@StressEpsilon
keywordThe global algorithm uses two criteria to check if a satisfying equilibrium has been found: one on strains, the other on stresses.
This criterion on stresses checks that the residual of the Newton Algorithm is low enough. By default, this value is equal to 1.e-3, which is a convenient value if stresses are expressed in Pa.
The @StressEpsilon
keyword let the user specify the
criterion value used for the criterion on stresses.
It is followed by the criterion value.
@StressEpsilon 1.e2;
@TangentOperatorComparisoncriterion
keywordThe keyword @TangentOperatorComparisoncriterion
is not
documented yet
@Test
keywordThe @Test
keyword allows the user to add a test on the
results. Two types of tests are supported, function
or
file
. The tests are executed at the end of each time
step.
This keyword is followed by the type of the test.
If the type of the test is function
, two syntaxes are
allowed. In the first one, three arguments are expected: the name of the
tested variable, a function of time given the expected value, a
criterion value used for the comparison. In the second syntax, two
arguments are expected: a map which associates the name of a tested
variable to a function of time given the expected value of this variable
and a criterion value used for the comparison. The functions may
explicitly depend on time through the variable t
.
If the type of the test is file
, the expected values are
read in the columns of a text file. The name of the text file shall be
given and then two syntaxes are allowed. In the first one, three
arguments are expected: the name of the tested variable, a column number
and a criterion value used for the comparison. In the second syntax, two
arguments are expected: a map which associates the name of a tested
variable to a column number and a criterion value used for the
comparison. In each case, the values given by the n+1 line shall
correspond to the values expected after the n period.
The comparisons are made using an absolute criterion. The names of
the components of the strains begins with E. The name of the components
of the stresses begins with S. The name of the components of symmetric
tensor internal state variables begins with the name of the internal
state variables. The name of the components of symmetric tensors are
obtained by suffixing their name according to the modelling hypothesis
used (see the @ModellingHypothesis
keyword). For example,
the components of the strains are:
Off-diagonals terms are affected by a factor \(\sqrt(2)\).
@Test<function> 'EXY' '0.' 1.e-12;
@Test<function> {'EXX':'SXX/YoungModulus',
'EYY':'-PoissonRatio*SXX/YoungModulus',
'EZZ':'-PoissonRatio*SXX/YoungModulus',
'EXY':'0.','EXZ':'0.','EYZ':'0.'} 1.e-12;
@Test<file> 'reference.txt' 'EXY' 1 1.e-12;
@ThermodynamicForce
keywordThe keyword @ThermodynamicForce
is not documented
yet
@ThermodynamicForceEpsilon
keywordThe keyword @ThermodynamicForceEpsilon
is not documented
yet
@Times
keywordThe @Times
keywords let the user specify a list of times
used for the computations.
This keyword is followed by an array describing intervals of times. By default, one time step is used to go from a given time to the next one. The keyword ‘in’ allows the user to divide an interval into a given number of smaller intervals.
The loadings and the external state variables evolutions are
described in a totally independent manner (see the
@ImposedStrain
, the @ImposedStress
and the
@ExternalStateVariable
keywords).
In case of non convergence, the algorithm handles time sub stepping.
See the @MaximumNumberOfSubSteps
for details.
@Times {0.,3600.}; // 1 time step of 3600. seconds
@Times {0.,3600. in 10}; // 10 time steps of 360 seconds
@UnsignedIntegerParameter
keywordThe @UnsignedIntegerParameter
keyword specifies the
value of a parameter of the behaviour.
@UnsignedIntegerParameter 'iterMax' 12;
@UseCastemAccelerationAlgorithm
keywordThe @UseCastemAccelerationAlgorithm
specifies if the
acceleration algorithm introduced by the resolution procedures of the
castem finite element shall be used.
This keyword is followed by true
or
false
.
@UseCastemAccelerationAlgorithm true;