Skip to content
Snippets Groups Projects
Select Git revision
  • a8bb15e19b13f37eab8c2f074b0ccb1bb6f19f55
  • 2016-PippingKornhuberRosenauOncken default
  • 2014-Dissertation-Pipping
  • 2013-PippingSanderKornhuber
4 results

solverfactory.hh

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    solverfactory.hh 1.74 KiB
    #ifndef SOLVER_FACTORY_HH
    #define SOLVER_FACTORY_HH
    
    #include <dune/common/bitsetvector.hh>
    #include <dune/common/parametertree.hh>
    
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wsign-compare"
    #include <dune/solvers/iterationsteps/multigridstep.hh>
    #pragma clang diagnostic pop
    
    #include <dune/solvers/iterationsteps/truncatedblockgsstep.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/tnnmg/iterationsteps/tnnmgstep.hh>
    
    template <size_t dim, class BlockProblemTEMPLATE, class Grid>
    class SolverFactory {
    public:
      using BlockProblem = BlockProblemTEMPLATE;
      using ConvexProblem = typename BlockProblem::ConvexProblemType;
      using Vector = typename BlockProblem::VectorType;
      using Matrix = typename BlockProblem::MatrixType;
    
    private:
      using NonlinearSmoother = GenericNonlinearGS<BlockProblem>;
      using Solver =
          TruncatedNonsmoothNewtonMultigrid<BlockProblem, NonlinearSmoother>;
    
    public:
      SolverFactory(Dune::ParameterTree const &parset, size_t refinements,
                    Grid const &grid, Dune::BitSetVector<dim> const &ignoreNodes);
    
      ~SolverFactory();
    
      Solver *getSolver();
    
    private:
      TruncatedBlockGSStep<Matrix, Vector> linearBaseSolverStep;
      EnergyNorm<Matrix, Vector> baseEnergyNorm;
      LoopSolver<Vector> linearBaseSolver;
      TruncatedBlockGSStep<Matrix, Vector> linearPresmoother;
      TruncatedBlockGSStep<Matrix, Vector> linearPostsmoother;
      MultigridStep<Matrix, Vector> linearIterationStep;
      std::vector<CompressedMultigridTransfer<Vector> *> transferOperators;
      NonlinearSmoother nonlinearSmoother;
      Solver *multigridStep;
    };
    
    #endif