TFEL
, MFront
and MTest
MFront
MTest
python
bindingsThe page describes the new functionalities of Version 3.4.2 of the
TFEL
project.
This version was released This version was released on September 21,
2021 along with Versions 3.0.9
, 3.1.9
,
3.2.6
an 3.3.2
and inherits from the issues
solved in those versions.
MFront
This development was made to solve Issue #267 (see Section 3.8).
MFront
has extensive support for the definition of
single crystal as documented here: <singlecrystal.html>.
If the slip systems are defined (using for example the
@SlipSystem
keyword) , the class describing the slip system
now has a buildInteractionMatrix
which is meant to work as
follows:
@Parameters real im_coefficients[7];
.setEntryName("InteractionMatrixCoefficients");
im_coefficients
....
@Integrator{
const auto& ss = FCCSingleCrystalSlipSystems<real>::getSlipSystems();
const auto m = ss.buildInteractionMatrix(im_coefficients);
....
}
MTest
This development was made to solve Issue #273 (see Section 3.3).
An abstract class named MaterialProperty
has been added
as an equivalent for material properties of the Behaviour
class. This class has the following interface:
getVariablesNames
, which returns the names of the
arguments of material property.setVariableValue
which allows to set the value of an
argument of the material property.getValue
which evaluates the material property for the
values of the arguments set by the setVariableValue
method.getParametersNames
, which returns the names of the
parameters of material property.setParameter
which allows to change the value of a
parameter.The CastemMaterialProperty
and
CyranoMaterialProperty
classes are two concrete
implementation of the class for material properties generated
respectively using the Cast3M
and Cyrano
interfaces respectively.
In C++
, the MaterialProperty
class exposes
a static method called getMaterialProperty
which acts as an
abstract factory.
This class and associated method are also available in the
python
bindings. The getMaterialProperty
method is used in python
to build a custom constructor as
illustrated in the following example.
Here is an example of the usage of the MaterialProperty
class in python
.
import mtest
= mtest.MaterialProperty(
young_modulus 'src/libCastemVanadium.so', 'VanadiumAlloy_YoungModulus_SRMA')
'Temperature', 562)
young_modulus.setVariableValue(= young_modulus.getValue() E
Note that the MaterialProperty
constructor automatically
detects the interface used to generate the material property and
instantiates the proper concrete implementation internally which is
obsviously the CastemMaterialProperty
class in this
case.
Setting the variables’ values and evaluating the material property
can be tedious. To avoid this, overloaded versions of the
getValue
are available:
# using a dictionary
= young_modulus.getValue({'Temperature': 562})
E # for material properties with only one argument
= young_modulus.getValue(562) E
To make the code even more explicit, the call operator can also be used, as follows:
# using a dictionary
= young_modulus({'Temperature': 562})
E # for material properties with only one argument
= young_modulus(562) E
For more details, see: https://github.com/thelfer/tfel/issues/8
The output, inputs and parameters of a material property can now be
declared with any scalar type supported by the
SupportedTypes
class.
For more details, see: https://sourceforge.net/p/tfel/tickets/274/
The developments associated with this issue are described in Section 2.1.
For more details, see: https://sourceforge.net/p/tfel/tickets/273/
The list of parameters is now exported by interfaces of material
properties which provides a setParameter
method (namely the
Cast3M
and Cyrano
interfaces).
The ExternalLibraryManager
now have an
getMaterialPropertyParameters
method which allows to
retrieve this list of parameters. This method is also available in the
python
bindings.
The ExternalMaterialPropertyDescription
class which can
gathers all the informations exported by a material property new have a
parameters
data member with the list of the parameters of
the material property. This data member is also accessible in the
python
bindings.
For more details, see: https://sourceforge.net/p/tfel/tickets/272/
The getDSL
method now returns an object of the
MaterialPropertyDSL
type which derives from the
AbstractDSL
class. It exposes a method called
getMaterialPropertyDescription
which returns information
about the material property.
The MaterialPropertyDescription
exposes the following
methods:
getInputs
which returns the inputs of the material
property.getParameters
which returns the parameters of the
material property.getOutput
which returns the output of the material
property.getLawName
which returns the name of material
property.getMaterialName
which returns the name of material
described by this material property.getClassName
which returns a class name combining the
name of the material property and the name of the material.For more details, see: https://sourceforge.net/p/tfel/tickets/271/
python
bindingsWhen the evolution of the outer radius is imposed, the inner pressure evolution can now be retrieved using the following code:
= s.getEvolutionValue("InnerPressure", t) p
where s
is an object of type
StudyCurrentState
and t
the considered
time.
This syntax can also be used to retrieve the “AxialForce” when the axial growth is imposed, as follows:
= s.getEvolutionValue("AxialForce", t) f
For more details, see: https://sourceforge.net/p/tfel/tickets/269/
The MTest
executable allows to compare the tangent
operator returned by the behaviour to a numerical approximation. To be
able to do the same using the python
interface, the
following methods have been added:
setCompareToNumericalTangentOperator
: set if a
comparison of the tangent operator returned by the behaviour to a
numerical approximation.setTangentOperatorComparisonCriterion
: set the
criterion used to compare the tangent operator returned by the behaviour
and its numerical approximation.setNumericalTangentOperatorPerturbationValue
: set the
perburtation of the gradient used to compute a numerical approximation
of the tangent operator.For more details, see: https://sourceforge.net/p/tfel/tickets/268/
The developments associated with this issue are described in Section 1.1.
For more details, see : https://sourceforge.net/p/tfel/tickets/267/