IPCC  1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
CKNGeometricUnitCellInfo_zincblende Class Reference

Class for Geometric unit cell for cubic. More...

#include "KNGeometricUnitCellInfo_zincblende.h"

Inheritance diagram for CKNGeometricUnitCellInfo_zincblende:
Inheritance graph
Collaboration diagram for CKNGeometricUnitCellInfo_zincblende:
Collaboration graph

Public Member Functions

 CKNGeometricUnitCellInfo_zincblende ()
 
 ~CKNGeometricUnitCellInfo_zincblende ()
 
virtual void SetAtomCoordination ()
 Atom coordination setting. More...
 
virtual void SetNeighborCoordination ()
 Neighbor atom coordiantion setting. More...
 
virtual void SetUnitCellSize (double fUnitcellSize[3])
 Unitcell size setting. More...
 
void SetDireciton (int nDirectionSingle)
 Set direction information. More...
 
- Public Member Functions inherited from IKNGeometricUnitCellInfo
void InitCoordination ()
 Initial Coordination information. More...
 
int GetA2CNeighborCount ()
 Get neigbhor relation count. More...
 
int GetC2ANeighborCount ()
 Get neigbhor relation count. More...
 
 IKNGeometricUnitCellInfo ()
 
 ~IKNGeometricUnitCellInfo ()
 
unsigned int GetAnionCount ()
 
unsigned int GetCationCount ()
 Get anion count in Unitcell. More...
 
double * GetUnitcCellSize ()
 Get cation count in Unitcell. More...
 
CKNGeometricCoordination GetAtomCoordination (CKNGeometricAtom::ATOM_TYPE atomType, unsigned int nIndex)
 Get Unitcell size x, y, z direction axis. More...
 
CKNGeometricCoordination GetNeighborCoordination (CKNGeometricAtom::NEIGHOR_RELATION neighborType, unsigned int nIndex)
 Get neigbhor atom coordination from Unitcell. More...
 
void RotateNeighbor (CKNMatrixOperation::CKNDMatrix *pRotationMatrix)
 Rotating neighbor coordination. More...
 
void RotateAxis (CKNMatrixOperation::CKNDMatrix *pRotationMatrix)
 Rotating axis. More...
 

Private Attributes

int m_nDirectionSingle
 Directoin information. More...
 

Additional Inherited Members

- Protected Member Functions inherited from IKNGeometricUnitCellInfo
void SetAtomCoordination (CKNGeometricAtom::ATOM_TYPE type, double x, double y, double z)
 Set single atom coordination. More...
 
void SetNeighborCoordination (CKNGeometricAtom::NEIGHOR_RELATION type, double x, double y, double z)
 Set single neighbor coordination. More...
 
- Protected Attributes inherited from IKNGeometricUnitCellInfo
double m_UnitCellSize [3]
 Unitcell size x, y, z direction axis. More...
 
double m_NeigbhorOriginSize [3]
 For neighbor distance calculation. More...
 
std::vector< CKNGeometricAtomm_vectAtomList_1
 Atom list in Unitcell for anion. More...
 
std::vector< CKNGeometricAtomm_vectAtomList_2
 Atom list in Unitcell for cation. More...
 
std::vector
< CKNGeometricCoordination
m_vectNeighborRelation1To2
 Neighbor relation list in Unitcell for anion to cation. More...
 
std::vector
< CKNGeometricCoordination
m_vectNeighborRelation2To1
 Neighbor relation list in Unitcell for cation to anion. More...
 

Detailed Description

Class for Geometric unit cell for cubic.

Date
02/July/2015
Author
Kyu Nam Cho(mysto.nosp@m.us@k.nosp@m.orea..nosp@m.ac.k.nosp@m.r), Hoon Ryu(elec1.nosp@m.020@.nosp@m.gmail.nosp@m..com)

Definition at line 16 of file KNGeometricUnitCellInfo_zincblende.h.

Constructor & Destructor Documentation

CKNGeometricUnitCellInfo_zincblende::CKNGeometricUnitCellInfo_zincblende ( )

Definition at line 12 of file KNGeometricUnitCellInfo_zincblende.cpp.

References m_nDirectionSingle.

13 {
14  m_nDirectionSingle = 100;
15 }
CKNGeometricUnitCellInfo_zincblende::~CKNGeometricUnitCellInfo_zincblende ( )

Definition at line 17 of file KNGeometricUnitCellInfo_zincblende.cpp.

18 {
19 }

Member Function Documentation

void CKNGeometricUnitCellInfo_zincblende::SetAtomCoordination ( )
virtual

Atom coordination setting.

< Anion

< Cation

< Anion

< Cation

< Anion

< Cation

Implements IKNGeometricUnitCellInfo.

Definition at line 21 of file KNGeometricUnitCellInfo_zincblende.cpp.

References CKNGeometricAtom::A, CKNGeometricAtom::C, m_nDirectionSingle, IKNGeometricUnitCellInfo::m_UnitCellSize, and IKNGeometricUnitCellInfo::SetAtomCoordination().

22 {
23  char szMsg[1024];
24  switch (m_nDirectionSingle)
25  {
26  case 100:
28  /*IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.13577375, 0.40732125, 0.13577375);
29  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.40732125, 0.13577375, 0.13577375);
30  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.13577375, 0.13577375, 0.40732125);
31  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.40732125, 0.40732125, 0.40732125);*/
41  break;
42  case 110:
43  /*///< Anion
44  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::C, 0.384026168773379417142876945945, 0.384026157328507977695153385866, 0.543094983814507603625543197268);
45  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::C, 0.192013084386689680815862857344, 0.192013078664253988847576692933, 0.271547487860880731869173132509);
47  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.192013087247907499044430323920, 0.384026157328507977695153385866, 0.407321237860880647208006166693);
48  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.384026160189725795923720852443, 0.192013078664253933336425461675, 0.135773741907253858718362948821);*/
49 
56  break;
57  case 111:
58  /*///< Anion
59  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.391945055556924770723270512462, 0.384026157328507977695153385866, 0.221717605309471682550892523977);
60  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.705501100002464687221959138697, 0.384026157328507977695153385866, 0.665152815928415019897101956303);
61  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.078389011111384965246884348744, 0.192013078664254016603152308562, 0.110858802654735841275446261989);
62  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.391945055556924826234421743720, 0.192013078664254016603152308562, 0.554294013273679220255019117758);
63  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.078389011111385020758035580002, 0.384026157328508033206304617124, 0.443435210618943309590633816697);
64  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::A, 0.705501100002464687221959138697, 0.192013078664253933336425461675, 0.332576407964207509948550978152);
66  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::C, 0.627112088891079721975074789952, 0.384026157328507977695153385866, 0.221717605309471627039741292720);
67  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::C, 0.940668133336619582962612184929, 0.384026157328507977695153385866, 0.665152815928415019897101956303);
68  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::C, 0.313556044445539916498688626234, 0.192013078664253988847576692933, 0.110858802654735855153234069803);
69  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::C, 0.627112088891079721975074789952, 0.192013078664253988847576692933, 0.554294013273679220255019117758);
70  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::C, 0.313556044445539916498688626234, 0.384026157328507977695153385866, 0.443435210618943309590633816697);
71  IKNGeometricUnitCellInfo::SetAtomCoordination(CKNGeometricAtom::C, 0.940668133336619582962612184929, 0.192013078664253961092001077304, 0.332576407964207509948550978152);*/
72 
80 
88  break;
89  }
90 }
virtual void SetAtomCoordination()=0
Atom coordination setting.
double m_UnitCellSize[3]
Unitcell size x, y, z direction axis.

Here is the call graph for this function:

void CKNGeometricUnitCellInfo_zincblende::SetDireciton ( int  nDirectionSingle)
inline

Set direction information.

Definition at line 26 of file KNGeometricUnitCellInfo_zincblende.h.

References m_nDirectionSingle.

Referenced by CKNGeometricShape::SetAtomAndNeighborInformation().

Here is the caller graph for this function:

void CKNGeometricUnitCellInfo_zincblende::SetNeighborCoordination ( )
virtual

Neighbor atom coordiantion setting.

Implements IKNGeometricUnitCellInfo.

Definition at line 92 of file KNGeometricUnitCellInfo_zincblende.cpp.

References CKNGeometricAtom::A2C, CKNGeometricAtom::C2A, IKNGeometricUnitCellInfo::m_NeigbhorOriginSize, and IKNGeometricUnitCellInfo::SetNeighborCoordination().

93 {
98 
103 }
virtual void SetNeighborCoordination()=0
Neighbor atom coordiantion setting.
double m_NeigbhorOriginSize[3]
For neighbor distance calculation.

Here is the call graph for this function:

void CKNGeometricUnitCellInfo_zincblende::SetUnitCellSize ( double  fUnitcellSize[3])
virtual

Unitcell size setting.

Parameters
fUnitcellSizeUnitcell size for x, y, z direciton

Implements IKNGeometricUnitCellInfo.

Definition at line 108 of file KNGeometricUnitCellInfo_zincblende.cpp.

References m_nDirectionSingle, IKNGeometricUnitCellInfo::m_NeigbhorOriginSize, and IKNGeometricUnitCellInfo::m_UnitCellSize.

109 {
110  for (int i = 0; i < 3; ++i)
111  {
112  m_NeigbhorOriginSize[i] = fUnitcellSize[i];
113  m_UnitCellSize[i] = fUnitcellSize[i];
114  }
115 
116  switch (m_nDirectionSingle)
117  {
118  case 110:
119  /*m_UnitCellSize[0] = 0.384026157328507866672850923351;
120  m_UnitCellSize[1] = 0.384026157328507866672850923351;
121  m_UnitCellSize[2] = 0.543095;*/
122  m_UnitCellSize[0] = m_UnitCellSize[0] * (1 / sqrt(2.));
123  m_UnitCellSize[1] = m_UnitCellSize[1] * (1 / sqrt(2.));
124  m_UnitCellSize[2] = m_UnitCellSize[2];
125  break;
126  case 111:
127  /*m_UnitCellSize[0] = 0.940668133336619582962612184929;
128  m_UnitCellSize[1] = 0.384026157328508033206304617124;
129  m_UnitCellSize[2] = 0.665152815928415019897101956303;*/
130  m_UnitCellSize[0] = m_UnitCellSize[0] * 1.732050807568878;
131  m_UnitCellSize[1] = m_UnitCellSize[1] * (1 / sqrt(2.));
132  m_UnitCellSize[2] = m_UnitCellSize[2] * 1.224744871391589;
133  break;
134  }
135 }
double m_NeigbhorOriginSize[3]
For neighbor distance calculation.
double m_UnitCellSize[3]
Unitcell size x, y, z direction axis.

Member Data Documentation

int CKNGeometricUnitCellInfo_zincblende::m_nDirectionSingle
private

The documentation for this class was generated from the following files: