QCKimikaPartitioner.hpp

Go to the documentation of this file.
00001 //*****************************************************************************//
00002 //                                                                             //
00003 //   Copyright (c) 2001                                                        //
00004 //      INRIA                                                                  //
00005 //      54600 VILLERS LES NANCY                                                //
00006 //      France                                                                 //
00007 //                                                                             //
00008 //*****************************************************************************//
00009 //                                                                             //
00010 //               *** NOTICE OF PROPRIETARY INFORMATION ***                     //
00011 //                                                                             //
00012 // The information contained in this file is considered proprietary and the    //
00013 // exclusive property of  INRIA. This information may not be disclosed,        //
00014 // duplicated or used, in whole or in part, for  any purpose  whatsoever       //
00015 // without express written authorization from INRIA                            //
00016 //                                                                             //
00017 //*****************************************************************************//
00018 
00019 
00020 #ifndef QC_KIMIKA_PARTITIONER_H_
00021 #define QC_KIMIKA_PARTITIONER_H_
00022 
00026 #define MPIPP_H 
00027 
00028 #if defined ( LAM_MPI  )
00029 
00030 
00031 #endif
00032 //
00033 // Kimika (Scotch) includes
00034 
00035 extern "C" { 
00036 #include "common.h"
00037 #include "atoms.h"
00038 #include "atoms_chain.h"
00039 #include "atoms_part.h"
00040 }
00041 
00042 #include <string>
00043 
00044 #include "QCPartitioner.hpp"
00045 #include "QCDistMDSystem.hpp"
00046 #include "QCDCAlgo.hpp"
00047 
00048 
00049 
00050 
00055 template <class TPSystem>
00056 class QCKimikaPartitioner :  public QCPartitioner<TPSystem> 
00057 {
00058 
00060 public:
00064   QCKimikaPartitioner (void);
00065 
00069   virtual ~QCKimikaPartitioner (void);
00073   virtual void init (const QCGeneralData& data,
00074                      const QCFiles&       files,
00075                      const int *          load,
00076                      const int            sizeLoad);
00080   virtual void partitioning (TPSystem& mdsystem);
00084   void writeInventorFiles (const QCSystem& root);
00088 #ifdef DEV_OL
00089   void writeInFileV1 (  std::ofstream & out, const  QCDistMDSystem<QCDCAlgo> & system );
00090 #endif
00091   //
00092 
00094 protected:
00095 
00096 
00100   void setAtomsInKernel (void);
00101 
00102 
00106   void allocStructures (void);
00107 
00108 
00112   void resetStructures (void);
00113 
00114 
00115 
00119   void setAtomsInBuffers (const AtomsGraph& grandat);
00120 
00121 
00125   void setAtomsInBuffersDixon (const AtomsGraph& grandat);
00126 
00127 
00131   void setAtomsInBuffersStd (const AtomsGraph& grandat);
00132 
00133 
00137   void extractDomains (TPSystem& mdsystem);
00138 
00139 
00143   void finalize (void);
00144 
00145 
00149   void initAtomsList (AtomsList& listdat, const QCSystem& root);
00150 
00151   void initAtomsListTest (AtomsList& listdat, AtomsGraph& grafdata) ;
00155   void initFragChain (const QCSystem& root);
00156 
00157 
00161   void initPartChain (void);
00162   //
00163   //
00164   //
00165 
00166 
00167 
00168 
00169 
00170 
00171 
00173 private:
00174   void printGlobalTab(const std::string & msg) ;
00175 
00176   void printPartTab(const std::string & msg);
00177 
00178 
00181 public:
00182 protected:
00183 
00187   int *                         frag_nexttab;
00188   int *                         frag_firsttab;
00192   int *                         sd_nexttab;
00193   int *                         sd_firsttab;
00194   
00195 
00199   //
00202   int                           parttab_size;
00205   int             * QCRestrict  parttab;
00206   AtomsPartGlobal * QCRestrict  globtab;
00207   int             * QCRestrict  lnumtab;
00208   int             * QCRestrict  lcortab;
00209   int             * QCRestrict  lovltab;
00210   std::string     _fileName ;
00211 
00212   
00213 
00214 private:
00215 
00216 };
00217 
00218 
00219 
00220 
00221 #endif // QC_KIMIKA_PARTITIONER_H_

Generated on Sat Jan 28 21:07:26 2006 for QC++ by  doxygen 1.4.4