00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _OC_BOX_PARTITION_H_
00021 #define _OC_BOX_PARTITION_H_
00022
00023 #include "PartitionBaseT.h"
00024
00025 class BoxPartition : public PartitionBase< setOfAtoms >{
00026
00027
00028 public:
00029 BoxPartition() ;
00030 BoxPartition(const int size, const double &R_overlap, const double & R_cut) ;
00031 BoxPartition(const int size1, const int size2, const int size3, const double &R_overlap, const double & R_cut) ;
00032 BoxPartition(const int size[3],const double &R_overlap, const double & R_cut) ;
00033 ~BoxPartition() ;
00034
00035 bool partitionate(int n, const bool use_frag) ;
00036
00037 private :
00038 void innerReperOfMolecule() ;
00039 void projectOnInnerReper() ;
00040 void setToZero() ;
00041 bool setAtomsInKernel();
00042 bool setAtomsInOverlapAndCut();
00043
00044 void buildLocalNumerotation() ;
00045 void sortInFirstDimension(int* ordre) ;
00046 bool computeBoxEquilibrateCharge( const double &R_overlap, const double &R_cut);
00047 void setNeigboors();
00048
00049 protected:
00050 double _gravityCenter[3] ;
00051 int _gridOfPartition[3] ;
00052 double _axe1[3] ;
00053 double _axe2[3] ;
00054 double _axe3[3] ;
00055 double _inertialMatrix[3][3] ;
00056 };
00057 #endif