TFEL
, MFront
and MTest
@HillTensor
keyword@StrainMeasure Hencky
and
@ModellingHypothesis AxisymmetricalGeneralisedPlaneStrain
MFront
Barlat.ixx
and
Hosford.ixx
does not work for floatscalculixelasticity3
shall not be run if the
castem interface is not enabledThis is mainly a bug fix version of the 3.1
series. All
tickets solved are described below.
tfel-config
TFEL
The --cxx-standard
option returns the version of the C++
standard used to compile TFEL
, as follows:
$ tfel-config --cxx-standard
17
@HillTensor
keywordThe @HillTensor
keyword is now documented.
For more details, see: https://sourceforge.net/p/tfel/tickets/114/
The variable name was used to form the symbol which defines the
default value of a real parameter. One should have used the external
name has this was already the case for integer
and
unsigned short
parameters.
For more details, see: https://sourceforge.net/p/tfel/tickets/113/.
In some cases, it is convenient to update auxiliary state variables
in the @Integrator
code block, rather than computing them
in the @UpdateAuxiliaryStateVariables
code block which is
only called once the convergence is reached.
However, if the jacobian matrix is computed numerically (at least partially), such updates could be wrong, because they can be based on the perturbated values of the unknowns.
In TFEL 3.1
, this can be circumvented by testing the
value of the perturbatedSystemEvaluation
boolean value as
follows:
// let av be an auxiliary state variable
@AuxiliaryStateVariable StrainStensor av;
@Integrator{
// put updated value of av in a temporary variable
const auto av_ = eval(...);
...
definition of the implicit system...
if(!perturbatedSystemEvaluation){
// update auxiliary state variables
= av_;
av }
} // end of @Integrator
In many cases, rather than updating auxiliary variables during the
Newton iterations, it can be more pratical to compute its increment,
defined in by local variable and to update the auxiliary variable in the
@UpdateAuxiliaryStateVariables
code block. The previous
trick can be used in this case in a straightforward manner.
For more details, see: https://sourceforge.net/p/tfel/tickets/111/
In previous versions, the numerically computed parts of the jacobian were updated after the convergence has been reached to ensure that a proper jacobian is available for the computation of the consistent tangent operator.
In TFEL-3.1.1
, those parts of the jacobian are no more
updated after convergence if the consistent tangent operator is not
requested.
For more details, see: https://sourceforge.net/p/tfel/tickets/110/
@StrainMeasure Hencky
and
@ModellingHypothesis AxisymmetricalGeneralisedPlaneStrain
This is a mistake in the Cast3M
interface which happens
when:
MieheApelLambrecht
finite strain strategy or
using the Hencky strain measure (this is equivalent for the
Cast3M
interface)Cast3M
interface tries to use
the GeneralisedPlaneStrain
hypothesis to support plane
stress computations.Because of some ill-formed test in CastemInterface.cxx
,
the interface tried to access to the BehaviourData
associated with the GeneralisedPlaneStrain
hypothesis …
which may be not available. Hence the error.
For more details, see: https://sourceforge.net/p/tfel/tickets/108/
For more details, see: https://sourceforge.net/p/tfel/tickets/107/
Compilation of MFront 3.1 fails for Intel Compiler (version icc/2016.0.047) with this message:
mfm/src/mfm.cxx(232): error: invalid type conversion: "const tfel::utilities::Argument" to "const std::string &" const auto& l = static_cast<const std::string&="">(a);
This problem is limited to this version of the Intel Compiler. The solution is to change this line with:
const auto& l = a.as_string();
For more details, see: https://sourceforge.net/p/tfel/tickets/106/
MFront
In order to check the MFront usage with CYRANO3
, its
would be usefull to retrieve the version of MFront
:
libTFELMFront.so
which is
dynamically loaded in CYRANO3
.MFront
generated librariesA specific symbol is now generated for every generated entry points
(functions or classes) defined in MFront
libraries.
This symbol’ name is composed by the entry point name followed by
_tfel_version
.
For example, if we are testing the version used to generated the
cyranonorton
function, one have to retrieve the
cyranonorton_tfel_version
symbol.
This can be done:
dlopen/dlsym
.getTFELVersion
method of the
ExternalLibraryManager
class.The tfel_version
member has been added to the
ExternalBehaviourDescription
class which is used by
Cyrano
. Beware that this can lead to inconsistencies if a
previous version of TFEL
is used.
TFEL
version at runtimeThe TFEL
version can be retrived by calling the
getTFELVersion
function defined in the
TFELConfig
shared library.
For more details, see: https://sourceforge.net/p/tfel/tickets/105/
The checks for material properties are not generated any more. This
is due to an ill-formed test in BehaviourDSLCommon.cxx
in
the writeMaterialPropertyCheckBoundsEvaluation
method of
the BehaviourDSLCommon
class.
For more details, see: https://sourceforge.net/p/tfel/tickets/104/
The temperature is updated twice in
updateExternalStateVariables
. This is due to the fact that
the temperature has been explicitly integrated in the external state
variables in the 3.1 release (in previous releases, the temperature was
treated independently, which led to lots of code duplication and special
cases).
This bug affects behaviours relying on local sub-stepping, a feature
provided by the Cast3M
and Cyrano
interfaces.
The other interfaces are not affected.
For more details, see: https://sourceforge.net/p/tfel/tickets/103/
The various constants defined in the PhysicalConstants
class are declared as constexpr static
variables.
In release mode, those variables are inlined (which is what was
intented). However, in debug mode, those static variables break the one
definition rule of C++
, leading to undefined symbols in
libraries or executables using them. This is a aknowledged flaw in the
C++-11
standard which has been solved in
C++-17
which introduces inline variables.
Thus the code of the PhysicalConstants
class is only
valid in C++-17
. In C++-11
, the solution to
this issue in is to remove the constexpr
keyword in front
of constant declaration and introduce a library called
TFELPhysicalConstants
in which the constants are
defined.
In C++-17
, this library is empty.
For more details, see: https://sourceforge.net/p/tfel/tickets/100/
When using the @ComputeThermalExpansion
keyword, the
thermal expansion is computed as follows:
\[ \frac{\Delta\,l}{l_{T^{i}}} = \frac{1}{1+\alpha\left(T^{i}\right)\,\left(T^{i}-T^{\alpha}\right)}\,\left[\alpha\left(T\right)\,\left(T-T^{\alpha}\right)-\alpha\left(T^{i}\right)\,\left(T^{i}-T^{\alpha}\right)\right] \]
where:
In previous versions of TFEL
and MFront
,
the reference temperature for the geometry \(T^{i}\) could be specified as a parameter
named ReferenceTemperature
. This name was badly choosen and
can be confusing as it is more intuitively associated with \(T^{\alpha}\).
Since this version of TFEL
and MFront
, this
parameter has been renamed
ReferenceTemperatureForInitialGeometry
.
For more details, see: https://sourceforge.net/p/tfel/tickets/100/
Barlat.ixx
and
Hosford.ixx
does not work for floatsIn this case, the functions defined in Barlat.ixx
and
Hosford.ixx
can make extensive use of
std::pow(float,int)
when the exponent is an
int
: this function returns a double
and not a
float
. Thus the result of those functions must be recasted
in float
.
For more details, see: https://sourceforge.net/p/tfel/tickets/99/
calculixelasticity3
shall not be run if the
castem interface is not enabledFor more details, see: https://sourceforge.net/p/tfel/tickets/98/
For each behaviour generated by MFront
using the
aster
interface, a function called
<aster_behaviour_name>_getIntegrationErrorMessage()
is now also created. This function returns a buffer containing the last
error encountered. This buffer has a per thread storage (so it is thread
safe). Its size is 128 characters (arbitrary choice).
Since this function is available, the default option for reporting
integration errors on the standard error output has been changed from
true to false. The previous option can be recovered by using the
@AsterErrorReport
keyword in MFront
as
follows:
@AsterErrorReport true;
or, even better, by passing --@AsterErrorReport=true
when calling MFront
, as follows:
$ mfront --obuild --@AsterErrorReport=true ....
For more details, see: https://sourceforge.net/p/tfel/tickets/16/
The name of the parameter used to define the reference temperature of
the geometry has been changed to
ReferenceTemperatureForInitialGeometry
. See Ticket #100 for
details.
aster
interfaceThe default option for reporting integration errors on the standard
error output has been changed from true to false. The previous option
can be recovered by using the @AsterErrorReport
keyword in
MFront
as follows:
@AsterErrorReport true;
See Ticket #16 for details.