diff --git a/src/mysolver.cc b/src/mysolver.cc index 6326347670a27b7ab4e35d1b8f6c590b842e7281..9b9a7b62957e02a856ce325b9f96b3f3fa8fbab6 100644 --- a/src/mysolver.cc +++ b/src/mysolver.cc @@ -10,9 +10,8 @@ #include "mysolver.hh" -template <int dim, class MatrixType, class VectorType, class GridType, - class BlockProblemType> -MySolver<dim, MatrixType, VectorType, GridType, BlockProblemType>::MySolver( +template <int dim, class MatrixType, class VectorType, class GridType> +MySolver<dim, MatrixType, VectorType, GridType>::MySolver( Dune::ParameterTree const &parset, int refinements, double solver_tolerance, GridType const &grid, Dune::BitSetVector<dim> const &ignoreNodes) : baseEnergyNorm(linearBaseSolverStep), @@ -42,20 +41,17 @@ MySolver<dim, MatrixType, VectorType, GridType, BlockProblemType>::MySolver( multigridStep->ignoreNodes_ = &ignoreNodes; } -template <int dim, class MatrixType, class VectorType, class GridType, - class BlockProblemType> -MySolver<dim, MatrixType, VectorType, GridType, BlockProblemType>::~MySolver() { +template <int dim, class MatrixType, class VectorType, class GridType> +MySolver<dim, MatrixType, VectorType, GridType>::~MySolver() { for (auto &x : transferOperators) delete x; delete multigridStep; } -template <int dim, class MatrixType, class VectorType, class GridType, - class BlockProblemType> -typename MySolver<dim, MatrixType, VectorType, GridType, - BlockProblemType>::SolverType * -MySolver<dim, MatrixType, VectorType, GridType, BlockProblemType>::getSolver() { +template <int dim, class MatrixType, class VectorType, class GridType> +typename MySolver<dim, MatrixType, VectorType, GridType>::SolverType * +MySolver<dim, MatrixType, VectorType, GridType>::getSolver() { return multigridStep; } diff --git a/src/mysolver.hh b/src/mysolver.hh index a87ed9153338918fffb3bcafdd1c878c8e9b6a9b..9fb71093021910f179d3f59cf988562e51fb6249 100644 --- a/src/mysolver.hh +++ b/src/mysolver.hh @@ -13,10 +13,14 @@ #include <dune/fufem/assemblers/transferoperatorassembler.hh> #include <dune/tnnmg/iterationsteps/tnnmgstep.hh> -template <int dim, class MatrixType, class VectorType, class GridType, - class BlockProblemType> +#include "dune/tectonic/myblockproblem.hh" +#include "dune/tectonic/myconvexproblem.hh" + +template <int dim, class MatrixType, class VectorType, class GridType> class MySolver { private: + typedef MyConvexProblem<MatrixType, VectorType> ConvexProblemType; + typedef MyBlockProblem<ConvexProblemType> BlockProblemType; typedef GenericNonlinearGS<BlockProblemType> NonlinearSmootherType; typedef TruncatedNonsmoothNewtonMultigrid<BlockProblemType, NonlinearSmootherType> SolverType; diff --git a/src/mysolver_tmpl.cc b/src/mysolver_tmpl.cc index a91b0f7acb4762d8e7f64664a803758e3ebd0a65..2aad58425f50fc97246528e5ef66afd8bea69cee 100644 --- a/src/mysolver_tmpl.cc +++ b/src/mysolver_tmpl.cc @@ -16,10 +16,6 @@ typedef Dune::FieldMatrix<double, DIM, DIM> SmallMatrix; typedef Dune::BlockVector<SmallVector> VectorType; typedef Dune::BCRSMatrix<SmallMatrix> MatrixType; -typedef MyConvexProblem<MatrixType, VectorType> MyConvexProblemType; -typedef MyBlockProblem<MyConvexProblemType> MyBlockProblemType; - typedef Dune::ALUGrid<DIM, DIM, Dune::simplex, Dune::nonconforming> GridType; -template class MySolver<DIM, MatrixType, VectorType, GridType, - MyBlockProblemType>; +template class MySolver<DIM, MatrixType, VectorType, GridType>; diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index bce61eb711795221d24fc4d0279766b4884b0af2..27ba70300efdf6aee7de81ed0964b44221d2642d 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -341,9 +341,9 @@ int main(int argc, char *argv[]) { auto const solverTolerance = parset.get<double>("solver.tolerance"); typedef MyConvexProblem<MatrixType, VectorType> MyConvexProblemType; typedef MyBlockProblem<MyConvexProblemType> MyBlockProblemType; - MySolver<dims, MatrixType, VectorType, GridType, MyBlockProblemType> - solverHost(parset.sub("solver.tnnmg"), refinements, solverTolerance, *grid, - ignoreNodes); + MySolver<dims, MatrixType, VectorType, GridType> solverHost( + parset.sub("solver.tnnmg"), refinements, solverTolerance, *grid, + ignoreNodes); auto multigridStep = solverHost.getSolver(); Solver::VerbosityMode const verbosity = parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET;