diff --git a/ProcessLib/SmallDeformation/Tests.cmake b/ProcessLib/SmallDeformation/Tests.cmake
index db5ce62cf47de41b0a717eb89bf78805fa0ccd7c..2e3ab2a5ed76ba1970208313aeac60f61e7aabf5 100644
--- a/ProcessLib/SmallDeformation/Tests.cmake
+++ b/ProcessLib/SmallDeformation/Tests.cmake
@@ -204,8 +204,8 @@ AddTest(
     TESTER vtkdiff
     REQUIREMENTS NOT OGS_USE_MPI
     DIFF_DATA
-    ring_plane_strain_1e4_solution.vtu ring_plane_strain_pcs_0_ts_1_t_1.000000.vtu displacement displacement 6e-4 0
-    ring_plane_strain_1e4_solution.vtu ring_plane_strain_pcs_0_ts_1_t_1.000000.vtu sigma sigma 6e-4 0
+    ring_plane_strain_1e4_solution.vtu ring_plane_strain_pcs_0_ts_1_t_1.000000.vtu displacement displacement 1e-16 0
+    ring_plane_strain_1e4_solution.vtu ring_plane_strain_pcs_0_ts_1_t_1.000000.vtu sigma sigma 1e-15 0
 )
 
 #With PETSc
@@ -345,3 +345,47 @@ AddTest(
     ref_hertz_contact_ts_10.vtu hertz_pcs_0_ts_10_t_10.000000.vtu epsilon epsilon 1e-16 0
     ref_hertz_contact_ts_10.vtu hertz_pcs_0_ts_10_t_10.000000.vtu sigma sigma 1e-16 0
 )
+
+# Basic test that MFront works at all.
+# Linear elastic, no internal state variables, no external state variables.
+AddTest(
+    NAME Mechanics_SDL_disc_with_hole_mfront
+    PATH Mechanics/Linear/MFront/disc_with_hole
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS disc_with_hole.prj
+    TESTER vtkdiff
+    REQUIREMENTS OGS_USE_MFRONT AND NOT OGS_USE_MPI
+    DIFF_DATA
+    disc_with_hole_expected_pcs_0_ts_4_t_1.000000.vtu disc_with_hole_pcs_0_ts_4_t_1.000000.vtu displacement displacement 1e-16 1e-16
+    VIS disc_with_hole_pcs_0_ts_4_t_1.000000.vtu
+)
+
+# Tests that internal state variables work correcly.
+AddTest(
+    NAME Mechanics_DruckerPrager_mfront
+    PATH Mechanics/Ehlers/MFront
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS cube_1e0_dp.prj
+    TESTER vtkdiff
+    REQUIREMENTS OGS_USE_MFRONT AND NOT OGS_USE_MPI
+    # The reference solution has been computed by OGS's Ehlers model.
+    # See also the prj file.
+    DIFF_DATA
+    cube_1e0_dp_ref_created_with_OGS_Ehlers.vtu cube_1e0_dp_pcs_0_ts_203_t_5.100000.vtu displacement displacement 1e-14 0
+    cube_1e0_dp_ref_created_with_OGS_Ehlers.vtu cube_1e0_dp_pcs_0_ts_203_t_5.100000.vtu sigma sigma 1e-13 0
+    cube_1e0_dp_ref_created_with_OGS_Ehlers.vtu cube_1e0_dp_pcs_0_ts_203_t_5.100000.vtu epsilon epsilon 1e-14 0
+)
+
+# Tests that axial symmetry works correctly.
+# NB: Currently (2018-11-06) the plane strain hypothesis is used within MFront!
+AddTest(
+    NAME SmallDeformation_ring_plane_strain_axi_mfront
+    PATH Mechanics/Linear/MFront/axisymm_ring
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS ring_plane_strain.prj
+    TESTER vtkdiff
+    REQUIREMENTS OGS_USE_MFRONT AND NOT OGS_USE_MPI
+    DIFF_DATA
+    ../../ring_plane_strain_1e4_solution.vtu ring_plane_strain_pcs_0_ts_1_t_1.000000.vtu displacement displacement 1e-16 0
+    ../../ring_plane_strain_1e4_solution.vtu ring_plane_strain_pcs_0_ts_1_t_1.000000.vtu sigma sigma 1e-15 0
+)
diff --git a/Tests/Data/Mechanics/Ehlers/MFront/DruckerPrager.mfront b/Tests/Data/Mechanics/Ehlers/MFront/DruckerPrager.mfront
new file mode 100644
index 0000000000000000000000000000000000000000..b6a5571748a8b3ed43b1f3b402da321050af8aab
--- /dev/null
+++ b/Tests/Data/Mechanics/Ehlers/MFront/DruckerPrager.mfront
@@ -0,0 +1,72 @@
+@Parser Implicit;
+@Behaviour DruckerPrager;
+@Algorithm NewtonRaphson_NumericalJacobian;
+@Theta 1.;
+
+@MaterialProperty real young;
+young.setGlossaryName("YoungModulus");
+@MaterialProperty real nu;
+nu.setGlossaryName("PoissonRatio");
+@MaterialProperty real kappa;
+@MaterialProperty real beta;
+
+@StateVariable real pla_mult;
+@StateVariable real a;
+
+@LocalVariable stress lambda;
+@LocalVariable stress mu;
+@LocalVariable stress Fel;
+@LocalVariable StressStensor s0;
+
+@InitLocalVariables {
+  lambda = computeLambda(young, nu);
+  mu = computeMu(young, nu);
+  StressStensor sigel(lambda * trace(eel + deto) * Stensor::Id() +
+                      2 * mu * (eel + deto));
+  const auto s_dev = deviator(sigel);
+  const stress J2 = (s_dev|s_dev)/2.;
+  const stress I1 = trace(sigel);
+
+  Fel = sqrt(J2) + beta * I1 - kappa;
+}
+
+@ComputeStress {
+  sig = (lambda * trace(eel) * Stensor::Id() + 2 * mu * eel);
+}
+
+@Integrator {
+  Stensor s_dev = deviator(sig);
+
+  if (Fel > 0) {
+    Stensor nq = sqrt(3.)/2./sigmaeq(sig)*s_dev;
+    Stensor np = 1.0 * Stensor::Id();
+
+    const auto yield = sqrt((s_dev|s_dev)/2.) + beta * trace(sig) - kappa;
+
+    const auto dev_flow = 1.0;
+    const auto iso_flow = beta;
+
+    feel =
+        deel - deto + dpla_mult * (nq * dev_flow + np * iso_flow);
+    fpla_mult = yield / young;
+    fa = da - sqrt(2. / 3. * (dpla_mult * (nq * dev_flow + np * iso_flow)) |
+                   (dpla_mult * (nq * dev_flow + np * iso_flow)));
+
+  } else {
+    feel = deel - deto ;
+  }
+}
+
+@TangentOperator {
+  if ((smt == ELASTIC) || (smt == SECANTOPERATOR)) {
+    computeElasticStiffness<N, Type>::exe(Dt, lambda, mu);
+  } else if (smt == CONSISTENTTANGENTOPERATOR) {
+    StiffnessTensor De;
+    Stensor4 Je;
+    computeElasticStiffness<N, Type>::exe(De, lambda, mu);
+    getPartialJacobianInvert(Je);
+    Dt = De * Je;
+  } else {
+    return false;
+  }
+}
diff --git a/Tests/Data/Mechanics/Ehlers/MFront/DruckerPrager.so b/Tests/Data/Mechanics/Ehlers/MFront/DruckerPrager.so
new file mode 100755
index 0000000000000000000000000000000000000000..a311106f008e899cd4c8fe9eb3146de01d08ee50
Binary files /dev/null and b/Tests/Data/Mechanics/Ehlers/MFront/DruckerPrager.so differ
diff --git a/Tests/Data/Mechanics/Ehlers/MFront/cube_1e0_dp.prj b/Tests/Data/Mechanics/Ehlers/MFront/cube_1e0_dp.prj
new file mode 100644
index 0000000000000000000000000000000000000000..b82f2f3250c89fe0a17890a2b0f01aec1626e1f0
--- /dev/null
+++ b/Tests/Data/Mechanics/Ehlers/MFront/cube_1e0_dp.prj
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <mesh>../cube_1x1x1_hex_1e0.vtu</mesh>
+    <geometry>../cube_1x1x1.gml</geometry>
+    <processes>
+        <process>
+            <name>SD</name>
+            <type>SMALL_DEFORMATION</type>
+            <integration_order>2</integration_order>
+
+            <constitutive_relation>
+                <type>MFront</type>
+
+                <library>DruckerPrager.so</library>
+                <behaviour>DruckerPrager</behaviour>
+
+                <material_properties>
+                    <material_property name="YoungModulus" parameter="E"  />
+                    <material_property name="PoissonRatio" parameter="nu" />
+                    <material_property name="beta" parameter="beta" />
+                    <material_property name="kappa" parameter="kappa" />
+                </material_properties>
+            </constitutive_relation>
+
+            <!-- Configuration of the Ehlers model used to compute the reference solution.
+            <constitutive_relation>
+                <type>Ehlers</type>
+                <shear_modulus>G</shear_modulus>
+                <bulk_modulus>K</bulk_modulus>
+                <kappa>kappa</kappa>
+                <beta>beta</beta>
+                <gamma>gamma</gamma>
+                <hardening_modulus>hard</hardening_modulus>
+                <alpha>alpha</alpha>
+                <delta>delta</delta>
+                <eps>epsilon</eps>
+                <m>m</m>
+                <alphap>alphap</alphap>
+                <deltap>deltap</deltap>
+                <epsp>epsilonp</epsp>
+                <mp>mp</mp>
+                <betap>betap</betap>
+                <gammap>gammap</gammap>
+                <nonlinear_solver>
+                    <maximum_iterations>100</maximum_iterations>
+                    <error_tolerance>1e-14</error_tolerance>
+                </nonlinear_solver>
+            </constitutive_relation>
+            -->
+
+            <solid_density>rho_sr</solid_density>
+            <specific_body_force>0 0 0</specific_body_force>
+            <process_variables>
+                <process_variable>displacement</process_variable>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable type="static" internal_name="sigma" output_name="sigma"/>
+                <secondary_variable type="static" internal_name="epsilon" output_name="epsilon"/>
+            </secondary_variables>
+        </process>
+    </processes>
+    <time_loop>
+        <processes>
+            <process ref="SD">
+                <nonlinear_solver>basic_newton</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <abstol>1e-14</abstol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <output>
+                    <variables>
+                        <variable>displacement</variable>
+                        <variable>sigma</variable>
+                        <variable>epsilon</variable>
+                    </variables>
+                </output>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial>0</t_initial>
+                    <t_end>5.1</t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>1</repeat>
+                            <delta_t>0.05</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>1000</repeat>
+                            <delta_t>0.025</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>cube_1e0_dp</prefix>
+            <timesteps>
+                <pair>
+                    <repeat>1</repeat>
+                    <each_steps>1</each_steps>
+                </pair>
+            </timesteps>
+        </output>
+    </time_loop>
+    <parameters>
+        <parameter>
+            <name>E</name>
+            <type>Constant</type>
+            <value>360 <!-- 9 K G / (3 K + G) --></value>
+        </parameter>
+        <parameter>
+            <name>nu</name>
+            <type>Constant</type>
+            <value>0.2 <!-- (3 K - 2 G) / 2 / (3 K + G) --></value>
+        </parameter>
+
+        <parameter>
+            <name>kappa</name>
+            <type>Constant</type>
+            <value>0.0866</value>
+        </parameter>
+
+        <parameter>
+            <name>beta</name>
+            <type>Constant</type>
+            <value>0.1667</value>
+        </parameter>
+
+        <!-- Parameter values of the Ehlers model used to compute the reference solution.
+        <parameter>
+            <name>G</name>
+            <type>Constant</type>
+            <value>150.</value>
+        </parameter>
+        <parameter>
+            <name>K</name>
+            <type>Constant</type>
+            <value>200.</value>
+        </parameter>
+        <parameter>
+            <name>gamma</name>
+            <type>Constant</type>
+            <value>1.</value>
+        </parameter>
+        <parameter>
+            <name>hard</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>alpha</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>delta</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>epsilon</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>m</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>alphap</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>deltap</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>epsilonp</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>mp</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>betap</name>
+            <type>Constant</type>
+            <value>0.1667</value>
+        </parameter>
+        <parameter>
+            <name>gammap</name>
+            <type>Constant</type>
+            <value>1.</value>
+        </parameter>
+        -->
+
+        <parameter>
+            <name>rho_sr</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+
+        <parameter>
+            <name>displacement0</name>
+            <type>Constant</type>
+            <values>0 0 0</values>
+        </parameter>
+
+        <parameter>
+            <name>Dirichlet_left</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>Dirichlet_bottom</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>Dirichlet_front</name>
+            <type>Constant</type>
+            <value>0.</value>
+        </parameter>
+        <parameter>
+            <name>Dirichlet_top_spatial</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>Neumann_spatial</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>Dirichlet_top</name>
+            <type>CurveScaled</type>
+            <curve>Dirichlet_top_temporal</curve>
+            <parameter>Dirichlet_top_spatial</parameter>
+        </parameter>
+        <parameter>
+            <name>Neumann_force_right</name>
+            <type>CurveScaled</type>
+            <curve>Neumann_temporal_right</curve>
+            <parameter>Neumann_spatial</parameter>
+        </parameter>
+        <parameter>
+            <name>Neumann_force_top</name>
+            <type>CurveScaled</type>
+            <curve>Neumann_temporal_top</curve>
+            <parameter>Neumann_spatial</parameter>
+        </parameter>
+    </parameters>
+    <curves>
+        <curve>
+            <name>Dirichlet_top_temporal</name>
+            <coords>0.0  4.8   5.1</coords>
+            <values>0.0 -0.004 -0.003</values>
+        </curve>
+        <curve>
+            <name>Neumann_temporal_right</name>
+            <coords>0.0  5.1</coords>
+            <values>0.0  0.0</values>
+        </curve>
+        <curve>
+            <name>Neumann_temporal_top</name>
+            <coords>0.0  5.1</coords>
+            <values>0    0.0</values>
+        </curve>
+    </curves>
+    <process_variables>
+        <process_variable>
+            <name>displacement</name>
+            <components>3</components>
+            <order>1</order>
+            <initial_condition>displacement0</initial_condition>
+            <boundary_conditions>
+                <!-- fixed boundaries -->
+                <boundary_condition>
+                    <geometrical_set>cube_1x1x1_geometry</geometrical_set>
+                    <geometry>left</geometry>
+                    <type>Dirichlet</type>
+                    <component>0</component>
+                    <parameter>Dirichlet_left</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>cube_1x1x1_geometry</geometrical_set>
+                    <geometry>front</geometry>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>Dirichlet_front</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>cube_1x1x1_geometry</geometrical_set>
+                    <geometry>bottom</geometry>
+                    <type>Dirichlet</type>
+                    <component>2</component>
+                    <parameter>Dirichlet_bottom</parameter>
+                </boundary_condition>
+                <!-- force -->
+                <boundary_condition>
+                    <geometrical_set>cube_1x1x1_geometry</geometrical_set>
+                    <geometry>right</geometry>
+                    <type>Neumann</type>
+                    <component>0</component>
+                    <parameter>Neumann_force_right</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>cube_1x1x1_geometry</geometrical_set>
+                    <geometry>back</geometry>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>Dirichlet_top</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>cube_1x1x1_geometry</geometrical_set>
+                    <geometry>top</geometry>
+                    <type>Neumann</type>
+                    <component>2</component>
+                    <parameter>Neumann_force_top</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>
+            <lis>-i BiCGSTAB -p jacobi -tol 1e-16 -maxiter 10000</lis>
+            <eigen>
+                <solver_type>BiCGSTAB</solver_type>
+                <precon_type>NONE</precon_type>
+                <max_iteration_step>10000</max_iteration_step>
+                <error_tolerance>1e-16</error_tolerance>
+            </eigen>
+            <petsc>
+                <prefix>sd</prefix>
+                <parameters>-sd_ksp_type cg -sd_pc_type bjacobi -sd_ksp_rtol 1e-16 -sd_ksp_max_it 10000</parameters>
+            </petsc>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>
diff --git a/Tests/Data/Mechanics/Ehlers/MFront/cube_1e0_dp_ref_created_with_OGS_Ehlers.vtu b/Tests/Data/Mechanics/Ehlers/MFront/cube_1e0_dp_ref_created_with_OGS_Ehlers.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..9d78b88d91fa0d8f962dfe00a1ac4335416df500
--- /dev/null
+++ b/Tests/Data/Mechanics/Ehlers/MFront/cube_1e0_dp_ref_created_with_OGS_Ehlers.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb8c75862991401766afce1445e3c43e2c9f3c65424a61adaafc658ce5a8e4c7
+size 4682
diff --git a/Tests/Data/Mechanics/Linear/MFront/axisymm_ring/ring_plane_strain.prj b/Tests/Data/Mechanics/Linear/MFront/axisymm_ring/ring_plane_strain.prj
new file mode 100644
index 0000000000000000000000000000000000000000..a0cb430ff40cbb051d50d081c62b520523c7bbe5
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/MFront/axisymm_ring/ring_plane_strain.prj
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <mesh axially_symmetric="true">../../square_1x1_quad_1e4_translated.vtu</mesh>
+    <geometry>../../square_1x1_ring.gml</geometry>
+    <processes>
+        <process>
+            <name>SD</name>
+            <type>SMALL_DEFORMATION</type>
+            <integration_order>2</integration_order>
+            <constitutive_relation>
+                <type>MFront</type>
+
+                <library>../disc_with_hole/libBehaviour.so</library>
+                <behaviour>Elasticity</behaviour>
+
+                <material_properties>
+                    <material_property name="YoungModulus" parameter="E"  />
+                    <material_property name="PoissonRatio" parameter="nu" />
+                </material_properties>
+            </constitutive_relation>
+            <solid_density>rho_sr</solid_density>
+            <specific_body_force>0 0</specific_body_force>
+            <process_variables>
+                <process_variable>displacement</process_variable>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable type="static" internal_name="sigma" output_name="sigma"/>
+            </secondary_variables>
+        </process>
+    </processes>
+    <time_loop>
+        <processes>
+            <process ref="SD">
+                <nonlinear_solver>basic_newton</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <abstol>1e-15</abstol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <output>
+                    <variables>
+                        <variable>displacement</variable>
+                        <variable>sigma</variable>
+                    </variables>
+                </output>
+                <time_stepping>
+                    <type>SingleStep</type>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>ring_plane_strain</prefix>
+            <timesteps>
+                <pair>
+                    <repeat>1</repeat>
+                    <each_steps>10000000</each_steps>
+                </pair>
+            </timesteps>
+        </output>
+    </time_loop>
+    <parameters>
+        <parameter>
+            <name>E</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>nu</name>
+            <type>Constant</type>
+            <value>.25</value>
+        </parameter>
+        <parameter>
+            <name>rho_sr</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>displacement_initial</name>
+            <type>Constant</type>
+            <values>0 0</values>
+        </parameter>
+        <parameter>
+            <name>displacement_bottom</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>pressure_inner</name>
+            <type>Constant</type>
+            <value>0.02</value>
+        </parameter>
+        <parameter>
+            <name>pressure_outer</name>
+            <type>Constant</type>
+            <value>-0.01</value>
+        </parameter>
+    </parameters>
+    <process_variables>
+        <process_variable>
+            <name>displacement</name>
+            <components>2</components>
+            <order>1</order>
+            <initial_condition>displacement_initial</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <geometrical_set>square_1x1_geometry</geometrical_set>
+                    <geometry>inner</geometry>
+                    <type>Neumann</type>
+                    <component>0</component>
+                    <parameter>pressure_inner</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>square_1x1_geometry</geometrical_set>
+                    <geometry>outer</geometry>
+                    <type>Neumann</type>
+                    <component>0</component>
+                    <parameter>pressure_outer</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>square_1x1_geometry</geometrical_set>
+                    <geometry>bottom</geometry>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>displacement_bottom</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>square_1x1_geometry</geometrical_set>
+                    <geometry>top</geometry>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>displacement_bottom</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+    </process_variables>
+    <nonlinear_solvers>
+        <nonlinear_solver>
+            <name>basic_newton</name>
+            <type>Newton</type>
+            <max_iter>10</max_iter>
+            <linear_solver>general_linear_solver</linear_solver>
+        </nonlinear_solver>
+    </nonlinear_solvers>
+    <linear_solvers>
+        <linear_solver>
+            <name>general_linear_solver</name>
+            <lis>-i cg -p jacobi -tol 1e-16 -maxiter 10000</lis>
+            <eigen>
+                <solver_type>CG</solver_type>
+                <precon_type>DIAGONAL</precon_type>
+                <max_iteration_step>10000</max_iteration_step>
+                <error_tolerance>1e-16</error_tolerance>
+            </eigen>
+            <petsc>
+                <prefix>sd</prefix>
+                <parameters>-sd_ksp_type cg -sd_pc_type bjacobi -sd_ksp_rtol 1e-16 -sd_ksp_max_it 10000</parameters>
+            </petsc>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>
diff --git a/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole.gml b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole.gml
new file mode 100644
index 0000000000000000000000000000000000000000..8dc11d3ec617edbb3c255f861ec1f3da028672f4
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole.gml
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f1a6ae81343ec6b580a28043dcf70fc432d4dcd6d975fe3387a0b5f2c65fd75d
+size 4991
diff --git a/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole.prj b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole.prj
new file mode 100644
index 0000000000000000000000000000000000000000..18e7eb40a3b8c340a2d74ac9d53463909fca5ff2
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole.prj
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <mesh>disc_with_hole.vtu</mesh>
+    <geometry>disc_with_hole.gml</geometry>
+    <processes>
+        <process>
+            <name>SD</name>
+            <type>SMALL_DEFORMATION</type>
+            <integration_order>2</integration_order>
+            <constitutive_relation>
+                <type>MFront</type>
+
+                <library>libBehaviour.so</library>
+                <behaviour>Elasticity</behaviour>
+
+                <material_properties>
+                    <material_property name="YoungModulus" parameter="E"  />
+                    <material_property name="PoissonRatio" parameter="nu" />
+                </material_properties>
+            </constitutive_relation>
+            <solid_density>rho_sr</solid_density>
+            <specific_body_force>0 0</specific_body_force>
+            <process_variables>
+                <process_variable>displacement</process_variable>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable type="static" internal_name="sigma" output_name="sigma"/>
+            </secondary_variables>
+        </process>
+    </processes>
+    <time_loop>
+        <processes>
+            <process ref="SD">
+                <nonlinear_solver>basic_newton</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <abstol>1e-15</abstol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <output>
+                    <variables>
+                        <variable>displacement</variable>
+                        <variable>sigma</variable>
+                    </variables>
+                </output>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial>0</t_initial>
+                    <t_end>1</t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>4</repeat>
+                            <delta_t>0.25</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>disc_with_hole</prefix>
+            <timesteps>
+                <pair>
+                    <repeat>1</repeat>
+                    <each_steps>10000000</each_steps>
+                </pair>
+            </timesteps>
+        </output>
+    </time_loop>
+    <parameters>
+        <parameter>
+            <name>E</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>nu</name>
+            <type>Constant</type>
+            <value>.3</value>
+        </parameter>
+        <parameter>
+            <name>rho_sr</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>displacement0</name>
+            <type>Constant</type>
+            <values>0 0</values>
+        </parameter>
+        <parameter>
+            <name>dirichlet0</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>dirichlet1</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>neumann_force</name>
+            <type>Constant</type>
+            <values>0.01</values>
+        </parameter>
+    </parameters>
+    <process_variables>
+        <process_variable>
+            <name>displacement</name>
+            <components>2</components>
+            <order>1</order>
+            <initial_condition>displacement0</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <geometrical_set>disc_with_hole</geometrical_set>
+                    <geometry>LEFT</geometry>
+                    <type>Dirichlet</type>
+                    <component>0</component>
+                    <parameter>dirichlet0</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>disc_with_hole</geometrical_set>
+                    <geometry>BOTTOM</geometry>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>dirichlet1</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>disc_with_hole</geometrical_set>
+                    <geometry>TOP</geometry>
+                    <type>Neumann</type>
+                    <component>1</component>
+                    <parameter>neumann_force</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+    </process_variables>
+    <nonlinear_solvers>
+        <nonlinear_solver>
+            <name>basic_newton</name>
+            <type>Newton</type>
+            <max_iter>5</max_iter>
+            <linear_solver>general_linear_solver</linear_solver>
+        </nonlinear_solver>
+    </nonlinear_solvers>
+    <linear_solvers>
+        <linear_solver>
+            <name>general_linear_solver</name>
+            <lis>-i cg -p jacobi -tol 1e-16 -maxiter 10000</lis>
+            <eigen>
+                <solver_type>CG</solver_type>
+                <precon_type>DIAGONAL</precon_type>
+                <max_iteration_step>10000</max_iteration_step>
+                <error_tolerance>1e-16</error_tolerance>
+            </eigen>
+            <petsc>
+                <prefix>sd</prefix>
+                <parameters>-sd_ksp_type cg -sd_pc_type bjacobi -sd_ksp_rtol 1e-16 -sd_ksp_max_it 10000</parameters>
+            </petsc>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>
diff --git a/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole.vtu b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..591a5b3abec9fda237f24c5689033cf1a30acc9c
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d25d38cfa4a6c2d636362a725a9fe894bc28ed9a1077b5a60b4f49a01e0e7528
+size 85958
diff --git a/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole_expected_pcs_0_ts_4_t_1.000000.vtu b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole_expected_pcs_0_ts_4_t_1.000000.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..4a5cb8d838a3b6e7c6e3bfb78f9ebe97bda65cfa
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/disc_with_hole_expected_pcs_0_ts_4_t_1.000000.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:47246d66ed28f2be82c398df0bdca2dd679734a91611f2a27c33904d6d68cbdb
+size 101662
diff --git a/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/elasticity.mfront b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/elasticity.mfront
new file mode 100644
index 0000000000000000000000000000000000000000..a985c58315e3a4ffeed3048da9945e4b7f76892c
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/elasticity.mfront
@@ -0,0 +1,32 @@
+@Behaviour Elasticity;
+@Author Helfer Thomas;
+@Date 23/11/06;
+@Description{
+ A very first test
+ (the most simple one in fact).
+}
+
+@UseQt true;
+@ProvidesSymmetricTangentOperator;
+
+@MaterialProperty stress young;
+young.setGlossaryName("YoungModulus");
+@MaterialProperty real   nu;
+nu.setGlossaryName("PoissonRatio");
+
+@LocalVariable stress lambda;
+@LocalVariable stress mu;
+
+@Includes{
+#include"TFEL/Material/Lame.hxx"
+}
+
+@Integrator{
+  using namespace tfel::material::lame;
+  lambda = computeLambda(young,nu);
+  mu = computeMu(young,nu);
+  sig = lambda*trace(eto+deto)*StrainStensor::Id()+2*mu*(eto+deto);
+  if(computeTangentOperator_){
+    Dt = lambda*Stensor4::IxI()+2*mu*Stensor4::Id();
+  }
+}
diff --git a/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/libBehaviour.so b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/libBehaviour.so
new file mode 100755
index 0000000000000000000000000000000000000000..93632cd232f2d286a7400d749ef622ae8b81f758
Binary files /dev/null and b/Tests/Data/Mechanics/Linear/MFront/disc_with_hole/libBehaviour.so differ