5#include <deal.II/grid/grid_tools.h>
6#include <deal.II/lac/precondition.h>
7#include <deal.II/lac/solver_cg.h>
8#include <deal.II/matrix_free/matrix_free.h>
9#include <deal.II/matrix_free/operators.h>
10#include <deal.II/multigrid/mg_coarse.h>
11#include <deal.II/multigrid/mg_constrained_dofs.h>
12#include <deal.II/multigrid/mg_matrix.h>
13#include <deal.II/multigrid/mg_smoother.h>
14#include <deal.II/multigrid/mg_tools.h>
15#include <deal.II/multigrid/mg_transfer_global_coarsening.h>
16#include <deal.II/multigrid/mg_transfer_matrix_free.h>
17#include <deal.II/multigrid/multigrid.h>
25#include <prismspf/config.h>
29template <
unsigned int dim,
unsigned int degree,
typename number>
35template <
unsigned int dim,
unsigned int degree,
typename number>
42 using SolverBase::rhs_operators;
81 dealii::MGTransferBlockMatrixFree<dim, number>
mg_transfer;
92 dealii::MGLevelObject<typename SmootherPrecond::AdditionalData>
smoother_data(
104 using Smoother = dealii::MGSmootherPrecondition<MFOperator<dim, degree, number>,
128 dealii::Multigrid<BlockVector<number>>
multigrid(
139 dealii::PreconditionMG<
dim,
141 dealii::MGTransferBlockMatrixFree<dim, number>>
This class handles the explicit solves of all explicit fields.
Definition linear_solver.h:34
int do_linear_solve(BlockVector< number > &b_vector, MFOperator< dim, degree, number > &lhs_operator, BlockVector< number > &x_vector)
Definition linear_solver.h:150
std::vector< MFOperator< dim, degree, number > > lhs_operators
Definition linear_solver.h:186
This class handles the explicit solves of all explicit fields.
Definition mg_solver.h:37
SolveGroup solve_group
Information about the solve group this handler is responsible for.
Definition solver_base.h:259
const SolveContext< dim, degree, number > * solve_context
Solver context provides access to external information.
Definition solver_base.h:264
void solve_level(unsigned int relative_level) override
Solve for a single update step.
Definition mg_solver.h:60
void mg_solve()
Definition mg_solver.h:64
MGSolver(SolveGroup _solve_group, const SolveContext< dim, degree, number > &_solve_context)
Constructor.
Definition mg_solver.h:51
dealii::SolverControl linear_solver_control
Solver control. Contains max iterations and tolerance.
Definition mg_solver.h:156
This class provides context for a solver with ptrs to all the relevant dependencies.
Definition solve_context.h:36
Structure to hold the attributes of a solve-group.
Definition solve_group.h:59
std::set< Types::Index > field_indices
Indices of the fields to be solved in this group.
Definition solve_group.h:98
Definition solver_base.h:32
SolveGroup solve_group
Information about the solve group this handler is responsible for.
Definition solver_base.h:259
GroupSolutionHandler< dim, number > solutions
Solution vectors for fields handled by this solver.
Definition solver_base.h:269
const SolveContext< dim, degree, number > * solve_context
Solver context provides access to external information.
Definition solver_base.h:264
@ Value
Use value of the variable as a criterion for refinement.
Definition grid_refiner_criterion.h:31
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVector
Typedef for solution block vector.
Definition group_solution_handler.h:29
Definition conditional_ostreams.cc:20