From 25116f9112c38aeee80c520ea22593155ca9e676 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Thu, 24 Jan 2013 23:34:30 +0100
Subject: [PATCH] Use a different energy norm

Take the stiffnessmatrix returned by the time stepping scheme; in
particular, this includes a mass term.
---
 src/one-body-sample.cc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index c1d1c872..72f47a00 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -282,7 +282,6 @@ int main(int argc, char *argv[]) {
       OperatorAssembler<P1Basis, P1Basis>(p1Basis, p1Basis)
           .assemble(localStiffness, stiffnessMatrix);
     };
-    EnergyNorm<MatrixType, VectorType> energyNorm(stiffnessMatrix);
 
     auto const nodalIntegrals =
         assemble_frictional<GridType, GridView, SmallVector, P1Basis>(
@@ -311,9 +310,6 @@ int main(int argc, char *argv[]) {
     auto multigridStep = mySolver.getSolver();
     Solver::VerbosityMode const verbosity =
         parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET;
-    LoopSolver<VectorType> overallSolver(
-        multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"),
-        solver_tolerance, &energyNorm, verbosity, false); // absolute error
 
     std::fstream coordinate_writer("coordinates", std::fstream::out);
     for (size_t i = 0; i < frictionalNodes.size(); ++i)
@@ -368,6 +364,10 @@ int main(int argc, char *argv[]) {
       stateUpdater->setup(tau);
       timeSteppingScheme->setup(ell, tau, time, problem_rhs, problem_iterate,
                                 problem_A);
+      EnergyNorm<MatrixType, VectorType> energyNorm(problem_A);
+      LoopSolver<VectorType> overallSolver(
+          multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"),
+          solver_tolerance, &energyNorm, verbosity, false); // absolute error
 
       size_t iterationCounter;
       auto solveDisplacementProblem = [&](VectorType &_problem_iterate,
-- 
GitLab