TFEL, MFront and MTest@HillTensor keyword@StrainMeasure Hencky and
@ModellingHypothesis AxisymmetricalGeneralisedPlaneStrainMFrontBarlat.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-configTFELThe --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 @IntegratorIn 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 AxisymmetricalGeneralisedPlaneStrainThis 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/
MFrontIn 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.