ccgsl 2.7.2
C++wrappersforGnuScientificLibrary
gsl::splinalg::itersolve Class Reference

Workspace for sparse iterative solvers. More...

#include <splinalg.hpp>

Collaboration diagram for gsl::splinalg::itersolve:
Collaboration graph

Public Member Functions

 itersolve ()
 The default constructor is only really useful for assigning to. More...
 
 itersolve (gsl_splinalg_itersolve_type const *T, size_t const n, size_t const m=0)
 The default constructor creates a new itersolve with n elements. More...
 
 itersolve (gsl_splinalg_itersolve *v)
 Could construct from a gsl_splinalg_itersolve_itersolve. More...
 
 itersolve (itersolve const &v)
 The copy constructor. More...
 
itersolveoperator= (itersolve const &v)
 The assignment operator. More...
 
 ~itersolve ()
 The destructor only deletes the pointers if count reaches zero. More...
 
 itersolve (itersolve &&v)
 Move constructor. More...
 
itersolveoperator= (itersolve &&v)
 Move operator. More...
 
bool operator== (itersolve const &v) const
 Two itersolve are identically equal if their elements are identical. More...
 
bool operator!= (itersolve const &v) const
 Two itersolve are different if their elements are not identical. More...
 
bool operator< (itersolve const &v) const
 A container needs to define an ordering for sorting. More...
 
bool operator> (itersolve const &v) const
 A container needs to define an ordering for sorting. More...
 
bool operator<= (itersolve const &v) const
 A container needs to define an ordering for sorting. More...
 
bool operator>= (itersolve const &v) const
 A container needs to define an ordering for sorting. More...
 
bool empty () const
 Find if the itersolve is empty. More...
 
void swap (itersolve &v)
 Swap two itersolve objects. More...
 
gsl_splinalg_itersolve * get () const
 Get the gsl_splinalg_itersolve_itersolve. More...
 
bool unique () const
 Find if this is the only object sharing the gsl_splinalg_itersolve_itersolve. More...
 
size_t use_count () const
 Find how many itersolve objects share this pointer. More...
 
 operator bool () const
 Allow conversion to bool. More...
 
char const * itersolve_name () const
 C++ version of gsl_splinalg_itersolve_name(). More...
 
int itersolve_iterate (spmatrix const &A, vector const &b, double const tol, vector &x)
 C++ version of gsl_splinalg_itersolve_iterate(). More...
 
double itersolve_normr () const
 C++ version of gsl_splinalg_itersolve_normr(). More...
 

Public Attributes

gsl_splinalg_itersolve_type const *& gmres = gsl_splinalg_itersolve_gmres
 This is a type that can be passed to itersolve() More...
 

Private Attributes

gsl_splinalg_itersolve * ccgsl_pointer
 The shared pointer. More...
 
size_t * count
 The shared reference count. More...
 

Detailed Description

Workspace for sparse iterative solvers.

Definition at line 36 of file splinalg.hpp.

Constructor & Destructor Documentation

◆ itersolve() [1/5]

gsl::splinalg::itersolve::itersolve ( )
inline

The default constructor is only really useful for assigning to.

Definition at line 45 of file splinalg.hpp.

References ccgsl_pointer, and count.

Referenced by operator=().

◆ itersolve() [2/5]

gsl::splinalg::itersolve::itersolve ( gsl_splinalg_itersolve_type const *  T,
size_t const  n,
size_t const  m = 0 
)
inlineexplicit

The default constructor creates a new itersolve with n elements.

Parameters
TA constant pointer of type gsl_splinalg_itersolve_type
nWe solve n by n sparse systems
mThe size of the solution candidate subspace [default = 0]

Definition at line 57 of file splinalg.hpp.

References ccgsl_pointer, count, and gsl::rstat::n().

◆ itersolve() [3/5]

gsl::splinalg::itersolve::itersolve ( gsl_splinalg_itersolve *  v)
inlineexplicit

Could construct from a gsl_splinalg_itersolve_itersolve.

This is not usually a good idea. In this case we should not use gsl_splinalg_itersolve_free() to deallocate the memory.

Parameters
vThe itersolve

Definition at line 74 of file splinalg.hpp.

References ccgsl_pointer, and count.

◆ itersolve() [4/5]

gsl::splinalg::itersolve::itersolve ( itersolve const &  v)
inline

The copy constructor.

This creates a new reference to the workspace.

Parameters
vThe itersolve to copy.

Definition at line 85 of file splinalg.hpp.

References ccgsl_pointer, and count.

◆ ~itersolve()

gsl::splinalg::itersolve::~itersolve ( )
inline

The destructor only deletes the pointers if count reaches zero.

Definition at line 105 of file splinalg.hpp.

References ccgsl_pointer, and count.

◆ itersolve() [5/5]

gsl::splinalg::itersolve::itersolve ( itersolve &&  v)
inline

Move constructor.

Parameters
vThe itersolve to move.

Definition at line 117 of file splinalg.hpp.

References count.

Member Function Documentation

◆ empty()

bool gsl::splinalg::itersolve::empty ( ) const
inline

Find if the itersolve is empty.

Returns
true if has size zero; otherwise false

Definition at line 194 of file splinalg.hpp.

References ccgsl_pointer.

◆ get()

gsl_splinalg_itersolve * gsl::splinalg::itersolve::get ( ) const
inline

Get the gsl_splinalg_itersolve_itersolve.

Returns
the gsl_splinalg_itersolve_itersolve

Definition at line 220 of file splinalg.hpp.

References ccgsl_pointer.

Referenced by itersolve_iterate(), itersolve_name(), and itersolve_normr().

◆ itersolve_iterate()

int gsl::splinalg::itersolve::itersolve_iterate ( spmatrix const &  A,
vector const &  b,
double const  tol,
vector x 
)
inline

C++ version of gsl_splinalg_itersolve_iterate().

Parameters
AA sparse matrix
bA vector
tolthe relative tolerance between the residual norm and norm of b in order to check for convergence
xInitial guess for the solution
Returns
Error code on failure

Definition at line 256 of file splinalg.hpp.

References gsl::sf::mathieu::b(), gsl::vector::get(), get(), and gsl::spmatrix::get().

◆ itersolve_name()

char const * gsl::splinalg::itersolve::itersolve_name ( ) const
inline

C++ version of gsl_splinalg_itersolve_name().

Returns
The name of the solver

Definition at line 246 of file splinalg.hpp.

References get().

◆ itersolve_normr()

double gsl::splinalg::itersolve::itersolve_normr ( ) const
inline

C++ version of gsl_splinalg_itersolve_normr().

Returns
The current residual norm

Definition at line 262 of file splinalg.hpp.

References get().

◆ operator bool()

gsl::splinalg::itersolve::operator bool ( ) const
inlineexplicit

Allow conversion to bool.

Returns
true or false according as this contains a pointer to a gsl_splinalg_itersolve_itersolve.

Definition at line 240 of file splinalg.hpp.

References ccgsl_pointer.

◆ operator!=()

bool gsl::splinalg::itersolve::operator!= ( itersolve const &  v) const
inline

Two itersolve are different if their elements are not identical.

Parameters
vThe itersolve to be compared with this
Returns
false or true according as this and v have identical elements or not

Definition at line 147 of file splinalg.hpp.

References operator==().

◆ operator<()

bool gsl::splinalg::itersolve::operator< ( itersolve const &  v) const
inline

A container needs to define an ordering for sorting.

This uses standard lexicographical ordering and so is not useful, for example, for checking, that a itersolve is nonnegative.

Parameters
vThe itersolve to be compared with this
Returns
false or true according as this is less than v lexicographically

Definition at line 159 of file splinalg.hpp.

References ccgsl_pointer.

◆ operator<=()

bool gsl::splinalg::itersolve::operator<= ( itersolve const &  v) const
inline

A container needs to define an ordering for sorting.

This uses standard lexicographical ordering and so is not useful, for example, for checking, that a itersolve is nonnegative.

Parameters
vThe itersolve to be compared with this
Returns
false or true according as this is less than or equal to v lexicographically

Definition at line 179 of file splinalg.hpp.

References ccgsl_pointer.

◆ operator=() [1/2]

itersolve & gsl::splinalg::itersolve::operator= ( itersolve &&  v)
inline

Move operator.

Parameters
vThe itersolve to move.
Returns
A reference to this.

Definition at line 126 of file splinalg.hpp.

References itersolve().

◆ operator=() [2/2]

itersolve & gsl::splinalg::itersolve::operator= ( itersolve const &  v)
inline

The assignment operator.

This copies elementwise.

Parameters
vThe itersolve to copy

Definition at line 92 of file splinalg.hpp.

References ccgsl_pointer, and count.

◆ operator==()

bool gsl::splinalg::itersolve::operator== ( itersolve const &  v) const
inline

Two itersolve are identically equal if their elements are identical.

Parameters
vThe itersolve to be compared with this
Returns
true or false according as this and v have identical elements or not

Definition at line 139 of file splinalg.hpp.

References ccgsl_pointer.

Referenced by operator!=().

◆ operator>()

bool gsl::splinalg::itersolve::operator> ( itersolve const &  v) const
inline

A container needs to define an ordering for sorting.

This uses standard lexicographical ordering and so is not useful, for example, for checking, that a itersolve is nonnegative.

Parameters
vThe itersolve to be compared with this
Returns
false or true according as this is greater than v lexicographically

Definition at line 169 of file splinalg.hpp.

References ccgsl_pointer.

◆ operator>=()

bool gsl::splinalg::itersolve::operator>= ( itersolve const &  v) const
inline

A container needs to define an ordering for sorting.

This uses standard lexicographical ordering and so is not useful, for example, for checking, that a itersolve is nonnegative.

Parameters
vThe itersolve to be compared with this
Returns
false or true according as this is no less than v lexicographically

Definition at line 189 of file splinalg.hpp.

References ccgsl_pointer.

◆ swap()

void gsl::splinalg::itersolve::swap ( itersolve v)
inline

Swap two itersolve objects.

This works even if the itersolve have different sizes because it swaps pointers.

Parameters
vThe itersolve to swap with this.

Definition at line 201 of file splinalg.hpp.

References ccgsl_pointer, and count.

◆ unique()

bool gsl::splinalg::itersolve::unique ( ) const
inline

Find if this is the only object sharing the gsl_splinalg_itersolve_itersolve.

Returns
true or falses according as this is the only itersolve object sharing the gsl_splinalg_itersolve_itersolve.

Definition at line 226 of file splinalg.hpp.

References count.

◆ use_count()

size_t gsl::splinalg::itersolve::use_count ( ) const
inline

Find how many itersolve objects share this pointer.

Returns
the number of itersolve objects that share this pointer.

Definition at line 231 of file splinalg.hpp.

References count.

Member Data Documentation

◆ ccgsl_pointer

gsl_splinalg_itersolve* gsl::splinalg::itersolve::ccgsl_pointer
private

◆ count

size_t* gsl::splinalg::itersolve::count
private

The shared reference count.

Definition at line 213 of file splinalg.hpp.

Referenced by itersolve(), operator=(), swap(), unique(), use_count(), and ~itersolve().

◆ gmres

gsl_splinalg_itersolve_type const*& gsl::splinalg::itersolve::gmres = gsl_splinalg_itersolve_gmres

This is a type that can be passed to itersolve()

Definition at line 41 of file splinalg.hpp.


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