|
HybridADRSolver
|
Abstract base class for parallel solvers. More...
#include <solver.h>


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 TimingResults & | get_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 |
Abstract base class for parallel solvers.
This class provides the common infrastructure for matrix-based and matrix-free solvers, including:
| dim | Spatial dimension |
| HybridADRSolver::ParallelSolverBase< dim >::ParallelSolverBase | ( | MPI_Comm | comm, |
| SolverParameters | params, | ||
| bool | construct_mg_hierarchy = false ) |
Constructor
| comm | MPI communicator |
| params | Solver parameters |
| construct_mg_hierarchy | Whether to construct multigrid hierarchy (set to true for matrix-free GMG, false for matrix-based) |
|
virtualdefault |
|
protectedpure virtual |
Assemble the system (matrix and/or RHS)
Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.
|
pure virtual |
Get a descriptive name for the solver
Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.
|
pure virtual |
Get the solver type (matrix-based or matrix-free)
Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.
|
inline |
Get timing results from the last run
|
protectedpure virtual |
Output results to files
| cycle | Current refinement cycle |
Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.
|
pure virtual |
Run the complete solve cycle
| n_refinements | Number of global mesh refinements |
Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.
|
protectedpure virtual |
Distribute degrees of freedom and setup constraints
Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.
|
protectedvirtual |
Setup the mesh/triangulation
| n_refinements | Number of global refinements |
|
protectedpure virtual |
Solve the linear system
Implemented in HybridADRSolver::MatrixBasedSolver< dim >, and HybridADRSolver::MatrixFreeSolver< dim, fe_degree >.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |