Actual source code: taois_petsc.h
1: #ifndef TAOPETSCIS_H
2: #define TAOPETSCIS_H
4: #include taois.h
5: #include "petscmat.h"
7: #include ../include/taopetsc.h
9: class TaoIndexSetPetsc: public TaoIndexSet{
11: protected:
13: IS isp; /* The underlying IS repesentation of the IndexSet */
14: Vec VSpace; /* Instance of a vector from the full space that the IS describes */
15: int nlocal; /* Local size of VSpace */
16: int *iptr; /* Work array of length nlocal */
18: IS ispComplement; /* Complement of isp */
20: IS isp2; /* Parallel redistribution of isp */
21: TaoPetscISType reducedtype; /* Mask full space or use reduced data structures */
22: IS ISGathered; /* All of isp collected onto each matrix */
23: VecScatter scatter; /* Scatter from full space to reduced space */
25: PetscViewer ispviewer; /* View the IS */
27: int SetUp(Vec, IS);
28: int clearit();
30: public:
32: TaoIndexSetPetsc(Vec, IS SS);
33: TaoIndexSetPetsc(Vec);
35: ~TaoIndexSetPetsc();
37: /* Special to TaoIndexSetPetsc */
38: int SetIS(IS);
39: inline IS GetIS(){return isp;}
41: int GetReducedType(TaoPetscISType *);
42: int GetWholeIS(IS*);
43: int RedistributeIS(IS*);
44: int GetReducedVecScatter(Vec,Vec,VecScatter*);
46: int GetMask(Vec *);
47: int GetComplementIS(IS*);
49: /* These virtual methods of the TaoIndexSet are defined */
50: int UnionOf(TaoIndexSet *, TaoIndexSet*);
51: int IntersectionOf(TaoIndexSet*, TaoIndexSet*);
52: int ComplementOf(TaoIndexSet*);
54: int Duplicate(TaoIndexSet**);
56: int IsSame(TaoIndexSet*, TaoTruth*);
58: int WhichEqual(TaoVec*,TaoVec*);
60: int WhichLessThan(TaoVec*,TaoVec*);
62: int WhichGreaterThan(TaoVec*,TaoVec*);
64: int WhichBetween(TaoVec*,TaoVec*,TaoVec*);
66: int WhichBetweenOrEqual(TaoVec *, TaoVec *, TaoVec *);
68: int GetSize(int *);
70: int View();
72: };
74: int ISCreateComplement(IS, Vec, IS *);
75: int MatCreateSubMatrixFree(Mat,IS,IS,Mat *);
76: int VecISSetToConstant(IS, PetscScalar, Vec);
78: #endif