Ice Sheet System Model  4.18
Code documentation
Public Member Functions | Private Attributes
Solver< doubletype > Class Template Reference

#include <Solver.h>

Public Member Functions

 Solver ()
 
 Solver (Matrix< doubletype > *Kff_in, Vector< doubletype > *pf_in, Vector< doubletype > *uf0_in, Vector< doubletype > *df_in, Parameters *parameters_in)
 
 ~Solver ()
 
Vector< doubletype > * Solve (void)
 

Private Attributes

Matrix< doubletype > * Kff
 
Vector< doubletype > * pf
 
Vector< doubletype > * uf0
 
Vector< doubletype > * df
 
Parametersparameters
 

Detailed Description

template<class doubletype>
class Solver< doubletype >

Definition at line 20 of file Solver.h.

Constructor & Destructor Documentation

◆ Solver() [1/2]

template<class doubletype >
Solver< doubletype >::Solver ( )
inline

Definition at line 31 of file Solver.h.

31  {/*{{{*/
32  }

◆ Solver() [2/2]

template<class doubletype >
Solver< doubletype >::Solver ( Matrix< doubletype > *  Kff_in,
Vector< doubletype > *  pf_in,
Vector< doubletype > *  uf0_in,
Vector< doubletype > *  df_in,
Parameters parameters_in 
)
inline

Definition at line 34 of file Solver.h.

34  {/*{{{*/
35 
36  /*In debugging mode, check that stiffness matrix and load vectors are not NULL (they can be empty)*/
37  _assert_(Kff_in);
38  _assert_(pf_in);
39 
40  /*initialize fields: */
41  this->Kff=Kff_in;
42  this->pf=pf_in;
43  this->uf0=uf0_in;
44  this->df=df_in;
45  this->parameters=parameters_in;
46  }

◆ ~Solver()

template<class doubletype >
Solver< doubletype >::~Solver ( )
inline

Definition at line 48 of file Solver.h.

48  {/*{{{*/
49  }

Member Function Documentation

◆ Solve()

template<class doubletype >
Vector<doubletype>* Solver< doubletype >::Solve ( void  )
inline

Definition at line 53 of file Solver.h.

53  { /*{{{*/
54 
55  /*output: */
56  Vector<doubletype>* uf=NULL;
57 
58  /*Initialize vector: */
59  uf=new Vector<doubletype>();
60 
61  /*According to matrix type, use specific solvers: */
62  switch(Kff->type){
63  #ifdef _HAVE_PETSC_
64  case PetscMatType:{
65  PetscVec* uf0_vector = NULL;
66  PetscVec* df_vector = NULL;
67  if(uf0) uf0_vector = uf0->pvector;
68  if(df) df_vector = df->pvector;
69  PetscSolve(&uf->pvector,Kff->pmatrix,pf->pvector,uf0_vector,df_vector,parameters);
70  break;
71  }
72  #endif
73  case IssmMatType:{
74  IssmSolve(&uf->ivector,Kff->imatrix,pf->ivector,parameters);
75  break;
76  }
77  default:
78  _error_("Matrix type: " << Kff->type << " not supported yet!");
79  }
80 
81  /*allocate output pointer: */
82  return uf;
83  }

Field Documentation

◆ Kff

template<class doubletype >
Matrix<doubletype>* Solver< doubletype >::Kff
private

Definition at line 23 of file Solver.h.

◆ pf

template<class doubletype >
Vector<doubletype>* Solver< doubletype >::pf
private

Definition at line 24 of file Solver.h.

◆ uf0

template<class doubletype >
Vector<doubletype>* Solver< doubletype >::uf0
private

Definition at line 25 of file Solver.h.

◆ df

template<class doubletype >
Vector<doubletype>* Solver< doubletype >::df
private

Definition at line 26 of file Solver.h.

◆ parameters

template<class doubletype >
Parameters* Solver< doubletype >::parameters
private

Definition at line 27 of file Solver.h.


The documentation for this class was generated from the following file:
_assert_
#define _assert_(ignore)
Definition: exceptions.h:37
Solver::Kff
Matrix< doubletype > * Kff
Definition: Solver.h:23
PetscSolve
void PetscSolve(PetscVec **puf, PetscMat *Kff, PetscVec *pf, PetscVec *uf0, PetscVec *df, Parameters *parameters)
Definition: PetscSolver.cpp:19
Solver::uf0
Vector< doubletype > * uf0
Definition: Solver.h:25
IssmMatType
@ IssmMatType
Definition: Matrix.h:22
Solver::df
Vector< doubletype > * df
Definition: Solver.h:26
Solver::parameters
Parameters * parameters
Definition: Solver.h:27
Solver::pf
Vector< doubletype > * pf
Definition: Solver.h:24
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
Vector::ivector
IssmVec< doubletype > * ivector
Definition: Vector.h:33
IssmSolve
void IssmSolve(IssmVec< IssmDouble > **pout, IssmMat< IssmDouble > *Kff, IssmVec< IssmDouble > *pf, Parameters *parameters)
Definition: IssmSolver.cpp:15
PetscVec
Definition: PetscVec.h:22
Vector
Definition: Vector.h:25
PetscMatType
@ PetscMatType
Definition: Matrix.h:22