rheolef  6.3
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
rheolef::solver_abtb_basic< T, M > Class Template Reference

solver_abtb – direct or iterative solver iterface for mixed linear systems More...

#include <solver_abtb.h>

Collaboration diagram for rheolef::solver_abtb_basic< T, M >:
Collaboration graph
[legend]

Public Types

typedef csr< T, M >::size_type size_type

Public Member Functions

 solver_abtb_basic ()
 solver_abtb_basic (const csr< T, M > &a, const csr< T, M > &b, const csr< T, M > &mp, const solver_option_type &opt=solver_option_type())
 solver_abtb_basic (const csr< T, M > &a, const csr< T, M > &b, const csr< T, M > &c, const csr< T, M > &mp, const solver_option_type &opt=solver_option_type())
void solve (const vec< T, M > &f, const vec< T, M > &g, vec< T, M > &u, vec< T, M > &p) const

Protected Member Functions

void init ()

Protected Attributes

solver_option_type _opt
csr< T, M > _a
csr< T, M > _b
csr< T, M > _c
csr< T, M > _mp
solver_basic< T, M > _sA
solver_basic< T, M > _sa
solver_basic< T, M > _smp
bool _need_constraint

Detailed Description

template<class T, class M = rheo_default_memory_model>
class rheolef::solver_abtb_basic< T, M >

solver_abtb – direct or iterative solver iterface for mixed linear systems

SYNOPSIS

solver_abtb stokes (a,b,mp);
solver_abtb elasticity (a,b,c,mp);

The solver_abtb class provides direct or iterative algorithms for some mixed problem:

[ A B^T ] [ u ] [ Mf ]
[ ] [ ] = [ ]
[ B -C ] [ p ] [ Mg ]

where A is symmetric positive definite and C is symmetric positive. By default, iterative algorithms are considered for tridimensional problems and direct methods otherwise. Such mixed linear problems appears for instance with the discretization of Stokes problems. The C matrix can be zero and then the corresponding argument can be omitted when invoking the constructor. Non-zero C matrix appears for of Stokes problems with stabilized P1-P1 element, or for nearly incompressible elasticity problems.

DIRECT ALGORITHM

When the kernel of B^T is not reduced to zero, then the pressure p is defined up to a constant and the system is singular. In the case of iterative methods, this is not a problem. But when using direct method, the system is then completed to impose a constraint on the pressure term and the whole matrix is factored one time for all.

ITERATIVE ALGORITHM

The preconditionned conjugate gradient algorithm is used, where the mp matrix is used as preconditionner. See see mixed_solver algorithm.

EXAMPLES

See the user's manual for practical examples for the nearly incompressible elasticity, the Stokes and the Navier-Stokes problems.

Definition at line 55 of file solver_abtb.h.

Member Typedef Documentation

template<class T , class M = rheo_default_memory_model>
typedef csr<T,M>::size_type rheolef::solver_abtb_basic< T, M >::size_type

Definition at line 59 of file solver_abtb.h.

Constructor & Destructor Documentation

template<class T , class M >
rheolef::solver_abtb_basic< T, M >::solver_abtb_basic ( )

Definition at line 7 of file solver_abtb.cc.

template<class T , class M >
rheolef::solver_abtb_basic< T, M >::solver_abtb_basic ( const csr< T, M > &  a,
const csr< T, M > &  b,
const csr< T, M > &  mp,
const solver_option_type opt = solver_option_type() 
)

Definition at line 18 of file solver_abtb.cc.

template<class T , class M >
rheolef::solver_abtb_basic< T, M >::solver_abtb_basic ( const csr< T, M > &  a,
const csr< T, M > &  b,
const csr< T, M > &  c,
const csr< T, M > &  mp,
const solver_option_type opt = solver_option_type() 
)

Definition at line 37 of file solver_abtb.cc.

Member Function Documentation

template<class T , class M >
void rheolef::solver_abtb_basic< T, M >::solve ( const vec< T, M > &  f,
const vec< T, M > &  g,
vec< T, M > &  u,
vec< T, M > &  p 
) const

Definition at line 92 of file solver_abtb.cc.

template<class T , class M >
void rheolef::solver_abtb_basic< T, M >::init ( )
protected

Definition at line 57 of file solver_abtb.cc.

Member Data Documentation

template<class T , class M = rheo_default_memory_model>
solver_option_type rheolef::solver_abtb_basic< T, M >::_opt
mutableprotected

Definition at line 73 of file solver_abtb.h.

template<class T , class M = rheo_default_memory_model>
csr<T,M> rheolef::solver_abtb_basic< T, M >::_a
protected

Definition at line 74 of file solver_abtb.h.

template<class T , class M = rheo_default_memory_model>
csr<T,M> rheolef::solver_abtb_basic< T, M >::_b
protected

Definition at line 75 of file solver_abtb.h.

template<class T , class M = rheo_default_memory_model>
csr<T,M> rheolef::solver_abtb_basic< T, M >::_c
protected

Definition at line 76 of file solver_abtb.h.

template<class T , class M = rheo_default_memory_model>
csr<T,M> rheolef::solver_abtb_basic< T, M >::_mp
protected

Definition at line 77 of file solver_abtb.h.

template<class T , class M = rheo_default_memory_model>
solver_basic<T,M> rheolef::solver_abtb_basic< T, M >::_sA
protected

Definition at line 78 of file solver_abtb.h.

template<class T , class M = rheo_default_memory_model>
solver_basic<T,M> rheolef::solver_abtb_basic< T, M >::_sa
protected

Definition at line 79 of file solver_abtb.h.

template<class T , class M = rheo_default_memory_model>
solver_basic<T,M> rheolef::solver_abtb_basic< T, M >::_smp
protected

Definition at line 80 of file solver_abtb.h.

template<class T , class M = rheo_default_memory_model>
bool rheolef::solver_abtb_basic< T, M >::_need_constraint
protected

Definition at line 81 of file solver_abtb.h.


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