Memosa-FVM  0.2
ArrayBase.h
Go to the documentation of this file.
1 // This file os part of FVM
2 // Copyright (c) 2012 FVM Authors
3 // See LICENSE file for terms.
4 
5 #ifndef _ARRAYBASE_H_
6 #define _ARRAYBASE_H_
7 
8 #include "NumType.h"
9 
10 #include "IContainer.h"
11 
12 
13 class ArrayBase : public IContainer
14 {
15 public:
16 
17  ArrayBase() {}
18  virtual ~ArrayBase() {}
19 
20  virtual shared_ptr<ArrayBase>
21  createOffsetArray(const int offset, const int size) =0;
22 
23  virtual void
24  correct(const IContainer& coarseI, const IContainer& coarseIndexI,
25  const IContainer* scaleI,
26  const int length)=0;
27 
28  virtual void
29  inject(IContainer& coarseI, const IContainer& coarseIndexI,
30  const int length) const=0;
31 
32  virtual void
33  scatter(ArrayBase& other_, const ArrayBase& indices, const int offset=0) const=0;
34 
35  virtual void
36  gather(const ArrayBase& other_, const ArrayBase& indices, const int offset=0) = 0;
37 
38  virtual void
39  setSubsetFromSubset(const ArrayBase& other, const ArrayBase& fromIndices,
40  const ArrayBase& toIndices) = 0;
41 
42  virtual void copyPartial(const IContainer& oc,
43  const int iBeg, const int iEnd) =0;
44  virtual void zeroPartial(const int iBeg, const int iEnd) =0;
45 
46  virtual shared_ptr<ArrayBase> newSizedClone(const int size) const = 0;
47 
48  virtual void copyFrom(const IContainer& a) =0;
49  virtual ArrayBase& operator+=(const ArrayBase& a) =0;
50  virtual ArrayBase& operator-=(const ArrayBase& a) =0;
51  virtual ArrayBase& operator/=(const ArrayBase& a) =0;
52  virtual ArrayBase& operator*=(const ArrayBase& a) =0;
53 
54  virtual shared_ptr<ArrayBase> operator-() const {throw;}
55  virtual void limit(const double min, const double max) {throw;}
56 
57  virtual ArrayBase& safeDivide(const ArrayBase& a) =0;
58  virtual ArrayBase& normalize(const ArrayBase& a) =0;
59 
60  virtual bool operator<(const double tolerance) const=0;
61  // set self's value to be a's value if the latter is higher. used
62  // for residuals
63  virtual void setMax(const ArrayBase& a) =0;
64 
65  virtual void print(ostream& os) const = 0;
66 
67  virtual ArrayBase& saxpy(const ArrayBase& alphabase,
68  const ArrayBase& xbase) = 0;
69  virtual ArrayBase& msaxpy(const ArrayBase& alphabase,
70  const ArrayBase& xbase) = 0;
71 
72  virtual shared_ptr<ArrayBase> getOneNorm(const int lengthToUse) const=0;
73  virtual shared_ptr<ArrayBase> dotWith(const ArrayBase& a,
74  const int lengthToUse) const=0;
75  virtual shared_ptr<ArrayBase> reduceSum() const=0;
76  virtual void setSum(const ArrayBase& sumBase) = 0;
77 
78  virtual int getDimension() const =0;
79  virtual void getShape(int *shape) const = 0;
80  virtual void *getData() const = 0;
81  virtual int getDataSize() const =0;
82  virtual int getLength() const =0;
83  virtual PrimType getPrimType() const = 0;
84 
85 };
86 
87 #endif
virtual int getDataSize() const =0
virtual shared_ptr< ArrayBase > createOffsetArray(const int offset, const int size)=0
virtual void setSubsetFromSubset(const ArrayBase &other, const ArrayBase &fromIndices, const ArrayBase &toIndices)=0
virtual ArrayBase & operator-=(const ArrayBase &a)=0
virtual int getLength() const =0
virtual void scatter(ArrayBase &other_, const ArrayBase &indices, const int offset=0) const =0
virtual ArrayBase & msaxpy(const ArrayBase &alphabase, const ArrayBase &xbase)=0
virtual PrimType getPrimType() const =0
virtual void copyPartial(const IContainer &oc, const int iBeg, const int iEnd)=0
virtual void limit(const double min, const double max)
Definition: ArrayBase.h:55
virtual void correct(const IContainer &coarseI, const IContainer &coarseIndexI, const IContainer *scaleI, const int length)=0
virtual ~ArrayBase()
Definition: ArrayBase.h:18
double max(double x, double y)
Definition: Octree.cpp:18
virtual ArrayBase & safeDivide(const ArrayBase &a)=0
virtual shared_ptr< ArrayBase > getOneNorm(const int lengthToUse) const =0
virtual shared_ptr< ArrayBase > dotWith(const ArrayBase &a, const int lengthToUse) const =0
virtual void zeroPartial(const int iBeg, const int iEnd)=0
virtual void setSum(const ArrayBase &sumBase)=0
virtual ArrayBase & operator/=(const ArrayBase &a)=0
virtual bool operator<(const double tolerance) const =0
virtual void setMax(const ArrayBase &a)=0
virtual ArrayBase & saxpy(const ArrayBase &alphabase, const ArrayBase &xbase)=0
virtual void getShape(int *shape) const =0
virtual ArrayBase & normalize(const ArrayBase &a)=0
virtual shared_ptr< ArrayBase > newSizedClone(const int size) const =0
ArrayBase()
Definition: ArrayBase.h:17
virtual ArrayBase & operator*=(const ArrayBase &a)=0
virtual shared_ptr< ArrayBase > reduceSum() const =0
virtual ArrayBase & operator+=(const ArrayBase &a)=0
virtual void * getData() const =0
virtual int getDimension() const =0
virtual void gather(const ArrayBase &other_, const ArrayBase &indices, const int offset=0)=0
virtual void print(ostream &os) const =0
double min(double x, double y)
Definition: Octree.cpp:23
virtual shared_ptr< ArrayBase > operator-() const
Definition: ArrayBase.h:54
virtual void copyFrom(const IContainer &a)=0
virtual void inject(IContainer &coarseI, const IContainer &coarseIndexI, const int length) const =0
PrimType
Definition: NumType.h:15