00001 #ifndef __FE_VEC_H_
00002 #define __FE_VEC_H_
00003
00004 #include "petscda.h"
00005 #include "oda.h"
00006
00007 namespace ot {
00008 namespace fem {
00009
00010 class feVec {
00011 public:
00013 enum daType {
00014 PETSC, OCT
00015 };
00016
00018 feVec() { };
00019 feVec(daType da) {
00020 #ifdef __DEBUG__
00021 assert ( ( da == PETSC ) || ( da == OCT ) );
00022 #endif
00023 m_daType = da;
00024
00025
00026 }
00027 ~feVec() {
00028
00029 }
00030
00031 void setDA (_p_DA* da) { m_DA = da; }
00032 void setDA (ot::DA* da) { m_octDA = da; }
00033
00034 _p_DA* getDA() { return m_DA; }
00035 ot::DA* getOctDA() { return m_octDA; }
00036
00037
00038 virtual bool addVec(Vec _in, double scale=1.0, int indx = -1) = 0;
00039 virtual bool computeVec(Vec _in, Vec _out,double scale=1.0) = 0;
00040
00041 void setProblemDimensions(double x, double y, double z) {
00042 m_dLx = x;
00043 m_dLy = y;
00044 m_dLz = z;
00045 }
00046 protected:
00047
00048 daType m_daType;
00049
00050 _p_DA* m_DA;
00051 ot::DA* m_octDA;
00053 double m_dLx;
00054 double m_dLy;
00055 double m_dLz;
00056 int m_iCurrentDynamicIndex;
00057 };
00058
00059 }
00060 }
00061 #endif
00062