From 2bedb003bbb36465e00ebfeef3baa95876d00cb5 Mon Sep 17 00:00:00 2001
From: Wenqing Wang <wenqing.wang@ufz.de>
Date: Fri, 7 Feb 2020 14:19:35 +0100
Subject: [PATCH] [Test] Addded a 3D test for the element deactivation approach

---
 ProcessLib/SmallDeformation/Tests.cmake       |   1 +
 .../block_with_hole_hex.vtu                   |   3 +
 .../Linear/ElementDeactivation3D/bottom.vtu   |   3 +
 .../element_deactivation_M_3D.prj             | 202 ++++++++++++++++++
 ...eactivation_M_3D_pcs_0_ts_4_t_1.000000.vtu |   3 +
 .../Linear/ElementDeactivation3D/top.vtu      |   3 +
 .../Linear/ElementDeactivation3D/x0.vtu       |   3 +
 .../Linear/ElementDeactivation3D/y0.vtu       |   3 +
 .../Linear/ElementDeactivation3D/y1.vtu       |   3 +
 9 files changed, 224 insertions(+)
 create mode 100644 Tests/Data/Mechanics/Linear/ElementDeactivation3D/block_with_hole_hex.vtu
 create mode 100644 Tests/Data/Mechanics/Linear/ElementDeactivation3D/bottom.vtu
 create mode 100644 Tests/Data/Mechanics/Linear/ElementDeactivation3D/element_deactivation_M_3D.prj
 create mode 100644 Tests/Data/Mechanics/Linear/ElementDeactivation3D/element_deactivation_M_3D_pcs_0_ts_4_t_1.000000.vtu
 create mode 100644 Tests/Data/Mechanics/Linear/ElementDeactivation3D/top.vtu
 create mode 100644 Tests/Data/Mechanics/Linear/ElementDeactivation3D/x0.vtu
 create mode 100644 Tests/Data/Mechanics/Linear/ElementDeactivation3D/y0.vtu
 create mode 100644 Tests/Data/Mechanics/Linear/ElementDeactivation3D/y1.vtu

diff --git a/ProcessLib/SmallDeformation/Tests.cmake b/ProcessLib/SmallDeformation/Tests.cmake
index 285c4bfaebc..5e78807d8ba 100644
--- a/ProcessLib/SmallDeformation/Tests.cmake
+++ b/ProcessLib/SmallDeformation/Tests.cmake
@@ -2,6 +2,7 @@ if (NOT OGS_USE_MPI)
     OgsTest(PROJECTFILE Mechanics/Linear/square_1e0.prj)
     OgsTest(PROJECTFILE Mechanics/Linear/square_1e2.prj)
     OgsTest(PROJECTFILE Mechanics/Linear/disc_with_hole.prj)
+    OgsTest(PROJECTFILE Mechanics/Linear/ElementDeactivation3D/element_deactivation_M_3D.prj)
     OgsTest(PROJECTFILE Mechanics/Linear/square_1e5.prj LARGE)
     OgsTest(PROJECTFILE Mechanics/Linear/square_1e2_quad8_traction_top.prj)
     OgsTest(PROJECTFILE Mechanics/Linear/cube_1e0.prj)
diff --git a/Tests/Data/Mechanics/Linear/ElementDeactivation3D/block_with_hole_hex.vtu b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/block_with_hole_hex.vtu
new file mode 100644
index 00000000000..26bfcfcecb3
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/block_with_hole_hex.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca1801998f60e7995018c52632b66e9d40746781d23cc186fd33dc0b6967f448
+size 338374
diff --git a/Tests/Data/Mechanics/Linear/ElementDeactivation3D/bottom.vtu b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/bottom.vtu
new file mode 100644
index 00000000000..5883789eedd
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/bottom.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4baede5083494f3642289b94e26730bbd3ee93a4643be5b088bffbfe63bbd398
+size 27572
diff --git a/Tests/Data/Mechanics/Linear/ElementDeactivation3D/element_deactivation_M_3D.prj b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/element_deactivation_M_3D.prj
new file mode 100644
index 00000000000..195f8acedb3
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/element_deactivation_M_3D.prj
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <meshes>
+        <mesh>block_with_hole_hex.vtu</mesh>
+        <mesh>top.vtu</mesh>
+        <mesh>bottom.vtu</mesh>
+        <mesh>y0.vtu</mesh>
+        <mesh>y1.vtu</mesh>
+        <mesh>x0.vtu</mesh>
+    </meshes>
+    <processes>
+        <process>
+            <name>SD</name>
+            <type>SMALL_DEFORMATION</type>
+            <integration_order>2</integration_order>
+            <constitutive_relation id="0">
+                <type>LinearElasticIsotropic</type>
+                <youngs_modulus>E</youngs_modulus>
+                <poissons_ratio>nu</poissons_ratio>
+            </constitutive_relation>
+            <constitutive_relation id="1">
+                <type>LinearElasticIsotropic</type>
+                <youngs_modulus>E</youngs_modulus>
+                <poissons_ratio>nu</poissons_ratio>
+            </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 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-10</abstol>
+                </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>4</repeat>
+                            <delta_t>0.25</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>element_deactivation_M_3D</prefix>
+            <timesteps>
+                <pair>
+                    <repeat>1</repeat>
+                    <each_steps>10000000</each_steps>
+                </pair>
+            </timesteps>
+            <variables>
+                <variable>displacement</variable>
+                <variable>sigma</variable>
+                <variable>epsilon</variable>
+            </variables>
+        </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 0.</values>
+        </parameter>
+        <parameter>
+            <name>ux0</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>uy0</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>uz0</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>top_load</name>
+            <type>Constant</type>
+            <values>0.01</values>
+        </parameter>
+    </parameters>
+    <process_variables>
+        <process_variable>
+            <name>displacement</name>
+            <components>3</components>
+            <order>1</order>
+            <initial_condition>displacement0</initial_condition>
+            <deactivated_subdomains>
+                <deactivated_subdomain>
+                    <time_interval>
+                        <start>0</start>
+                        <end>1</end>
+                    </time_interval>
+                    <material_ids>0</material_ids>
+                </deactivated_subdomain>
+            </deactivated_subdomains>
+            <boundary_conditions>
+                <boundary_condition>
+                    <mesh>bottom</mesh>
+                    <type>Dirichlet</type>
+                    <component>2</component>
+                    <parameter>uz0</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>top</mesh>
+                    <type>Neumann</type>
+                    <component>2</component>
+                    <parameter>top_load</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>x0</mesh>
+                    <type>Dirichlet</type>
+                    <component>0</component>
+                    <parameter>ux0</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>y0</mesh>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>uy0</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>y1</mesh>
+                    <type>Dirichlet</type>
+                    <component>1</component>
+                    <parameter>uy0</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+    </process_variables>
+    <nonlinear_solvers>
+        <nonlinear_solver>
+            <name>basic_newton</name>
+            <type>Newton</type>
+            <max_iter>2</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>BiCGSTAB</solver_type>
+                <precon_type>DIAGONAL</precon_type>
+                <max_iteration_step>10000</max_iteration_step>
+                <error_tolerance>1e-14</error_tolerance>
+            </eigen>
+        </linear_solver>
+    </linear_solvers>
+
+    <test_definition>
+        <vtkdiff>
+            <file>element_deactivation_M_3D_pcs_0_ts_4_t_1.000000.vtu</file>
+            <field>displacement</field>
+            <absolute_tolerance>1e-14</absolute_tolerance>
+            <relative_tolerance>1e-14</relative_tolerance>
+        </vtkdiff>
+        <vtkdiff>
+            <file>element_deactivation_M_3D_pcs_0_ts_4_t_1.000000.vtu</file>
+            <field>sigma</field>
+            <absolute_tolerance>1e-14</absolute_tolerance>
+            <relative_tolerance>1e-14</relative_tolerance>
+        </vtkdiff>
+    </test_definition>
+</OpenGeoSysProject>
diff --git a/Tests/Data/Mechanics/Linear/ElementDeactivation3D/element_deactivation_M_3D_pcs_0_ts_4_t_1.000000.vtu b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/element_deactivation_M_3D_pcs_0_ts_4_t_1.000000.vtu
new file mode 100644
index 00000000000..fedf64d3cd7
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/element_deactivation_M_3D_pcs_0_ts_4_t_1.000000.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96c24f755f1b353965a57763e148a2b1c4d8672e2894e5a70431f74a2b062d7a
+size 871324
diff --git a/Tests/Data/Mechanics/Linear/ElementDeactivation3D/top.vtu b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/top.vtu
new file mode 100644
index 00000000000..a045c19d565
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/top.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a3eab4d664544a5887db303a535fbfde4f81cbc2694fc7a30f35f06aef3bd353
+size 11180
diff --git a/Tests/Data/Mechanics/Linear/ElementDeactivation3D/x0.vtu b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/x0.vtu
new file mode 100644
index 00000000000..3a7c0e5ae2e
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/x0.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2ee65c849eee493ed54319443d280dedcb77b7a216d70a9981fc77fcc0c38725
+size 27574
diff --git a/Tests/Data/Mechanics/Linear/ElementDeactivation3D/y0.vtu b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/y0.vtu
new file mode 100644
index 00000000000..2ab85be60cb
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/y0.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d95e4e5cbf2fab3ed4fe8d5c15248d2e82a4b60c2514b200d780c9361ef23a62
+size 52076
diff --git a/Tests/Data/Mechanics/Linear/ElementDeactivation3D/y1.vtu b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/y1.vtu
new file mode 100644
index 00000000000..e7a88f2f64e
--- /dev/null
+++ b/Tests/Data/Mechanics/Linear/ElementDeactivation3D/y1.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3494339f8b79f6592716c2aac27fddc5f1ac52471f11aceb996b45f7240a161b
+size 52104
-- 
GitLab