SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::solver::preconditioner::backend::mfem::detail::DirectLU Class Referencefinal

#include <direct_lu.hpp>

Collaboration diagram for serif::solver::preconditioner::backend::mfem::detail::DirectLU:
[legend]

Classes

struct  State
 

Public Member Functions

 ~DirectLU ()
 
 DirectLU (const DirectLU &)=delete
 
DirectLU & operator= (const DirectLU &)=delete
 
void solve (const double *right, double *solution) const
 Solve A x = b; the right-hand side is copied first, so b and x may overlap.
 
void solve_many (int count, const double *right, double *solution) const
 Solve A X = B for count column-major right-hand sides (leading dimension = size); B is copied first.
 

Static Public Member Functions

static std::unique_ptr< DirectLU > factor (std::shared_ptr< const DirectLUPattern > pattern, const double *values, int &status)
 Numerically factor values laid out in pattern's compressed columns; the values are copied. Empty on failure, with a backend status.
 

Private Member Functions

 DirectLU (std::unique_ptr< State > state)
 

Private Attributes

std::unique_ptr< State > m_state
 

Constructor & Destructor Documentation

◆ ~DirectLU()

serif::solver::preconditioner::backend::mfem::detail::DirectLU::~DirectLU ( )
default

◆ DirectLU() [1/2]

serif::solver::preconditioner::backend::mfem::detail::DirectLU::DirectLU ( const DirectLU & )
delete

◆ DirectLU() [2/2]

serif::solver::preconditioner::backend::mfem::detail::DirectLU::DirectLU ( std::unique_ptr< State > state)
explicitprivate

Member Function Documentation

◆ factor()

std::unique_ptr< DirectLU > serif::solver::preconditioner::backend::mfem::detail::DirectLU::factor ( std::shared_ptr< const DirectLUPattern > pattern,
const double * values,
int & status )
staticnodiscard

Numerically factor values laid out in pattern's compressed columns; the values are copied. Empty on failure, with a backend status.

◆ operator=()

DirectLU & serif::solver::preconditioner::backend::mfem::detail::DirectLU::operator= ( const DirectLU & )
delete

◆ solve()

void serif::solver::preconditioner::backend::mfem::detail::DirectLU::solve ( const double * right,
double * solution ) const

Solve A x = b; the right-hand side is copied first, so b and x may overlap.

◆ solve_many()

void serif::solver::preconditioner::backend::mfem::detail::DirectLU::solve_many ( int count,
const double * right,
double * solution ) const

Solve A X = B for count column-major right-hand sides (leading dimension = size); B is copied first.

Note
Accelerate solves the block at once (one pass over the factor); the columns agree with solve() to rounding, not bit for bit. UMFPACK solves the columns one by one, as solve().

Member Data Documentation

◆ m_state

std::unique_ptr<State> serif::solver::preconditioner::backend::mfem::detail::DirectLU::m_state
private

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