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;
.setEntryName("Relocation");
r@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)