HybridADRSolver
Loading...
Searching...
No Matches
HybridADRSolver::ParallelSolverBase< dim > Class Template Referenceabstract

Abstract base class for parallel solvers. More...

#include <solver.h>

Inheritance diagram for HybridADRSolver::ParallelSolverBase< dim >:
Collaboration diagram for HybridADRSolver::ParallelSolverBase< dim >:

Public Member Functions

 ParallelSolverBase (MPI_Comm comm, SolverParameters params, bool construct_mg_hierarchy=false)
virtual ~ParallelSolverBase ()=default
virtual void run (unsigned int n_refinements)=0
const TimingResultsget_timing_results () const
virtual SolverType get_solver_type () const =0
virtual std::string get_name () const =0

Protected Member Functions

virtual void setup_grid (unsigned int n_refinements)
virtual void setup_dofs ()=0
virtual void assemble_system ()=0
virtual void solve ()=0
virtual void output_results (unsigned int cycle) const =0

Protected Attributes

MPI_Comm mpi_communicator
unsigned int n_mpi_processes
unsigned int this_mpi_process
parallel::distributed::Triangulation< dim > triangulation
std::unique_ptr< FiniteElement< dim > > fe
DoFHandler< dim > dof_handler
std::unique_ptr< Mapping< dim > > mapping
AffineConstraints< double > constraints
IndexSet locally_owned_dofs
IndexSet locally_relevant_dofs
SolverParameters parameters
TimingResults timing_results
ConditionalOStream pcout
TimerOutput computing_timer
bool has_mg_hierarchy

Detailed Description

template<int dim>
class HybridADRSolver::ParallelSolverBase< dim >

Abstract base class for parallel solvers.

This class provides the common infrastructure for matrix-based and matrix-free solvers, including:

  • MPI communication setup
  • Triangulation (optionally with multigrid hierarchy support)
  • DoF handler and constraints
  • Timing and output utilities
Template Parameters
dimSpatial dimension

Constructor & Destructor Documentation

◆ ParallelSolverBase()

template<int dim>
HybridADRSolver::ParallelSolverBase< dim >::ParallelSolverBase ( MPI_Comm comm,
SolverParameters params,
bool construct_mg_hierarchy = false )

Constructor

Parameters
commMPI communicator
paramsSolver parameters
construct_mg_hierarchyWhether to construct multigrid hierarchy (set to true for matrix-free GMG, false for matrix-based)

◆ ~ParallelSolverBase()

template<int dim>
virtual HybridADRSolver::ParallelSolverBase< dim >::~ParallelSolverBase ( )
virtualdefault

Member Function Documentation

◆ assemble_system()

template<int dim>
virtual void HybridADRSolver::ParallelSolverBase< dim >::assemble_system ( )
protectedpure virtual

Assemble the system (matrix and/or RHS)

Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.

◆ get_name()

template<int dim>
virtual std::string HybridADRSolver::ParallelSolverBase< dim >::get_name ( ) const
pure virtual

Get a descriptive name for the solver

Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.

◆ get_solver_type()

template<int dim>
virtual SolverType HybridADRSolver::ParallelSolverBase< dim >::get_solver_type ( ) const
pure virtual

Get the solver type (matrix-based or matrix-free)

Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.

◆ get_timing_results()

template<int dim>
const TimingResults & HybridADRSolver::ParallelSolverBase< dim >::get_timing_results ( ) const
inline

Get timing results from the last run

◆ output_results()

template<int dim>
virtual void HybridADRSolver::ParallelSolverBase< dim >::output_results ( unsigned int cycle) const
protectedpure virtual

Output results to files

Parameters
cycleCurrent refinement cycle

Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.

◆ run()

template<int dim>
virtual void HybridADRSolver::ParallelSolverBase< dim >::run ( unsigned int n_refinements)
pure virtual

Run the complete solve cycle

Parameters
n_refinementsNumber of global mesh refinements

Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.

◆ setup_dofs()

template<int dim>
virtual void HybridADRSolver::ParallelSolverBase< dim >::setup_dofs ( )
protectedpure virtual

Distribute degrees of freedom and setup constraints

Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.

◆ setup_grid()

template<int dim>
void HybridADRSolver::ParallelSolverBase< dim >::setup_grid ( unsigned int n_refinements)
protectedvirtual

Setup the mesh/triangulation

Parameters
n_refinementsNumber of global refinements

◆ solve()

template<int dim>
virtual void HybridADRSolver::ParallelSolverBase< dim >::solve ( )
protectedpure virtual

Member Data Documentation

◆ computing_timer

template<int dim>
TimerOutput HybridADRSolver::ParallelSolverBase< dim >::computing_timer
protected

◆ constraints

template<int dim>
AffineConstraints<double> HybridADRSolver::ParallelSolverBase< dim >::constraints
protected

◆ dof_handler

template<int dim>
DoFHandler<dim> HybridADRSolver::ParallelSolverBase< dim >::dof_handler
protected

◆ fe

template<int dim>
std::unique_ptr<FiniteElement<dim> > HybridADRSolver::ParallelSolverBase< dim >::fe
protected

◆ has_mg_hierarchy

template<int dim>
bool HybridADRSolver::ParallelSolverBase< dim >::has_mg_hierarchy
protected

◆ locally_owned_dofs

template<int dim>
IndexSet HybridADRSolver::ParallelSolverBase< dim >::locally_owned_dofs
protected

◆ locally_relevant_dofs

template<int dim>
IndexSet HybridADRSolver::ParallelSolverBase< dim >::locally_relevant_dofs
protected

◆ mapping

template<int dim>
std::unique_ptr<Mapping<dim> > HybridADRSolver::ParallelSolverBase< dim >::mapping
protected

◆ mpi_communicator

template<int dim>
MPI_Comm HybridADRSolver::ParallelSolverBase< dim >::mpi_communicator
protected

◆ n_mpi_processes

template<int dim>
unsigned int HybridADRSolver::ParallelSolverBase< dim >::n_mpi_processes
protected

◆ parameters

template<int dim>
SolverParameters HybridADRSolver::ParallelSolverBase< dim >::parameters
protected

◆ pcout

template<int dim>
ConditionalOStream HybridADRSolver::ParallelSolverBase< dim >::pcout
protected

◆ this_mpi_process

template<int dim>
unsigned int HybridADRSolver::ParallelSolverBase< dim >::this_mpi_process
protected

◆ timing_results

template<int dim>
TimingResults HybridADRSolver::ParallelSolverBase< dim >::timing_results
protected

◆ triangulation

template<int dim>
parallel::distributed::Triangulation<dim> HybridADRSolver::ParallelSolverBase< dim >::triangulation
protected

The documentation for this class was generated from the following file: