Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linkedcell.hpp

    rf66195 r0f4538  
    1 /*
    2  * linkedcell.hpp
    3  *
    4  *  If the linked cell should be usable, the class has to inherit LCNodeSet and the nodes (containing the Vectors) have to inherit LCNode. This works well
    5  *  for molecule and atom classes.
    6  *
    7  *  Created on: Aug 3, 2009
    8  *      Author: heber
    9  */
    10 
    111#ifndef LINKEDCELL_HPP_
    122#define LINKEDCELL_HPP_
    13 
    14 using namespace std;
    15 
    16 /*********************************************** includes ***********************************/
    173
    184// include config.h
     
    217#endif
    228
    23 #include <list>
     9#include "molecules.hpp"
    2410
    25 #include "defs.hpp"
    26 #include "vector.hpp"
     11#define LinkedAtoms list <atom *>
    2712
    28 /****************************************** forward declarations *****************************/
     13class LinkedCell {
     14        public:
     15                Vector max;                      // upper boundary
     16                Vector min;                      // lower boundary
     17                LinkedAtoms *LC;        // linked cell list
     18                double RADIUS;          // cell edge length
     19                int N[NDIM];                    // number of cells per axis
     20                int n[NDIM];                    // temporary variable for current cell per axis
     21                int index;                              // temporary index variable , access by index = n[0] * N[1] * N[2] + n[1] * N[2] + n[2];
    2922
    30 class PointCloud;
    31 class TesselPoint;
     23                LinkedCell();
     24                LinkedCell(molecule *mol, double RADIUS);
     25                ~LinkedCell();
     26                LinkedAtoms* GetCurrentCell();
     27                bool SetIndexToAtom(const atom &Walker);
     28                bool SetIndexToVector(const Vector *x);
     29    void GetNeighbourBounds(int lower[NDIM], int upper[NDIM]);
     30                bool CheckBounds();
    3231
    33 /********************************************** definitions *********************************/
    34 
    35 #define LinkedNodes list<TesselPoint *>
    36 
    37 /********************************************** declarations *******************************/
    38 
    39 /** Linked Cell class for containing Vectors in real space efficiently.
    40  */
    41 class LinkedCell {
    42   public:
    43     Vector max;       // upper boundary
    44     Vector min;       // lower boundary
    45     LinkedNodes *LC;  // linked cell list
    46     double RADIUS;    // cell edge length
    47     int N[NDIM];      // number of cells per axis
    48     int n[NDIM];      // temporary variable for current cell per axis
    49     int index;        // temporary index variable , access by index = n[0] * N[1] * N[2] + n[1] * N[2] + n[2];
    50 
    51     LinkedCell();
    52     LinkedCell(PointCloud *set, double RADIUS);
    53     LinkedCell(LinkedNodes *set, double radius);
    54     ~LinkedCell();
    55     LinkedNodes* GetCurrentCell();
    56     bool SetIndexToNode(const TesselPoint *Walker);
    57     bool SetIndexToVector(const Vector *x);
    58     bool CheckBounds();
    59     void GetNeighbourBounds(int lower[NDIM], int upper[NDIM]);
    60 
    61     // not implemented yet
    62     bool AddNode(Vector *Walker);
    63     bool DeleteNode(Vector *Walker);
    64     bool MoveNode(Vector *Walker);
     32                // not implemented yet
     33                bool AddAtom(atom *Walker);
     34                bool DeleteAtom(atom *Walker);
     35                bool MoveAtom(atom *Walker);
    6536};
    6637
Note: See TracChangeset for help on using the changeset viewer.