Ice Sheet System Model  4.18
Code documentation
IssmAbsVec.h
Go to the documentation of this file.
1 
10 #ifndef _ISSM_ABS_VEC_H_
11 #define _ISSM_ABS_VEC_H_
12 
13 /*Headers:*/
14 #include "../toolkitsenums.h"
15 #include "../../shared/Numerics/types.h"
16 
17 /*We need to template this class, in case we want to create Vectors that hold
18  IssmDouble* vector or IssmPDouble* vector.
19  Such vectors are useful for use without or with the matlab or python
20  interface (which do not care for IssmDouble types, but only rely on
21  IssmPDouble types)
22 */
23 template <class doubletype>
24 class IssmAbsVec{
25 
26  public:
27 
28  /*IssmAbsVec constructors, destructors*/
29  virtual ~IssmAbsVec(){};
30 
31  /*IssmAbsVec specific routines*/
32  virtual void Echo(void)=0;
33  virtual void Assemble(void)=0;
34  virtual void SetValues(int ssize, int* list, doubletype* values, InsMode mode)=0;
35  virtual void SetValue(int dof, doubletype value, InsMode mode)=0;
36  virtual void GetValue(doubletype* pvalue,int dof)=0;
37  virtual void GetSize(int* pM)=0;
38  virtual void GetLocalSize(int* pM)=0;
39  virtual void GetLocalVector(doubletype** pvector,int** pindices)=0;
41  virtual void Set(doubletype value)=0;
42  virtual void AXPY(IssmAbsVec* X, doubletype a)=0;
43  virtual void AYPX(IssmAbsVec* X, doubletype a)=0;
44  virtual doubletype* ToMPISerial(void)=0;
45  virtual doubletype* ToMPISerial0(void)=0;
46  virtual void Shift(doubletype shift)=0;
47  virtual void Copy(IssmAbsVec* to)=0;
48  virtual doubletype Norm(NormMode mode)=0;
49  virtual void Scale(doubletype scale_factor)=0;
50  virtual doubletype Dot(IssmAbsVec* input)=0;
51  virtual void PointwiseDivide(IssmAbsVec* x,IssmAbsVec* y)=0;
52 };
53 
54 #endif //#ifndef _ISSM_ABS_VEC_H_
IssmAbsVec::ToMPISerial0
virtual doubletype * ToMPISerial0(void)=0
IssmAbsVec::PointwiseDivide
virtual void PointwiseDivide(IssmAbsVec *x, IssmAbsVec *y)=0
IssmAbsVec::Echo
virtual void Echo(void)=0
IssmAbsVec::Norm
virtual doubletype Norm(NormMode mode)=0
IssmAbsVec::GetSize
virtual void GetSize(int *pM)=0
IssmAbsVec::GetLocalSize
virtual void GetLocalSize(int *pM)=0
IssmAbsVec::Shift
virtual void Shift(doubletype shift)=0
IssmAbsVec::ToMPISerial
virtual doubletype * ToMPISerial(void)=0
IssmAbsVec::GetLocalVector
virtual void GetLocalVector(doubletype **pvector, int **pindices)=0
IssmAbsVec
Definition: IssmAbsVec.h:24
IssmAbsVec::Assemble
virtual void Assemble(void)=0
IssmAbsVec::AXPY
virtual void AXPY(IssmAbsVec *X, doubletype a)=0
NormMode
NormMode
Definition: toolkitsenums.h:15
IssmAbsVec::Dot
virtual doubletype Dot(IssmAbsVec *input)=0
IssmAbsVec::~IssmAbsVec
virtual ~IssmAbsVec()
Definition: IssmAbsVec.h:29
IssmAbsVec::Duplicate
virtual IssmAbsVec< doubletype > * Duplicate(void)=0
IssmAbsVec::Scale
virtual void Scale(doubletype scale_factor)=0
IssmAbsVec::Copy
virtual void Copy(IssmAbsVec *to)=0
InsMode
InsMode
Definition: toolkitsenums.h:14
IssmAbsVec::AYPX
virtual void AYPX(IssmAbsVec *X, doubletype a)=0
IssmAbsVec::SetValues
virtual void SetValues(int ssize, int *list, doubletype *values, InsMode mode)=0
IssmAbsVec::SetValue
virtual void SetValue(int dof, doubletype value, InsMode mode)=0
IssmAbsVec::Set
virtual void Set(doubletype value)=0
IssmAbsVec::GetValue
virtual void GetValue(doubletype *pvalue, int dof)=0