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

[Cleanup] Sort out bisection instances in MyBlockProblem

parent 392273c7
No related branches found
No related tags found
No related merge requests found
...@@ -58,9 +58,8 @@ template <class ConvexProblem> class MyBlockProblem { ...@@ -58,9 +58,8 @@ template <class ConvexProblem> class MyBlockProblem {
MyBlockProblem(Dune::ParameterTree const &parset, MyBlockProblem(Dune::ParameterTree const &parset,
ConvexProblem const &problem) ConvexProblem const &problem)
: parset(parset), problem(problem) { : parset(parset), problem(problem), localBisection() // NOTE: defaults
bisection = Bisection(); {}
}
std::string getOutput(bool header = false) const { std::string getOutput(bool header = false) const {
if (header) { if (header) {
...@@ -106,8 +105,8 @@ template <class ConvexProblem> class MyBlockProblem { ...@@ -106,8 +105,8 @@ template <class ConvexProblem> class MyBlockProblem {
return 0; return 0;
int bisectionsteps = 0; int bisectionsteps = 0;
Bisection bisection; Bisection const globalBisection; // NOTE: defaults
return bisection.minimize(psi, vnorm, 0.0, bisectionsteps) / vnorm; // TODO return globalBisection.minimize(psi, vnorm, 0.0, bisectionsteps) / vnorm;
} }
void assembleTruncate(VectorType const &u, Linearization &linearization, void assembleTruncate(VectorType const &u, Linearization &linearization,
...@@ -186,7 +185,7 @@ template <class ConvexProblem> class MyBlockProblem { ...@@ -186,7 +185,7 @@ template <class ConvexProblem> class MyBlockProblem {
/** \brief Constructs and returns an iterate object */ /** \brief Constructs and returns an iterate object */
IterateObject getIterateObject() { IterateObject getIterateObject() {
return IterateObject(parset, bisection, problem); return IterateObject(parset, localBisection, problem);
} }
private: private:
...@@ -195,8 +194,7 @@ template <class ConvexProblem> class MyBlockProblem { ...@@ -195,8 +194,7 @@ template <class ConvexProblem> class MyBlockProblem {
// problem data // problem data
ConvexProblem const &problem; ConvexProblem const &problem;
// commonly used minimization stuff Bisection const localBisection;
Bisection bisection;
mutable std::ostringstream outStream; mutable std::ostringstream outStream;
}; };
...@@ -214,7 +212,7 @@ class MyBlockProblem<ConvexProblem>::IterateObject { ...@@ -214,7 +212,7 @@ class MyBlockProblem<ConvexProblem>::IterateObject {
IterateObject(Dune::ParameterTree const &parset, Bisection const &bisection, IterateObject(Dune::ParameterTree const &parset, Bisection const &bisection,
ConvexProblem const &problem) ConvexProblem const &problem)
: problem(problem), : problem(problem),
bisection(bisection), bisection_(bisection),
localsteps(parset.get<size_t>("localsolver.steps")) {} localsteps(parset.get<size_t>("localsolver.steps")) {}
public: public:
...@@ -254,7 +252,7 @@ class MyBlockProblem<ConvexProblem>::IterateObject { ...@@ -254,7 +252,7 @@ class MyBlockProblem<ConvexProblem>::IterateObject {
auto const phi = problem.phi.restriction(m); auto const phi = problem.phi.restriction(m);
EllipticEnergy<block_size> localJ(*localA, localb, phi, ignore); EllipticEnergy<block_size> localJ(*localA, localb, phi, ignore);
minimise(localJ, ui, localsteps, bisection); minimise(localJ, ui, localsteps, bisection_);
} }
} }
...@@ -262,8 +260,7 @@ class MyBlockProblem<ConvexProblem>::IterateObject { ...@@ -262,8 +260,7 @@ class MyBlockProblem<ConvexProblem>::IterateObject {
// problem data // problem data
ConvexProblem const &problem; ConvexProblem const &problem;
// commonly used minimization stuff Bisection const bisection_;
Bisection bisection;
// state data for smoothing procedure used by: // state data for smoothing procedure used by:
// setIterate, updateIterate, solveLocalProblem // setIterate, updateIterate, solveLocalProblem
......
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