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

[Cleanup] multigridStep: Only retrieve multigrid step once

parent 461c9f40
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,7 @@ FixedPointIterator<Factory, StateUpdater, VelocityUpdater, ErrorNorm>::
FixedPointIterator(Factory &factory, Dune::ParameterTree const &parset,
std::shared_ptr<Nonlinearity> globalFriction,
ErrorNorm const &errorNorm)
: factory_(factory),
: step_(factory.getStep()),
parset_(parset),
globalFriction_(globalFriction),
fixedPointMaxIterations_(parset.get<size_t>("v.fpi.maximumIterations")),
......@@ -38,12 +38,10 @@ FixedPointIterator<Factory, StateUpdater, VelocityUpdater, ErrorNorm>::run(
std::shared_ptr<VelocityUpdater> velocityUpdater,
Matrix const &velocityMatrix, Vector const &velocityRHS,
Vector &velocityIterate) {
auto multigridStep = factory_.getStep();
EnergyNorm<Matrix, Vector> energyNorm(velocityMatrix);
LoopSolver<Vector> velocityProblemSolver(
multigridStep.get(), velocityMaxIterations_, velocityTolerance_,
&energyNorm, verbosity_, false); // absolute error
LoopSolver<Vector> velocityProblemSolver(step_.get(), velocityMaxIterations_,
velocityTolerance_, &energyNorm,
verbosity_, false); // absolute error
size_t fixedPointIteration;
size_t multigridIterations = 0;
......@@ -56,7 +54,7 @@ FixedPointIterator<Factory, StateUpdater, VelocityUpdater, ErrorNorm>::run(
ConvexProblem convexProblem(1.0, velocityMatrix, *globalFriction_,
velocityRHS, velocityIterate);
BlockProblem velocityProblem(parset_, convexProblem);
multigridStep->setProblem(velocityIterate, velocityProblem);
step_->setProblem(velocityIterate, velocityProblem);
velocityProblemSolver.preprocess();
velocityProblemSolver.solve();
......
......@@ -38,7 +38,7 @@ class FixedPointIterator {
Vector &velocityIterate);
private:
Factory &factory_;
std::shared_ptr<typename Factory::Step> step_;
Dune::ParameterTree const &parset_;
std::shared_ptr<Nonlinearity> globalFriction_;
......
......@@ -26,10 +26,11 @@ class SolverFactory {
private:
using NonlinearSmoother = GenericNonlinearGS<BlockProblem>;
public:
using Step =
TruncatedNonsmoothNewtonMultigrid<BlockProblem, NonlinearSmoother>;
public:
SolverFactory(Dune::ParameterTree const &parset, size_t refinements,
Grid const &grid, Dune::BitSetVector<dim> const &ignoreNodes);
......
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