From bad886d9eae0da0e4f9be37d228e68d9134e3a94 Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Tue, 7 Jan 2020 14:49:35 +0100
Subject: [PATCH] [T/LF] 3D-test for flux computation.

---
 ProcessLib/LiquidFlow/Tests.cmake             |  15 ++
 ...aceflux_pcs_0_ts_0_t_0.000000_expected.vtu |   3 +
 ...aceflux_pcs_0_ts_1_t_0.432000_expected.vtu |   3 +
 ...aceflux_pcs_0_ts_2_t_0.864000_expected.vtu |   3 +
 .../Flux/cube_1e3_calculatesurfaceflux.prj    | 177 ++++++++++++++++++
 .../LiquidFlow/Flux/cube_1x1x1_hex_1e3.vtu    |   3 +
 .../cube_1x1x1_hex_1e3_complete_surface.vtu   |   3 +
 ...hlet_specific_flux_t_0.432000_expected.vtu |   3 +
 ...hlet_specific_flux_t_0.864000_expected.vtu |   3 +
 .../Flux/cube_1x1x1_hex_1e3_left.vtu          |   3 +
 .../Flux/cube_1x1x1_hex_1e3_right.vtu         |   3 +
 11 files changed, 219 insertions(+)
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_0_t_0.000000_expected.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/cube_1e3_calculatesurfaceflux.prj
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_left.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_right.vtu

diff --git a/ProcessLib/LiquidFlow/Tests.cmake b/ProcessLib/LiquidFlow/Tests.cmake
index b0c7df40850..8b394628e14 100644
--- a/ProcessLib/LiquidFlow/Tests.cmake
+++ b/ProcessLib/LiquidFlow/Tests.cmake
@@ -364,3 +364,18 @@ AddTest(
     time_dependent_heterogeneous_source_term_pcs_0_ts_120_t_1200.000000.vtu time_dependent_heterogeneous_source_term_pcs_0_ts_120_t_1200.000000.vtu pressure pressure 1e-7 1e-13
     time_dependent_heterogeneous_source_term_pcs_0_ts_200_t_2000.000000.vtu time_dependent_heterogeneous_source_term_pcs_0_ts_200_t_2000.000000.vtu pressure pressure 1e-7 1e-13
 )
+
+AddTest(
+    NAME LiquidFlow_Flux
+    PATH Parabolic/LiquidFlow/Flux
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS cube_1e3_calculatesurfaceflux.prj
+    WRAPPER time
+    TESTER vtkdiff
+    REQUIREMENTS NOT OGS_USE_MPI
+    DIFF_DATA
+    cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000.vtu specific_flux specific_flux 1e-7 1e-13
+    cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000.vtu specific_flux specific_flux 1e-7 1e-13
+    LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000.vtu pressure pressure 1e-7 1e-13
+    LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000.vtu pressure pressure 1e-7 1e-13
+)
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_0_t_0.000000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_0_t_0.000000_expected.vtu
new file mode 100644
index 00000000000..1bd0b3bfdf2
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_0_t_0.000000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3928650be26b5dc4a48e0a635fdfc20eaa912e48c32d6d8c6533c87fee70622b
+size 39859
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu
new file mode 100644
index 00000000000..03b608491d0
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4b22d3aa39091be0e2b9a1759f9824855175de911f58344b6686f59e43cd6f2
+size 46835
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu
new file mode 100644
index 00000000000..8fff68e1f41
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01b5c7d2ce1ccedbb1a4fbe5a544ad502bf36ef47772db4cec78afc3c8e4f182
+size 46755
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1e3_calculatesurfaceflux.prj b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1e3_calculatesurfaceflux.prj
new file mode 100644
index 00000000000..b1b890a9674
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1e3_calculatesurfaceflux.prj
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <meshes>
+        <mesh>cube_1x1x1_hex_1e3.vtu</mesh>
+        <mesh>cube_1x1x1_hex_1e3_complete_surface.vtu</mesh>
+        <mesh>cube_1x1x1_hex_1e3_left.vtu</mesh>
+        <mesh>cube_1x1x1_hex_1e3_right.vtu</mesh>
+    </meshes>
+    <processes>
+        <process>
+            <name>LiquidFlow</name>
+            <type>LIQUID_FLOW</type>
+            <integration_order>2</integration_order>
+            <darcy_gravity>
+                <!-- axis_id: 0, 1, or the dimension of space minus one -->
+                <axis_id>0</axis_id>
+                <!-- g>=0. g=0: non gravity term -->
+                <g>0.</g>
+            </darcy_gravity>
+            <process_variables>
+                <process_variable>pressure</process_variable>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable internal_name="darcy_velocity" output_name="v"/>
+            </secondary_variables>
+            <calculatesurfaceflux>
+                <mesh>cube_1x1x1_hex_1e3_complete_surface</mesh>
+                <property_name>specific_flux</property_name>
+                <output_mesh>cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux.vtu</output_mesh>
+            </calculatesurfaceflux>
+            <material_property>
+                <fluid>
+                    <density>
+                        <type>Constant</type>
+                        <value> 78.68 </value>
+                    </density>
+                    <viscosity>
+                        <type>Constant</type>
+                        <value> 1.295e-4 </value>
+                    </viscosity>
+                </fluid>
+                <porous_medium>
+                    <porous_medium id="0">
+                        <permeability>
+                            <permeability_tensor_entries>kappa1</permeability_tensor_entries>
+                            <type>Constant</type>
+                        </permeability>
+                        <porosity>
+                            <type>Constant</type>
+                            <porosity_parameter>constant_porosity_parameter</porosity_parameter>
+                        </porosity>
+                        <storage>
+                            <type>Constant</type>
+                            <value> 8.05e-10 </value>
+                        </storage>
+                    </porous_medium>
+                </porous_medium>
+            </material_property>
+        </process>
+    </processes>
+    <time_loop>
+        <processes>
+            <process ref="LiquidFlow">
+                <nonlinear_solver>basic_picard</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <abstol>1.e-10</abstol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial> 0.0 </t_initial>
+                    <t_end> 0.864 </t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>2</repeat>
+                            <delta_t>0.432</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>LF_cube_1e3_calculatesurfaceflux</prefix>
+            <timesteps>
+                <pair>
+                    <repeat> 1 </repeat>
+                    <each_steps> 1 </each_steps>
+                </pair>
+            </timesteps>
+            <variables>
+                <variable> pressure </variable>
+                <variable> v </variable>
+            </variables>
+        </output>
+    </time_loop>
+    <parameters>
+        <parameter>
+            <name>p0</name>
+            <type>Constant</type>
+            <value>5e6</value>
+        </parameter>
+        <parameter>
+            <name>p_Dirichlet_left</name>
+            <type>Constant</type>
+            <value>1e7</value>
+        </parameter>
+        <parameter>
+            <name>p_Dirichlet_right</name>
+            <type>Constant</type>
+            <value>1e6</value>
+        </parameter>
+        <parameter>
+            <name>constant_porosity_parameter</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>kappa1</name>
+            <type>Constant</type>
+            <values>9.2e-12 0 0 0 9.2e-12 0 0 0 9.2e-12</values>
+        </parameter>
+        <parameter>
+            <name>p_spatial</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+    </parameters>
+    <process_variables>
+        <process_variable>
+            <name>pressure</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>p0</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <mesh>cube_1x1x1_hex_1e3_left</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>p_Dirichlet_left</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>cube_1x1x1_hex_1e3_right</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>p_Dirichlet_right</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+    </process_variables>
+    <nonlinear_solvers>
+        <nonlinear_solver>
+            <name>basic_picard</name>
+            <type>Picard</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>lf</prefix>
+                <parameters>-lf_ksp_type cg -lf_pc_type bjacobi -lf_ksp_rtol 1e-16 -lf_ksp_max_it 10000</parameters>
+            </petsc>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3.vtu
new file mode 100644
index 00000000000..500d9f815a5
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f3e77b980dc0a4cefc19ba02eca4ad07ded3dc97497a01f169c719fc738a6bc9
+size 23197
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface.vtu
new file mode 100644
index 00000000000..303a9f426e1
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f405c070ea2cab30321345825eff7421fb1a5401cc2887a68da26e4e04d0b70
+size 65673
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu
new file mode 100644
index 00000000000..d2018339442
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c40d5de97b2704c8260f3afec3d5d381b6614b3b6121518535a90ec738764cac
+size 79556
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu
new file mode 100644
index 00000000000..4b51b65f9ec
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e2fb642aa3ca416db53112da6cbceed72e2a74369297c48bd26964ee95dcdb6
+size 79556
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_left.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_left.vtu
new file mode 100644
index 00000000000..0c67788fb0e
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_left.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b76bf4e7791dcd0431554367369cd2c49fd24c6d0784b73d55333667b73d1bc
+size 12897
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_right.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_right.vtu
new file mode 100644
index 00000000000..cb08cfb5227
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_right.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:efcc5a635b6616ee00d7f8df481c3dfedbab2984a2e5ffb317386095681d19e4
+size 12898
-- 
GitLab