1 /* 2 * xSize = total number of grids(includ boundary) 3 * 0..nb-1 and xSize-(nb-1)..xsize = boundary 4 * nb to xSize-nb = interior 5 */ 6 #ifndef __GABEDIT_DOMAINMG_H__ 7 #define __GABEDIT_DOMAINMG_H__ 8 #include "TypesMG.h" 9 typedef struct _DomainMG DomainMG; 10 struct _DomainMG 11 { 12 gint xSize; 13 gint ySize; 14 gint zSize; 15 gint size; 16 gdouble xLength; 17 gdouble yLength; 18 gdouble zLength; 19 gdouble diag; 20 gdouble cc; 21 gdouble fLaplacinaX[MAXBOUNDARY+1]; 22 gdouble fLaplacinaY[MAXBOUNDARY+1]; 23 gdouble fLaplacinaZ[MAXBOUNDARY+1]; 24 25 gdouble fGradientX[MAXBOUNDARY]; 26 gdouble fGradientY[MAXBOUNDARY]; 27 gdouble fGradientZ[MAXBOUNDARY]; 28 gdouble x0; 29 gdouble y0; 30 gdouble z0; 31 gdouble xh; 32 gdouble yh; 33 gdouble zh; 34 gdouble cellVolume; 35 gint maxLevel; 36 37 LaplacianOrderMG laplacianOrder; 38 gint nBoundary; 39 glong incx; 40 gint incy; 41 gint incz; 42 gint nShift; 43 44 gint iXBeginBoundaryLeft; 45 gint iXEndBoundaryLeft; 46 gint iXBeginBoundaryRight; 47 gint iXEndBoundaryRight; 48 49 gint iYBeginBoundaryLeft; 50 gint iYEndBoundaryLeft; 51 gint iYBeginBoundaryRight; 52 gint iYEndBoundaryRight; 53 54 gint iZBeginBoundaryLeft; 55 gint iZEndBoundaryLeft; 56 gint iZBeginBoundaryRight; 57 gint iZEndBoundaryRight; 58 59 gint iXBeginInterior; 60 gint iXEndInterior; 61 62 gint iYBeginInterior; 63 gint iYEndInterior; 64 65 gint iZBeginInterior; 66 gint iZEndInterior; 67 68 }; 69 /* Method of DomainMG struct */ 70 void printDomain(DomainMG*g); 71 gboolean ifEqualDomainMG(DomainMG*g, DomainMG* right); 72 gint getMaxLevelDomainMG1(DomainMG*, gint size); 73 void setMaxLevelDomainMG(DomainMG*); 74 void setParametersDomainMG(DomainMG*); 75 void setCoefsLaplacianDomainMG(DomainMG*); 76 void setCoefsGradientDomainMG(DomainMG*); 77 void destroyDomainMG(DomainMG*); 78 void setLaplacianOrderDomainMG(DomainMG*, const LaplacianOrderMG); 79 void levelUpDomainMG(DomainMG*); 80 void levelDownDomainMG(DomainMG*); 81 DomainMG getDomainMG(gint, gint, gint, gdouble, gdouble, gdouble, gdouble, gdouble, gdouble, LaplacianOrderMG); 82 DomainMG getNullDomainMG(); 83 #endif /* __GABEDIT_DOMAINMG_H__ */ 84