From f73afa81e3a88e65a775ab50d44114218b670ce6 Mon Sep 17 00:00:00 2001
From: Florian Zill <florian.zill@ufz.de>
Date: Tue, 15 Oct 2019 14:33:43 +0200
Subject: [PATCH] [T/HM] add test tube plane strain

for validation of principal stresses
---
 ProcessLib/HydroMechanics/Tests.cmake         |  13 +
 .../Tube/Principal_Stress_test_tube.pdf       |   3 +
 .../Tube/output_pcs_0_ts_1_t_1.000000.vtu     |   3 +
 .../Principal_Stress/Tube/tube.prj            | 228 ++++++++++++++++++
 .../Principal_Stress/Tube/tube.vtu            |   3 +
 .../Principal_Stress/Tube/tube_bot.vtu        |   3 +
 .../Principal_Stress/Tube/tube_left.vtu       |   3 +
 .../Principal_Stress/Tube/tube_right.vtu      |   3 +
 .../Principal_Stress/Tube/tube_top.vtu        |   3 +
 9 files changed, 262 insertions(+)
 create mode 100644 Tests/Data/HydroMechanics/Principal_Stress/Tube/Principal_Stress_test_tube.pdf
 create mode 100644 Tests/Data/HydroMechanics/Principal_Stress/Tube/output_pcs_0_ts_1_t_1.000000.vtu
 create mode 100644 Tests/Data/HydroMechanics/Principal_Stress/Tube/tube.prj
 create mode 100644 Tests/Data/HydroMechanics/Principal_Stress/Tube/tube.vtu
 create mode 100644 Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_bot.vtu
 create mode 100644 Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_left.vtu
 create mode 100644 Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_right.vtu
 create mode 100644 Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_top.vtu

diff --git a/ProcessLib/HydroMechanics/Tests.cmake b/ProcessLib/HydroMechanics/Tests.cmake
index 1276ff14488..6803593b13f 100644
--- a/ProcessLib/HydroMechanics/Tests.cmake
+++ b/ProcessLib/HydroMechanics/Tests.cmake
@@ -395,6 +395,19 @@ AddTest(
     output_pcs_0_ts_1_t_1.000000.vtu output_pcs_0_ts_1_t_1.000000.vtu principal_stress_values principal_stress_values 0 1e-10
 )
 
+AddTest(
+    NAME HydroMechanics_tube
+    PATH HydroMechanics/Principal_Stress/Tube
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS tube.prj
+    WRAPPER time
+    TESTER vtkdiff
+    REQUIREMENTS NOT OGS_USE_MPI
+    DIFF_DATA
+    output_pcs_0_ts_1_t_1.000000.vtu output_pcs_0_ts_1_t_1.000000.vtu displacement displacement 1e-12 0
+    output_pcs_0_ts_1_t_1.000000.vtu output_pcs_0_ts_1_t_1.000000.vtu principal_stress_values principal_stress_values 0 1e-10
+)
+
 ## Tests for Ideal gas
 # flow_no_strain
 AddTest(
diff --git a/Tests/Data/HydroMechanics/Principal_Stress/Tube/Principal_Stress_test_tube.pdf b/Tests/Data/HydroMechanics/Principal_Stress/Tube/Principal_Stress_test_tube.pdf
new file mode 100644
index 00000000000..6bb421561bb
--- /dev/null
+++ b/Tests/Data/HydroMechanics/Principal_Stress/Tube/Principal_Stress_test_tube.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb930fd833d7578e139e24d1ccad3f379c8b2f314bde964bcd571dafdc38beec
+size 178328
diff --git a/Tests/Data/HydroMechanics/Principal_Stress/Tube/output_pcs_0_ts_1_t_1.000000.vtu b/Tests/Data/HydroMechanics/Principal_Stress/Tube/output_pcs_0_ts_1_t_1.000000.vtu
new file mode 100644
index 00000000000..13d8c135510
--- /dev/null
+++ b/Tests/Data/HydroMechanics/Principal_Stress/Tube/output_pcs_0_ts_1_t_1.000000.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd67d6c58458a4788e586892e2523cb6d1e6bd71d520ee20e802f1366b660134
+size 426414
diff --git a/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube.prj b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube.prj
new file mode 100644
index 00000000000..910a1ee9ff8
--- /dev/null
+++ b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube.prj
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <meshes>
+        <mesh axially_symmetric="true">tube.vtu</mesh>
+        <mesh axially_symmetric="true">tube_left.vtu</mesh>
+        <mesh axially_symmetric="true">tube_bot.vtu</mesh>
+        <mesh axially_symmetric="true">tube_right.vtu</mesh>
+        <mesh axially_symmetric="true">tube_top.vtu</mesh>
+    </meshes>
+    <processes>
+        <process>
+            <name>HM</name>
+            <type>HYDRO_MECHANICS</type>
+            <integration_order>3</integration_order>
+            <dimension>2</dimension>
+            <constitutive_relation>
+                <type>LinearElasticIsotropic</type>
+                <youngs_modulus>E</youngs_modulus>
+                <poissons_ratio>nu</poissons_ratio>
+            </constitutive_relation>
+            <intrinsic_permeability>k</intrinsic_permeability>
+            <fluid_viscosity>mu</fluid_viscosity>
+            <fluid_density>rho_fr</fluid_density>
+            <biot_coefficient>alpha</biot_coefficient>
+            <porosity>phi</porosity>
+            <solid_density>rho_sr</solid_density>
+            <process_variables>
+                <displacement>displacement</displacement>
+                <pressure>pressure</pressure>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable type="static" internal_name="sigma_xx" output_name="sigma_xx"/>
+                <secondary_variable type="static" internal_name="sigma_yy" output_name="sigma_yy"/>
+                <secondary_variable type="static" internal_name="sigma_zz" output_name="sigma_zz"/>
+                <secondary_variable type="static" internal_name="sigma_xy" output_name="sigma_xy"/>
+                <secondary_variable type="static" internal_name="epsilon_xx" output_name="epsilon_xx"/>
+                <secondary_variable type="static" internal_name="epsilon_yy" output_name="epsilon_yy"/>
+                <secondary_variable type="static" internal_name="epsilon_zz" output_name="epsilon_zz"/>
+                <secondary_variable type="static" internal_name="epsilon_xy" output_name="epsilon_xy"/>
+                <secondary_variable type="static" internal_name="velocity" output_name="velocity"/>
+            </secondary_variables>
+            <specific_body_force>0 0</specific_body_force>
+            <fluid_type>incompressible_fluid</fluid_type>
+        </process>
+    </processes>
+    <time_loop>
+        <processes>
+            <process ref="HM">
+                <nonlinear_solver>basic_newton</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltol>1e-15</reltol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial>0</t_initial>
+                    <t_end>1</t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>1</repeat>
+                            <delta_t>1</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>output</prefix>
+            <timesteps>
+                <pair>
+                    <repeat>1</repeat>
+                    <each_steps>1</each_steps>
+                </pair>
+            </timesteps>
+            <variables>
+                <variable>displacement</variable>
+                <variable>pressure</variable>
+                <variable>sigma_xx</variable>
+                <variable>sigma_yy</variable>
+                <variable>sigma_zz</variable>
+                <variable>sigma_xy</variable>
+                <variable>epsilon_xx</variable>
+                <variable>epsilon_yy</variable>
+                <variable>epsilon_zz</variable>
+                <variable>epsilon_xy</variable>
+                <variable>velocity</variable>
+            </variables>
+        </output>
+    </time_loop>
+    <parameters>
+        <!-- Mechanics -->
+        <parameter>
+            <name>E</name>
+            <type>Constant</type>
+            <value>210e9</value>
+        </parameter>
+        <parameter>
+            <name>nu</name>
+            <type>Constant</type>
+            <value>0.3</value>
+        </parameter>
+        <!-- Model parameters -->
+        <parameter>
+            <name>k</name>
+            <type>Constant</type>
+            <value>1e-16</value>
+        </parameter>
+        <parameter>
+            <name>mu</name>
+            <type>Constant</type>
+            <value>1e-3</value>
+        </parameter>
+        <parameter>
+            <name>alpha</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>phi</name>
+            <type>Constant</type>
+            <value>0.0</value>
+        </parameter>
+        <parameter>
+            <name>rho_sr</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>rho_fr</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>displacement0</name>
+            <type>Constant</type>
+            <values>0 0</values>
+        </parameter>
+        <parameter>
+            <name>pressure0</name>
+            <type>Constant</type>
+            <values>0</values>
+        </parameter>
+        <parameter>
+            <name>pressure_load_in</name>
+            <mesh>tube_left</mesh>
+            <type>Constant</type>
+            <value>52.2e6</value>
+        </parameter>
+        <parameter>
+            <name>pressure_load_out</name>
+            <mesh>tube_right</mesh>
+            <type>Constant</type>
+            <value>-0.1e6</value>
+        </parameter>
+        <parameter>
+            <name>zero</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+    </parameters>
+    <process_variables>
+        <process_variable>
+            <name>displacement</name>
+            <components>2</components>
+            <order>2</order>
+            <initial_condition>displacement0</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <mesh>tube_bot</mesh>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>zero</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>tube_top</mesh>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>zero</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>tube_left</mesh>
+                    <type>Neumann</type>
+                    <component>0</component>
+                    <parameter>pressure_load_in</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>tube_right</mesh>
+                    <type>Neumann</type>
+                    <component>0</component>
+                    <parameter>pressure_load_out</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+        <process_variable>
+            <name>pressure</name>
+            <components>1</components>
+            <order>2</order>
+            <initial_condition>pressure0</initial_condition>
+            <boundary_conditions>
+            </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 cg -p ilu -tol 1e-16 -maxiter 10000</lis>
+            <eigen>
+                <solver_type>CG</solver_type>
+                <precon_type>ILUT</precon_type>
+                <max_iteration_step>10000</max_iteration_step>
+                <error_tolerance>1e-16</error_tolerance>
+            </eigen>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>
diff --git a/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube.vtu b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube.vtu
new file mode 100644
index 00000000000..3c9f05ff57e
--- /dev/null
+++ b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:545d0a2052a8b7bd85b21f83a90c820ae8c51dd006910da00f3e8675796396f9
+size 91764
diff --git a/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_bot.vtu b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_bot.vtu
new file mode 100644
index 00000000000..104df3ff42b
--- /dev/null
+++ b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_bot.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:914cf962db0d82514f085f12670636f2ba5b594cbf718e0b7a83876c25bd7a62
+size 57555
diff --git a/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_left.vtu b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_left.vtu
new file mode 100644
index 00000000000..861f3f63d21
--- /dev/null
+++ b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_left.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f0e662e44a88d19dc66665f1aa3d286e9404bd46c15cc3653dace4c26dbe353e
+size 1695
diff --git a/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_right.vtu b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_right.vtu
new file mode 100644
index 00000000000..5759546a5dc
--- /dev/null
+++ b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_right.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65c887a4e52980e44e00bc72570784e94edaf6fc880fc88ecc557cba75941909
+size 1695
diff --git a/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_top.vtu b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_top.vtu
new file mode 100644
index 00000000000..f60e7e27cf4
--- /dev/null
+++ b/Tests/Data/HydroMechanics/Principal_Stress/Tube/tube_top.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a0c8199a445a6da889989d1956fc34c37301b90538ac5bdd2ca915029398802
+size 57555
-- 
GitLab