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

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

#include <linear_solver.h>

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

Public Member Functions

 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.
 
void solve_level (unsigned int relative_level) override
 Solve for a single update step.
 
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.
 

Protected Member Functions

double normalization_value ()
 

Protected Attributes

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
 

Private Attributes

LinearSolverParameters lin_params
 Linear solver parameters.
 
dealii::SolverControl linear_solver_control
 Solver control. Contains max iterations and tolerance.
 

Detailed Description

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

This class handles the explicit solves of all explicit fields.

Constructor & Destructor Documentation

◆ LinearSolver()

template<unsigned int dim, unsigned int degree, typename number >
LinearSolver< dim, degree, number >::LinearSolver ( 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 
)
inline

◆ init()

template<unsigned int dim, unsigned int degree, typename number >
void LinearSolver< dim, degree, number >::init ( const std::list< DependencyMap > &  all_dependeny_sets)
inlineoverridevirtual

Initialize the solver.

Reimplemented from SolverBase< dim, degree, number >.

Reimplemented in NewtonSolver< dim, degree, number >.

◆ normalization_value()

template<unsigned int dim, unsigned int degree, typename number >
double LinearSolver< dim, degree, number >::normalization_value ( )
inlineprotected

◆ reinit()

template<unsigned int dim, unsigned int degree, typename number >
void LinearSolver< dim, degree, number >::reinit ( )
inlineoverridevirtual

Reinitialize the solver.

Reimplemented from SolverBase< dim, degree, number >.

Reimplemented in NewtonSolver< dim, degree, number >.

◆ solve_level()

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

Solve for a single update step.

Reimplemented from SolverBase< dim, degree, number >.

Reimplemented in MGSolver< dim, degree, number >, and NewtonSolver< 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
protected

◆ lin_params

template<unsigned int dim, unsigned int degree, typename number >
LinearSolverParameters LinearSolver< dim, degree, number >::lin_params
private

Linear solver parameters.

◆ linear_solver_control

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

Solver control. Contains max iterations and tolerance.

◆ rhs_operators

template<unsigned int dim, unsigned int degree, typename number >
std::vector<MFOperator<dim, degree, number> > LinearSolver< dim, degree, number >::rhs_operators
protected

Matrix free operators for each level.

◆ rhs_vector

template<unsigned int dim, unsigned int degree, typename number >
std::vector<BlockVector<number> > LinearSolver< dim, degree, number >::rhs_vector
protected

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