From 0620590520cacf46530960a07c790c1502fc6bbc Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Tue, 1 Dec 2020 15:24:44 +0100
Subject: [PATCH] Assemble the mass matrix

---
 src/relaxed-micromorphic-continuum.cc | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/relaxed-micromorphic-continuum.cc b/src/relaxed-micromorphic-continuum.cc
index 3fedf2b..c4d10c6 100644
--- a/src/relaxed-micromorphic-continuum.cc
+++ b/src/relaxed-micromorphic-continuum.cc
@@ -23,9 +23,8 @@
 
 #include <dune/fufem/dunepython.hh>
 #include <dune/fufem/assemblers/basisinterpolationmatrixassembler.hh>
-#include <dune/fufem/assemblers/boundaryfunctionalassembler.hh>
-#include <dune/fufem/assemblers/operatorassembler.hh>
-#include <dune/fufem/assemblers/localassemblers/stvenantkirchhoffassembler.hh>
+#include <dune/fufem/assemblers/localassemblers/dunefunctionsmassassembler.hh>
+#include <dune/fufem/assemblers/dunefunctionsoperatorassembler.hh>
 #include <dune/fufem/functiontools/boundarydofs.hh>
 
 #include <dune/solvers/iterationsteps/blockgssteps.hh>
@@ -480,7 +479,7 @@ int main (int argc, char *argv[]) try
   // parse data file
   ParameterTree parameterSet;
   if (argc < 2)
-    DUNE_THROW(Exception, "Usage: ./rt-dg-linear-elasticity <parameter file>");
+    DUNE_THROW(Exception, "Usage: ./relaxed-micromorphic-continuum <parameter file>");
 
   ParameterTreeParser::readINITree(argv[1], parameterSet);
 
@@ -545,7 +544,7 @@ int main (int argc, char *argv[]) try
             power<dim>(
               nedelec<1,1>(),   // First order, first kind
               flatInterleaved())
-          , flatInterleaved()));
+          , flatLexicographic()));
 
   using namespace Indices;
   auto displacementBasis = Functions::subspaceBasis(basis, _0);
@@ -651,6 +650,16 @@ int main (int argc, char *argv[]) try
         entry = (i==j) ? 1.0 : 0.0;
 #endif
 
+  /////////////////////////////////
+  // Assemble the mass matrix
+  /////////////////////////////////
+
+  Fufem::DuneFunctionsLocalMassAssembler localMassAssembler;
+  auto massAssembler = Fufem::duneFunctionsOperatorAssembler(basis, basis);
+
+  Matrix massMatrix;
+  massAssembler.assembleBulk(Fufem::istlMatrixBackend(massMatrix), localMassAssembler);
+
   /////////////////////////////
   //   Create a solver
   /////////////////////////////
-- 
GitLab