From 03cc7c74447cea87dee0897c3c881e6f3bf0e3b6 Mon Sep 17 00:00:00 2001
From: Christoph Lehmann <christoph.lehmann@ufz.de>
Date: Thu, 29 Aug 2024 07:53:07 +0200
Subject: [PATCH] [T/TRM] Added 0d confined compression test

---
 .../confined_compression.prj                  | 457 ++++++++++++++++++
 ...confined_compression_ts_120_t_1.500000.vtu | 101 ++++
 ...confined_compression_ts_160_t_2.000000.vtu | 101 ++++
 ...confined_compression_ts_200_t_2.500000.vtu | 101 ++++
 ...confined_compression_ts_240_t_3.000000.vtu | 101 ++++
 ...confined_compression_ts_280_t_3.500000.vtu | 101 ++++
 ...confined_compression_ts_320_t_4.000000.vtu | 101 ++++
 ...confined_compression_ts_360_t_4.500000.vtu | 101 ++++
 ...confined_compression_ts_400_t_5.000000.vtu | 101 ++++
 .../confined_compression_ts_40_t_0.500000.vtu | 101 ++++
 ...confined_compression_ts_440_t_5.500000.vtu | 101 ++++
 ...confined_compression_ts_480_t_6.000000.vtu | 101 ++++
 .../confined_compression_ts_80_t_1.000000.vtu | 101 ++++
 .../generate-reference-solution.py            | 120 +++++
 .../0d_confined_compression/meshes            |   1 +
 .../0d_confined_compression/ogs_and_mfront.py | 376 ++++++++++++++
 16 files changed, 2166 insertions(+)
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression.prj
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_120_t_1.500000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_160_t_2.000000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_200_t_2.500000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_240_t_3.000000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_280_t_3.500000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_320_t_4.000000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_360_t_4.500000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_400_t_5.000000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_40_t_0.500000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_440_t_5.500000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_480_t_6.000000.vtu
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_80_t_1.000000.vtu
 create mode 100755 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/generate-reference-solution.py
 create mode 120000 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/meshes
 create mode 100644 Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/ogs_and_mfront.py

diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression.prj b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression.prj
new file mode 100644
index 00000000000..17fcdfcb370
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression.prj
@@ -0,0 +1,457 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <meshes>
+        <mesh axially_symmetric="false">meshes/cube_1e0_1x1x1_hex8.vtu</mesh>
+        <mesh axially_symmetric="false">meshes/cube_1e0_1x1x1_hex8_whole_surface.vtu</mesh>
+        <mesh axially_symmetric="false">meshes/cube_1e0_1x1x1_hex8_x0.vtu</mesh>
+        <mesh axially_symmetric="false">meshes/cube_1e0_1x1x1_hex8_y0.vtu</mesh>
+        <mesh axially_symmetric="false">meshes/cube_1e0_1x1x1_hex8_z0.vtu</mesh>
+        <mesh axially_symmetric="false">meshes/cube_1e0_1x1x1_hex8_x1.vtu</mesh>
+        <mesh axially_symmetric="false">meshes/cube_1e0_1x1x1_hex8_y1.vtu</mesh>
+        <mesh axially_symmetric="false">meshes/cube_1e0_1x1x1_hex8_z1.vtu</mesh>
+    </meshes>
+    <processes>
+        <process>
+            <name>TRM</name>
+            <type>THERMO_RICHARDS_MECHANICS</type>
+            <subtype>StressSaturation_StrainPressureTemperature</subtype>
+            <integration_order>3</integration_order>
+            <constitutive_relation>
+                <type>MFront</type>
+                <behaviour>BentoniteBehaviour</behaviour>
+                <library path_is_relative_to_prj_file="false">libOgsMFrontBehaviourBentoniteGeneralModForCTestsOnly</library>
+                <initial_values>
+                    <state_variable name="e" parameter="e0"/>
+                    <state_variable name="em" parameter="em0"/>
+                    <state_variable name="eM" parameter="eM0"/>
+                    <state_variable name="SrM" parameter="SrM0"/>
+                    <state_variable name="a_scan" parameter="a_scan0"/>
+                    <state_variable name="re" parameter="re0"/>
+                </initial_values>
+            </constitutive_relation>
+            <process_variables>
+                <temperature>temperature</temperature>
+                <pressure>pressure</pressure>
+                <displacement>displacement</displacement>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable internal_name="sigma_total" output_name="sigma_total"/>
+                <secondary_variable internal_name="epsilon" output_name="epsilon"/>
+            </secondary_variables>
+            <specific_body_force>0 0 0</specific_body_force>
+            <initial_stress type="total">initial_stress</initial_stress>
+        </process>
+    </processes>
+    <media>
+        <medium id="0">
+            <phases>
+                <phase>
+                    <type>AqueousLiquid</type>
+                    <properties>
+                        <property>
+                            <name>specific_heat_capacity</name>
+                            <type>Constant</type>
+                            <value>4280.0</value>
+                        </property>
+                        <property>
+                            <name>thermal_conductivity</name>
+                            <type>Constant</type>
+                            <value>0.6</value>
+                        </property>
+                        <property>
+                            <name>density</name>
+                            <type>Constant</type>
+                            <value>999.1</value>
+                        </property>
+                        <property>
+                            <name>thermal_expansivity</name>
+                            <type>Constant</type>
+                            <value>1e-5</value>
+                        </property>
+                        <property>
+                            <name>viscosity</name>
+                            <type>Constant</type>
+                            <value>1.e-3</value>
+                        </property>
+                    </properties>
+                </phase>
+                <phase>
+                    <type>Solid</type>
+                    <properties>
+                        <property>
+                            <name>density</name>
+                            <type>Constant</type>
+                            <value>2290</value>
+                        </property>
+                        <property>
+                            <name>thermal_conductivity</name>
+                            <type>Constant</type>
+                            <value>1.838</value>
+                        </property>
+                        <property>
+                            <name>specific_heat_capacity</name>
+                            <type>Constant</type>
+                            <value>917.654</value>
+                        </property>
+                        <property>
+                            <name>thermal_expansivity</name>
+                            <type>Constant</type>
+                            <value>1e-5</value>
+                        </property>
+                    </properties>
+                </phase>
+            </phases>
+            <properties>
+                <property>
+                    <name>saturation</name>
+                    <type>Constant</type>
+                    <value>0.345</value>
+                </property>
+                <property>
+                    <name>relative_permeability</name>
+                    <type>Constant</type>
+                    <value>1</value>
+                </property>
+                <property>
+                    <name>permeability</name>
+                    <type>Constant</type>
+                    <value>2e-20</value>
+                </property>
+                <property>
+                    <name>porosity</name>
+                    <type>Constant</type>
+                    <value>0.16</value>
+                </property>
+                <property>
+                    <name>bishops_effective_stress</name>
+                    <type>BishopsPowerLaw</type>
+                    <exponent>1.0</exponent>
+                </property>
+                <property>
+                    <name>biot_coefficient</name>
+                    <type>Constant</type>
+                    <value>1.0</value>
+                </property>
+                <property>
+                    <name>thermal_conductivity</name>
+                    <type>EffectiveThermalConductivityPorosityMixing</type>
+                </property>
+            </properties>
+        </medium>
+    </media>
+    <time_loop>
+        <processes>
+            <process ref="TRM">
+                <nonlinear_solver>basic_newton</nonlinear_solver>
+                <convergence_criterion>
+                    <type>PerComponentDeltaX</type>
+                    <norm_type>INFINITY_N</norm_type>
+                    <abstols>1e-9 1e-6 1e-9 1e-9 1e-9</abstols>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial>0</t_initial>
+                    <t_end>6</t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>1</repeat>
+                            <delta_t>0.0125</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>confined_compression</prefix>
+            <timesteps>
+                <pair>
+                    <repeat>1</repeat>
+                    <each_steps>1</each_steps>
+                </pair>
+            </timesteps>
+            <variables>
+            </variables>
+            <suffix>_ts_{:timestep}_t_{:time}</suffix>
+        </output>
+    </time_loop>
+    <parameters>
+        <parameter>
+            <mesh>cube_1e0_1x1x1_hex8</mesh>
+            <name>initial_stress</name>
+            <type>Function</type>
+            <expression>-2e6</expression>
+            <expression>-2e6</expression>
+            <expression>-2e6</expression>
+            <expression>0</expression>
+            <expression>0</expression>
+            <expression>0</expression>
+        </parameter>
+        <parameter>
+            <name>e0</name>
+            <type>Constant</type>
+            <value>0.9</value>
+        </parameter>
+        <parameter>
+            <name>em0</name>
+            <type>Constant</type>
+            <value>0.0</value>
+        </parameter>
+        <parameter>
+            <name>eM0</name>
+            <type>Constant</type>
+            <value>0.0</value>
+        </parameter>
+        <parameter>
+            <name>SrM0</name>
+            <type>Constant</type>
+            <value>0.0</value>
+        </parameter>
+        <parameter>
+            <name>a_scan0</name>
+            <type>Constant</type>
+            <value>0.0</value>
+        </parameter>
+        <parameter>
+            <name>re0</name>
+            <type>Constant</type>
+            <value>0.0</value>
+        </parameter>
+        <parameter>
+            <name>displacement0</name>
+            <type>Constant</type>
+            <values>0 0 0</values>
+        </parameter>
+        <parameter>
+            <name>pressure_ic</name>
+            <type>Constant</type>
+            <values>-110e6</values>
+        </parameter>
+        <parameter>
+            <name>temperature_ic</name>
+            <type>Constant</type>
+            <value>273.15</value>
+        </parameter>
+        <parameter>
+            <name>zero</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>one</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>pressure_bc</name>
+            <type>CurveScaled</type>
+            <curve>p_curve</curve>
+            <parameter>one</parameter>
+        </parameter>
+        <parameter>
+            <name>stress_xx</name>
+            <type>CurveScaled</type>
+            <curve>sigma_curve</curve>
+            <parameter>one</parameter>
+        </parameter>
+    </parameters>
+    <curves>
+        <curve>
+            <name>p_curve</name>
+            <coords>0.0   3.0</coords>
+            <values>-110e6  -110e6</values>
+        </curve>
+        <curve>
+            <name>sigma_curve</name>
+            <coords>0.0  6.0</coords>
+            <values>-2e6 -4e6</values>
+        </curve>
+    </curves>
+    <process_variables>
+        <process_variable>
+            <name>displacement</name>
+            <components>3</components>
+            <order>1</order>
+            <initial_condition>displacement0</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <mesh>cube_1e0_1x1x1_hex8_x0</mesh>
+                    <type>Dirichlet</type>
+                    <component>0</component>
+                    <parameter>zero</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>cube_1e0_1x1x1_hex8_y0</mesh>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>zero</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>cube_1e0_1x1x1_hex8_z0</mesh>
+                    <type>Dirichlet</type>
+                    <component>2</component>
+                    <parameter>zero</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>cube_1e0_1x1x1_hex8_x1</mesh>
+                    <type>Neumann</type>
+                    <component>0</component>
+                    <parameter>stress_xx</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>cube_1e0_1x1x1_hex8_y1</mesh>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>zero</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>cube_1e0_1x1x1_hex8_z1</mesh>
+                    <type>Dirichlet</type>
+                    <component>2</component>
+                    <parameter>zero</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+        <process_variable>
+            <name>pressure</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>pressure_ic</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <mesh>cube_1e0_1x1x1_hex8_whole_surface</mesh>
+                    <type>Dirichlet</type>
+                    <component>0</component>
+                    <parameter>pressure_bc</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+        <process_variable>
+            <name>temperature</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>temperature_ic</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <mesh>cube_1e0_1x1x1_hex8_whole_surface</mesh>
+                    <type>Dirichlet</type>
+                    <component>0</component>
+                    <parameter>temperature_ic</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+    </process_variables>
+    <nonlinear_solvers>
+        <nonlinear_solver>
+            <name>basic_newton</name>
+            <type>Newton</type>
+            <max_iter>50</max_iter>
+            <linear_solver>general_linear_solver</linear_solver>
+        </nonlinear_solver>
+    </nonlinear_solvers>
+    <linear_solvers>
+        <linear_solver>
+            <name>general_linear_solver</name>
+            <eigen>
+                <solver_type>SparseLU</solver_type>
+                    <scaling>1</scaling>
+            </eigen>
+            <petsc>
+                <parameters>-ksp_type cg
+                    -pc_type lu
+                    -ksp_rtol 1.e-14 -ksp_atol 1.e-14
+                    -ksp_max_it 4000
+                </parameters>
+            </petsc>
+        </linear_solver>
+    </linear_solvers>
+    <test_definition>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>epsilon_ip</field>
+            <absolute_tolerance>4e-09</absolute_tolerance>
+            <relative_tolerance>0.0 <!-- inf --></relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_RungeKutta_InternalStateVariables[0]_ip</field>
+            <absolute_tolerance>0.0</absolute_tolerance>
+            <relative_tolerance>0.0</relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_RungeKutta_InternalStateVariables[1]_ip</field>
+            <absolute_tolerance>0.0</absolute_tolerance>
+            <relative_tolerance>0.0</relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_RungeKutta_InternalStateVariables[2]_ip</field>
+            <absolute_tolerance>0.0</absolute_tolerance>
+            <relative_tolerance>0.0</relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_RungeKutta_InternalStateVariables[3]_ip</field>
+            <absolute_tolerance>0.0</absolute_tolerance>
+            <relative_tolerance>0.0</relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_SrM_ip</field>
+            <absolute_tolerance>1.5e-10</absolute_tolerance>
+            <relative_tolerance>0.0 <!-- 1.6e-08 --></relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_a_scan_ip</field>
+            <absolute_tolerance>0.0</absolute_tolerance>
+            <relative_tolerance>0.0</relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_eM_ip</field>
+            <absolute_tolerance>5.3e-09</absolute_tolerance>
+            <relative_tolerance>0.0 <!-- 1.2e-08 --></relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_e_ip</field>
+            <absolute_tolerance>6.8e-09</absolute_tolerance>
+            <relative_tolerance>0.0 <!-- 8.1e-09 --></relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_em_ip</field>
+            <absolute_tolerance>1.2e-10</absolute_tolerance>
+            <relative_tolerance>0.0 <!-- 4.3e-10 --></relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>material_state_variable_re_ip</field>
+            <absolute_tolerance>8.9e-09</absolute_tolerance>
+            <relative_tolerance>0.0 <!-- 9.2e-09 --></relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>pressure</field>
+            <absolute_tolerance>0.0</absolute_tolerance>
+            <relative_tolerance>0.0</relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>saturation_ip</field>
+            <absolute_tolerance>2.6e-09</absolute_tolerance>
+            <relative_tolerance>0.0 <!-- 7.9e-09 --></relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <regex>confined_compression_ts_.*_t_.*[.]vtu</regex>
+            <field>sigma_total_ip</field>
+            <absolute_tolerance>0.16</absolute_tolerance>
+            <relative_tolerance>0.0 <!-- inf --></relative_tolerance>
+        </vtkdiff>
+    </test_definition>
+</OpenGeoSysProject>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_120_t_1.500000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_120_t_1.500000.vtu
new file mode 100644
index 00000000000..470fdd6020b
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_120_t_1.500000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0121503782802162" RangeMax="0.0121503782802162">
+        AQAAAACAAAAQBQAAMAAAAA==eJxTOHNcy+dRx36H62928vZ+t9ynzxnmbfDAkgEHUBhVP6p+VP2o+mGqHgCntDx4
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.01215037828
+          </Value>
+          <Value index="1">
+            0.01215037828
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="3349098.003711932" RangeMax="3349098.003711932">
+        AQAAAACAAAAQBQAAKAAAAA==eJzzsfn9/7yQ88G+ZYkxk7gt4DQDDuAzqn5U/aj6UfXDVD0ANBM1Zw==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            3349098.0037
+          </Value>
+          <Value index="1">
+            3349098.0037
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.305951624766487" RangeMax="0.305951624766487">
+        AQAAAACAAADYAAAAFAAAAA==eJyb/Hah/LYpl+0nDzMaAOMDfHU=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.877053965259221" RangeMax="0.877053965259221">
+        AQAAAACAAADYAAAAFAAAAA==eJz7vtG46rLAG/vvw4wGAGvgdnI=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.263419138814884" RangeMax="0.263419138814884">
+        AQAAAACAAADYAAAAFAAAAA==eJxTyp326fbtC/ZKw4wGAHEYgzU=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.485693787277066" RangeMax="0.485693787277066">
+        AQAAAACAAADYAAAAFAAAAA==eJybl8OXOlv0vv28YUYDALKOWOo=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0080127977798302" RangeMax="0.0080127977798302">
+        AQAAAACAAADYAAAAEwAAAA==eJwzb/dvZs5ssDcfZjQAQxlJug==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.961642589478859" RangeMax="0.961642589478859">
+        AQAAAACAAADYAAAAFAAAAA==eJyTEOFYd+zoO3uJYUYDANLsYT8=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="480" RangeMax="480">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBOgeGYUYDAEa0FAs=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="120" RangeMax="120">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBOAeGYUYDAODWEKs=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_160_t_2.000000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_160_t_2.000000.vtu
new file mode 100644
index 00000000000..bc4f43979c6
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_160_t_2.000000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0171439424437181" RangeMax="0.0171439424437181">
+        AQAAAACAAAAQBQAAMAAAAA==eJxr0axu0OubuF/91Nn6jR6/LY9sLq/Jj+e2YsABWkbVj6ofVT+qfpiqBwALrTlp
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.017143942444
+          </Value>
+          <Value index="1">
+            0.017143942444
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="3415486.475383017" RangeMax="3415486.475383017">
+        AQAAAACAAAAQBQAAKAAAAA==eJzLOx4QGhrhcvCyz9aWrWzmcJoBB8gbVT+qflT9qPphqh4AdFU6Jg==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            3415486.4754
+          </Value>
+          <Value index="1">
+            3415486.4754
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.309262589014138" RangeMax="0.309262589014138">
+        AQAAAACAAADYAAAAFAAAAA==eJx77ZkT8PXUZfvXw4wGAG4cgFw=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.86770413981715" RangeMax="0.86770413981715">
+        AQAAAACAAADYAAAAFAAAAA==eJxrPvW4wvrIa/vmYUYDADpAggw=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.263406352316477" RangeMax="0.263406352316477">
+        AQAAAACAAADYAAAAFAAAAA==eJw712gQuOz2Bftzw4wGABTCdiE=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.478308333872023" RangeMax="0.478308333872023">
+        AQAAAACAAADYAAAAFAAAAA==eJwTm3ujb9ace/Ziw4wGAIY+d2U=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0081781860270721" RangeMax="0.0081781860270721">
+        AQAAAACAAADYAAAAEwAAAA==eJxz5DHv2bm/wd5xmNEATkFYfg==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.949965989723768" RangeMax="0.949965989723768">
+        AQAAAACAAADYAAAAFAAAAA==eJybs8BVWD7tnf2cYUYDAIB1WGM=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="640" RangeMax="640">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBFgeGYUYDAInIFK0=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="160" RangeMax="160">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBFAeGYUYDACP5EU0=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_200_t_2.500000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_200_t_2.500000.vtu
new file mode 100644
index 00000000000..c49959d4fec
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_200_t_2.500000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0222665077690674" RangeMax="0.0222665077690674">
+        AQAAAACAAAAQBQAAMAAAAA==eJzrNV/BxXF22v5p5oW6LSvv7by9I/HgP+99OxlwgN5R9aPqR9WPqh+m6gFfeGY8
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.022266507769
+          </Value>
+          <Value index="1">
+            0.022266507769
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="3529014.7894975804" RangeMax="3529014.7894975804">
+        AQAAAACAAAAQBQAAKAAAAA==eJzrkV226tZc14PSsulbpTebwWkGHKBnVP2o+lH1o+qHqXoA/nsfyA==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            3529014.7895
+          </Value>
+          <Value index="1">
+            3529014.7895
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.312677558540581" RangeMax="0.312677558540581">
+        AQAAAACAAADYAAAAFAAAAA==eJzb8o99zwumK/ZbhhkNABcceAc=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.858161166538356" RangeMax="0.858161166538356">
+        AQAAAACAAADYAAAAEwAAAA==eJxbEi6fwVf22n7JMKMBcfpWEQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.26335974382241" RangeMax="0.26335974382241">
+        AQAAAACAAADYAAAAFAAAAA==eJzzMdt8+dGtC/Y+w4wGAA3ZgkI=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.470809225460201" RangeMax="0.470809225460201">
+        AQAAAACAAADYAAAAEwAAAA==eJxjyW1g2at4z55lmNEAceJPUQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0083523298738888" RangeMax="0.0083523298738888">
+        AQAAAACAAADYAAAAEwAAAA==eJzreGK1l0260b5jmNEApURYLQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.940974831655426" RangeMax="0.940974831655426">
+        AQAAAACAAADYAAAAEwAAAA==eJzrN+NyKJd5Z98/zGgADcNL1g==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="800" RangeMax="800">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBTgeGYUYDAMGuFTQ=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="200" RangeMax="200">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBTAeGYUYDAFvfEdQ=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_240_t_3.000000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_240_t_3.000000.vtu
new file mode 100644
index 00000000000..47d50bc04d6
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_240_t_3.000000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0273221074481206" RangeMax="0.0273221074481206">
+        AQAAAACAAAAQBQAAMAAAAA==eJxTMz81PfjX7P1Lmj46PRfYvlO0e9dUSa8FOxlwALVR9aPqR9WPqh+m6gHme1oA
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.027322107448
+          </Value>
+          <Value index="1">
+            0.027322107448
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="3676480.794900353" RangeMax="3676480.794900353">
+        AQAAAACAAAAQBQAAKAAAAA==eJx7ofb7f/xjt4Ppq+8Eyr4zg9MMOMCLUfWj6kfVj6ofpuoBNn11UQ==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            3676480.7949
+          </Value>
+          <Value index="1">
+            3676480.7949
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.31607255015969" RangeMax="0.31607255015969">
+        AQAAAACAAADYAAAAEwAAAA==eJyTjGyL6bC6Yi85zGgAB+BVVA==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.848790754094743" RangeMax="0.848790754094743">
+        AQAAAACAAADYAAAAEwAAAA==eJzbV2tv5a352n7fMKMBFmNZpw==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.263285699437092" RangeMax="0.263285699437092">
+        AQAAAACAAADYAAAAEwAAAA==eJwT6FN1XnPzgr3AMKMB9TNhPw==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.463477940568715" RangeMax="0.463477940568715">
+        AQAAAACAAADYAAAAEwAAAA==eJwrt/NKnL/yrn35MKMB8ydlrQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0085289489019828" RangeMax="0.0085289489019828">
+        AQAAAACAAADYAAAAFAAAAA==eJy7X39ZZUF5o/39YUYDAAO3cKU=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.934371667529744" RangeMax="0.934371667529744">
+        AQAAAACAAADYAAAAFAAAAA==eJz7oOOdGf/srf2HYUYDAKfuctw=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="960" RangeMax="960">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBPgeGYUYDAPmUFbs=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="240" RangeMax="240">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBPAeGYUYDAJPFEls=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_280_t_3.500000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_280_t_3.500000.vtu
new file mode 100644
index 00000000000..8f56ebb6685
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_280_t_3.500000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0322101579913121" RangeMax="0.0322101579913121">
+        AQAAAACAAAAQBQAAMAAAAA==eJyzfxbed7N2wf5fB/Ynhoqt3nn9eFBk1ZGllgw4gP2o+lH1o+pH1Q9T9QAvQXSv
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.032210157991
+          </Value>
+          <Value index="1">
+            0.032210157991
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="3845942.04233518" RangeMax="3845942.04233518">
+        AQAAAACAAAAQBQAAKAAAAA==eJzL/hEQ+lTD42BErdLWqh5zOM2AA2SPqh9VP6p+VP0wVQ8ArRc1Fg==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            3845942.0423
+          </Value>
+          <Value index="1">
+            3845942.0423
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.319384618142993" RangeMax="0.319384618142993">
+        AQAAAACAAADYAAAAEwAAAA==eJzTcyzUO1NwxV5vmNEASpha0A==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.839775822179277" RangeMax="0.839775822179277">
+        AQAAAACAAADYAAAAEwAAAA==eJxryGjvLrz/yr5hmNEA1u14Ig==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.263192590404557" RangeMax="0.263192590404557">
+        AQAAAACAAADYAAAAFAAAAA==eJz7NUl0j+qNC/a/hhkNAJkfdxQ=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.456449187383672" RangeMax="0.456449187383672">
+        AQAAAACAAADYAAAAEwAAAA==eJyzCWBbXmZ2195mmNEAN3xRHA==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0087045108138138" RangeMax="0.0087045108138138">
+        AQAAAACAAADYAAAAEwAAAA==eJxTkddftfpyo73KMKMBH6tafw==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.929531150548675" RangeMax="0.929531150548675">
+        AQAAAACAAADYAAAAFAAAAA==eJzbxNEus2PfW/tNw4wGAJsua+Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="1120" RangeMax="1120">
+        AQAAAACAAADYAAAAEgAAAA==eJxjYACChokODMOMBgC/+COM
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="280" RangeMax="280">
+        AQAAAACAAADYAAAAEgAAAA==eJxjYACChkIHhmFGAwBaKSAs
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_320_t_4.000000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_320_t_4.000000.vtu
new file mode 100644
index 00000000000..d6ea247bcdf
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_320_t_4.000000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0368951162960415" RangeMax="0.0368951162960415">
+        AQAAAACAAAAQBQAAMQAAAA==eJwr8dq/+tXjRft1jx1oWbdu/c53MSUrO6svWDLgACWj6kfVj6ofVT9M1QMAnGaO1w==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.036895116296
+          </Value>
+          <Value index="1">
+            0.036895116296
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="4029130.1313941553" RangeMax="4029130.1313941553">
+        AQAAAACAAAAQBQAAKAAAAA==eJxj/7p0VVae50GRx6qim7It4DQDDsA+qn5U/aj6UfXDVD0AHUghyQ==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            4029130.1314
+          </Value>
+          <Value index="1">
+            4029130.1314
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.322591222355171" RangeMax="0.322591222355171">
+        AQAAAACAAADYAAAAFAAAAA==eJz7Ule/PHTpFfsvw4wGAFSOfWg=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.831176708202593" RangeMax="0.831176708202593">
+        AQAAAACAAADYAAAAFAAAAA==eJybvCr26f8Zr+wnDzMaABA4jaY=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.263087093943485" RangeMax="0.263087093943485">
+        AQAAAACAAADYAAAAEwAAAA==eJxT15J3yL52wV59mNEAA31RAQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.449762820466735" RangeMax="0.449762820466735">
+        AQAAAACAAADYAAAAFAAAAA==eJzzUTD///LEHXufYUYDAHH+d5s=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.008877477269423" RangeMax="0.008877477269423">
+        AQAAAACAAADYAAAAEwAAAA==eJzbkxhxJUqvyX7PMKMBEP9gZw==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.925887887018108" RangeMax="0.925887887018108">
+        AQAAAACAAADYAAAAFAAAAA==eJzr0w5YdH/BW/u+YUYDAHv7dRM=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="1280" RangeMax="1280">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBKQ4Mw4wGADy3Fl0=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="320" RangeMax="320">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBEgeGYUYDANbZEv0=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_360_t_4.500000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_360_t_4.500000.vtu
new file mode 100644
index 00000000000..88299be904a
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_360_t_4.500000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0413729081452567" RangeMax="0.0413729081452567">
+        AQAAAACAAAAQBQAAMAAAAA==eJyrtrmZd0Vv6f6PcoEbHi7stNQSuzvXfdZVSwYcoHpU/aj6UfWj6oepegD9K05L
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.041372908145
+          </Value>
+          <Value index="1">
+            0.041372908145
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="4220881.897720567" RangeMax="4220881.897720567">
+        AQAAAACAAAAQBQAAKAAAAA==eJzzePfr//vNXgfrQ1ktCkss4TQDDuAxqn5U/aj6UfXDVD0A3LY85A==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            4220881.8977
+          </Value>
+          <Value index="1">
+            4220881.8977
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.325688855064697" RangeMax="0.325688855064697">
+        AQAAAACAAADYAAAAFAAAAA==eJz7ou0tKHbjiv2XYUYDAOJKXhU=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.822995410873135" RangeMax="0.822995410873135">
+        AQAAAACAAADYAAAAFAAAAA==eJzrW3mu4lfoK/u+YUYDANYPhdg=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.262973721248615" RangeMax="0.262973721248615">
+        AQAAAACAAADYAAAAEwAAAA==eJyTlZDb3X/lgr3sMKMBuNdegQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.44341515568313" RangeMax="0.44341515568313">
+        AQAAAACAAADYAAAAEwAAAA==eJyzzuX99jLhjr31MKMBSgBtlg==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0090473268269024" RangeMax="0.0090473268269024">
+        AQAAAACAAADYAAAAEwAAAA==eJyLP7B5WXp7k338MKMBrlVwHg==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.923038990639337" RangeMax="0.923038990639337">
+        AQAAAACAAADYAAAAEwAAAA==eJyLCtou0Nn51j5qmNEAI0ZjrA==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="1440" RangeMax="1440">
+        AQAAAACAAADYAAAAEgAAAA==eJxjYACChmkODMOMBgD33iQT
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="360" RangeMax="360">
+        AQAAAACAAADYAAAAEgAAAA==eJxjYACChjIHhmFGAwCSDyCz
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_400_t_5.000000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_400_t_5.000000.vtu
new file mode 100644
index 00000000000..d3d737ab072
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_400_t_5.000000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0456522319184799" RangeMax="0.0456522319184799">
+        AQAAAACAAAAQBQAAMAAAAA==eJwznK6xbVf88v3mHqbbUrTuW84Ll4rg2PZoJwMOYDiqflT9qPpR9cNUPQAqFyfn
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.045652231918
+          </Value>
+          <Value index="1">
+            0.045652231918
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="4418062.387371979" RangeMax="4418062.387371979">
+        AQAAAACAAAAQBQAAKAAAAA==eJy7d9Y/tPSn98G9nNtsHk23gtMMOMC9UfWj6kfVj6ofpuoBQWdiiw==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            4418062.3874
+          </Value>
+          <Value index="1">
+            4418062.3874
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.328681511932299" RangeMax="0.328681511932299">
+        AQAAAACAAADYAAAAEwAAAA==eJw7oqysJ8d51f7IMKMBEJdCIg==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.815210891457185" RangeMax="0.815210891457185">
+        AQAAAACAAADYAAAAEwAAAA==eJzjuHVEzVTslT3HMKMBNhpXwQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.2628553408075" RangeMax="0.2628553408075">
+        AQAAAACAAADYAAAAFAAAAA==eJxbbi5mOv/SBfvlw4wGAMBkYtQ=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.437386240857765" RangeMax="0.437386240857765">
+        AQAAAACAAADYAAAAEwAAAA==eJwzEuO9o/Tvtr3RMKMByvNcSg==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0092139853828133" RangeMax="0.0092139853828133">
+        AQAAAACAAADYAAAAFAAAAA==eJybViuif+Jek/20YUYDAMFfZPA=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.920720951428483" RangeMax="0.920720951428483">
+        AQAAAACAAADYAAAAEwAAAA==eJzTFH5yorvsrb3mMKMBjN5uOA==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="1600" RangeMax="1600">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBmQ4Mw4wGAHSdFuQ=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="400" RangeMax="400">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBSgeGYUYDAA7OE4Q=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_40_t_0.500000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_40_t_0.500000.vtu
new file mode 100644
index 00000000000..0c60d906bb9
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_40_t_0.500000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0034518189133083" RangeMax="0.0034518189133083">
+        AQAAAACAAAAQBQAAMAAAAA==eJxLlGbV/uuWs//i5ncxl/4p7/q39WNOdpbQLgYcIHFU/aj6UfWj6oepegC9XmZy
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.0034518189133
+          </Value>
+          <Value index="1">
+            0.0034518189133
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="3380728.0896067005" RangeMax="3380728.0896067005">
+        AQAAAACAAAAQBQAAJwAAAA==eJxjcAkMPdrucJBdyM/PiMEGTjPgAqPqR9WPqh9VP0zVAwDD/rzm
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            3380728.0896
+          </Value>
+          <Value index="1">
+            3380728.0896
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.300270608150788" RangeMax="0.300270608150788">
+        AQAAAACAAADYAAAAEwAAAA==eJxL8ao1W2R+2T5lmNEArB9ZBQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.893452850416487" RangeMax="0.893452850416487">
+        AQAAAACAAADYAAAAFAAAAA==eJyzvbgwT2v6G3vbYUYDAC3XbPQ=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.263403843968065" RangeMax="0.263403843968065">
+        AQAAAACAAADYAAAAFAAAAA==eJwT/3Tv9OzbF+zFhxkNAK5kjM4=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.498691696627872" RangeMax="0.498691696627872">
+        AQAAAACAAADYAAAAFAAAAA==eJz7nP158oRX9+0/DzMaAOxllBU=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0077355535982182" RangeMax="0.0077355535982182">
+        AQAAAACAAADYAAAAFAAAAA==eJz7k95xO2B9vf2fYUYDAOWDedI=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.990653597829993" RangeMax="0.990653597829993">
+        AQAAAACAAADYAAAAFAAAAA==eJybzdatk7/5vf3sYUYDALTlYrk=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="160" RangeMax="160">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBFAeGYUYDACP5EU0=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="40" RangeMax="40">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYAABFweGYUYDAL4bDe0=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_440_t_5.500000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_440_t_5.500000.vtu
new file mode 100644
index 00000000000..8bb8c77fbef
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_440_t_5.500000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.049746130832967" RangeMax="0.049746130832967">
+        AQAAAACAAAAQBQAAMAAAAA==eJxzyeXXCq5YuX/98vMS2xYetczqz1JjOvVqJwMO4DKqflT9qPpR9cNUPQDF9zqt
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.049746130833
+          </Value>
+          <Value index="1">
+            0.049746130833
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="4618761.146555092" RangeMax="4618761.146555092">
+        AQAAAACAAAAQBQAAKAAAAA==eJzb0r5k1S8734PMinvcd52xhtMMOMCWUfWj6kfVj6ofpuoBhrlHiw==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            4618761.1466
+          </Value>
+          <Value index="1">
+            4618761.1466
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.331575673233808" RangeMax="0.331575673233808">
+        AQAAAACAAADYAAAAEwAAAA==eJzr4dPR6bS4at8zzGgArApK/g==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.807794792360223" RangeMax="0.807794792360223">
+        AQAAAACAAADYAAAAFAAAAA==eJy7L/eorOTmS/v7w4wGANiigU8=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.262733748397606" RangeMax="0.262733748397606">
+        AQAAAACAAADYAAAAFAAAAA==eJx7IGpttvDCBfsHw4wGAIzOaUM=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.431651600567573" RangeMax="0.431651600567573">
+        AQAAAACAAADYAAAAFAAAAA==eJw7wPWWQ2/BbfsDw4wGANF6Yp4=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0093775607416103" RangeMax="0.0093775607416103">
+        AQAAAACAAADYAAAAEwAAAA==eJzTnjPnaZdJs732MKMBXP9mGQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.918765564661541" RangeMax="0.918765564661541">
+        AQAAAACAAADYAAAAEwAAAA==eJyrN5zL1Z721r5+mNEAQXNc0Q==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="1760" RangeMax="1760">
+        AQAAAACAAADYAAAAEgAAAA==eJxjYACChtkODMOMBgAv0ySa
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="440" RangeMax="440">
+        AQAAAACAAADYAAAAEgAAAA==eJxjYACChmoHhmFGAwDJ9SE6
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_480_t_6.000000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_480_t_6.000000.vtu
new file mode 100644
index 00000000000..b7b0a970324
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_480_t_6.000000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0536684818647097" RangeMax="0.0536684818647097">
+        AQAAAACAAAAQBQAAMQAAAA==eJy7tepeTn7V6v3vj3mXlnpvsmRaMvnrycnHLBlwgFuj6kfVj6ofVT9M1QMAl750Xg==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.053668481865
+          </Value>
+          <Value index="1">
+            0.053668481865
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="4821795.350648436" RangeMax="4821795.350648436">
+        AQAAAACAAAAQBQAAKAAAAA==eJybPvHX//oWv4ORjJIOiry2cJoBB5g+qn5U/aj6UfXDVD0Aj1rxbA==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            4821795.3506
+          </Value>
+          <Value index="1">
+            4821795.3506
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.33437829409317" RangeMax="0.33437829409317">
+        AQAAAACAAADYAAAAFAAAAA==eJz7dTXdvCTtqv2vYUYDAB0XdZo=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.800717874806085" RangeMax="0.800717874806085">
+        AQAAAACAAADYAAAAFAAAAA==eJyTWLNZvHr+S3uJYUYDAIN+ZvE=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.262610072732056" RangeMax="0.262610072732056">
+        AQAAAACAAADYAAAAFAAAAA==eJw7+b+uata5C/YnhxkNAOItjM4=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.426186843691185" RangeMax="0.426186843691185">
+        AQAAAACAAADYAAAAFAAAAA==eJwTev5Cb6nbbXuhYUYDALRQbh0=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0095382271205745" RangeMax="0.0095382271205745">
+        AQAAAACAAADYAAAAEwAAAA==eJyzbY3WOd7RbG87zGgATfhafw==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.917065133616692" RangeMax="0.917065133616692">
+        AQAAAACAAADYAAAAFAAAAA==eJxT+LD014yIt/YKw4wGAOO1gWo=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="1920" RangeMax="1920">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBeQ4Mw4wGAKyDF2s=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="480" RangeMax="480">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBOgeGYUYDAEa0FAs=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_80_t_1.000000.vtu b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_80_t_1.000000.vtu
new file mode 100644
index 00000000000..897917704da
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/confined_compression_ts_80_t_1.000000.vtu
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Float64" Name="epsilon_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="0.0075243833521511" RangeMax="0.0075243833521511">
+        AQAAAACAAAAQBQAAMAAAAA==eJwr7dnh9vhi3f5738IMPf0kd3Wo/GPsWclixYADlI6qH1U/qn5U/TBVDwDA2D9R
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            0.0075243833522
+          </Value>
+          <Value index="1">
+            0.0075243833522
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="sigma_total_ip" NumberOfComponents="6" NumberOfTuples="27" format="binary" RangeMin="3338396.501585605" RangeMax="3338396.501585605">
+        AQAAAACAAAAQBQAAKAAAAA==eJzLqVm2yuus40EFtfmlRw5ZwmkGHCBnVP2o+lH1o+qHqXoAQ5tElw==
+        <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+          <Value index="0">
+            3338396.5016
+          </Value>
+          <Value index="1">
+            3338396.5016
+          </Value>
+        </InformationKey>
+      </DataArray>
+      <DataArray type="Float64" Name="saturation_ip" NumberOfTuples="27" format="binary" RangeMin="0.302913451504564" RangeMax="0.302913451504564">
+        AQAAAACAAADYAAAAFAAAAA==eJx7evCd5Puky/ZPhxkNADY7iLE=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_e_ip" NumberOfTuples="27" format="binary" RangeMin="0.885757322639388" RangeMax="0.885757322639388">
+        AQAAAACAAADYAAAAFAAAAA==eJy7sX3uXvmIN/Y3hhkNAD5Feqo=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_em_ip" NumberOfTuples="27" format="binary" RangeMin="0.263413933063356" RangeMax="0.263413933063356">
+        AQAAAACAAADYAAAAFAAAAA==eJybHf5F5tjtC/azhxkNALvqfsc=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_eM_ip" NumberOfTuples="27" format="binary" RangeMin="0.492588670523552" RangeMax="0.492588670523552">
+        AQAAAACAAADYAAAAFAAAAA==eJwrvj5x4aS2+/bFw4wGANJ8fsc=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_SrM_ip" NumberOfTuples="27" format="binary" RangeMin="0.0078636049826494" RangeMax="0.0078636049826494">
+        AQAAAACAAADYAAAAEwAAAA==eJzz97hqeFqqwd5/mNEAS+9X3A==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_a_scan_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_re_ip" NumberOfTuples="27" format="binary" RangeMin="0.975596147171787" RangeMax="0.975596147171787">
+        AQAAAACAAADYAAAAEwAAAA==eJzjn+2WKWrx3p5/mNEAPn1MXQ==
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[0]_ip" NumberOfTuples="27" format="binary" RangeMin="320" RangeMax="320">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBEgeGYUYDANbZEv0=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[1]_ip" NumberOfTuples="27" format="binary" RangeMin="80" RangeMax="80">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBEAeGYUYDAHEKD50=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[2]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_RungeKutta_InternalStateVariables[3]_ip" NumberOfTuples="27" format="binary" RangeMin="1" RangeMax="1">
+        AQAAAACAAADYAAAAEQAAAA==eJxjYACBD/YMw4wGADZoH/Y=
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_stored energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+      <DataArray type="Float64" Name="material_state_variable_disspated energy_ip" NumberOfTuples="27" format="binary" RangeMin="0" RangeMax="0">
+        AQAAAACAAADYAAAADAAAAA==eJxjYBieAAAA2AAB
+      </DataArray>
+    </FieldData>
+    <Piece NumberOfPoints="8" NumberOfCells="1">
+      <PointData Scalars="pressure">
+        <DataArray type="Float64" Name="pressure" format="binary" RangeMin="-110000000" RangeMax="-110000000">
+          AQAAAACAAABAAAAAEwAAAA==eJxjYGBguGc56yADmTQAVN4TkQ==
+        </DataArray>
+      </PointData>
+      <CellData>
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1.7320508075688772">
+          AQAAAACAAADAAAAAHAAAAA==eJxjYMAHPtjjlcaQh/GJ1YdLPy51mDQAp2EONQ==
+          <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2">
+            <Value index="0">
+              0
+            </Value>
+            <Value index="1">
+              1.7320508076
+            </Value>
+          </InformationKey>
+        </DataArray>
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="7">
+          AQAAAACAAABAAAAAHgAAAA==eJxjYIAARijNDKWZoDQLlGaF0uxQmg1KAwAC8AAd
+        </DataArray>
+        <DataArray type="Int64" Name="offsets" format="binary" RangeMin="8" RangeMax="8">
+          AQAAAACAAAAIAAAACwAAAA==eJzjYIAAAABIAAk=
+        </DataArray>
+        <DataArray type="UInt8" Name="types" format="binary" RangeMin="12" RangeMax="12">
+          AQAAAACAAAABAAAACQAAAA==eJzjAQAADQAN
+        </DataArray>
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+</VTKFile>
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/generate-reference-solution.py b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/generate-reference-solution.py
new file mode 100755
index 00000000000..0637b20f49f
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/generate-reference-solution.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+
+# invoke with
+# LD_LIBRARY_PATH="<OGS_BUILD_DIR>/lib:$LD_LIBRARY_PATH" ./generate-reference-solution.py
+
+
+from pathlib import Path
+
+import mtest
+import numpy as np
+import tfel.tests  # noqa: F401 necessary for Boost.Python type converters
+from ogs_and_mfront import (
+    aggregate_ogs_results,
+    generate_reference_meshes,
+    plot,
+    read_mtest_results,
+    read_single_element_ogs_results,
+    report_and_plot_summary,
+    to_dataframes_with_mfront_names,
+    write_test_definition_snippet,
+)
+
+if not Path("out").exists():
+    Path("out").mkdir()
+    with Path("out/.gitignore").open("w") as fh:
+        fh.write("*\n")
+
+if not Path("out/plot_mtest").exists():
+    Path("out/plot_mtest").mkdir()
+
+if not Path("out/plot_mtest_vs_ogs").exists():
+    Path("out/plot_mtest_vs_ogs").mkdir()
+
+dt = 0.0125
+mtest_output_file = "out/confined_compression_mtest.res"
+ogs_output_file = "out/ogs/confined_compression.pvd"  # OGS must be run manually, e.g., run ctest and link ctest output dir
+mesh_filename = "meshes/cube_1e0_1x1x1_hex8.vtu"
+
+check_times = np.arange(0.5, 6 + 0.5 / 2, 0.5)
+
+ref_mesh_filename_template = "confined_compression_ts_{ts}_t_{t:.6f}.vtu"
+
+
+def exec_mtest():
+    m = mtest.MTest()
+    m.setBehaviour(
+        "generic",
+        "libOgsMFrontBehaviourBentoniteGeneralModForCTestsOnly",
+        "BentoniteBehaviour",
+    )
+    m.setScalarInternalStateVariableInitialValue("e", 0.9)
+    m.setScalarInternalStateVariableInitialValue("em", 0)
+    m.setScalarInternalStateVariableInitialValue("eM", 0)
+    m.setScalarInternalStateVariableInitialValue("SrM", 0)
+    m.setScalarInternalStateVariableInitialValue("a_scan", 0)
+    m.setScalarInternalStateVariableInitialValue("re", 0)
+
+    # initial value of the gradients (strain+suction)
+    m.setGradientsInitialValues([0, 0, 0, 0, 0, 0, -110e6])
+    # initial values of the thermodynamic forces (total stress+Saturation)
+    m.setThermodynamicForcesInitialValues([-2e6, -2e6, -2e6, 0, 0, 0, 0.345])
+
+    m.setImposedThermodynamicForce("StressXX", {0: -2e6, 6: -4e6})
+    # m.setImposedGradient('StrainXX', 0)
+    m.setImposedGradient("StrainYY", 0)
+    m.setImposedGradient("StrainZZ", 0)
+    m.setImposedGradient("StrainXY", 0)
+    m.setImposedGradient("StrainXZ", 0)
+    m.setImposedGradient("StrainYZ", 0)
+    m.setImposedGradient("LiquidPressure", -110e6)
+    #
+    m.setExternalStateVariable("AirPressure", 0)
+    m.setExternalStateVariable("Temperature", 273.15)
+
+    # output file
+    m.setOutputFileName(mtest_output_file)
+    m.setOutputFilePrecision(15)
+
+    # // Imposing the time
+    time = np.arange(
+        0, 6 + dt / 2, dt
+    ).tolist()  # conversion to list necessary to satisfy mtest Python bindings
+    m.setTimes(time)
+
+    print("## Executing MTest...")
+    m.execute()
+
+
+exec_mtest()
+
+df_ref = read_mtest_results(mtest_output_file)
+
+report_and_plot_summary(df_ref, file_prefix="out/plot_mtest/")
+
+generate_reference_meshes(
+    mesh_filename, df_ref, check_times, ref_mesh_filename_template
+)
+
+ts_ogs, recs_ogs = read_single_element_ogs_results(ogs_output_file)
+
+recs_ogs_agg = aggregate_ogs_results(recs_ogs)
+
+dfs_ogs_agg_mfront = to_dataframes_with_mfront_names(recs_ogs_agg, ts_ogs)
+
+print("\n## Plotting comparison between OGS and MTest...")
+plot(
+    df_ref,
+    dfs_ogs_agg_mfront["min"],
+    dfs_ogs_agg_mfront["max"],
+    labels=["mtest", "ogs min", "ogs max"],
+    file_prefix="out/plot_mtest_vs_ogs/",
+    quantities="intersection",
+)
+
+write_test_definition_snippet(
+    df_ref.columns.values,
+    dfs_ogs_agg_mfront["min"].columns.values,
+    "confined_compression",
+    "out/test_definition.xml",
+)
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/meshes b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/meshes
new file mode 120000
index 00000000000..a0acdbe4c66
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/meshes
@@ -0,0 +1 @@
+../meshes/
\ No newline at end of file
diff --git a/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/ogs_and_mfront.py b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/ogs_and_mfront.py
new file mode 100644
index 00000000000..8eccfed3eda
--- /dev/null
+++ b/Tests/Data/ThermoRichardsMechanics/MFront/BentoniteBehaviourGeneralMod/0d_confined_compression/ogs_and_mfront.py
@@ -0,0 +1,376 @@
+import contextlib
+import re
+from pathlib import Path
+
+import matplotlib.pyplot as plt
+import numpy as np
+import pandas as pd
+import pyvista as pv
+
+# ATM only for symmetric tensors. TODO extend
+map_tensor_component_name_to_ogs_index = {
+    "XX": 0,
+    "YY": 1,
+    "ZZ": 2,
+    "XY": 3,
+    "YZ": 4,
+    "XZ": 5,
+}
+
+map_ogs_index_to_component_name = {
+    3: {0: "X", 1: "Y", 2: "Z"},
+    6: {index: name for name, index in map_tensor_component_name_to_ogs_index.items()},
+    9: {index: "XYZ"[index // 3] + "XYZ"[index % 3] for index in range(9)},
+}
+
+
+map_mfront_name_to_ogs = {
+    "Strain": "epsilon_ip",
+    "Stress": "sigma_total_ip",
+    "LiquidPressure": "pressure",
+    "Saturation": "saturation_ip",
+}
+
+map_ogs_name_to_mfront = {ogs: mfront for mfront, ogs in map_mfront_name_to_ogs.items()}
+
+
+def parse_mtest_res_header(f):
+    multi_comp_re = re.compile(r"([0-9]+)th component of the (.*) [(](.*)[)]")
+
+    names = []
+    with Path(f).open() as fh:
+        for line in fh:
+            if not line.startswith("#"):
+                break
+            col, name = line.strip().split(": ")
+
+            if m := multi_comp_re.match(name):
+                name = f"{m.group(3)}"
+            names.append(name)
+    return names
+
+
+def read_mtest_results(mtest_output_file):
+    names = parse_mtest_res_header(mtest_output_file)
+    df_mtest = pd.read_csv(
+        mtest_output_file, sep=" ", comment="#", header=None, names=names, dtype=float
+    )
+    df_mtest.index = df_mtest.index.rename("time_step")
+    return df_mtest
+
+
+def read_single_element_ogs_results(pvd_file):
+    reader = pv.get_reader(pvd_file)
+
+    recs = []
+    ts = reader.time_values
+
+    for ti, _t in enumerate(ts):
+        reader.set_active_time_point(ti)
+        mesh = reader.read()[0]
+        assert mesh.n_cells == 1
+        if ti == 0:
+            N = mesh.n_points
+        else:
+            assert mesh.n_points == N
+
+        rec = dict(mesh.point_data)
+        assert set(rec.keys()).isdisjoint(mesh.cell_data.keys())
+        rec.update(mesh.cell_data)
+        assert set(rec.keys()).isdisjoint(mesh.field_data.keys())
+        rec.update(mesh.field_data)
+
+        recs.append(rec)
+
+    assert len(recs) != 0
+
+    shapes = {field: value.shape for field, value in recs[0].items()}
+
+    # assert same number of components and tuples for all timesteps
+    for rec in recs[1:]:
+        for field, value in rec.items():
+            assert value.shape == shapes[field]
+
+    return ts, recs
+
+
+def aggregate(rec, f):
+    return {k: f(v, axis=0) for k, v in rec.items()}
+
+
+def aggregate_ogs_results(recs):
+    names = ("min", "max", "mean", "std")
+    fs = (np.min, np.max, np.mean, np.std)
+
+    return {n: [aggregate(rec, f) for rec in recs] for n, f in zip(names, fs)}
+    # recs_min = [ aggregate(rec, np.min) for rec in recs ]
+    # print(recs_min)
+
+
+def to_dataframes_with_mfront_names(recs_ogs_agg, ts_ogs):
+    # suffix _mfront denotes MFront column naming scheme
+    recs_ogs_agg_mfront = {
+        agg: ogs_names_to_mfront(recs) for agg, recs in recs_ogs_agg.items()
+    }
+    dfs_ogs_agg_mfront = {
+        agg: pd.DataFrame.from_records(recs, index=pd.Index(ts_ogs, name="time"))
+        for agg, recs in recs_ogs_agg_mfront.items()
+    }
+    for df in dfs_ogs_agg_mfront.values():
+        df["time"] = ts_ogs
+
+    return dfs_ogs_agg_mfront
+
+
+def ogs_names_to_mfront(recs_ogs):
+    def gen_mfront_keys_values(rec_ogs):
+        for field_ogs, v in rec_ogs.items():
+            for comp_idx, comp_value in enumerate(np.atleast_1d(v)):
+                # print(ogs_name_to_mfront(field_ogs, comp_idx, np.size(v)), comp_value)
+                yield ogs_name_to_mfront(field_ogs, comp_idx, np.size(v)), comp_value
+
+    recs_mfront = []
+    for rec in recs_ogs:
+        recs_mfront.append(dict(gen_mfront_keys_values(rec)))
+
+    return recs_mfront
+
+
+def report_and_plot_summary(df_res, file_prefix):
+    df_agg = df_res.agg(["min", "max"])
+    rec_max = df_agg.loc["max"]
+
+    ser_range = (rec_max - df_agg.loc["min"]).drop("time")
+
+    print(
+        "\n## The following quantities did not change over the course of the simulation:"
+    )
+    for qty in ser_range[ser_range == 0].index.array:
+        print(f"  {qty} (constant = {rec_max[qty]:g})")
+
+    print("\n## Changing quantities are plotted...")
+    changing_quantities = ser_range[ser_range != 0].index.array
+
+    plot(df_res, quantities=changing_quantities, file_prefix=file_prefix)
+
+
+def common_columns(*dfs):
+    if not dfs:
+        return set()
+
+    return set(dfs[0].columns.to_numpy()).intersection(
+        *(df.columns.to_numpy() for df in dfs[1:])
+    )
+
+
+def plot(
+    *dfs, labels=None, quantities="union", file_prefix="", file_suffix="", diff=None
+):
+    assert len(dfs) >= 1
+
+    if isinstance(quantities, str):
+        if quantities == "intersection":
+            quantities = common_columns(*dfs)
+        elif quantities == "union":
+            quantities = set(dfs[0].columns.to_numpy()).union(
+                *(df.columns.to_numpy() for df in dfs[1:])
+            )
+        else:
+            msg = f"Unknown magic value for quantities argument: '{quantities}'"
+            raise ValueError(msg)
+
+    if diff is None:
+        diff = len(dfs) > 1
+
+    for qty in sorted(quantities):
+        if qty == "time":
+            continue
+
+        if diff:
+            fig, (ax, ax_diff) = plt.subplots(2, sharex=True)
+            ax_last = ax_diff
+            ax_diff.set_ylabel("absolute difference")
+
+        else:
+            fig, ax = plt.subplots()
+            ax_last = ax
+        # ax.set_ylabel(qty)
+
+        for i, df in enumerate(dfs):
+            assert "time" in df.columns
+            try:
+                kwargs = {}
+                try:
+                    kwargs["label"] = labels[i]
+                except TypeError:
+                    if len(dfs) > 1:
+                        kwargs["label"] = f"df #{i}"
+
+                df.plot("time", qty, ax=ax, **kwargs)
+            except KeyError as e:
+                print(f"KeyError in dfs[{i}]:", e)
+
+        if diff:
+            ax_diff.plot([], [])  # plot nothing to skip first plot style
+            df_ref = dfs[0]
+            ax_abs_max_095 = 0
+            ax_abs_max = 0
+            some_below_0 = False
+            some_above_0 = False
+
+            for i, df in enumerate(dfs[1:]):
+                ts = df["time"].to_numpy()
+                try:
+                    assert np.allclose(
+                        ts, df_ref["time"].to_numpy(), atol=1e-13, rtol=0
+                    )
+                except AssertionError:
+                    print(ts - df_ref["time"].to_numpy())
+                    raise
+
+                kwargs = {}
+                with contextlib.suppress(TypeError):
+                    kwargs["label"] = f"{labels[i+1]} $-$ {labels[0]}"
+
+                ds = df[qty].to_numpy() - df_ref[qty].to_numpy()
+
+                ax_diff.plot(ts, ds, **kwargs)
+
+                ds_abs = np.abs(ds)
+                ax_abs_max_095 = max(ax_abs_max_095, np.quantile(ds_abs, 0.95))
+                ax_abs_max = max(ax_abs_max, np.max(ds_abs))
+                some_below_0 = some_below_0 or np.any(ds < 0)
+                some_above_0 = some_above_0 or np.any(ds > 0)
+
+            ax_diff.legend()
+            if ax_abs_max != 0:
+                if ax_abs_max_095 != 0:
+                    linthresh = ax_abs_max_095
+                else:
+                    linthresh = 1e-15 * ax_abs_max
+
+                ax_diff.set_yscale("symlog", linthresh=linthresh)
+                if some_above_0:
+                    ax_diff.axhline(linthresh, ls=":", color="gray")
+                if some_below_0:
+                    ax_diff.axhline(-linthresh, ls=":", color="gray")
+            else:
+                ax_diff.annotate(
+                    "all differences are zero", (0.05, 0.05), xycoords="axes fraction"
+                )
+            ax_diff.axhline(0, ls=":", color="gray")
+
+        ax.set_title(qty)
+        ax_last.set_xlabel("$t$ / s")
+        fig = ax.get_figure()
+        print(f"  {file_prefix}{qty}{file_suffix}.png")
+        fig.savefig(f"{file_prefix}{qty}{file_suffix}.png")
+        plt.close(fig)
+
+
+def mfront_to_ogs(rec):
+    ogs_rec = {}
+
+    for k, v in rec.items():
+        if k == "time_step":
+            continue
+
+        name, comp = mfront_name_to_ogs(k)
+
+        if comp is None:
+            ogs_rec[name] = np.array([v])
+        elif name not in ogs_rec:
+            ogs_rec[name] = np.array([0] * (comp - 1) + [v])
+        else:
+            arr = ogs_rec[name]
+            if len(arr) <= comp:
+                arr.resize(comp + 1, refcheck=False)
+            arr[comp] = v
+
+    return ogs_rec
+
+
+def mfront_name_to_ogs(k):
+    assert k != "time"
+    if k[-2:] in map_tensor_component_name_to_ogs_index:
+        name = k[:-2]
+        comp = map_tensor_component_name_to_ogs_index[k[-2:]]
+    else:
+        name = k
+        comp = None
+
+    if name in map_mfront_name_to_ogs:
+        name = map_mfront_name_to_ogs[name]
+    else:
+        name = f"material_state_variable_{name}_ip"
+
+    return name, comp
+
+
+def ogs_name_to_mfront(name, comp, num_comps):
+    if name.startswith("material_state_variable_") and name.endswith("_ip"):
+        assert num_comps == 1  # other cases not yet implemented
+        return name[len("material_state_variable_") : -len("_ip")]
+
+    if num_comps == 1:
+        comp_suffix = ""
+    else:
+        comp_suffix = map_ogs_index_to_component_name[num_comps][comp]
+
+    name_mfront = map_ogs_name_to_mfront.get(name, name)
+
+    return name_mfront + comp_suffix
+
+
+def generate_reference_meshes(
+    input_mesh, df_res_mtest, time_steps, filename_template, num_int_pts
+):
+    mesh_ic = pv.read(input_mesh)
+    mesh_ic.point_data.clear()
+    mesh_ic.cell_data.clear()
+    mesh_ic.field_data.clear()
+    N = mesh_ic.n_points
+
+    df_res_t = df_res_mtest.copy(deep=False)
+    df_res_t["time_step"] = df_res_t.index
+    df_res_t = df_res_t.set_index("time")
+
+    for t in time_steps:
+        mesh = mesh_ic.copy(deep=False)
+        rec = df_res_t.loc[t]
+        for k, v in mfront_to_ogs(rec).items():
+            if k.endswith("_ip"):
+                mesh.field_data[k] = np.tile(v, (num_int_pts, 1))
+            else:
+                mesh.point_data[k] = np.tile(v, (N, 1))
+
+        mesh.save(filename_template.format(t=t, ts=int(rec["time_step"])))
+
+
+def write_test_definition_snippet(
+    fields_mfront, fields_ogs_mfront, regex_prefix, output_file
+):
+    fields1 = {
+        mfront_name_to_ogs(field)[0] for field in fields_mfront if field != "time"
+    }
+    fields2 = {
+        mfront_name_to_ogs(field)[0] for field in fields_ogs_mfront if field != "time"
+    }
+
+    fields_ogs = fields1 & fields2
+
+    with Path(output_file).open("w") as fh:
+        fh.write("    <test_definition>")
+
+        for field in sorted(fields_ogs):
+            fh.write(
+                f"""
+        <vtkdiff>
+            <regex>{regex_prefix}_ts_.*_t_.*[.]vtu</regex>
+            <field>{field}</field>
+            <absolute_tolerance>0.0</absolute_tolerance>
+            <relative_tolerance>0.0</relative_tolerance>
+        </vtkdiff>"""
+            )
+
+        fh.write("\n    </test_definition>\n")
-- 
GitLab