From 262ed1f6d65dd1d010c16a776dec7f6a6e9f3b0d Mon Sep 17 00:00:00 2001
From: Wenqing Wang <wenqing.wang@ufz.de>
Date: Mon, 12 Sep 2022 15:35:34 +0200
Subject: [PATCH] [HC] Added a test using the isotropic diffusion stabilization

---
 ProcessLib/ComponentTransport/Tests.cmake     |  18 ++
 .../classical_transport_example.prj           | 221 ++++++++++++++++++
 .../classical_transport_example_t_4800.00.vtu |  32 +++
 .../classical_transport_example_t_7200.00.vtu |  32 +++
 .../geometry_left.vtu                         |  24 ++
 .../geometry_right.vtu                        |  24 ++
 .../ClassicalTransportExample/mesh_2D.vtu     |  23 ++
 7 files changed, 374 insertions(+)
 create mode 100644 Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example.prj
 create mode 100644 Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example_t_4800.00.vtu
 create mode 100644 Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example_t_7200.00.vtu
 create mode 100644 Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/geometry_left.vtu
 create mode 100644 Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/geometry_right.vtu
 create mode 100644 Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/mesh_2D.vtu

diff --git a/ProcessLib/ComponentTransport/Tests.cmake b/ProcessLib/ComponentTransport/Tests.cmake
index 20ed145c85c..af60513ad11 100644
--- a/ProcessLib/ComponentTransport/Tests.cmake
+++ b/ProcessLib/ComponentTransport/Tests.cmake
@@ -845,3 +845,21 @@ if (OGS_USE_MPI)
     OgsTest(WRAPPER mpirun -np 1 PROJECTFILE Parabolic/ComponentTransport/ReactiveTransport/EquilibriumPhase/calcitePorosityChange.prj RUNTIME 25)
     OgsTest(WRAPPER mpirun -np 2 PROJECTFILE Parabolic/ComponentTransport/ReactiveTransport/SurfaceComplexation/ParallelTest/RadionuclideSorption.prj RUNTIME 60)
 endif()
+
+AddTest(
+    NAME ComponentTransport_ClassicalTransportExample
+    PATH Parabolic/ComponentTransport/ClassicalTransportExample
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS classical_transport_example.prj
+    WRAPPER time
+    TESTER vtkdiff
+    REQUIREMENTS NOT (OGS_USE_LIS OR OGS_USE_MPI)
+    RUNTIME 1
+    DIFF_DATA
+    classical_transport_example_t_4800.00.vtu classical_transport_example_t_4800.00.vtu C C 1.e-9 1.0e-12
+    classical_transport_example_t_4800.00.vtu classical_transport_example_t_4800.00.vtu pressure pressure 1.e-9 1.0e-12
+    classical_transport_example_t_4800.00.vtu classical_transport_example_t_4800.00.vtu velocity velocity 1.e-12 1.0e-12
+    classical_transport_example_t_7200.00.vtu classical_transport_example_t_7200.00.vtu C C 1.e-9 1.0e-12
+    classical_transport_example_t_7200.00.vtu classical_transport_example_t_7200.00.vtu pressure pressure 1.e-9 1.0e-12
+    classical_transport_example_t_7200.00.vtu classical_transport_example_t_7200.00.vtu velocity velocity 1.e-12 1.0e-12
+)
diff --git a/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example.prj b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example.prj
new file mode 100644
index 00000000000..e53048e695c
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example.prj
@@ -0,0 +1,221 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<OpenGeoSysProject>
+    <meshes>
+        <mesh>mesh_2D.vtu</mesh>
+        <mesh>geometry_right.vtu</mesh>
+        <mesh>geometry_left.vtu</mesh>
+    </meshes>
+    <processes>
+        <process>
+            <name>HC</name>
+            <type>ComponentTransport</type>
+            <integration_order>4</integration_order>
+            <process_variables>
+                <concentration>C</concentration>
+                <pressure>pressure</pressure>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable internal_name="darcy_velocity" output_name="darcy_velocity"/>
+            </secondary_variables>
+            <specific_body_force>0 0</specific_body_force>
+            <numerical_stabilization>
+                <type>IsotropicDiffusion</type>
+                <tuning_parameter>0.15</tuning_parameter>
+                <cutoff_velocity>0.e-0</cutoff_velocity>
+            </numerical_stabilization>
+        </process>
+    </processes>
+    <media>
+        <medium id="0">
+            <phases>
+                <phase>
+                    <type>AqueousLiquid</type>
+                    <components>
+                        <component>
+                            <name>C</name>
+                            <properties>
+                                <property>
+                                    <name>pore_diffusion</name>
+                                    <type>Constant</type>
+                                    <value>1.e-9</value>
+                                </property>
+                                <property>
+                                    <name>retardation_factor</name>
+                                    <type>Constant</type>
+                                    <value>1.0</value>
+                                </property>
+                                <property>
+                                    <name>decay_rate</name>
+                                    <type>Parameter</type>
+                                    <parameter_name>decay</parameter_name>
+                                </property>
+                            </properties>
+                        </component>
+                    </components>
+                    <properties>
+                        <property>
+                            <name>density</name>
+                            <type>Constant</type>
+                            <value>1</value>
+                        </property>
+                        <property>
+                            <name>viscosity</name>
+                            <type>Constant</type>
+                            <value>1.0</value>
+                        </property>
+                    </properties>
+                </phase>
+            </phases>
+            <properties>
+                <property>
+                    <name>permeability</name>
+                    <type>Constant</type>
+                    <value>1.e-9</value>
+                </property>
+                <property>
+                    <name>porosity</name>
+                    <type>Constant</type>
+                    <value>1.0</value>
+                </property>
+                <property>
+                    <name>longitudinal_dispersivity</name>
+                    <type>Constant</type>
+                    <value>0</value>
+                </property>
+                <property>
+                    <name>transversal_dispersivity</name>
+                    <type>Constant</type>
+                    <value>0.0</value>
+                </property>
+            </properties>
+        </medium>
+    </media>
+    <parameters>
+        <parameter>
+            <name>decay</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>C0</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>C1</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>p0</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>p1</name>
+            <type>Constant</type>
+            <value>8.0e+4</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>geometry_left</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>p1</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>geometry_right</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>p0</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+        <process_variable>
+            <name>C</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>C0</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <mesh>geometry_right</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>C0</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>geometry_left</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>C1</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+    </process_variables>
+    <time_loop>
+        <processes>
+            <process ref="HC">
+                <nonlinear_solver>basic_picard</nonlinear_solver>
+                <convergence_criterion>
+                    <type>PerComponentDeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltols>1e-12 1e-10</reltols>
+                    <abstols>1e-9 1e-6</abstols>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial> 0.0 </t_initial>
+                    <t_end> 7200 </t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>200</repeat>
+                            <delta_t>18</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>classical_transport_example</prefix>
+            <suffix>_t_{:0.2ftime}</suffix>
+            <timesteps>
+                <pair>
+                    <repeat>1000</repeat>
+                    <each_steps>10</each_steps>
+                </pair>
+            </timesteps>
+            <variables>
+                <variable>C</variable>
+                <variable>pressure</variable>
+                <variable>velocity</variable>
+            </variables>
+            <fixed_output_times>
+                3600 4800
+            </fixed_output_times>
+        </output>
+    </time_loop>
+    <nonlinear_solvers>
+        <nonlinear_solver>
+            <name>basic_picard</name>
+            <type>Picard</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>true</scaling>
+            </eigen>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>
diff --git a/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example_t_4800.00.vtu b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example_t_4800.00.vtu
new file mode 100644
index 00000000000..baf082daf0d
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example_t_4800.00.vtu
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Int8" Name="OGS_VERSION" NumberOfTuples="22" format="appended" RangeMin="45"                   RangeMax="103"                  offset="0"                   />
+    </FieldData>
+    <Piece NumberOfPoints="30"                   NumberOfCells="14"                  >
+      <PointData>
+        <DataArray type="Float64" Name="C" format="appended" RangeMin="-0.0022197086164"     RangeMax="1.0020435168"         offset="84"                  />
+        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="380"                 />
+        <DataArray type="Float64" Name="darcy_velocity" NumberOfComponents="2" format="appended" RangeMin="0.0001"               RangeMax="0.0001"               offset="440"                 />
+        <DataArray type="Float64" Name="pressure" format="appended" RangeMin="0"                    RangeMax="80000"                offset="968"                 />
+      </PointData>
+      <CellData>
+        <DataArray type="Int32" Name="MaterialIDs" format="appended" RangeMin="0"                    RangeMax="0"                    offset="1244"                />
+        <DataArray type="Float64" Name="porosity_avg" format="appended" RangeMin="0"                    RangeMax="0"                    offset="1304"                />
+        <DataArray type="Float64" Name="velocity" NumberOfComponents="2" format="appended" RangeMin="0.0001"               RangeMax="0.0001"               offset="1364"                />
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0"                    RangeMax="0.80006249756"        offset="1540"                />
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="appended" RangeMin=""                     RangeMax=""                     offset="1888"                />
+        <DataArray type="Int64" Name="offsets" format="appended" RangeMin=""                     RangeMax=""                     offset="2056"                />
+        <DataArray type="UInt8" Name="types" format="appended" RangeMin=""                     RangeMax=""                     offset="2160"                />
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+  <AppendedData encoding="base64">
+   _AQAAAAAAAAAAgAAAAAAAABYAAAAAAAAAHAAAAAAAAAA=eF4z0zPRM9I1NDS11E03tzCwMDA3AmIANB4EmQ==AQAAAAAAAAAAgAAAAAAAAPAAAAAAAAAAvAAAAAAAAAA=eF5jYACBD/YMWMEH+3vMm9Y4/Htvb9G8TGA70wf72e8jAy79f2+fW2Y8Ne35e/v8WTEn4jg+2DefdonQXPzevqfrgUsj+xv7VVe33Z+i88R+/fS6G1O2XLVPUF38Q691v72t9kKGpe7T7T/a2f0V0E/aH+NzTNNaKHH/2Q1HwfSLHfZg8cwlc8Hqmtvmg/UZz6sBm3OuYyvY3N3T74PtOT4NYu/yuRB37IW66+JbiDtzoO5+DfUHAKDmbf8=AQAAAAAAAAAAgAAAAAAAAPAAAAAAAAAADAAAAAAAAAA=eF5jYBhZAAAA8AABAQAAAAAAAAAAgAAAAAAAAOABAAAAAAAAaQEAAAAAAAA=eF6r9ZF5/chMyj7qS3ZtwWJHmzw7CH9GgXmI1crfu4uhfO9Uu4nJFn93p0DVbwrZdPvFVR+bcCh/f4v9TVddzT3vvaDqNx/N7rIw35PrAeEnW6far0wR39PkBuGft/7q8bZEf89iZwh/gj57bMqyJ9ZBjhD+Emu9F+4NKnu+OED4pqdblfXma9n02UP4OdOfdPgtNrF5CHXf7fsHgtwmCuxpgspfvKzQWb9CwiYCyq/JUPXRm6i0hwHK3zCfk+mQnaTNJqj+GheOytR313dvg/HdGgO89f7v5oGq73rO/9N9lbBNApRvcHjdGtFUpT0dUP6fDf/N1bSYbB5D9Ufd69q+9duH3Z1Q+RkhWcfmdWrZ/IH6p+JoYmB0gKJNANS/MxKEbKte/rdeAA0Pr9Jf2Wr6UjYt0PCykZjXvHqn9p4SaHjOYZnyJOOk5Z6X0PDOk3ydYldtvscKGh87prht/ZDNtQcAZD/S8g==AQAAAAAAAAAAgAAAAAAAAPAAAAAAAAAArgAAAAAAAAA=eF5jYACCjs8ODGjgPwi0f3a4dndb7m2lTw6tu3Nvb9v7wWG6mecklY3vHC5/BYo/e+1gulXFc5LMSwfLskkqnkHPHJpNQeY9dnj+BKT+gcNU9e1AdbcdyttA8tcc/J+CxC84dHWA+MccNnSD6G0O+owQOo8RIq7WCFG3mRGiz6RpG9gc+0aIuRaHQO577GAtDLGXMRXijunbIO7y54C4U2MtxN0x1yD+AACMOXGJAQAAAAAAAAAAgAAAAAAAADgAAAAAAAAADAAAAAAAAAA=eF5jYCAPAAAAOAABAQAAAAAAAAAAgAAAAAAAAHAAAAAAAAAADAAAAAAAAAA=eF5jYKAvAAAAcAABAQAAAAAAAAAAgAAAAAAAAOAAAAAAAAAAYgAAAAAAAAA=eF7L95F5/chMyp4BBBr0bORR+Ep7tnki8QXM92i5I/EZdPZcdUXiO4juyXBElv+w2wyFL2qz2QHVvjg7ZPkTu5Pskfn8NotQ+Ox7BJD5Caw2P5D1JzDsyUcxb481ACgROhM=AQAAAAAAAAAAgAAAAAAAANACAAAAAAAA4wAAAAAAAAA=eF5jYMAOZs0EgZf2uMSrRda5P6xqwZBHF3ec7ih7xXEthjrOmSDxvRjiHzU+isZ/PIoh/rQNpP4shnj2J49JKp6XMMTvyoPMuYrpfn+Q+29iiNtPAZl/F0P8w5uSAPbSBxjiQfyeQHsfYYhvMgQaI/sEQ1w4BOSepxjiE8qOhtccfY4h/qIRIo4enmZZEHPQxVuCIPaii1+2grgTXVxRuRTsL3Txu2JO4HBAF9/2DBJu6OLzFkLCGV28O9oTHC/o4mt0nMDxiC7uuggS7+ji6/WdwOkEXVzAxAmcrtDFASQHob4=AQAAAAAAAAAAgAAAAAAAAMABAAAAAAAAWwAAAAAAAAA=eF5dyrUNwAAAA8EwM+P+a6bIu7Gbk6wPgn8Jvhjbn+Jjnf4Mb+v053hZp7/A0zr9JR7W6a9wt05/jZt1+htcrdPf4mKd/g5n6/T3OFmnf8DROv0hRtZ9+KYDYQ==AQAAAAAAAAAAgAAAAAAAAHAAAAAAAAAALQAAAAAAAAA=eF5jYYAADijNA6UFoLQIlJaA0jJQWgFKq0BpDSitA6UNoLQJlLaA0gBGcAGlAQAAAAAAAAAAgAAAAAAAAA4AAAAAAAAACwAAAAAAAAA=eF7j5EQGAAO/AH8=
+  </AppendedData>
+</VTKFile>
diff --git a/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example_t_7200.00.vtu b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example_t_7200.00.vtu
new file mode 100644
index 00000000000..583de747130
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/classical_transport_example_t_7200.00.vtu
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64" compressor="vtkZLibDataCompressor">
+  <UnstructuredGrid>
+    <FieldData>
+      <DataArray type="Int8" Name="OGS_VERSION" NumberOfTuples="22" format="appended" RangeMin="45"                   RangeMax="103"                  offset="0"                   />
+    </FieldData>
+    <Piece NumberOfPoints="30"                   NumberOfCells="14"                  >
+      <PointData>
+        <DataArray type="Float64" Name="C" format="appended" RangeMin="0"                    RangeMax="1.0060206808"         offset="84"                  />
+        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="364"                 />
+        <DataArray type="Float64" Name="darcy_velocity" NumberOfComponents="2" format="appended" RangeMin="0.0001"               RangeMax="0.0001"               offset="424"                 />
+        <DataArray type="Float64" Name="pressure" format="appended" RangeMin="0"                    RangeMax="80000"                offset="952"                 />
+      </PointData>
+      <CellData>
+        <DataArray type="Int32" Name="MaterialIDs" format="appended" RangeMin="0"                    RangeMax="0"                    offset="1228"                />
+        <DataArray type="Float64" Name="porosity_avg" format="appended" RangeMin="0"                    RangeMax="0"                    offset="1288"                />
+        <DataArray type="Float64" Name="velocity" NumberOfComponents="2" format="appended" RangeMin="0.0001"               RangeMax="0.0001"               offset="1348"                />
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0"                    RangeMax="0.80006249756"        offset="1524"                />
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="appended" RangeMin=""                     RangeMax=""                     offset="1872"                />
+        <DataArray type="Int64" Name="offsets" format="appended" RangeMin=""                     RangeMax=""                     offset="2040"                />
+        <DataArray type="UInt8" Name="types" format="appended" RangeMin=""                     RangeMax=""                     offset="2144"                />
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+  <AppendedData encoding="base64">
+   _AQAAAAAAAAAAgAAAAAAAABYAAAAAAAAAHAAAAAAAAAA=eF4z0zPRM9I1NDS11E03tzCwMDA3AmIANB4EmQ==AQAAAAAAAAAAgAAAAAAAAPAAAAAAAAAAsQAAAAAAAAA=eF77/x8E3tszoIG/UPGHm1MY3wLprKVrDoPovO+rrfoYPthzCHlNZ/r73t7w12xtRqYP9vX8xvNs/7y3/3js1ZxpLB/sl857/TL74nt73/N6KislPtgvefLlqm3RO/up3u1n7k54Y+93o0e0VfmxfXDdqnM2Ox/Y9/tD6FWdEPG5t9rA6hKOQvQFHYGYE7MSYu6RQxB7GoUg9q75CXHHFqi7bKDunAh19zWoPwDvLIBYAQAAAAAAAAAAgAAAAAAAAPAAAAAAAAAADAAAAAAAAAA=eF5jYBhZAAAA8AABAQAAAAAAAAAAgAAAAAAAAOABAAAAAAAAaQEAAAAAAAA=eF6r9ZF5/chMyj7qS3ZtwWJHmzw7CH9GgXmI1crfu4uhfO9Uu4nJFn93p0DVbwrZdPvFVR+bcCh/f4v9TVddzT3vvaDqNx/N7rIw35PrAeEnW6far0wR39PkBuGft/7q8bZEf89iZwh/gj57bMqyJ9ZBjhD+Emu9F+4NKnu+OED4pqdblfXma9n02UP4OdOfdPgtNrF5CHXf7fsHgtwmCuxpgspfvKzQWb9CwiYCyq/JUPXRm6i0hwHK3zCfk+mQnaTNJqj+GheOytR313dvg/HdGgO89f7v5oGq73rO/9N9lbBNApRvcHjdGtFUpT0dUP6fDf/N1bSYbB5D9Ufd69q+9duH3Z1Q+RkhWcfmdWrZ/IH6p+JoYmB0gKJNANS/MxKEbKte/rdeAA0Pr9Jf2Wr6UjYt0PCykZjXvHqn9p4SaHjOYZnyJOOk5Z6X0PDOk3ydYldtvscKGh87prht/ZDNtQcAZD/S8g==AQAAAAAAAAAAgAAAAAAAAPAAAAAAAAAArgAAAAAAAAA=eF5jYACCjs8ODGjgPwi0f3a4dndb7m2lTw6tu3Nvb9v7wWG6mecklY3vHC5/BYo/e+1gulXFc5LMSwfLskkqnkHPHJpNQeY9dnj+BKT+gcNU9e1AdbcdyttA8tcc/J+CxC84dHWA+MccNnSD6G0O+owQOo8RIq7WCFG3mRGiz6RpG9gc+0aIuRaHQO577GAtDLGXMRXijunbIO7y54C4U2MtxN0x1yD+AACMOXGJAQAAAAAAAAAAgAAAAAAAADgAAAAAAAAADAAAAAAAAAA=eF5jYCAPAAAAOAABAQAAAAAAAAAAgAAAAAAAAHAAAAAAAAAADAAAAAAAAAA=eF5jYKAvAAAAcAABAQAAAAAAAAAAgAAAAAAAAOAAAAAAAAAAYgAAAAAAAAA=eF7L95F5/chMyp4BBBr0bORR+Ep7tnki8QXM92i5I/EZdPZcdUXiO4juyXBElv+w2wyFL2qz2QHVvjg7ZPkTu5Pskfn8NotQ+Ox7BJD5Caw2P5D1JzDsyUcxb481ACgROhM=AQAAAAAAAAAAgAAAAAAAANACAAAAAAAA4wAAAAAAAAA=eF5jYMAOZs0EgZf2uMSrRda5P6xqwZBHF3ec7ih7xXEthjrOmSDxvRjiHzU+isZ/PIoh/rQNpP4shnj2J49JKp6XMMTvyoPMuYrpfn+Q+29iiNtPAZl/F0P8w5uSAPbSBxjiQfyeQHsfYYhvMgQaI/sEQ1w4BOSepxjiE8qOhtccfY4h/qIRIo4enmZZEHPQxVuCIPaii1+2grgTXVxRuRTsL3Txu2JO4HBAF9/2DBJu6OLzFkLCGV28O9oTHC/o4mt0nMDxiC7uuggS7+ji6/WdwOkEXVzAxAmcrtDFASQHob4=AQAAAAAAAAAAgAAAAAAAAMABAAAAAAAAWwAAAAAAAAA=eF5dyrUNwAAAA8EwM+P+a6bIu7Gbk6wPgn8Jvhjbn+Jjnf4Mb+v053hZp7/A0zr9JR7W6a9wt05/jZt1+htcrdPf4mKd/g5n6/T3OFmnf8DROv0hRtZ9+KYDYQ==AQAAAAAAAAAAgAAAAAAAAHAAAAAAAAAALQAAAAAAAAA=eF5jYYAADijNA6UFoLQIlJaA0jJQWgFKq0BpDSitA6UNoLQJlLaA0gBGcAGlAQAAAAAAAAAAgAAAAAAAAA4AAAAAAAAACwAAAAAAAAA=eF7j5EQGAAO/AH8=
+  </AppendedData>
+</VTKFile>
diff --git a/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/geometry_left.vtu b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/geometry_left.vtu
new file mode 100644
index 00000000000..1ed1022cb55
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/geometry_left.vtu
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="2"                    NumberOfCells="1"                   >
+      <PointData>
+        <DataArray type="UInt64" Name="bulk_node_ids" format="appended" RangeMin="0"                    RangeMax="3"                    offset="0"                   />
+      </PointData>
+      <CellData>
+        <DataArray type="UInt64" Name="bulk_element_ids" format="appended" RangeMin="1.8446744074e+19"     RangeMax="1.8446744074e+19"     offset="32"                  />
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0"                    RangeMax="0.01"                 offset="56"                  />
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="appended" RangeMin=""                     RangeMax=""                     offset="132"                 />
+        <DataArray type="Int64" Name="offsets" format="appended" RangeMin=""                     RangeMax=""                     offset="164"                 />
+        <DataArray type="UInt8" Name="types" format="appended" RangeMin=""                     RangeMax=""                     offset="188"                 />
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+  <AppendedData encoding="base64">
+   _EAAAAAAAAAADAAAAAAAAAAAAAAAAAAAACAAAAAAAAAD//////////w==MAAAAAAAAAAAAAAAAAAAAHsUrkfheoQ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=EAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACAAAAAAAAAACAAAAAAAAAA==AQAAAAAAAAAD
+  </AppendedData>
+</VTKFile>
diff --git a/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/geometry_right.vtu b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/geometry_right.vtu
new file mode 100644
index 00000000000..509dd9aeee3
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/geometry_right.vtu
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="2"                    NumberOfCells="1"                   >
+      <PointData>
+        <DataArray type="UInt64" Name="bulk_node_ids" format="appended" RangeMin="1"                    RangeMax="2"                    offset="0"                   />
+      </PointData>
+      <CellData>
+        <DataArray type="UInt64" Name="bulk_element_ids" format="appended" RangeMin="13"                   RangeMax="13"                   offset="32"                  />
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0.8"                  RangeMax="0.80006249756"        offset="56"                  />
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="appended" RangeMin=""                     RangeMax=""                     offset="132"                 />
+        <DataArray type="Int64" Name="offsets" format="appended" RangeMin=""                     RangeMax=""                     offset="164"                 />
+        <DataArray type="UInt8" Name="types" format="appended" RangeMin=""                     RangeMax=""                     offset="188"                 />
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+  <AppendedData encoding="base64">
+   _EAAAAAAAAAACAAAAAAAAAAEAAAAAAAAACAAAAAAAAAANAAAAAAAAAA==MAAAAAAAAACamZmZmZnpP3sUrkfheoQ/AAAAAAAAAACamZmZmZnpPwAAAAAAAAAAAAAAAAAAAAA=EAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACAAAAAAAAAACAAAAAAAAAA==AQAAAAAAAAAD
+  </AppendedData>
+</VTKFile>
diff --git a/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/mesh_2D.vtu b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/mesh_2D.vtu
new file mode 100644
index 00000000000..f5236c18837
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/ClassicalTransportExample/mesh_2D.vtu
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="30"                   NumberOfCells="14"                  >
+      <PointData>
+      </PointData>
+      <CellData>
+        <DataArray type="Int32" Name="MaterialIDs" format="appended" RangeMin="0"                    RangeMax="0"                    offset="0"                   />
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0"                    RangeMax="0.80006249756"        offset="88"                  />
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="appended" RangeMin=""                     RangeMax=""                     offset="1060"                />
+        <DataArray type="Int64" Name="offsets" format="appended" RangeMin=""                     RangeMax=""                     offset="1668"                />
+        <DataArray type="UInt8" Name="types" format="appended" RangeMin=""                     RangeMax=""                     offset="1828"                />
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+  <AppendedData encoding="base64">
+   _OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==0AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamZmZmZnpPwAAAAAAAAAAAAAAAAAAAACamZmZmZnpP3sUrkfheoQ/AAAAAAAAAAAAAAAAAAAAAHsUrkfheoQ/AAAAAAAAAABBl0Ed1EGtPwAAAAAAAAAAAAAAAAAAAAAJmUEd1EG9PwAAAAAAAAAAAAAAAAAAAADxKPEVX/HFPwAAAAAAAAAAAAAAAAAAAADlhkEd1EHNPwAAAAAAAAAAAAAAAAAAAABr8kiSJEnSPwAAAAAAAAAAAAAAAAAAAADdH/EVX/HVPwAAAAAAAAAAAAAAAAAAAACaT5mZmZnZPwAAAAAAAAAAAAAAAAAAAAA/lEEd1EHdPwAAAAAAAAAAAAAAAAAAAADw7HRQB3XgPwAAAAAAAAAAAAAAAAAAAABSD0mSJEniPwAAAAAAAAAAAAAAAAAAAACyMR3UQR3kPwAAAAAAAAAAAAAAAAAAAAATVPEVX/HlPwAAAAAAAAAAAAAAAAAAAACQdsVXfMXnPwAAAAAAAAAAAAAAAAAAAADogcVXfMXnP3sUrkfheoQ/AAAAAAAAAAA2avEVX/HlP3sUrkfheoQ/AAAAAAAAAACEUh3UQR3kP3sUrkfheoQ/AAAAAAAAAADTOkmSJEniP3sUrkfheoQ/AAAAAAAAAAAhI3VQB3XgP3sUrkfheoQ/AAAAAAAAAADdFkId1EHdP3sUrkfheoQ/AAAAAAAAAAC25pmZmZnZP3sUrkfheoQ/AAAAAAAAAACeofEVX/HVP3sUrkfheoQ/AAAAAAAAAACLW0mSJEnSP3sUrkfheoQ/AAAAAAAAAACsLEId1EHNP3sUrkfheoQ/AAAAAAAAAABFovEVX/HFP3sUrkfheoQ/AAAAAAAAAACvL0Id1EG9P3sUrkfheoQ/AAAAAAAAAAAQNEId1EGtP3sUrkfheoQ/AAAAAAAAAAA=wAEAAAAAAAAAAAAAAAAAAAQAAAAAAAAAHQAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAcAAAAAAAAAB0AAAAAAAAABQAAAAAAAAAGAAAAAAAAABsAAAAAAAAAHAAAAAAAAAAGAAAAAAAAAAcAAAAAAAAAGgAAAAAAAAAbAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAZAAAAAAAAABoAAAAAAAAACAAAAAAAAAAJAAAAAAAAABgAAAAAAAAAGQAAAAAAAAAJAAAAAAAAAAoAAAAAAAAAFwAAAAAAAAAYAAAAAAAAAAoAAAAAAAAACwAAAAAAAAAWAAAAAAAAABcAAAAAAAAACwAAAAAAAAAMAAAAAAAAABUAAAAAAAAAFgAAAAAAAAAMAAAAAAAAAA0AAAAAAAAAFAAAAAAAAAAVAAAAAAAAAA0AAAAAAAAADgAAAAAAAAATAAAAAAAAABQAAAAAAAAADgAAAAAAAAAPAAAAAAAAABIAAAAAAAAAEwAAAAAAAAAPAAAAAAAAABAAAAAAAAAAEQAAAAAAAAASAAAAAAAAABAAAAAAAAAAAQAAAAAAAAACAAAAAAAAABEAAAAAAAAAcAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAoAAAAAAAAACwAAAAAAAAAMAAAAAAAAAA0AAAAAAAAADgAAAAAAAAADgAAAAAAAAAJCQkJCQkJCQkJCQkJCQ==
+  </AppendedData>
+</VTKFile>
-- 
GitLab