Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linkedcell.hpp

    r357fba 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;
    153
    164// include config.h
     
    197#endif
    208
    21 #include <list>
     9#include "molecules.hpp"
    2210
    23 #include "defs.hpp"
    24 #include "helpers.hpp"
    25 #include "vector.hpp"
     11#define LinkedAtoms list <atom *>
    2612
    27 class TesselPoint;
    28 class PointCloud;
     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 #define LinkedNodes list<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();
    3131
    32 /** Linked Cell class for containing Vectors in real space efficiently.
    33  */
    34 class LinkedCell {
    35   public:
    36     Vector max;       // upper boundary
    37     Vector min;       // lower boundary
    38     LinkedNodes *LC;  // linked cell list
    39     double RADIUS;    // cell edge length
    40     int N[NDIM];      // number of cells per axis
    41     int n[NDIM];      // temporary variable for current cell per axis
    42     int index;        // temporary index variable , access by index = n[0] * N[1] * N[2] + n[1] * N[2] + n[2];
    43 
    44     LinkedCell();
    45     LinkedCell(PointCloud *set, double RADIUS);
    46     ~LinkedCell();
    47     LinkedNodes* GetCurrentCell();
    48     bool SetIndexToNode(TesselPoint *Walker);
    49     bool SetIndexToVector(Vector *x);
    50     bool CheckBounds();
    51 
    52     // not implemented yet
    53     bool AddNode(Vector *Walker);
    54     bool DeleteNode(Vector *Walker);
    55     bool MoveNode(Vector *Walker);
     32                // not implemented yet
     33                bool AddAtom(atom *Walker);
     34                bool DeleteAtom(atom *Walker);
     35                bool MoveAtom(atom *Walker);
    5636};
    5737
Note: See TracChangeset for help on using the changeset viewer.