ESyS-Particle  2.3.4
SimpleNTable3D.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 #ifndef __SIMPLENTABLE3D_H
14 #define __SIMPLENTABLE3D_H
15 
16 //-- project includes --
19 #include "Geometry/SimpleNTable.h"
20 
21 typedef std::set<BasicInteraction,BILess> InteractionSet;
22 typedef std::vector<SimpleParticle> ParticleVector;
23 
33 {
34 private:
38 
39 protected:
40  virtual int index(const Vec3&) const;
41  virtual vector<int> allidx(const Vec3&) const;
43 
44 public:
45  CSimple3DNTable(const Vec3&,const Vec3&,double,bool xcirc=false,bool ycirc=false,bool zcirc=false);
46  virtual void getInteractions(set<BasicInteraction,BILess>&,double);
47  void print();
48 
49  template <class TmplInteractionValidator>
50  InteractionSet getInteractions(const TmplInteractionValidator &validator) const
51  {
52  InteractionSet iset;
53  for(int i=0;i<m_xsize;i++){
54  for(int j=0;j<m_ysize;j++){
55  for(int k=0;k<m_zsize;k++){
56  int idx=i+m_xsize*j+k*m_xsize*m_zsize;
57  if(m_data[idx].size() >= 2){
58  for(ParticleVector::const_iterator iter = m_data[idx].begin();
59  iter != m_data[idx].end()-1;
60  iter++)
61  {
62  for (
63  ParticleVector::const_iterator iter2 = iter+1;
64  iter2 != m_data[idx].end();
65  iter2++)
66  {
67  if (validator.isValid(*iter, *iter2))
68  {
69  iset.insert(BasicInteraction(iter->getID(),iter2->getID()));
70  }
71  }
72  }
73  }
74  }
75  }
76  }
77  return iset;
78  }
79 };
80 
81 #endif //__SIMPLENTABLE3D_H
CSimple3DNTable::m_xcirc
bool m_xcirc
Definition: SimpleNTable3D.h:37
BasicInteraction.h
CSimple3DNTable::m_ycirc
bool m_ycirc
Definition: SimpleNTable3D.h:37
CSimple3DNTable::m_xsize
int m_xsize
Definition: SimpleNTable3D.h:36
CSimple3DNTable::insertParticleCircular
virtual void insertParticleCircular(SimpleParticle)
Definition: SimpleNTable3D.cpp:138
SimpleNTable.h
InteractionSet
std::set< BasicInteraction, BILess > InteractionSet
Definition: SimpleNTable3D.h:21
ASimpleNTable::m_p0
Vec3 m_p0
Definition: SimpleNTable.h:39
SimpleParticle::getPos
const Vec3 & getPos() const
Definition: SimpleParticle.hpp:30
SimpleNTable3D.h
CSimple3DNTable::allidx
virtual vector< int > allidx(const Vec3 &) const
Definition: SimpleNTable3D.cpp:37
CSimple3DNTable::m_xshift
Vec3 m_xshift
Definition: SimpleNTable3D.h:35
SimpleParticle
Definition: SimpleParticle.h:25
Vec3::X
VEC3_INLINE double & X()
Definition: vec3.h:119
CSimple3DNTable
Definition: SimpleNTable3D.h:33
SimpleParticle.h
BasicInteraction
Class to represent the common part of a pair interaction, i.e. the IDs of the particles and the inter...
Definition: BasicInteraction.h:28
Vec3::Z
VEC3_INLINE double & Z()
Definition: vec3.h:121
ASimpleNTable::m_dim
double m_dim
Definition: SimpleNTable.h:40
Vec3::Y
VEC3_INLINE double & Y()
Definition: vec3.h:120
CSimple3DNTable::m_zcirc
bool m_zcirc
Definition: SimpleNTable3D.h:37
CSimple3DNTable::index
virtual int index(const Vec3 &) const
Definition: SimpleNTable3D.cpp:21
Vec3
Definition: vec3.h:47
esys::lsm::bpu::iter
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
CSimple3DNTable::getInteractions
virtual void getInteractions(set< BasicInteraction, BILess > &, double)
Definition: SimpleNTable3D.cpp:202
SimpleParticle::moveTo
void moveTo(const Vec3 &v)
Definition: SimpleParticle.hpp:40
CSimple3DNTable::m_yshift
Vec3 m_yshift
Definition: SimpleNTable3D.h:35
ASimpleNTable::m_data
vector< SimpleParticle > * m_data
Definition: SimpleNTable.h:38
CSimple3DNTable::m_ysize
int m_ysize
Definition: SimpleNTable3D.h:36
CSimple3DNTable::getInteractions
InteractionSet getInteractions(const TmplInteractionValidator &validator) const
Definition: SimpleNTable3D.h:50
ParticleVector
std::vector< SimpleParticle > ParticleVector
Definition: SimpleNTable3D.h:22
CSimple3DNTable::print
void print()
Definition: SimpleNTable3D.cpp:233
CSimple3DNTable::CSimple3DNTable
CSimple3DNTable(const Vec3 &, const Vec3 &, double, bool xcirc=false, bool ycirc=false, bool zcirc=false)
Definition: SimpleNTable3D.cpp:165
CSimple3DNTable::m_zsize
int m_zsize
Definition: SimpleNTable3D.h:36
ASimpleNTable
Abstract base class providing the interface for a simple, serial neighbor table. Used in random initi...
Definition: SimpleNTable.h:36
CSimple3DNTable::m_zshift
Vec3 m_zshift
Definition: SimpleNTable3D.h:35