IPCC  1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
KNGeometricAtom.h
Go to the documentation of this file.
1 
7 #pragma once
8 #include <vector>
10 
18 {
19 public:
22 
23  enum ATOM_TYPE { A = 0, C };
24  enum NEIGHOR_RELATION { A2C, C2A };
27 
28  void SetID(double fID);
29  double GetID(){ return m_fAtomID; };
30  void ShiftID(double fShift);
31  void SetType(ATOM_TYPE type, MATERIAL_INDEX number);
32  void SetMaterial(MATERIAL_INDEX number){ m_MaterialNumber = number; };
34  ATOM_TYPE GetType(){ return m_AtomType; };
38  void SetCoordination(CKNGeometricCoordination coordination);
39  void SetCoordination(double* pfCoordination);
40  void SetCoordination(double fXCoordination, double fYCoordination, double fZCoordination);
41  void SetRatio(double fRatio[3]);
42  unsigned int GetNeighborCount(){ return m_vectNeighbor.size(); };
43  double GetNeighborAtomID(unsigned int nIndex);
44  MATERIAL_INDEX GetMaterialMaterialNumber(unsigned int nIndex);
45  void SetNeighbor(unsigned int nIndex, CKNGeometricAtom *pNeighbor);
46  void SetPeriodic(bool bPeriodic){ m_bPeriodic = bPeriodic; };
47  bool IsPeriodicAtom(){ return m_bPeriodic; };
48  bool IsPeriodicCoupling(int nIndex);
50  int GetNeighborPeriodicDirection(int nIndex);
51  void SetPeriodicDirection(int periodicDirection){ m_periodicDirection = periodicDirection; };
52  void AddPeridoicDirection(PERIODIC_DIRECTION periodicDirection){ m_periodicDirection |= periodicDirection; };
54  static void SetNeighborNumber(unsigned int nNeighborNumber){ m_snNeighborNumber = nNeighborNumber; }
55 
56 private:
61  double m_fAtomID;
62  std::vector<double> m_vectNeighbor;
63  std::vector<MATERIAL_INDEX> m_vectNeighborMaterial;
64  std::vector<CKNGeometricCoordination> m_vectNeighborCoordination;
66  std::vector<COUPLING_TYPE> m_vectCouplingType;
67  bool m_bPeriodic;
69  static unsigned int m_snNeighborNumber;
70 };
MATERIAL_INDEX
Definition: CKNGlobal.h:106
void SetRatio(double fRatio[3])
Set ratio.
Class for coordination.
MATERIAL_INDEX GetDomainMaterialNumber()
Get atom material type.
ATOM_TYPE GetType()
int GetNeighborPeriodicDirection(int nIndex)
Get neighbor coupling periodic direction if has coupling with periodic atom.
Class for coordination.
unsigned int GetNeighborCount()
MATERIAL_INDEX m_DomainMaterialNumber
Domain Atom material number.
static unsigned int m_snNeighborNumber
Neighbor count.
double m_fAtomID
Atom ID.
void SetPeriodicDirection(int periodicDirection)
void SetCoordination(CKNGeometricCoordination coordination)
Get atom coordination.
MATERIAL_INDEX GetMaterialMaterialNumber(unsigned int nIndex)
Get Neighbor material type.
void SetType(ATOM_TYPE type, MATERIAL_INDEX number)
Set atom information.
std::vector< MATERIAL_INDEX > m_vectNeighborMaterial
Array of neighbor material number.
ATOM_TYPE m_AtomType
Atom type.
void SetID(double fID)
Set atom ID.
CKNGeometricCoordination m_coordination
Atom coordination.
void ShiftID(double fShift)
Get atom ID.
std::vector< CKNGeometricCoordination > m_vectNeighborCoordination
Array of neighbor coordination.
CKNGeometricCoordination GetNeighborCoordination(int nIndex)
Get neighbor coordination.
void AddPeridoicDirection(PERIODIC_DIRECTION periodicDirection)
Set periodic direction.
std::vector< COUPLING_TYPE > m_vectCouplingType
Array of neighbor periodic direction.
std::vector< double > m_vectNeighbor
Array of neighbor atom.
bool IsPeriodicAtom()
Set atom is periodic.
int GetPeriodicDirection()
Adding periodic direction.
Class for Atom.
bool IsPeriodicCoupling(int nIndex)
Check is this periodic atom.
MATERIAL_INDEX GetMaterialNumber()
Get atom typpe.
bool m_bPeriodic
Periodic information of atom.
void SetPeriodic(bool bPeriodic)
int m_periodicDirection
Periodic direction information.
void SetMaterial(MATERIAL_INDEX number)
std::vector< int > m_vectNeighborPeriodicDirection
void SetNeighbor(unsigned int nIndex, CKNGeometricAtom *pNeighbor)
Set neighbor information.
CKNGeometricCoordination GetCoordination()
Get Domain atom material type.
void SetDomainMaterial(MATERIAL_INDEX number)
Set atom material information.
double GetNeighborAtomID(unsigned int nIndex)
Get neighbor atom count.
static void SetNeighborNumber(unsigned int nNeighborNumber)
Get periodic direction information.
MATERIAL_INDEX m_MaterialNumber
Atom material number.