Newer
Older
#ifndef SRC_SPATIAL_SOLVING_SOLVERFACTORY_HH
#define SRC_SPATIAL_SOLVING_SOLVERFACTORY_HH
#include <dune/common/bitsetvector.hh>
#include <dune/common/parametertree.hh>
#include <dune/solvers/iterationsteps/multigridstep.hh>
#include <dune/solvers/iterationsteps/projectedblockgsstep.hh>
#include <dune/solvers/norms/energynorm.hh>
#include <dune/solvers/solvers/loopsolver.hh>
//#include <dune/solvers/transferoperators/compressedmultigridtransfer.hh>
//#include <dune/tnnmg/iterationsteps/genericnonlineargs.hh>
#include <dune/contact/solvers/nsnewtonmgstep.hh>
#include <dune/contact/solvers/contacttransfer.hh>
#include <dune/contact/solvers/contactobsrestrict.hh>
#include <dune/contact/solvers/contacttransferoperatorassembler.hh>
#include <dune/contact/solvers/nsnewtoncontacttransfer.hh>
template <class DeformedGridTEMPLATE, class MatrixType, class VectorType>
using Vector = VectorType;
using Matrix = MatrixType;
using Step = Dune::Contact::NonSmoothNewtonMGStep<Matrix, Vector>;
SolverFactory(Dune::ParameterTree const &parset, const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler,
const std::vector<Dune::BitSetVector<DeformedGrid::dimension>>& ignoreNodes);
const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler_;
ProjectedBlockGSStep<Matrix, Vector> baseSolverStep_;
EnergyNorm<Matrix, Vector> baseEnergyNorm_;
LoopSolver<Vector> baseSolver_;
ProjectedBlockGSStep<Matrix, Vector> presmoother_;
ProjectedBlockGSStep<Matrix, Vector> postsmoother_;
std::shared_ptr<Step> multigridStep_;
std::vector<Dune::Contact::ContactMGTransfer<Vector>* > transferOperators_;