3#include <deal.II/base/conditional_ostream.h>
4#include <deal.II/base/data_out_base.h>
5#include <deal.II/base/index_set.h>
6#include <deal.II/base/logstream.h>
7#include <deal.II/base/quadrature_lib.h>
8#include <deal.II/base/timer.h>
9#include <deal.II/base/parameter_handler.h>
10#include <deal.II/distributed/grid_refinement.h>
11#include <deal.II/distributed/tria.h>
12#include <deal.II/dofs/dof_tools.h>
13#include <deal.II/fe/fe_q.h>
14#include <deal.II/fe/fe_values.h>
15#include <deal.II/fe/mapping_q1.h>
16#include <deal.II/grid/grid_generator.h>
17#include <deal.II/grid/grid_refinement.h>
18#include <deal.II/grid/tria.h>
19#include <deal.II/lac/affine_constraints.h>
20#include <deal.II/lac/dynamic_sparsity_pattern.h>
21#include <deal.II/lac/sparsity_tools.h>
22#include <deal.II/lac/solver_cg.h>
23#include <deal.II/lac/solver_gmres.h>
25#include <deal.II/lac/generic_linear_algebra.h>
27#include <deal.II/multigrid/mg_coarse.h>
28#include <deal.II/multigrid/mg_constrained_dofs.h>
29#include <deal.II/multigrid/mg_matrix.h>
30#include <deal.II/multigrid/mg_smoother.h>
31#include <deal.II/multigrid/mg_tools.h>
32#include <deal.II/multigrid/mg_transfer.h>
33#include <deal.II/multigrid/multigrid.h>
34#include <deal.II/multigrid/mg_transfer_matrix_free.h>
35#include <deal.II/numerics/data_out.h>
36#include <deal.II/numerics/vector_tools.h>
39#include <deal.II/fe/fe_interface_values.h>
40#include <deal.II/meshworker/mesh_loop.h>
48using namespace dealii;
77 DTRProblem(
unsigned int degree, std::ofstream& dimension_time_file);
87 void run(
unsigned int n_initial_refinements = 3,
unsigned int n_cycles = 9);
90 using MatrixType = LinearAlgebraTrilinos::MPI::SparseMatrix;
91 using VectorType = LinearAlgebraTrilinos::MPI::Vector;
105 void setup_multigrid();
110 void assemble_system();
115 void assemble_multigrid();
127 void output_results(
const unsigned int cycle);
131 MPI_Comm mpi_communicator;
136 ConditionalOStream pcout;
141 ConditionalOStream time_details;
151 parallel::distributed::Triangulation<dim> triangulation;
156 const MappingQ1<dim> mapping;
166 DoFHandler<dim> dof_handler;
171 IndexSet locally_owned_dofs;
176 IndexSet locally_relevant_dofs;
181 AffineConstraints<double> constraints;
186 MatrixType system_matrix;
196 VectorType right_hand_side;
201 Vector<double> estimated_error_square_per_cell;
206 MGLevelObject<MatrixType> mg_matrix;
211 MGLevelObject<MatrixType> mg_interface_in;
216 MGConstrainedDoFs mg_constrained_dofs;
The main class of the program.
Definition DTR_mg.hpp:56
DTRProblem(unsigned int degree)
Constructor.
Definition DTR_mg.cpp:9
void run(unsigned int n_initial_refinements=3, unsigned int n_cycles=9)
Run the problem.
Definition DTR_mg.cpp:421
Diffusion coefficient function.
Definition problem_data.hpp:19
Dirichlet boundary condition (left and bottom) function.
Definition problem_data.hpp:212
Dirichlet boundary condition (right and top) function.
Definition problem_data.hpp:250
Forcing term function.
Definition problem_data.hpp:174
Neumann boundary condition (right and top) function.
Definition problem_data.hpp:288
Neumann boundary condition (left and bottom) function.
Definition problem_data.hpp:326
Reaction coefficient function.
Definition problem_data.hpp:136
Transport coefficient function.
Definition problem_data.hpp:57
const std::string output_dir
Definition DTR_mg.hpp:44