Simpatico  v1.10
AtomArray.h
1 #ifndef DDMD_ATOM_ARRAY_H
2 #define DDMD_ATOM_ARRAY_H
3 
4 /*
5 * Simpatico - Simulation Package for Polymeric and Molecular Liquids
6 *
7 * Copyright 2010 - 2017, The Regents of the University of Minnesota
8 * Distributed under the terms of the GNU General Public License.
9 */
10 
11 #include <util/containers/Array.h> // base class template
12 #include "AtomContext.h" // context structure.
13 
14 namespace Util {
15  class Vector;
16 }
17 
18 namespace DdMd
19 {
20 
21  class Atom;
22  class Mask;
23  class Plan;
24 
25  using namespace Util;
26 
40  class AtomArray : public Array<Atom>
41  {
42 
43  public:
44 
48  AtomArray();
49 
53  virtual ~AtomArray();
54 
62  void allocate(int capacity);
63 
67  void zeroForces();
68 
72  bool isAllocated() const;
73 
74  private:
75 
76  using Array<Atom>::data_;
78 
79  /*
80  * The following C-arrays store data for Atom "psuedo-members".
81  * Data associated with the Atom in element i of the main data_
82  * array is stored in element i in each of these arrays.
83  */
84 
88  Vector* velocities_;
89 
93  Mask* masks_;
94 
98  Plan* plans_;
99 
103  int* ids_;
104 
108  unsigned int* groups_;
109 
113  AtomContext* contexts_;
114 
118  AtomArray(const AtomArray& other);
119 
123  AtomArray& operator = (const AtomArray& other);
124 
125  //friends:
126 
127  friend class Atom;
128 
129  };
130 
131 }
132 #endif
Set of Atoms for which pair interactions with a parent Atom are "masked".
A Vector is a Cartesian vector.
Definition: Vector.h:75
Array container class template.
Definition: AutoCorrArray.h:28
A point particle in an MD simulation.
Parallel domain decomposition (DD) MD simulation.
Descriptor for context of an Atom within a molecule and species.
Definition: AtomContext.h:21
An array of Atom objects.
Definition: AtomArray.h:40
Utility classes for scientific computation.
Definition: accumulators.mod:1
Communication plan.
Definition: Plan.h:45