TFEL
, MFront
and MTest
Data::read_value
is brokenStandardElasticity
brick shall be inserted at the beginning of the @Integrator
block, not at the endBOOST_VERSION
version in bindings/python/include/TFEL/Python/SharedPtr.hxx
ComputeStress
block in the RungeKutta
DSLNTENS
value in the Abaqus
interfaceCyrano
interface: bug in CyranoBehaviourHandler
class. Missing test.st2tost2
when using rvalue reference*=
and /=
are broken for fourth order tensorspython3
in the python interfaceThreadPool
threading model is used@Profiling
true; Error in cygwinPLASTIC
+ MFRONT
in CalculiX
abaqus
interface)MFront
to work under Windows
without requiring MSYS
Version 3.0.2 of TFEL
, MFront
and MTest
has been released on the 25th October, 2017.
This is mainly a bug fix version of the 3.0
series. All tickets solved are described below. There are no known regressions.
In certain circumstances, parsing a variable type was not consistent with C++
rules. For example, the following statement was not properly parsed:
@LocalVariable tfel::math::tvector<Nss,tfel::math::tensor<3u,real> > mu;
For more details, see: https://sourceforge.net/p/tfel/tickets/93/
Data::read_value
is brokenFor more details, see: https://sourceforge.net/p/tfel/tickets/92/
StandardElasticity
brick shall be inserted at the beginning of the @Integrator
block, not at the endFor more details, see: https://sourceforge.net/p/tfel/tickets/91/
BOOST_VERSION
version in bindings/python/include/TFEL/Python/SharedPtr.hxx
For more details, see: https://sourceforge.net/p/tfel/tickets/90/
For more details, see: https://sourceforge.net/p/tfel/tickets/89/
The main axis for the axial growth shall be the second direction of orthotropy, as described in the documentation, not the third one as implemented in versions \(3.0\) and \(3.0.1\).
For more details, see: https://sourceforge.net/p/tfel/tickets/88/
For more details, see: https://sourceforge.net/p/tfel/tickets/87/
ComputeStress
block in the RungeKutta
DSLThe material laws (declared for example via the @MaterialLaw
keyword) were not available without extra qualification in the ComputeStress
block when using the RungeKutta
DSL: one have to add the mfront::
qualifier in front of the material law.
The problem is a missing call to writeMaterialLaws
in the writeBehaviourParserSpecificMembers
member function of the RungeKuttaDSLBase
class.
For more details, see: https://sourceforge.net/p/tfel/tickets/86/
The @Relocation
keyword can be used to impose a boundary condition specific the fuel performances describing the rigid body translation of fuel pellet fragment as an additional strain.
This keyword is only effective in:
No expansion are added in the tridimensional and axisymmetrical modelling hypotheses.
The value of the relocation expansion \(r\) is converted in an additional expansion in the radial and orthoradial directions:
\[ \left\{ \begin{aligned} \frac{\Delta\,l_{r}}{l_{r}} &= \frac{r}{2} \\ \frac{\Delta\,l_{\theta}}{l_{\theta}} &= \frac{r}{2} \end{aligned} \right. \].
This additional expansion is such that it does not create any stress in the fuel pellet for an isotropic elastic material with constant material properties.
The axial axis is the second direction in \(1D\) hypotheses and the third direction in \(2D\) hypotheses.
// relocation defined by an external model
@Relocation 'UO2Relocation.mfront';
// relocation defined by an external state variable
@ExternalStateVariable real r;
"Relocation");
r.setEntryName(@Relocation r;
For more details, see: https://sourceforge.net/p/tfel/tickets/85/
NTENS
value in the Abaqus
interfaceThe value of the NTENS
value was not used to check that the function called was consistent with the modelling hypothesis used.
For more details, see: https://sourceforge.net/p/tfel/tickets/84/
For more details, see: https://sourceforge.net/p/tfel/tickets/82/
In cmake
, the TFEL_APPEND_VERSION
option will append the version number to the names of:
python
restriction on module’ names, the characters .
and -
are replace by _
and that only the first level modules are affected.share
folder.The headers are installed in a subforder named TFEL-${TVEL_VERSION}
.
For example, if the TFEL
version is 3.0.2-dev
, using TFEL_APPEND_VERSION
opion will generate:
mfront-3.0.2-dev
executable.libTFELMaterial-3.0.2-dev.so
library.mtest_3_0_2_dev
python
module.tfel_3_0_2_dev.material
python
module. In this case, the second level (material
) is not affected.This allows multiple executables to be installed in the same directory.
tfel-config
toolThe tfel-config
tool has been modified to take this option appropriately. For example:
$ tfel-config-3.0.2-dev --includes
-I/tmp/install/include/TFEL-3.0.2-dev
$ tfel-config-3.0.2-dev --libs --material
-L/tmp/install/lib -lTFELMaterial-3.0.2-dev -lTFELMath-3.0.2-dev -lTFELUtilities-3.0.2-dev -lTFELException-3.0.2-dev
mfront
mfront
has been modified to call the appropriate tfel-config
executable.
For more details, see: https://sourceforge.net/p/tfel/tickets/81/
TFEL
modulesimport os, importlib
def python_module_version(v):
"""Return the python module extension from the TFEL version"""
return v.replace('.','_').replace('-','_')
def import_tfel_module(n,*v):
"""Try to import a tfel module, taking into account the TFEL_VERSION environment variable."""
if not n:
ImportError('Empty module name')
= n.split('.')
m if not v:
= os.environ;
env if('TFEL_VERSION' in env):
= env.get('TFEL_VERSION')
v 0] = m[0]+'_'+python_module_version(v)
m[elif len(v)==1:
0] = m[0]+'_'+python_module_version(v[0])
m[else:
ImportError('Invalid number of arguments')
return importlib.import_module('.'.join(m))
MFront
relies on external tools, called generators, for this step (this semantic is the same than the one used by cmake
).
The only available generator is currently the Makefile
generator, handled by the MakefileGenerator
class. This generator can be used as follows:
import mfront
= mfront.getDSL("Chaboche.mfront")
dsl
'castem'])
dsl.setInterfaces(["Chaboche.mfront")
dsl.analyseFile(
dsl.generateOutputFiles()
= mfront.MakefileGenerator()
m m.exe(dsl.getTargetsDescription())
The exe
methods provides several overloads and may accept an additional argument of type GeneratorOptions
which let the user specifiy the optimisation level to be used.
For more details, see: https://sourceforge.net/p/tfel/tickets/80/
Cyrano
interface: bug in CyranoBehaviourHandler
class. Missing test.The problem appeared when local substepping is enabled.
This feature was not tested for the Cyrano
interface, which explains why this regression has not been detected so far.
The problem was fixed and appropriate test were added.
For more details, see: https://sourceforge.net/p/tfel/tickets/79/
st2tost2
when using rvalue referenceThe definition of the transpose of st2tost2
was broken when the argument was an rvalue reference.
For more details, see: https://sourceforge.net/p/tfel/tickets/78/
*=
and /=
are broken for fourth order tensorsThe operators *=
and /=
are broken for fourth order tensors: the std::is_same
metafunction return value must be accessed with the value
member, not the cond
member. This was a reminiscence an old remove class called tfel::meta::IsSame
which was removed in TFEL-3.0
.
For more details, see: https://sourceforge.net/p/tfel/tickets/77/
python3
in the python interfaceThe code generated by mfront with the python interface is not compatible with python3
. The trouble is linked to changes in the module declaration. See https://docs.python.org/3/howto/cporting.html for details.
For more details, see: https://sourceforge.net/p/tfel/tickets/75/
ThreadPool
threading model is usedThe ThreadPool
class now has a wait
method that stops the main thread up to tasks completion. This method is now called at the end of the integration in the AbaqusExplicit
interface when the ThreadPool
threading model is used.
For more details, see: https://sourceforge.net/p/tfel/tickets/73/
The latex documents declared a unnecessary dependency to the stmaryrd
package. This package became outdated in recent LaTeX
distributions causing some portability issues. This dependency has been removed.
The inclusion of the babel
package was missing in the docs/presentations/mfront-formation-tp/tp.tex.in
file.
For more details, see: https://sourceforge.net/p/tfel/tickets/72/
@Profiling
true; Error in cygwinUnder Windows, the __declspec(dllexport)
attribute does not propagate to inner structures, wheres the visibility flags used under POSIX
systems does. This attribute is now set also on the BehaviourProfiler::Timer
structure.
For more details, see: https://sourceforge.net/p/tfel/tickets/69/
PLASTIC
+ MFRONT
in CalculiX
CalculiX
provides two interfaces to ABAQUS
umat
behaviours. In versions prior to 2.12, those interfaces are not fully compatible with ABAQUS
concerning various checks. The issue has been reported to CalculiX
developers.
To circumvent those issues, the MFRONT_ABAQUS_NORUNTIMECHECKS
flag has been added. This flag desactivates:
NPROPS
)NSTATV
)KSTEP
)All those checks may fail with the ABAQUS
and ABAQUSNL
interfaces in CalculiX
for reasons described in the previous posts. This flag can be set as follows:
mfront --obuild --interface=abaqus -D MFRONT_ABAQUS_NORUNTIMECHECKS SaintVenantKirchhoffElasticityTotalLagrangian.mfront
For more details, see: https://sourceforge.net/p/tfel/tickets/70/
abaqus
interface)The material name in Abaqus/Standard
and Abaqus/Explicit
are now expected to have the following form: LIBRARY_FUNCTION_HYPOTHESIS_IDENTIFIER
.
The last part (_IDENTIFIER
) is optional.
For more details, see: https://sourceforge.net/p/tfel/tickets/67/
The default library prefix under cygwin has been changed to cyg
(rather than lib
) to follow the standard conventions of this environment.
For more details, see: https://sourceforge.net/p/tfel/tickets/84/
Compiling MFront
under Cygwin
was broken because the _GNU_SOURCE
macro was not defined in the following headers:
mfront\tests\properties\test-cxx.cxx
src\System\ProcessManager.cxx
src\System\SignalManager.cxx
For more details, see: https://sourceforge.net/p/tfel/tickets/83/
For more details, see: https://sourceforge.net/p/tfel/tickets/58/
For more details, see: https://sourceforge.net/p/tfel/tickets/57/
For more details, see: https://sourceforge.net/p/tfel/tickets/54/
For more details, see: https://sourceforge.net/p/tfel/tickets/53/
For more details, see: https://sourceforge.net/p/tfel/tickets/52/
MFront
to work under Windows
without requiring MSYS
The documentation describing how to install TFEL
on Windows
has been updated: The main difficulty associated with building TFEL/MFront
on Windows plateform is the lack of an unified build environment which must be set up by the user.
The installation on Windows plateform is thus described in the following pages:
cmake
and Visual Studio
.cmake
and MinGW
(as packaged with Cast3M
2017
). This tutorial can easily be adapted to other versions of MinGW
, without requiring Cast3M
to be installed.MSYS
.The two first solutions does not depend on MSYS
.
For more details, see: https://sourceforge.net/p/tfel/tickets/20/
Various physical constants are now available. The values are extracted from: http://physics.nist.gov/cuu/Constants/index.htm
Symbol | Description | Value | Unit |
---|---|---|---|
\(\mu\) | Atomic mass constant | \(1.660539040\,.10^{-27}\) | \(kg\) |
\(N_{a}\) | Avogadro constant | \(6.022140857\,.10^{23}\) | \(\mathrm{mol}^{-1}\) |
\(k_{b}\) | Boltzmann constant | \(1.38064852\,.10^{-23}\) | \(J.K^{-1}\) |
\(G_{0}\) | Conductance quantum | \(7.7480917310\,.10^{-5}\) | \(S\) |
\(e_{0}\) | Electric constant | \(8.854187817\,.10^{-12}\) | \(F.m^{-1}\) |
\(m_{e}\) | Electron mass | \(9.10938356\,.10^{-31}\) | \(kg\) |
\(eV\) | Electron volt | \(1.6021766208\,.10^{-19}\) | \(J\) |
\(e\) | Elementary charge | \(1.6021766208\,.10^{-19}\) | \(C\) |
\(F\) | Faraday constant | \(96485.33289\) | \(C.\mathrm{mol}^{-1}\) |
\(a\) | Fine-structure constant | \(7.2973525664\,.10^{-3}\) | |
\(R\) | Molar gas constant | \(8.3144598\) | \(J.\mathrm{mol}^{-1}.K^{-1}\) |
\(s\) | Stefan-Boltzmann constant | \(5.670367\,.10^{-8}\) | \(W.m^{-2}.K^{-4}\) |
For more details, see: https://sourceforge.net/p/tfel/tickets/17/
C++
The physical constants are available as constexpr static members of tfel::PhysicalConstants
class defined in the TFEL/PhysicalConstants.hxx
header.
using Cste = tfel::PhysicalConstants<real>;
const auto R = Cste::R;
The physical constants are available as members of the tfel.PhysicalConstants
class, as follows:
from tfel import PhysicalConstants as Cste
print(Cste.Na)