00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(GPARTITIONER_HPP)
00012 #define GPARTITIONER_HPP
00013
00014 #include "gtypes.h"
00015 #include <iostream.h>
00016 #include <stdlib.h>
00017 #include "gelemlist.hpp"
00018 #include "gelemindex.hpp"
00019 #include "gfieldlist.hpp"
00020 #include "gcomm.hpp"
00021 #include "gtlist.hpp"
00022 #include "gobjlist.hpp"
00023 #include "gobjbuffer.hpp"
00024 #include "gpobjbuffer.hpp"
00025 #include "gpartmapper.hpp"
00026
00027
00028 class GPartitioner
00029 {
00030 public:
00031 GPartitioner(GElemList *gelemsv, GFieldList **gfieldsv, GINT nfieldsv);
00032 ~GPartitioner();
00033
00034 GBOOL Init(stGPartitionMap pm[], GINT nmax);
00035 GBOOL SetBasisPools(pGLLBuffer *vbasis, GIBuffer *szvbasis,
00036 pGLBuffer *pbasis, GIBuffer *szpbasis);
00037 GBOOL SetFieldGroup(GElemList *gelems, GFieldList **gfields, GINT nfields);
00038
00039 GBOOL DoPartition();
00040
00041 private:
00042
00043 GBOOL PostReceives();
00044 GBOOL WaitOnRecvs();
00045 GBOOL SendData ();
00046 GBOOL Pack(GDOUBLE *cdata, GINT ndata, GINT field_index[], GINT nflds);
00047
00048 GBOOL Unpack(GDOUBLE *cdata, GINT ndata);
00049 GBOOL Unpack();
00050 GBOOL CleanFieldLists();
00051 GBOOL CreateSendRecvBuffs();
00052
00053
00054 GSHORT nprocs_;
00055 GSHORT this_rank_;
00056 GBOOL bInitialized_;
00057 GBOOL bdelete_partmap_;
00058 GINT nfieldsv_;
00059 GINT nfieldsp_;
00060 GINT npartmax_;
00061 GINT maxvnodes_;
00062 GINT maxpnodes_;
00063 GINT maxedges_;
00064 GINT maxfaces_;
00065 GINT maxverts_;
00066 GINT maxnto_;
00067 GINT maxlevels_;
00068 GINT nto_;
00069 GINT nfrom_;
00070 GINT lbuff_;
00071 GDBuffer sendbuff_;
00072 GDBuffer *recvbuff_;
00073 GIBuffer index_to_;
00074 GIBuffer *szbasisv_;
00075 GIBuffer *szbasisp_;
00076 GSBuffer iproc_to_;
00077 GSBuffer iproc_from_;
00078 CHBuffer rhandle_;
00079 pGLLBuffer *gbasisv_;
00080 pGLBuffer *gbasisp_;
00081 GElemList *gelemsv_;
00082 GElemList *gelemsp_;
00083 GFieldList **gfieldsv_;
00084 GFieldList **gfieldsp_;
00085 stGPartitionMap *partmap_;
00086 GFGList fieldgroups_;
00087
00088 };
00089
00090 #endif