Skip to content
Snippets Groups Projects
Commit 25116f91 authored by Elias Pipping's avatar Elias Pipping Committed by Elias Pipping
Browse files

Use a different energy norm

Take the stiffnessmatrix returned by the time stepping scheme; in
particular, this includes a mass term.
parent 3d42113b
No related branches found
No related tags found
No related merge requests found
...@@ -282,7 +282,6 @@ int main(int argc, char *argv[]) { ...@@ -282,7 +282,6 @@ int main(int argc, char *argv[]) {
OperatorAssembler<P1Basis, P1Basis>(p1Basis, p1Basis) OperatorAssembler<P1Basis, P1Basis>(p1Basis, p1Basis)
.assemble(localStiffness, stiffnessMatrix); .assemble(localStiffness, stiffnessMatrix);
}; };
EnergyNorm<MatrixType, VectorType> energyNorm(stiffnessMatrix);
auto const nodalIntegrals = auto const nodalIntegrals =
assemble_frictional<GridType, GridView, SmallVector, P1Basis>( assemble_frictional<GridType, GridView, SmallVector, P1Basis>(
...@@ -311,9 +310,6 @@ int main(int argc, char *argv[]) { ...@@ -311,9 +310,6 @@ int main(int argc, char *argv[]) {
auto multigridStep = mySolver.getSolver(); auto multigridStep = mySolver.getSolver();
Solver::VerbosityMode const verbosity = Solver::VerbosityMode const verbosity =
parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET; 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); std::fstream coordinate_writer("coordinates", std::fstream::out);
for (size_t i = 0; i < frictionalNodes.size(); ++i) for (size_t i = 0; i < frictionalNodes.size(); ++i)
...@@ -368,6 +364,10 @@ int main(int argc, char *argv[]) { ...@@ -368,6 +364,10 @@ int main(int argc, char *argv[]) {
stateUpdater->setup(tau); stateUpdater->setup(tau);
timeSteppingScheme->setup(ell, tau, time, problem_rhs, problem_iterate, timeSteppingScheme->setup(ell, tau, time, problem_rhs, problem_iterate,
problem_A); 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; size_t iterationCounter;
auto solveDisplacementProblem = [&](VectorType &_problem_iterate, auto solveDisplacementProblem = [&](VectorType &_problem_iterate,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment