IPCC  1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IKNGeometricUnitCellInfo.h
Go to the documentation of this file.
1 
7 #pragma once
8 #include <vector>
10 #include "KNGeometricAtom.h"
11 #include "KNMatrixOperation.h"
12 
20 {
21 public:
22  void InitCoordination();
23  virtual void SetAtomCoordination() = 0;
24  virtual void SetNeighborCoordination() = 0;
25  virtual void SetUnitCellSize(double fUnitcellSize[3]) = 0;
28 
29 protected:
30  void SetAtomCoordination(CKNGeometricAtom::ATOM_TYPE type, double x, double y, double z);
31  void SetNeighborCoordination(CKNGeometricAtom::NEIGHOR_RELATION type, double x, double y, double z);
32 
33  double m_UnitCellSize[3];
35  std::vector<CKNGeometricAtom> m_vectAtomList_1;
36  std::vector<CKNGeometricAtom> m_vectAtomList_2;
37  std::vector<CKNGeometricCoordination> m_vectNeighborRelation1To2;
38  std::vector<CKNGeometricCoordination> m_vectNeighborRelation2To1;
39 
40 public:
43 
44  unsigned int GetAnionCount(){ return m_vectAtomList_1.size(); };
45  unsigned int GetCationCount(){ return m_vectAtomList_2.size(); };
46  double* GetUnitcCellSize(){ return m_UnitCellSize; };
49  void RotateNeighbor(CKNMatrixOperation::CKNDMatrix *pRotationMatrix);
50  void RotateAxis(CKNMatrixOperation::CKNDMatrix *pRotationMatrix);
51 };
52 
void RotateAxis(CKNMatrixOperation::CKNDMatrix *pRotationMatrix)
Rotating axis.
Class for coordination.
Data and operation representation of Matrix.
Class for coordination.
virtual void SetAtomCoordination()=0
Atom coordination setting.
Class for Atom.
virtual void SetNeighborCoordination()=0
Neighbor atom coordiantion setting.
void InitCoordination()
Initial Coordination information.
std::vector< CKNGeometricAtom > m_vectAtomList_2
Atom list in Unitcell for cation.
Collection of vector and matrix operation.
virtual void SetUnitCellSize(double fUnitcellSize[3])=0
Unitcell size setting.
Iterface for Unitcell information.
std::vector< CKNGeometricCoordination > m_vectNeighborRelation1To2
Neighbor relation list in Unitcell for anion to cation.
unsigned int GetCationCount()
Get anion count in Unitcell.
int GetC2ANeighborCount()
Get neigbhor relation count.
void RotateNeighbor(CKNMatrixOperation::CKNDMatrix *pRotationMatrix)
Rotating neighbor coordination.
std::vector< CKNGeometricCoordination > m_vectNeighborRelation2To1
Neighbor relation list in Unitcell for cation to anion.
double m_NeigbhorOriginSize[3]
For neighbor distance calculation.
std::vector< CKNGeometricAtom > m_vectAtomList_1
Atom list in Unitcell for anion.
double m_UnitCellSize[3]
Unitcell size x, y, z direction axis.
CKNGeometricCoordination GetNeighborCoordination(CKNGeometricAtom::NEIGHOR_RELATION neighborType, unsigned int nIndex)
Get neigbhor atom coordination from Unitcell.
int GetA2CNeighborCount()
Get neigbhor relation count.
CKNGeometricCoordination GetAtomCoordination(CKNGeometricAtom::ATOM_TYPE atomType, unsigned int nIndex)
Get Unitcell size x, y, z direction axis.
double * GetUnitcCellSize()
Get cation count in Unitcell.