PRISMS-PF Manual
Loading...
Searching...
No Matches
MGSolver< dim, degree, number > Class Template Reference

This class handles the explicit solves of all explicit fields. More...

#include <mg_solver.h>

Inheritance diagram for MGSolver< dim, degree, number >:
[legend]
Collaboration diagram for MGSolver< dim, degree, number >:
[legend]

Public Member Functions

 MGSolver (SolveGroup _solve_group, const SolveContext< dim, degree, number > &_solve_context)
 Constructor.
 
void solve_level (unsigned int relative_level) override
 Solve for a single update step.
 
void mg_solve ()
 
- Public Member Functions inherited from LinearSolver< dim, degree, number >
 LinearSolver (SolveGroup _solve_group, const SolveContext< dim, degree, number > &_solve_context)
 Constructor.
 
void init (const std::list< DependencyMap > &all_dependeny_sets) override
 Initialize the solver.
 
void reinit () override
 Reinitialize the solver.
 
int do_linear_solve (BlockVector< number > &b_vector, MFOperator< dim, degree, number > &lhs_operator, BlockVector< number > &x_vector)
 
- Public Member Functions inherited from SolverBase< dim, degree, number >
 SolverBase (SolveGroup _solve_group, const SolveContext< dim, degree, number > &_solve_context)
 Constructor.
 
virtual ~SolverBase ()=default
 Destructor.
 
 SolverBase (const SolverBase &solver_base)=delete
 Copy constructor.
 
SolverBaseoperator= (const SolverBase &solver_base)=delete
 Copy assignment.
 
 SolverBase (SolverBase &&solver_base) noexcept=delete
 Move constructor.
 
SolverBaseoperator= (SolverBase &&solver_base) noexcept=delete
 Move assignment.
 
virtual void solve ()
 Solve for a single update step.
 
virtual void update ()
 Update the fields.
 
virtual void update_ghosts ()
 Update the ghosts.
 
void prepare_for_solution_transfer ()
 Prepare for solution transfer (for AMR).
 
void execute_solution_transfer ()
 Execute solution transfer (for AMR).
 
virtual void print ()
 Print information about the solver to summary.log.
 
void set_initial_condition ()
 Set the initial conditions.
 
const GroupSolutionHandler< dim, number > & get_solution_manager () const
 Get the solution handler.
 
GroupSolutionHandler< dim, number > & get_solution_manager ()
 Get the solution handler.
 
const SolveGroupget_solve_group () const
 Get the solver context.
 

Private Types

using SolverBase = SolverBase< dim, degree, number >
 
using LinearSolver = LinearSolver< dim, degree, number >
 

Private Member Functions

int do_linear_solve (BlockVector< number > &b_vector, MFOperator< dim, degree, number > &lhs_operator, BlockVector< number > &x_vector)
 

Private Attributes

dealii::SolverControl linear_solver_control
 Solver control. Contains max iterations and tolerance.
 
std::vector< MFOperator< dim, degree, number > > lhs_operators
 
GroupSolutionHandler< dim, numbersolutions
 Solution vectors for fields handled by this solver.
 
const SolveContext< dim, degree, number > * solve_context
 Solver context provides access to external information.
 
SolveGroup solve_group
 Information about the solve group this handler is responsible for.
 

Additional Inherited Members

- Protected Member Functions inherited from LinearSolver< dim, degree, number >
double normalization_value ()
 
- Protected Attributes inherited from LinearSolver< dim, degree, number >
std::vector< MFOperator< dim, degree, number > > rhs_operators
 Matrix free operators for each level.
 
std::vector< MFOperator< dim, degree, number > > lhs_operators
 
std::vector< BlockVector< number > > rhs_vector
 
- Protected Attributes inherited from SolverBase< dim, degree, number >
SolveGroup solve_group
 Information about the solve group this handler is responsible for.
 
const SolveContext< dim, degree, number > * solve_context
 Solver context provides access to external information.
 
GroupSolutionHandler< dim, numbersolutions
 Solution vectors for fields handled by this solver.
 
std::vector< SolverBase< dim, degree, number > * > aux_solvers
 

Detailed Description

template<unsigned int dim, unsigned int degree, typename number>
class MGSolver< dim, degree, number >

This class handles the explicit solves of all explicit fields.

Member Typedef Documentation

◆ LinearSolver

template<unsigned int dim, unsigned int degree, typename number >
using MGSolver< dim, degree, number >::LinearSolver = LinearSolver<dim, degree, number>
private

◆ SolverBase

template<unsigned int dim, unsigned int degree, typename number >
using MGSolver< dim, degree, number >::SolverBase = SolverBase<dim, degree, number>
private

Constructor & Destructor Documentation

◆ MGSolver()

template<unsigned int dim, unsigned int degree, typename number >
MGSolver< dim, degree, number >::MGSolver ( SolveGroup  _solve_group,
const SolveContext< dim, degree, number > &  _solve_context 
)
inline

Constructor.

Member Function Documentation

◆ do_linear_solve()

template<unsigned int dim, unsigned int degree, typename number >
int LinearSolver< dim, degree, number >::do_linear_solve ( BlockVector< number > &  b_vector,
MFOperator< dim, degree, number > &  lhs_operator,
BlockVector< number > &  x_vector 
)
inlineprivate

◆ mg_solve()

template<unsigned int dim, unsigned int degree, typename number >
void MGSolver< dim, degree, number >::mg_solve ( )
inline

◆ solve_level()

template<unsigned int dim, unsigned int degree, typename number >
void MGSolver< dim, degree, number >::solve_level ( unsigned int  relative_level)
inlineoverridevirtual

Solve for a single update step.

Reimplemented from LinearSolver< dim, degree, number >.

Member Data Documentation

◆ lhs_operators

template<unsigned int dim, unsigned int degree, typename number >
std::vector<MFOperator<dim, degree, number> > LinearSolver< dim, degree, number >::lhs_operators
private

◆ linear_solver_control

template<unsigned int dim, unsigned int degree, typename number >
dealii::SolverControl MGSolver< dim, degree, number >::linear_solver_control
private

Solver control. Contains max iterations and tolerance.

◆ solutions

template<unsigned int dim, unsigned int degree, typename number >
GroupSolutionHandler<dim, number> SolverBase< dim, degree, number >::solutions
private

Solution vectors for fields handled by this solver.

◆ solve_context

template<unsigned int dim, unsigned int degree, typename number >
const SolveContext<dim, degree, number>* SolverBase< dim, degree, number >::solve_context
private

Solver context provides access to external information.

◆ solve_group

template<unsigned int dim, unsigned int degree, typename number >
SolveGroup SolverBase< dim, degree, number >::solve_group
private

Information about the solve group this handler is responsible for.


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