1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/////////////////////////////////////////////////////////////
// //
// Copyright (c) 2007-2014 by The University of Queensland //
// Centre for Geoscience Computing //
// http://earth.uq.edu.au/centre-geoscience-computing //
// //
// Primary Business: Brisbane, Queensland, Australia //
// Licensed under the Open Software License version 3.0 //
// http://www.opensource.org/licenses/osl-3.0.php //
// //
/////////////////////////////////////////////////////////////
#ifndef __CIRCMNTABLEXY2D_H
#define __CIRCMNTABLEXY2D_H
// --- Project includes ---
#include "CircMNTable2D.h"
/*!
\class CircMNTableXY2D
\brief circular 2D Multi-group Neighbour table
Neighbour table supporting multiple tagged groups of particles and circular boundary
conditions in both x- and y- direction
*/
class CircMNTableXY2D : public CircMNTable2D
{
protected:
Vector3 m_shift_vec_y;
virtual void set_y_circ();
virtual int getIndex(const Vector3&) const;
public:
CircMNTableXY2D();
CircMNTableXY2D(const Vector3&,const Vector3&,double,unsigned int);
virtual ~CircMNTableXY2D();
virtual bool insert(const Sphere&,unsigned int);
virtual bool insertChecked(const Sphere&,unsigned int,double tol=s_small_value);
virtual bool checkInsertable(const Sphere&,unsigned int);
virtual void generateBonds(int,double,int);
// output
friend ostream& operator << (ostream&,const CircMNTableXY2D&);
};
#endif // __CIRCMNTABLEXY2D_H
|