4#include <deal.II/base/conditional_ostream.h>
5#include <deal.II/base/quadrature_lib.h>
7#include <deal.II/distributed/fully_distributed_tria.h>
9#include <deal.II/dofs/dof_handler.h>
10#include <deal.II/dofs/dof_tools.h>
12#include <deal.II/fe/fe_q.h>
13#include <deal.II/fe/fe_values.h>
14#include <deal.II/fe/mapping_q1.h>
16#include <deal.II/grid/grid_generator.h>
17#include <deal.II/grid/grid_in.h>
18#include <deal.II/grid/grid_out.h>
19#include <deal.II/grid/tria.h>
20#include <deal.II/grid/grid_tools.h>
22#include <deal.II/lac/dynamic_sparsity_pattern.h>
23#include <deal.II/lac/precondition.h>
24#include <deal.II/lac/solver_cg.h>
25#include <deal.II/lac/solver_gmres.h>
26#include <deal.II/lac/trilinos_precondition.h>
27#include <deal.II/lac/trilinos_sparse_matrix.h>
28#include <deal.II/lac/vector.h>
30#include <deal.II/numerics/data_out.h>
31#include <deal.II/numerics/matrix_tools.h>
32#include <deal.II/numerics/vector_tools.h>
33#include <deal.II/base/timer.h>
41static const std::string output_dir =
"./output_mb/";
43using namespace dealii;
55 static constexpr unsigned int dim = 2;
63 DTR(
const unsigned int &r_, std::ofstream& dimension_time_file);
70 DTR(
const unsigned int &r_);
79 void setup(
unsigned int n_initial_refinements = 8);
106 double compute_error(
const VectorTools::NormType &norm_type)
const;
117 const unsigned int r;
172 parallel::fullydistributed::Triangulation<dim>
mesh;
177 std::unique_ptr<FiniteElement<dim>>
fe;
Class managing the differential problem.
Definition DTR.hpp:52
ConditionalOStream time_details
Output stream for timing details.
Definition DTR.hpp:217
const unsigned int mpi_rank
Rank of this MPI process.
Definition DTR.hpp:127
problem_data::NeumannBC2< dim > neumannBC2
Neumann boundary conditions for the left and bottom boundaries.
Definition DTR.hpp:167
DTR(const unsigned int &r_)
Constructor without a file stream for timing information.
problem_data::NeumannBC1< dim > neumannBC1
Neumann boundary conditions for the right and top boundaries.
Definition DTR.hpp:162
problem_data::DirichletBC2< dim > dirichletBC2
Dirichlet boundary conditions for the right and top boundaries.
Definition DTR.hpp:157
double setup_time
Time taken for setup.
Definition DTR.hpp:227
void output() const
Output of the solution to a file.
Definition DTR.cpp:347
const unsigned int r
Polynomial degree.
Definition DTR.hpp:117
double compute_error(const VectorTools::NormType &norm_type) const
Compute the error of the solution.
Definition DTR.cpp:396
std::unique_ptr< FiniteElement< dim > > fe
Finite element space.
Definition DTR.hpp:177
const std::string mesh_file_name
Path to the mesh file.
Definition DTR.hpp:112
DTR(const unsigned int &r_, std::ofstream &dimension_time_file)
Constructor with a file stream for timing information.
problem_data::TransportCoefficient< dim > transport_coefficient
Transport coefficient.
Definition DTR.hpp:142
IndexSet locally_owned_dofs
Index set for locally owned degrees of freedom.
Definition DTR.hpp:222
problem_data::DirichletBC1< dim > dirichletBC1
Dirichlet boundary conditions for the left and bottom boundaries.
Definition DTR.hpp:152
void setup(unsigned int n_initial_refinements=8)
Initialization of the system.
Definition DTR.cpp:5
TrilinosWrappers::MPI::Vector solution
Solution vector.
Definition DTR.hpp:207
std::unique_ptr< Quadrature< dim > > quadrature
Quadrature formula for integration.
Definition DTR.hpp:182
ConditionalOStream pcout
Parallel output stream.
Definition DTR.hpp:212
TrilinosWrappers::MPI::Vector system_rhs
System right-hand side vector.
Definition DTR.hpp:202
void assemble()
Assembly of the system matrix and right-hand side vector.
Definition DTR.cpp:115
std::unique_ptr< Quadrature< dim - 1 > > quadrature_boundary
Quadrature formula for boundary integration.
Definition DTR.hpp:187
TrilinosWrappers::SparseMatrix system_matrix
System matrix.
Definition DTR.hpp:197
problem_data::ForcingTerm< dim > forcing_term
Forcing term.
Definition DTR.hpp:147
static constexpr unsigned int dim
Physical dimension (1D, 2D, 3D)
Definition DTR.hpp:55
void solve()
Solution of the linear system.
Definition DTR.cpp:314
const unsigned int mpi_size
Number of MPI processes.
Definition DTR.hpp:122
parallel::fullydistributed::Triangulation< dim > mesh
Triangulation object for managing the mesh.
Definition DTR.hpp:172
problem_data::ReactionCoefficient< dim > reaction_coefficient
Reaction coefficient.
Definition DTR.hpp:137
DoFHandler< dim > dof_handler
DoF handler for managing degrees of freedom.
Definition DTR.hpp:192
problem_data::DiffusionCoefficient< dim > diffusion_coefficient
Diffusion coefficient.
Definition DTR.hpp:132
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