5#ifndef HYBRIDADRSOLVER_SOLVER_H
6#define HYBRIDADRSOLVER_SOLVER_H
9#include <deal.II/base/conditional_ostream.h>
10#include <deal.II/base/multithread_info.h>
11#include <deal.II/base/timer.h>
13#include <deal.II/distributed/tria.h>
14#include <deal.II/dofs/dof_handler.h>
15#include <deal.II/fe/fe_q.h>
16#include <deal.II/fe/mapping_q.h>
17#include <deal.II/grid/grid_generator.h>
18#include <deal.II/lac/affine_constraints.h>
23using namespace dealii;
47 bool construct_mg_hierarchy =
false);
54 virtual void run(
unsigned int n_refinements) = 0;
76 virtual void setup_grid(
unsigned int n_refinements);
106 std::unique_ptr<FiniteElement<dim>>
fe;
134 static typename parallel::distributed::Triangulation<dim>::Settings
135 get_triangulation_settings(
bool construct_mg_hierarchy) {
136 if (construct_mg_hierarchy) {
137 return parallel::distributed::Triangulation<
138 dim>::construct_multigrid_hierarchy;
140 return parallel::distributed::Triangulation<dim>::default_setting;
147 bool construct_mg_hierarchy)
152 typename Triangulation<dim>::MeshSmoothing(
153 Triangulation<dim>::limit_level_difference_at_vertices |
154 Triangulation<dim>::smoothing_on_refinement |
155 Triangulation<dim>::smoothing_on_coarsening),
156 get_triangulation_settings(construct_mg_hierarchy)),
162 if (
parameters.n_threads != numbers::invalid_unsigned_int)
163 MultithreadInfo::set_thread_limit(
parameters.n_threads);
virtual SolverType get_solver_type() const =0
virtual void output_results(unsigned int cycle) const =0
const TimingResults & get_timing_results() const
Definition solver.h:59
virtual void assemble_system()=0
IndexSet locally_owned_dofs
Definition solver.h:114
virtual void run(unsigned int n_refinements)=0
AffineConstraints< double > constraints
Definition solver.h:111
virtual ~ParallelSolverBase()=default
ParallelSolverBase(MPI_Comm comm, SolverParameters params, bool construct_mg_hierarchy=false)
Definition solver.h:145
std::unique_ptr< FiniteElement< dim > > fe
Definition solver.h:106
ConditionalOStream pcout
Definition solver.h:124
DoFHandler< dim > dof_handler
Definition solver.h:107
virtual std::string get_name() const =0
MPI_Comm mpi_communicator
Definition solver.h:100
TimerOutput computing_timer
Definition solver.h:125
TimingResults timing_results
Definition solver.h:121
unsigned int n_mpi_processes
Definition solver.h:101
unsigned int this_mpi_process
Definition solver.h:102
SolverParameters parameters
Definition solver.h:118
virtual void setup_dofs()=0
bool has_mg_hierarchy
Definition solver.h:128
parallel::distributed::Triangulation< dim > triangulation
Definition solver.h:105
std::unique_ptr< Mapping< dim > > mapping
Definition solver.h:108
virtual void setup_grid(unsigned int n_refinements)
Definition solver.h:167
IndexSet locally_relevant_dofs
Definition solver.h:115
Definition problem_definition.h:25
SolverType
Definition types.h:34
Common type definitions for the hybrid solver framework.