Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linkedcell.hpp

    r0f4538 rf66195  
     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_
    212#define LINKEDCELL_HPP_
     13
     14using namespace std;
     15
     16/*********************************************** includes ***********************************/
    317
    418// include config.h
     
    721#endif
    822
    9 #include "molecules.hpp"
     23#include <list>
    1024
    11 #define LinkedAtoms list <atom *>
     25#include "defs.hpp"
     26#include "vector.hpp"
    1227
     28/****************************************** forward declarations *****************************/
     29
     30class PointCloud;
     31class TesselPoint;
     32
     33/********************************************** definitions *********************************/
     34
     35#define LinkedNodes list<TesselPoint *>
     36
     37/********************************************** declarations *******************************/
     38
     39/** Linked Cell class for containing Vectors in real space efficiently.
     40 */
    1341class 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];
     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];
    2250
    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);
     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();
    2959    void GetNeighbourBounds(int lower[NDIM], int upper[NDIM]);
    30                 bool CheckBounds();
    3160
    32                 // not implemented yet
    33                 bool AddAtom(atom *Walker);
    34                 bool DeleteAtom(atom *Walker);
    35                 bool MoveAtom(atom *Walker);
     61    // not implemented yet
     62    bool AddNode(Vector *Walker);
     63    bool DeleteNode(Vector *Walker);
     64    bool MoveNode(Vector *Walker);
    3665};
    3766
Note: See TracChangeset for help on using the changeset viewer.