ESTER
Evolution STEllaire en Rotation
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
Classes | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
solver Class Reference

A solver object stores a system of equation to solve. More...

#include <solver.h>

Collaboration diagram for solver:
Collaboration graph
[legend]

Classes

class  solver_block
 Stores all the equations for a given block (a block can either be a domain or a set of boundary condition). More...
 
class  solver_elem
 Stores one term of an equation. More...
 

Public Member Functions

 solver ()
 
void destroy ()
 
 ~solver ()
 
void init (int nblock, int nvar, const char *solver_type)
 Initialize the solver object for nblock blocks, nvar variables, using a solver operator of type solver_type (either "full", "full-oc" or "iter"). More...
 
void set_nr (int *nr)
 
void reset ()
 
void reset (int iblock)
 
void reset (int iblock, int ieq)
 
void reset (int iblock, const char *eq_name)
 
void reset (const char *eq_name)
 
void regvar (const char *var_name, int dependent=0)
 
void regvar_dep (const char *var_name)
 
int get_nvar ()
 
int get_nblocks ()
 
int get_id (const char *varn)
 
void set_rhs (const char *eqn, const matrix &b)
 
matrix get_rhs (const char *eqn)
 
matrix get_var (const char *varn)
 
matrix get_rhs (int ieq)
 
matrix get_var (int ivar)
 
matrix_map get_vars ()
 
void solve (int *info=NULL)
 Solves the set of equations stored in the operator object. More...
 
void mult (matrix *)
 
void add (int iblock, const char *eqn, const char *varn, const char *block_type, char type, const matrix *d, const matrix *l, const matrix *r, const matrix *i)
 
void add (const char *eqn, const char *varn, const char *block_type, char type, const matrix *d, const matrix_block_diag *l, const matrix *r, const matrix *i)
 
void add_d (const char *eqn, const char *varn, const matrix &d)
 
void add_l (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l)
 
void add_r (const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void add_lr (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l, const matrix &r)
 
void add_li (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l, const matrix &i)
 
void add_ri (const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void add_lri (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l, const matrix &r, const matrix &i)
 
void bc_pol_add_d (const char *eqn, const char *varn, const matrix &d)
 
void bc_pol_add_l (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l)
 
void bc_pol_add_r (const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void bc_pol_add_lr (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l, const matrix &r)
 
void bc_pol_add_li (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l, const matrix &i)
 
void bc_pol_add_ri (const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void bc_pol_add_lri (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l, const matrix &r, const matrix &i)
 
void bc_eq_add_d (const char *eqn, const char *varn, const matrix &d)
 
void bc_eq_add_l (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l)
 
void bc_eq_add_r (const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void bc_eq_add_lr (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l, const matrix &r)
 
void bc_eq_add_li (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l, const matrix &i)
 
void bc_eq_add_ri (const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void bc_eq_add_lri (const char *eqn, const char *varn, const matrix &d, const matrix_block_diag &l, const matrix &r, const matrix &i)
 
void add_d (int iblock, const char *eqn, const char *varn, const matrix &d)
 
void add_l (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l)
 
void add_r (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void add_lr (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r)
 
void add_li (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &i)
 
void add_ri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void add_lri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r, const matrix &i)
 
void bc_pol_add_d (int iblock, const char *eqn, const char *varn, const matrix &d)
 
void bc_pol_add_l (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l)
 
void bc_pol_add_r (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void bc_pol_add_lr (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r)
 
void bc_pol_add_li (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &i)
 
void bc_pol_add_ri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void bc_pol_add_lri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r, const matrix &i)
 
void bc_eq_add_d (int iblock, const char *eqn, const char *varn, const matrix &d)
 
void bc_eq_add_l (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l)
 
void bc_eq_add_r (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void bc_eq_add_lr (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r)
 
void bc_eq_add_li (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &i)
 
void bc_eq_add_ri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void bc_eq_add_lri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r, const matrix &i)
 
void bc_bot1_add_d (int iblock, const char *eqn, const char *varn, const matrix &d)
 
void bc_bot1_add_l (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l)
 
void bc_bot1_add_r (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void bc_bot1_add_lr (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r)
 
void bc_bot1_add_li (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &i)
 
void bc_bot1_add_ri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void bc_bot1_add_lri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r, const matrix &i)
 
void bc_bot2_add_d (int iblock, const char *eqn, const char *varn, const matrix &d)
 
void bc_bot2_add_l (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l)
 
void bc_bot2_add_r (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void bc_bot2_add_lr (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r)
 
void bc_bot2_add_li (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &i)
 
void bc_bot2_add_ri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void bc_bot2_add_lri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r, const matrix &i)
 
void bc_top1_add_d (int iblock, const char *eqn, const char *varn, const matrix &d)
 
void bc_top1_add_l (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l)
 
void bc_top1_add_r (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void bc_top1_add_lr (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r)
 
void bc_top1_add_li (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &i)
 
void bc_top1_add_ri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void bc_top1_add_lri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r, const matrix &i)
 
void bc_top2_add_d (int iblock, const char *eqn, const char *varn, const matrix &d)
 
void bc_top2_add_l (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l)
 
void bc_top2_add_r (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r)
 
void bc_top2_add_lr (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r)
 
void bc_top2_add_li (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &i)
 
void bc_top2_add_ri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &r, const matrix &i)
 
void bc_top2_add_lri (int iblock, const char *eqn, const char *varn, const matrix &d, const matrix &l, const matrix &r, const matrix &i)
 

Public Attributes

int use_cgs
 
int maxit_ref
 
int maxit_cgs
 
int verbose
 
int debug
 
double rel_tol
 
double abs_tol
 
void(* mult_fcn )(matrix *, void *context)
 
void * mult_context
 

Private Member Functions

void mult_op (matrix *)
 
int cgs (const matrix &rhs, matrix &x, int maxit)
 
void create ()
 Creates the solver solver operator depending on the type of solver configured (defined when calling solver::init). More...
 
void create_full ()
 Creates a solver operator of type "full". More...
 
void wrap (const matrix *, matrix *)
 Stores distributed (ie. split into several blocks) matrix y into the single vector x. More...
 
void unwrap (const matrix *, matrix *)
 Performs the inverse operation of the wrap function: restore the single vector x into the blocked vector y. More...
 
void fill_void_blocks ()
 
int check_struct ()
 
void check_struct_error (const char *err_msg, int n, int i, int j, solver_elem *p)
 
int check_struct_block (int n, int i, int j)
 
int check_struct_bc_th (int n, int i, int j, const char *bctype)
 
int check_struct_bc (int n, int i, int j, const char *bctype)
 
void check_full (int n, const matrix &opi, int pos)
 
void subst_dep ()
 Substitutes dependent variables defined in the solver. More...
 
void subst_dep_eq (const char *block_type, solver_block *, int n, int i, int j)
 
void subst_dep_elem (int i, int k, solver_block *bb, solver_elem *p, const matrix &d, int n2, int m2)
 
void solve_dep ()
 Solves dependent variables: compute in the sol field the values of dependent variables (have to be called after solver::solve). More...
 

Private Attributes

int nb
 Number of blocks defined in the problem. More...
 
int nv
 Number of variables of the problem. More...
 
int ** var_nr
 var_nr[i][j] is the radial resolution of the j-th variable in the i-th equation More...
 
int ** var_nth
 var_nr[i][j] is the azimuthal resolution of the j-th variable in the i-th equation More...
 
int ** var_ntop
 var_ntop[i][j] is the resolution of the i-th top boundary condition on the j-th variable More...
 
int ** var_nbot
 var_nbot[i][j] is the resolution of the i-th bottom boundary condition on the j-th variable More...
 
int solver_N
 
int * def_nr
 def_nr[i] is the number of radial points in the i-th block More...
 
char type [21]
 
char ** var
 
int initd
 
int sync
 
matrix dep
 
matrix reg
 
solver_operatorop
 
solver_blockblock
 
solver_blockbc_bot1
 
solver_blockbc_bot2
 
solver_blockbc_top1
 
solver_blockbc_top2
 
solver_blockbc_pol
 
solver_blockbc_eq
 
matrixrhs
 
matrixsol
 

Detailed Description

A solver object stores a system of equation to solve.

A solver_elem object contains all the equations for a given block. A block refers to one domain or to one set of boundary conditions.

Constructor & Destructor Documentation

solver::solver ( )
solver::~solver ( )
inline

Here is the call graph for this function:

Member Function Documentation

void solver::add ( int  iblock,
const char *  eqn,
const char *  varn,
const char *  block_type,
char  type,
const matrix d,
const matrix l,
const matrix r,
const matrix i 
)

Here is the call graph for this function:

void solver::add ( const char *  eqn,
const char *  varn,
const char *  block_type,
char  type,
const matrix d,
const matrix_block_diag l,
const matrix r,
const matrix i 
)

Here is the call graph for this function:

void solver::add_d ( const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::add_d ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::add_l ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l 
)
inline

Here is the call graph for this function:

void solver::add_l ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l 
)
inline

Here is the call graph for this function:

void solver::add_li ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::add_li ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::add_lr ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::add_lr ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::add_lri ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::add_lri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::add_r ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::add_r ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::add_ri ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::add_ri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_bot1_add_d ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::bc_bot1_add_l ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l 
)
inline

Here is the call graph for this function:

void solver::bc_bot1_add_li ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_bot1_add_lr ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_bot1_add_lri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_bot1_add_r ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_bot1_add_ri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_bot2_add_d ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::bc_bot2_add_l ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l 
)
inline

Here is the call graph for this function:

void solver::bc_bot2_add_li ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_bot2_add_lr ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_bot2_add_lri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_bot2_add_r ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_bot2_add_ri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_d ( const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_d ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_l ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_l ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_li ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_li ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_lr ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_lr ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_lri ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_lri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_r ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_r ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_ri ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_eq_add_ri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_d ( const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_d ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_l ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_l ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_li ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_li ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_lr ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_lr ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_lri ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix_block_diag l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_lri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_r ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_r ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_ri ( const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_pol_add_ri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_top1_add_d ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::bc_top1_add_l ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l 
)
inline

Here is the call graph for this function:

void solver::bc_top1_add_li ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_top1_add_lr ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_top1_add_lri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_top1_add_r ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_top1_add_ri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_top2_add_d ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d 
)
inline

Here is the call graph for this function:

void solver::bc_top2_add_l ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l 
)
inline

Here is the call graph for this function:

void solver::bc_top2_add_li ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_top2_add_lr ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_top2_add_lri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix l,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

void solver::bc_top2_add_r ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r 
)
inline

Here is the call graph for this function:

void solver::bc_top2_add_ri ( int  iblock,
const char *  eqn,
const char *  varn,
const matrix d,
const matrix r,
const matrix i 
)
inline

Here is the call graph for this function:

int solver::cgs ( const matrix rhs,
matrix x,
int  maxit 
)
private

Here is the call graph for this function:

void solver::check_full ( int  n,
const matrix opi,
int  pos 
)
private

Here is the call graph for this function:

int solver::check_struct ( )
private

Here is the call graph for this function:

int solver::check_struct_bc ( int  n,
int  i,
int  j,
const char *  bctype 
)
private

Here is the call graph for this function:

int solver::check_struct_bc_th ( int  n,
int  i,
int  j,
const char *  bctype 
)
private

Here is the call graph for this function:

int solver::check_struct_block ( int  n,
int  i,
int  j 
)
private

Here is the call graph for this function:

void solver::check_struct_error ( const char *  err_msg,
int  n,
int  i,
int  j,
solver_elem p 
)
private
void solver::create ( )
private

Creates the solver solver operator depending on the type of solver configured (defined when calling solver::init).

Here is the call graph for this function:

void solver::create_full ( )
private

Creates a solver operator of type "full".

Stores all equation's terms defined in the fields block, bc_bot1, bc_bot2, bc_top1, bc_top2, bc_pol and bc_eq into the solver operator op.

Here is the call graph for this function:

void solver::destroy ( )

Here is the call graph for this function:

void solver::fill_void_blocks ( )
private

Here is the call graph for this function:

int solver::get_id ( const char *  varn)
int solver::get_nblocks ( )
int solver::get_nvar ( )
matrix solver::get_rhs ( const char *  eqn)

Here is the call graph for this function:

matrix solver::get_rhs ( int  ieq)
matrix solver::get_var ( const char *  varn)

Here is the call graph for this function:

matrix solver::get_var ( int  ivar)
matrix_map solver::get_vars ( )
void solver::init ( int  nblock,
int  nvar,
const char *  solver_type 
)

Initialize the solver object for nblock blocks, nvar variables, using a solver operator of type solver_type (either "full", "full-oc" or "iter").

Here is the call graph for this function:

void solver::mult ( matrix y)

Here is the call graph for this function:

void solver::mult_op ( matrix y)
private

Here is the call graph for this function:

void solver::regvar ( const char *  var_name,
int  dependent = 0 
)
void solver::regvar_dep ( const char *  var_name)
inline

Here is the call graph for this function:

void solver::reset ( )
void solver::reset ( int  iblock)

Here is the call graph for this function:

void solver::reset ( int  iblock,
int  ieq 
)

Here is the call graph for this function:

void solver::reset ( int  iblock,
const char *  eq_name 
)

Here is the call graph for this function:

void solver::reset ( const char *  eq_name)

Here is the call graph for this function:

void solver::set_nr ( int *  nr)
void solver::set_rhs ( const char *  eqn,
const matrix b 
)

Here is the call graph for this function:

void solver::solve ( int *  info = NULL)

Solves the set of equations stored in the operator object.

Here is the call graph for this function:

void solver::solve_dep ( )
private

Solves dependent variables: compute in the sol field the values of dependent variables (have to be called after solver::solve).

Here is the call graph for this function:

void solver::subst_dep ( )
private

Substitutes dependent variables defined in the solver.

Dependent variables are defined as an expression of other variables of the problem. This function is responsible for replacing these dependent variables with their expression.

Here is the call graph for this function:

void solver::subst_dep_elem ( int  i,
int  k,
solver_block bb,
solver_elem p,
const matrix d,
int  n2,
int  m2 
)
private

Here is the call graph for this function:

void solver::subst_dep_eq ( const char *  block_type,
solver_block bb,
int  n,
int  i,
int  j 
)
private

Here is the call graph for this function:

void solver::unwrap ( const matrix x,
matrix y 
)
private

Performs the inverse operation of the wrap function: restore the single vector x into the blocked vector y.

Here is the call graph for this function:

void solver::wrap ( const matrix y,
matrix x 
)
private

Stores distributed (ie. split into several blocks) matrix y into the single vector x.

Here is the call graph for this function:

Member Data Documentation

double solver::abs_tol
solver_block* solver::bc_bot1
private
solver_block* solver::bc_bot2
private
solver_block* solver::bc_eq
private
solver_block* solver::bc_pol
private
solver_block* solver::bc_top1
private
solver_block* solver::bc_top2
private
solver_block* solver::block
private
int solver::debug
int* solver::def_nr
private

def_nr[i] is the number of radial points in the i-th block

matrix solver::dep
private
int solver::initd
private
int solver::maxit_cgs
int solver::maxit_ref
void* solver::mult_context
void(* solver::mult_fcn)(matrix *, void *context)
int solver::nb
private

Number of blocks defined in the problem.

int solver::nv
private

Number of variables of the problem.

solver_operator* solver::op
private
matrix solver::reg
private
double solver::rel_tol
matrix* solver::rhs
private
matrix * solver::sol
private
int solver::solver_N
private
int solver::sync
private
char solver::type[21]
private
int solver::use_cgs
char ** solver::var
private
int** solver::var_nbot
private

var_nbot[i][j] is the resolution of the i-th bottom boundary condition on the j-th variable

int** solver::var_nr
private

var_nr[i][j] is the radial resolution of the j-th variable in the i-th equation

int** solver::var_nth
private

var_nr[i][j] is the azimuthal resolution of the j-th variable in the i-th equation

int** solver::var_ntop
private

var_ntop[i][j] is the resolution of the i-th top boundary condition on the j-th variable

int solver::verbose

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