From 53c6a3d2592f579467b476703a3bb1225cbd18f2 Mon Sep 17 00:00:00 2001
From: Wenqing Wang <wenqing.wang@ufz.de>
Date: Thu, 7 Dec 2017 17:15:17 +0100
Subject: [PATCH] [Assm] Overloaded assembleWithJacobianAndCoupling in
 AnalyticalJacobianAssembler

---
 ProcessLib/AnalyticalJacobianAssembler.cpp | 18 ++++++++++++++++--
 ProcessLib/AnalyticalJacobianAssembler.h   | 11 +++++++++++
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/ProcessLib/AnalyticalJacobianAssembler.cpp b/ProcessLib/AnalyticalJacobianAssembler.cpp
index 837f867a657..87160943710 100644
--- a/ProcessLib/AnalyticalJacobianAssembler.cpp
+++ b/ProcessLib/AnalyticalJacobianAssembler.cpp
@@ -8,6 +8,7 @@
  */
 
 #include "AnalyticalJacobianAssembler.h"
+#include "CoupledSolutionsForStaggeredScheme.h"
 #include "LocalAssemblerInterface.h"
 
 namespace ProcessLib
@@ -17,11 +18,24 @@ void AnalyticalJacobianAssembler::assembleWithJacobian(
     std::vector<double> const& local_x, std::vector<double> const& local_xdot,
     const double dxdot_dx, const double dx_dx,
     std::vector<double>& local_M_data, std::vector<double>& local_K_data,
-    std::vector<double>& local_b_data,
-    std::vector<double>& local_Jac_data)
+    std::vector<double>& local_b_data, std::vector<double>& local_Jac_data)
 {
     local_assembler.assembleWithJacobian(t, local_x, local_xdot, dxdot_dx,
                                          dx_dx, local_M_data, local_K_data,
                                          local_b_data, local_Jac_data);
 }
+
+void AnalyticalJacobianAssembler::assembleWithJacobianAndCoupling(
+    LocalAssemblerInterface& local_assembler, double const t,
+    std::vector<double> const& local_xdot, const double dxdot_dx,
+    const double dx_dx, std::vector<double>& local_M_data,
+    std::vector<double>& local_K_data, std::vector<double>& local_b_data,
+    std::vector<double>& local_Jac_data,
+    LocalCoupledSolutions const& local_coupled_solutions)
+{
+    local_assembler.assembleWithJacobianAndCoupling(
+        t, local_xdot, dxdot_dx, dx_dx, local_M_data, local_K_data,
+        local_b_data, local_Jac_data, local_coupled_solutions);
+}
+
 }  // ProcessLib
diff --git a/ProcessLib/AnalyticalJacobianAssembler.h b/ProcessLib/AnalyticalJacobianAssembler.h
index 19da3228c0b..45c6d01f7e1 100644
--- a/ProcessLib/AnalyticalJacobianAssembler.h
+++ b/ProcessLib/AnalyticalJacobianAssembler.h
@@ -18,6 +18,9 @@ class ConfigTree;
 
 namespace ProcessLib
 {
+
+struct LocalCoupledSolutions;
+
 //! Assembles the Jacobian matrix using a provided "analytical" method from the
 //! local assembler.
 class AnalyticalJacobianAssembler final : public AbstractJacobianAssembler
@@ -34,6 +37,14 @@ public:
         const double dx_dx, std::vector<double>& local_M_data,
         std::vector<double>& local_K_data, std::vector<double>& local_b_data,
         std::vector<double>& local_Jac_data) override;
+
+    void assembleWithJacobianAndCoupling(
+        LocalAssemblerInterface& local_assembler,
+        double const t, std::vector<double> const& local_xdot,
+        const double dxdot_dx, const double dx_dx,
+        std::vector<double>& local_M_data, std::vector<double>& local_K_data,
+        std::vector<double>& local_b_data, std::vector<double>& local_Jac_data,
+        LocalCoupledSolutions const& local_coupled_solutions) override;
 };
 
 }  // ProcessLib
-- 
GitLab