00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #if !defined(DD_RECT_HPP)
00014 #define DD_RECT_HPP
00015 #include "gtypes.h"
00016 #include "point.hpp"
00017
00018 class DD_Rect
00019 {
00020 public:
00021 DD_Rect();
00022 DD_Rect(GFLOAT *X0, GFLOAT *X1, GINT n);
00023
00024 ~DD_Rect();
00025 GBOOL DoPart();
00026 void SetDomain(GFLOAT *X0, GFLOAT *X1, GINT n);
00027 void SetPartSize(GINT Nx, GINT Ny, GINT Nz=0);
00028 void SetElemDescretization(GLONG Nx, GLONG Ny, GLONG Nz=0);
00029 GBOOL SetBoundaryCond(GFLOAT *P0, GFLOAT *P1, GINT n, BDYTYPE btype);
00030 GBOOL SetCorners(GINT n, BDYTYPE btype);
00031 GBOOL ResetPeriodic();
00032 GINT NumVertices() ;
00033 GINT **GetNeighborList();
00034 GINT *GetNeighborNum();
00035 GLONG **GetNodeIDs();
00036 GLONG *GetNodeNum();
00037 GLONG GetNodeDynRange();
00038 GFLOAT *GetGraphVertexCoords(GINT idir);
00039 void **GetDualVertexCoords ();
00040 GLONG **GetBdyNodeIndices();
00041 GLONG *GetBdyNodeNum();
00042 BDYTYPE **GetBdyCond();
00043 GINT **GetbBdy();
00044 Point3D *GetDomainVertices();
00045 GINT GetNumDomainVertices();
00046
00047
00048 private:
00049
00050 GBOOL DoPart1D();
00051 GBOOL DoPart2D();
00052 GBOOL DoPart3D();
00053 void DoPeriodic(GINT idir, GBOOL bval);
00054 void DeleteDynamic();
00055 GBOOL CreateDynamic();
00056 GBOOL Set1dBdyCond(GFLOAT *P0, GFLOAT *P1, GINT n, BDYTYPE btype);
00057 GBOOL Set2dBdyCond(GFLOAT *P0, GFLOAT *P1, GINT n, BDYTYPE btype);
00058 GBOOL Set3dBdyCond(GFLOAT *P0, GFLOAT *P1, GINT n, BDYTYPE btype);
00059 GBOOL bCornerNode(GINT node, GINT &ivertex);
00060
00061
00062 GBOOL bPartitioned;
00063 GBOOL bPeriodic[3];
00064 GINT nd;
00065 GINT nv;
00066 GINT NE[3];
00067 GLONG NN[3];
00068 GLONG node_dyn_range;
00069 GFLOAT P0[3];
00070 GFLOAT P1[3];
00071 GINT **neighbors;
00072 GINT *nne;
00073 GLONG *nno;
00074 GLONG *bnno;
00075 GLONG **node_ids;
00076 GLONG **bdy_node_indices;
00077 GLONG **bdy_ids;
00078 GINT ncorner_ids;
00079 GLONG *lcorner_ids;
00080 GLONG *gcorner_ids;
00081 GINT *ivert;
00082 BDYTYPE **bcs;
00083 GINT **bdyn;
00084 GFLOAT **graph_coords;
00085 GFLOAT **dual_coords1 ;
00086 Point3D **dual_coords2 ;
00087 Point3D **dual_coords3 ;
00088 Point3D *pV;
00089
00090 };
00091
00092 #endif