From 2ee9ad5cff8bb4f69a06ce7865f7a1c9fb8cff04 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <dmitri.naumov@ufz.de>
Date: Tue, 13 Aug 2019 15:33:23 +0200
Subject: [PATCH] [PL] Add initialize to local assemblers.

Some of the local assembler initialization cannot
be done in its constructor but after initial conditions
have been set. This function allows such initialization
procedures.
---
 ProcessLib/LocalAssemblerInterface.cpp | 7 +++++++
 ProcessLib/LocalAssemblerInterface.h   | 5 +++++
 2 files changed, 12 insertions(+)

diff --git a/ProcessLib/LocalAssemblerInterface.cpp b/ProcessLib/LocalAssemblerInterface.cpp
index adc706ab213..63836d0bb49 100644
--- a/ProcessLib/LocalAssemblerInterface.cpp
+++ b/ProcessLib/LocalAssemblerInterface.cpp
@@ -91,6 +91,13 @@ void LocalAssemblerInterface::setInitialConditions(
     setInitialConditionsConcrete(local_x, t);
 }
 
+void LocalAssemblerInterface::initialize(
+    std::size_t const /*mesh_item_id*/,
+    NumLib::LocalToGlobalIndexMap const& /*dof_table*/)
+{
+    initializeConcrete();
+}
+
 void LocalAssemblerInterface::preTimestep(
     std::size_t const mesh_item_id,
     NumLib::LocalToGlobalIndexMap const& dof_table, GlobalVector const& x,
diff --git a/ProcessLib/LocalAssemblerInterface.h b/ProcessLib/LocalAssemblerInterface.h
index 28352e86d44..ecd1878c598 100644
--- a/ProcessLib/LocalAssemblerInterface.h
+++ b/ProcessLib/LocalAssemblerInterface.h
@@ -39,6 +39,9 @@ public:
         NumLib::LocalToGlobalIndexMap const& dof_table, GlobalVector const& x,
         double const t);
 
+    virtual void initialize(std::size_t const mesh_item_id,
+                            NumLib::LocalToGlobalIndexMap const& dof_table);
+
     virtual void preAssemble(double const /*t*/,
                              std::vector<double> const& /*local_x*/){};
 
@@ -116,6 +119,8 @@ private:
     {
     }
 
+    virtual void initializeConcrete() {}
+
     virtual void preTimestepConcrete(std::vector<double> const& /*local_x*/,
                                      double const /*t*/, double const /*dt*/)
     {
-- 
GitLab