MGIS/Behaviour library
MGIS/Function library
InvokeTest on MacOSErrorBacktrace::assertOrTerminateErrorBacktrace::terminateisInvalid for taking an
InvalidResult as argumentContext object in
construct, make_unique or
make_shared (and siblings) when the constructor takes a
Context as first argument`assign algorithm to work on temporary viewsassign
algorithm to detect if values of the function can be assigned to the
values of the evaluatornvccsave/restore
operations in MaterialDataManagerMaterialStateManagerTFEL/Math’s
quantitiesThis version is meant to be used with TFEL Version
5.2.
MGIS/Function now creates a view from a
temporary view rather than an evaluator. See below for details. In
practice, most views are also evaluators, so this shall not impact
existing user code.cmake optionsCUDA
in MGIS/FunctionSupport for CUDA in MGIS/Function is enable
by enable-cuda-algorithms.
The following options control the support of the HDF5
library:
enable-hdf5-support: enable HDF5 support for
save/restore operations. Note that if this support is not explicitely
requested, MGIS still tries by default to support
HDF5 but configuration will not fail if the
HDF5 library is not found. See
enable-hdf5-automatic-support for details.enable-hdf5-automatic-support: if set,
MGIS tries by default to support HDF5 even if
enable-hdf5-support` is not set.Doxygen documentationThe doxygen documentation is now online: https://thelfer.github.io/mgis/doxygen/index.html.
MGIS to work
properlyDepending on the system and compilation options, some of following
variables shall be set for MGIS to work properly:
MGISHOME, PATH, LD_LIBRARY_PATH
and PYTHONPATH.
MGIS now installs automatically the following files in
the installation directory (refered to
<install_prefix> in the following):
<install_prefix>/share/mgis/env/env.sh for
UNIX systems and the bash shell. This file
shall be used as follows:
$ source <install_prefix>/share/mgis/env/env.sh<install_prefix>\share\mgis\env\env.ps1 for
PowerShell shell under Windows. This file
shall be used as follows:
$ .\<install_prefix>\share\mgis\env\env.ps1<install_prefix>\share\mgis\env\env.bat for
the historical cmd shell under Windows. This
file shall be used as follows:
$ call <install_prefix>\share\mgis\env\env.batNote
Those variables are not required if
MGISis installed system-wide (for instance in/usr/local) and that theMGIS’s binaries are not relocated (i.e. moved to a different directory than the one specified during the compilation process as the installation directory).
Note
If
MGISis built withTFELsupport, theTFELenvironment shall be properly set.
MGIS/Behaviour libraryMaterialStateManager and
MaterialDataManagerIf HDF5 support is enabled, two functions
save and restore are available:
save function allows saving the values stored in a
MaterialStateManager or in a
MaterialDataManager to an HDF5 file.restore function allows retrieving the values
stored in a MaterialStateManager or in a
MaterialDataManager from an HDF5 file.Those functions have options allowing to precisely select what is saved or restored.
By default, one expects to restore the maximum amount of information.
The getGreedyMaterialStateManagerRestoreOptions function
creates option that can restore everything that has been saved.
MaterialStateManagerBy default, material properties, mass density and external state
variables are updated by the update and revert
functions.
This can now be controlled by passing a value of the
MaterialStateManager::UpdatePolicy type to the functions
setMaterialProperty, setMassDensity or
setExternalStateVariable.
setExternalStateVariable(m.s1, "Temperature", T1,
MaterialStateManager::UPDATE);MGIS/Function libraryQuantities is features of the TFEL/Math library which allows assigning an unit to a floating point number.
MGIS/Function provides as_qt to turn a
function into a view returning quantities. Tensor modifiers, such as
as_stensor now allows to specify a quantity as an optional
argument.
~~{.c++} // make a view of a scalar function which returns a
stress value auto s = f | as_qt~~
The following classes have been introduced:
StridedCoalescedMemoryAccessTensorViewStridedCoalescedMemoryAccessCompositeTensorsViewStridedCoalescedMemoryAccessTensorViewStridedCoalescedMemoryAccessTensorView is a tensorial
function view which stores its components in non interleaved manner
using the following scheme:
| <------- Component 1 ---------> |....| <----- Component Nc ---------> |
+-------++-------++------++-------+----+-------++------++------++-------+
| Elt 1 || Elt 2 || .... || Elt N |....| Elt 1 ||Elt 2 || .... || Elt N |
+-------++-------++------++-------+----+-------++------++------++-------+
constexpr auto ne = size_type{2};
auto space = BasicLinearSpace{ne};
std::array<const real, 4 * ne> values = {1, 10, 2, 20, 3, 30, 4, 40};
const auto f = StridedCoalescedMemoryAccessTensorView<
BasicLinearSpace, tfel::math::stensor<2, real>, false>{space, values};
const auto e1 = f(0);
// e1 = {1, 2, 3, 4}
const auto e2 = f(1);
// e2 = {10, 20, 30, 40}StridedCoalescedMemoryAccessCompositeTensorsViewStridedCoalescedMemoryAccessCompositeTensorsView allows
retrieving scalar or tensorial objects which are stored in a non
interleaved manner.
using CompositeFunctionView =
StridedCoalescedMemoryAccessCompositeTensorsView<BasicLinearSpace, 4,
false>;
constexpr auto ne = size_type{2};
auto space = BasicLinearSpace{ne};
std::array<const real, 4 * ne> values = {1, 10, 2, 20, 3, 30, 4, 40};
const auto f = CompositeFunctionView{space, values};
const auto e1 = f.get<0, tfel::math::stensor<2, real>>(0);
// e1 = {1, 2, 3, 4}
const auto e2 = f.get<0, tfel::math::stensor<2, real>>(1);
// e2 = {10, 20, 30, 40}In Version 3.1, passing a temporary view to a modifier would create an evaluator. This behaviour was due to the fact that:
rvalue in C++’s precise
wording)EvaluatorConcept, and modifiers were authorized to operate
on temporary evaluatorsIn Version 3.2, modifiers are now allowed to operate on temporary views. This following code now generates a view rather than an evaluator:
// creating an array view from an rvalue.
auto v = f.view() | as_array<2>;By comparison, to achieve the same behaviour in Version 3.1, creation of an intermediate variable was required, as follows:
// creating an array view in Version 3.1: auto f_view = f.view(); auto v = f_view | as_array<2>;
operator| and
assign functionIn Version 3.1, “assignement” operator| and
assign function did not accept temporaries.
This behaviour has been changed in Version 3.2 which allows a more direct code:
f2 | as_scalar | (f | as_scalar); // "assignement" operator|or equivalently:
assign(ctx, f | as_scalar, f2 | as_scalar);By comparison, Version 3.1 would have forced to store the view resulting from
f | as_scalarinto a temporary as follows:auto tmp = f | as_scalar; assign(ctx, tmp, f2 | as_scalar);
InvokeTest on MacOSFor more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/255
ErrorBacktrace::assertOrTerminateFor more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/250
ErrorBacktrace::terminateFor more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/248
isInvalid for taking an
InvalidResult as argumentFor more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/245
Context object in
construct, make_unique or
make_shared (and siblings) when the constructor takes a
Context as first argument`For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/244
assign algorithm to work on temporary views
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/236
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/233
assign
algorithm to detect if values of the function can be assigned to the
values of the evaluatorFor more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/232
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/227
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/226
nvccFor more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/220
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/210
save/restore
operations in MaterialDataManagerFor more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/209
MaterialStateManagerFor more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/201
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/200
TFEL/Math’s
quantitiesFor more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/199
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/196
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/158
The authors are grateful to the many contributors to the
TFEL/MFront project. This research was conducted in the
framework of the PLEIADES project, which was supported financially by
the CEA (Commissariat à l’Énergie Atomique et aux Énergies
Alternatives), EDF (Électricité de France) and Framatome. Work on
MGIS/Function was performed as part of the EURATOM OperaHPC
Project co-funded by the European Union.