diff --git a/src/spatial-solving/fixedpointiterator.cc b/src/spatial-solving/fixedpointiterator.cc index 25d36782bffdb3796955cfbe81d1cecb221ca417..4e9309e22e6608caeb7135d30fb9c35455ea3441 100644 --- a/src/spatial-solving/fixedpointiterator.cc +++ b/src/spatial-solving/fixedpointiterator.cc @@ -30,6 +30,7 @@ #include "../utils/tobool.hh" #include "../utils/debugutils.hh" +#include "solverfactory.hh" void FixedPointIterationCounter::operator+=( FixedPointIterationCounter const &other) { @@ -123,8 +124,11 @@ FixedPointIterator<Factory, NBodyAssembler, Updaters, ErrorNorm>::run( std::cout << "- Problem assembled: success" << std::endl; // set up functional and TNMMG solver - Functional J(bilinearForm, totalRhs, globalFriction_, vLower, vUpper); - Factory solverFactory(parset_.sub("solver.tnnmg"), J, ignoreNodes_); + using ZeroFactory = SolverFactory<Functional, IgnoreVector>; + Functional J(bilinearForm, totalRhs, ZeroNonlinearity(), vLower, vUpper); + ZeroFactory solverFactory(parset_.sub("solver.tnnmg"), J, ignoreNodes_); + /*Functional J(bilinearForm, totalRhs, globalFriction_, vLower, vUpper); + Factory solverFactory(parset_.sub("solver.tnnmg"), J, ignoreNodes_);*/ auto step = solverFactory.step(); std::cout << "- Functional and TNNMG step setup: success" << std::endl; diff --git a/src/spatial-solving/fixedpointiterator.hh b/src/spatial-solving/fixedpointiterator.hh index fa93c0870555ca106090401e3c6f1ec582d999bc..9aa6119642451406c2537f569e7091f55e4c8cf3 100644 --- a/src/spatial-solving/fixedpointiterator.hh +++ b/src/spatial-solving/fixedpointiterator.hh @@ -13,6 +13,8 @@ #include <dune/contact/assemblers/nbodyassembler.hh> +#include "tnnmg/zerononlinearity.hh" +#include "tnnmg/functional.hh" struct FixedPointIterationCounter { size_t iterations = 0; size_t multigridIterations = 0; @@ -25,10 +27,11 @@ std::ostream &operator<<(std::ostream &stream, template <class Factory, class NBodyAssembler, class Updaters, class ErrorNorm> class FixedPointIterator { - using Functional = typename Factory::Functional; using ScalarVector = typename Updaters::StateUpdater::ScalarVector; using Vector = typename Factory::Vector; using Matrix = typename Factory::Matrix; + + using Functional = Functional<Matrix&, Vector&, ZeroNonlinearity&, Vector&, Vector&, typename Matrix::field_type>; //typename Factory::Functional; using Nonlinearity = typename Factory::Functional::Nonlinearity; const static int dims = Vector::block_type::dimension;