From b8b0b82301ca11fa030eff751a0c9079c60d8fad Mon Sep 17 00:00:00 2001
From: Jan Thiedau <Jan.Thiedau@bgr.de>
Date: Wed, 18 Jan 2023 10:55:05 +0100
Subject: [PATCH] [PL/CT] Residual outputs for Picard solver version

---
 .../ComponentTransportProcess.cpp             | 43 +++++++++----------
 .../1D_AdvectionDiffusionSorptionDecay.prj    |  2 +-
 ...DiffusionSorptionDecay_ts_0_t_0.000000.vtu |  2 +-
 ...nDecay_ts_1000_t_31536000000000.000000.vtu |  2 +-
 ...ionDecay_ts_100_t_3153600000000.000000.vtu |  2 +-
 ...ptionDecay_ts_10_t_315360000000.000000.vtu |  2 +-
 ...orptionDecay_ts_1_t_31536000000.000000.vtu |  2 +-
 .../1D_DiffusionSorptionDecay.prj             |  2 +-
 ...DiffusionSorptionDecay_ts_0_t_0.000000.vtu |  2 +-
 ...nDecay_ts_1000_t_31536000000000.000000.vtu |  2 +-
 ...ionDecay_ts_100_t_3153600000000.000000.vtu |  2 +-
 ...ptionDecay_ts_10_t_315360000000.000000.vtu |  2 +-
 ...orptionDecay_ts_1_t_31536000000.000000.vtu |  2 +-
 13 files changed, 32 insertions(+), 35 deletions(-)

diff --git a/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp b/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp
index 95af9b5969b..fcec0ad9110 100644
--- a/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp
+++ b/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp
@@ -199,36 +199,33 @@ void ComponentTransportProcess::assembleConcreteProcess(
     MathLib::finalizeMatrixAssembly(M);
     MathLib::finalizeMatrixAssembly(K);
     MathLib::finalizeVectorAssembly(b);
-    auto const residuum = computeResiduum(*x[0], *xdot[0], M, K, b);
-    auto copyRhs = [&](int const variable_id, auto& output_vector)
-    {
-        if (_use_monolithic_scheme)
-        {
-            transformVariableFromGlobalVector(residuum, variable_id,
-                                              dof_tables[0], output_vector,
-                                              std::negate<double>());
-        }
-        else
-        {
-            transformVariableFromGlobalVector(
-                residuum, 0, dof_tables[process_id], output_vector,
-                std::negate<double>());
-        }
-    };
+
     if (_use_monolithic_scheme || process_id == 0)
     {
-        copyRhs(0, *_hydraulic_flow);
-    }
-    if (_use_monolithic_scheme)
-    {
-        for (std::size_t c_idx = 0; c_idx < _molar_flow_rate.size(); ++c_idx)
+        auto const residuum = computeResiduum(*x[0], *xdot[0], M, K, b);
+        transformVariableFromGlobalVector(residuum, 0, dof_tables[0],
+                                          *_hydraulic_flow,
+                                          std::negate<double>());
+        if (_use_monolithic_scheme)
         {
-            copyRhs(c_idx + 1, *_molar_flow_rate[c_idx]);
+            for (std::size_t c_idx = 0; c_idx < _molar_flow_rate.size();
+                 ++c_idx)
+            {
+                transformVariableFromGlobalVector(
+                    residuum, c_idx + 1, dof_tables[0],
+                    *_molar_flow_rate[c_idx], std::negate<double>());
+            }
         }
+        return;
     }
+
     if (process_id > 0)
     {
-        copyRhs(process_id, *_molar_flow_rate[process_id - 1]);
+        auto const residuum =
+            computeResiduum(*x[process_id], *xdot[process_id], M, K, b);
+        transformVariableFromGlobalVector(residuum, 0, dof_tables[process_id],
+                                          *_molar_flow_rate[process_id - 1],
+                                          std::negate<double>());
     }
 }
 
diff --git a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay.prj b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay.prj
index 99dfd890fad..04476121362 100644
--- a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay.prj
+++ b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay.prj
@@ -265,7 +265,7 @@
         </vtkdiff>
         <vtkdiff>
             <regex>1D_AdvectionDiffusionSorptionDecay_ts_[0-9]*_t_[0-9]*.000000.vtu</regex>
-            <field>MolarFlowRate</field>
+            <field>CsFlowRate</field>
             <absolute_tolerance>1e-10</absolute_tolerance>
             <relative_tolerance>1e-16</relative_tolerance>
         </vtkdiff>
diff --git a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_0_t_0.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_0_t_0.000000.vtu
index f3ad438758c..da1aa31304b 100644
--- a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_0_t_0.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_0_t_0.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="2001"                 NumberOfCells="2000"                >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="0"                    RangeMax="0"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="180"                 />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="180"                 />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="100000"               offset="276"                 />
       </PointData>
       <CellData>
diff --git a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_1000_t_31536000000000.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_1000_t_31536000000000.000000.vtu
index 2a9d7cf4008..47e8cca6bdb 100644
--- a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_1000_t_31536000000000.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_1000_t_31536000000000.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="2001"                 NumberOfCells="2000"                >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="1.2774319966e-137"    RangeMax="1"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="21356"               />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="21356"               />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="499999.99999"         offset="21452"               />
       </PointData>
       <CellData>
diff --git a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_100_t_3153600000000.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_100_t_3153600000000.000000.vtu
index 226895a230b..eff4fda3ae5 100644
--- a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_100_t_3153600000000.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_100_t_3153600000000.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="2001"                 NumberOfCells="2000"                >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="-8.4963431577e-318"   RangeMax="1"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="17948"               />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="17948"               />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="499999.99999"         offset="18044"               />
       </PointData>
       <CellData>
diff --git a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_10_t_315360000000.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_10_t_315360000000.000000.vtu
index 96b7e138157..cc375c66f5a 100644
--- a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_10_t_315360000000.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_10_t_315360000000.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="2001"                 NumberOfCells="2000"                >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="2.8191385752e-318"    RangeMax="1"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="13680"               />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="13680"               />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="499999.99999"         offset="13776"               />
       </PointData>
       <CellData>
diff --git a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_1_t_31536000000.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_1_t_31536000000.000000.vtu
index 81421ad97fe..2df8dc3b16e 100644
--- a/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_1_t_31536000000.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/AdvectionDiffusionSorptionDecay/1D_AdvectionDiffusionSorptionDecay_ts_1_t_31536000000.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="2001"                 NumberOfCells="2000"                >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="8.6939545941e-318"    RangeMax="1"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="12912"               />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="12912"               />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="499999.99999"         offset="13008"               />
       </PointData>
       <CellData>
diff --git a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay.prj b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay.prj
index cc9e20d4633..482e6778f7c 100644
--- a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay.prj
+++ b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay.prj
@@ -264,7 +264,7 @@
         </vtkdiff>
         <vtkdiff>
             <regex>1D_DiffusionSorptionDecay_ts_[0-9]*_t_[0-9]*.000000.vtu</regex>
-            <field>MolarFlowRate</field>
+            <field>CsFlowRate</field>
             <absolute_tolerance>1e-10</absolute_tolerance>
             <relative_tolerance>1e-16</relative_tolerance>
         </vtkdiff>
diff --git a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_0_t_0.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_0_t_0.000000.vtu
index e894b1f2271..cadf3dcad7c 100644
--- a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_0_t_0.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_0_t_0.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="161"                  NumberOfCells="160"                 >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="0"                    RangeMax="0"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="152"                 />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="0"                    RangeMax="0"                    offset="152"                 />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="100000"               offset="220"                 />
       </PointData>
       <CellData>
diff --git a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_1000_t_31536000000000.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_1000_t_31536000000000.000000.vtu
index e41aa48d4f5..68781b1a84b 100644
--- a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_1000_t_31536000000000.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_1000_t_31536000000000.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="161"                  NumberOfCells="160"                 >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="-1.3032412715e-19"    RangeMax="1"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="-2.1175823681e-22"    RangeMax="1.4152178956e-08"     offset="1860"                />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="-2.1175823681e-22"    RangeMax="1.4152178956e-08"     offset="1860"                />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="100000"               offset="2464"                />
       </PointData>
       <CellData>
diff --git a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_100_t_3153600000000.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_100_t_3153600000000.000000.vtu
index 44a5fa6da6d..118ea21493f 100644
--- a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_100_t_3153600000000.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_100_t_3153600000000.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="161"                  NumberOfCells="160"                 >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="-8.2816973106e-22"    RangeMax="1"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="-2.0514079191e-22"    RangeMax="3.5930953041e-08"     offset="1860"                />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="-2.0514079191e-22"    RangeMax="3.5930953041e-08"     offset="1860"                />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="100000"               offset="2416"                />
       </PointData>
       <CellData>
diff --git a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_10_t_315360000000.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_10_t_315360000000.000000.vtu
index 0003c658848..629ec7a281a 100644
--- a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_10_t_315360000000.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_10_t_315360000000.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="161"                  NumberOfCells="160"                 >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="-2.3888639398e-34"    RangeMax="1"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="-5.2939559203e-23"    RangeMax="1.144954842e-07"      offset="1860"                />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="-5.2939559203e-23"    RangeMax="1.144954842e-07"      offset="1860"                />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="100000"               offset="2408"                />
       </PointData>
       <CellData>
diff --git a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_1_t_31536000000.000000.vtu b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_1_t_31536000000.000000.vtu
index 403a82973d5..1adbf9a07ca 100644
--- a/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_1_t_31536000000.000000.vtu
+++ b/Tests/Data/Parabolic/ComponentTransport/DiffusionSorptionDecay/1D_DiffusionSorptionDecay_ts_1_t_31536000000.000000.vtu
@@ -7,7 +7,7 @@
     <Piece NumberOfPoints="161"                  NumberOfCells="160"                 >
       <PointData>
         <DataArray type="Float64" Name="Cs" format="appended" RangeMin="-1.3308255536e-45"    RangeMax="1"                    offset="84"                  />
-        <DataArray type="Float64" Name="MolarFlowRate" format="appended" RangeMin="-2.6469779602e-23"    RangeMax="6.2627750966e-07"     offset="1860"                />
+        <DataArray type="Float64" Name="CsFlowRate" format="appended" RangeMin="-2.6469779602e-23"    RangeMax="6.2627750966e-07"     offset="1860"                />
         <DataArray type="Float64" Name="pressure" format="appended" RangeMin="100000"               RangeMax="100000"               offset="2452"                />
       </PointData>
       <CellData>
-- 
GitLab