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

Factory class for create CKNGeometricAtom instance. More...

#include "KNGeometricAtomFactory.h"

Collaboration diagram for CKNGeometricAtomFactory:
Collaboration graph

Public Member Functions

 CKNGeometricAtomFactory ()
 
 ~CKNGeometricAtomFactory ()
 

Static Public Member Functions

static void SetAtomCoordination (CKNGeometricAtom::ATOM_TYPE type, double x, double y, double z)
 Setting atom coordination. More...
 
static void SetNeighborCoordination (CKNGeometricAtom::NEIGHOR_RELATION type, double x, double y, double z)
 Setting neighbor coordination. More...
 
static void SetRatio (double fRatio[3])
 Set ratio that applying to length, atom coordination and neighbor position. More...
 
static void SetUnitCellSize (double fSize[3])
 Set unitcell size. More...
 
static void FreeFactoryData ()
 Release all setting data. More...
 
static int GetAtomCountInUnitcell ()
 
static MATERIAL_INDEX GetMaterialNumber (char *pszMaterialName, CKNGeometricAtom::ATOM_TYPE type)
 Get total atom counts in unit cell. More...
 
static MATERIAL_INDEX GetMaterialNumber (char *pszMaterialName)
 Get Atom number that mean material of atom number. More...
 
static void InitAtomList ()
 
static void InitNeighborList ()
 
static unsigned int GetNeighborCount ()
 

Static Private Attributes

static std::vector
< CKNGeometricAtom
m_vectAtomList_1
 Get total Neighbor count in unit cell. More...
 
static std::vector
< CKNGeometricAtom
m_vectAtomList_2
 Atom array for cation. More...
 
static std::vector
< CKNGeometricCoordination
m_vectNeighborRelation1To2
 Neighbor relationship from anion to cation. More...
 
static std::vector
< CKNGeometricCoordination
m_vectNeighborRelation2To1
 Neighbor relationship from cation to anion. More...
 

Friends

class CKNGeometricUnitCell
 

Detailed Description

Factory class for create CKNGeometricAtom instance.

Date
03/Oct/2014
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 19 of file KNGeometricAtomFactory.h.

Constructor & Destructor Documentation

CKNGeometricAtomFactory::CKNGeometricAtomFactory ( )

Definition at line 18 of file KNGeometricAtomFactory.cpp.

19 {
20 }
CKNGeometricAtomFactory::~CKNGeometricAtomFactory ( )

Definition at line 23 of file KNGeometricAtomFactory.cpp.

24 {
25 }

Member Function Documentation

void CKNGeometricAtomFactory::FreeFactoryData ( )
static

Release all setting data.

Definition at line 106 of file KNGeometricAtomFactory.cpp.

References m_vectAtomList_1, m_vectAtomList_2, m_vectNeighborRelation1To2, and m_vectNeighborRelation2To1.

107 {
108  m_vectAtomList_1.clear();
109  m_vectAtomList_2.clear();
112 }
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation2To1
Neighbor relationship from cation to anion.
static std::vector< CKNGeometricAtom > m_vectAtomList_1
Get total Neighbor count in unit cell.
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation1To2
Neighbor relationship from anion to cation.
static std::vector< CKNGeometricAtom > m_vectAtomList_2
Atom array for cation.
static int CKNGeometricAtomFactory::GetAtomCountInUnitcell ( )
inlinestatic

Definition at line 30 of file KNGeometricAtomFactory.h.

References m_vectAtomList_1, and m_vectAtomList_2.

Referenced by CKNGeometricUnitCell::AddPeridoicDirection(), CKNGeometricUnitCell::Deserialize(), CKNGeometricShape::Deserialize(), CKNGeometricShape::ExchangeAtomInfoBetweenNode(), CKNGeometricShape::Serialize(), CKNGeometricUnitCell::SetPeriodic(), and CKNGeometricUnitCell::SetPeriodicDirection().

30 { return m_vectAtomList_1.size() + m_vectAtomList_2.size();};
static std::vector< CKNGeometricAtom > m_vectAtomList_1
Get total Neighbor count in unit cell.
static std::vector< CKNGeometricAtom > m_vectAtomList_2
Atom array for cation.

Here is the caller graph for this function:

MATERIAL_INDEX CKNGeometricAtomFactory::GetMaterialNumber ( char *  pszMaterialName,
CKNGeometricAtom::ATOM_TYPE  type 
)
static

Get total atom counts in unit cell.

Get Atom number that mean material of atom number

Parameters
pszMaterialNameMaterial name
typeAtom type
Returns
Material number

Definition at line 119 of file KNGeometricAtomFactory.cpp.

References CKNGeometricAtom::A, As, ATOM_NUM_BASE, CKNGeometricAtom::C, Ga, In, and Si.

Referenced by CKNGeometricUnitCell::ArrangeAtom(), CKNGeometricUnitCell::NumberingSubElement(), and CKNGeometricUnitCell::SetSubDomainMaterial().

120 {
121  if (!strcmp(pszMaterialName, "Si"))
122  {
123  return Si;
124  }
125  else if (!strcmp(pszMaterialName, "GaAs"))
126  {
127  //return GaAs;
128  switch (type)
129  {
130  case CKNGeometricAtom::A:
131  return Ga;
132  break;
133  case CKNGeometricAtom::C:
134  return As;
135  break;
136  }
137  }
138  else if (!strcmp(pszMaterialName, "InAs"))
139  {
140  //return InAs;
141  switch (type)
142  {
143  case CKNGeometricAtom::A:
144  return In;
145  break;
146  case CKNGeometricAtom::C:
147  return As;
148  break;
149  }
150  }
151 
152  return ATOM_NUM_BASE;
153 }
Definition: CKNGlobal.h:106
Definition: CKNGlobal.h:106
Definition: CKNGlobal.h:106
Definition: CKNGlobal.h:106

Here is the caller graph for this function:

MATERIAL_INDEX CKNGeometricAtomFactory::GetMaterialNumber ( char *  pszMaterialName)
static

Get Atom number that mean material of atom number.

Parameters
pszMaterialNameMaterial name
Returns
Material number

Definition at line 159 of file KNGeometricAtomFactory.cpp.

References ATOM_NUM_BASE, GaAs, InAs, and Si.

160 {
161  if (!strcmp(pszMaterialName, "Si"))
162  {
163  return Si;
164  }
165  else if (!strcmp(pszMaterialName, "GaAs"))
166  {
167  return GaAs;
168  }
169  else if (!strcmp(pszMaterialName, "InAs"))
170  {
171  return InAs;
172  }
173 
174  return ATOM_NUM_BASE;
175 }
Definition: CKNGlobal.h:106
static unsigned int CKNGeometricAtomFactory::GetNeighborCount ( )
inlinestatic

Definition at line 35 of file KNGeometricAtomFactory.h.

35 { return m_vectNeighborRelation1To2.size() + m_vectNeighborRelation2To1.size(); };
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation2To1
Neighbor relationship from cation to anion.
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation1To2
Neighbor relationship from anion to cation.
void CKNGeometricAtomFactory::InitAtomList ( )
static

Definition at line 177 of file KNGeometricAtomFactory.cpp.

References m_vectAtomList_1, and m_vectAtomList_2.

Referenced by CKNGeometricShape::SetAtomAndNeighborInformation().

178 {
179  m_vectAtomList_1.clear();
180  m_vectAtomList_2.clear();
181 }
static std::vector< CKNGeometricAtom > m_vectAtomList_1
Get total Neighbor count in unit cell.
static std::vector< CKNGeometricAtom > m_vectAtomList_2
Atom array for cation.

Here is the caller graph for this function:

void CKNGeometricAtomFactory::InitNeighborList ( )
static

Definition at line 183 of file KNGeometricAtomFactory.cpp.

References m_vectNeighborRelation1To2, and m_vectNeighborRelation2To1.

Referenced by CKNGeometricShape::SetAtomAndNeighborInformation().

184 {
187 }
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation2To1
Neighbor relationship from cation to anion.
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation1To2
Neighbor relationship from anion to cation.

Here is the caller graph for this function:

void CKNGeometricAtomFactory::SetAtomCoordination ( CKNGeometricAtom::ATOM_TYPE  type,
double  x,
double  y,
double  z 
)
static

Setting atom coordination.

Parameters
typeAtom type
xx coordination
yy coordination
zz coordination

Definition at line 33 of file KNGeometricAtomFactory.cpp.

References CKNGeometricAtom::A, ATOM_NUM_BASE, CKNGeometricAtom::C, m_vectAtomList_1, m_vectAtomList_2, CKNGeometricAtom::SetCoordination(), and CKNGeometricAtom::SetType().

Referenced by CKNGeometricShape::SetAtomAndNeighborInformation(), and CKNGeometricConstructionLaunch::SetUnitCellInformation().

34 {
35  CKNGeometricAtom atom;
36 
37  atom.SetType(type, ATOM_NUM_BASE);
38  atom.SetCoordination(x, y, z);
39 
40  switch (type)
41  {
43  m_vectAtomList_1.push_back(atom);
44  break;
46  m_vectAtomList_2.push_back(atom);
47  break;
48  }
49 }
void SetCoordination(CKNGeometricCoordination coordination)
Get atom coordination.
void SetType(ATOM_TYPE type, MATERIAL_INDEX number)
Set atom information.
Class for Atom.
static std::vector< CKNGeometricAtom > m_vectAtomList_1
Get total Neighbor count in unit cell.
static std::vector< CKNGeometricAtom > m_vectAtomList_2
Atom array for cation.

Here is the call graph for this function:

Here is the caller graph for this function:

void CKNGeometricAtomFactory::SetNeighborCoordination ( CKNGeometricAtom::NEIGHOR_RELATION  type,
double  x,
double  y,
double  z 
)
static

Setting neighbor coordination.

Parameters
typeNeighbor relationship type
xx axis distance
yy axis distance
zz axis distance

Definition at line 57 of file KNGeometricAtomFactory.cpp.

References CKNGeometricAtom::A2C, CKNGeometricAtom::C2A, m_vectNeighborRelation1To2, m_vectNeighborRelation2To1, and CKNGeometricCoordination::SetCoordination().

Referenced by CKNGeometricShape::SetAtomAndNeighborInformation(), and CKNGeometricConstructionLaunch::SetUnitCellInformation().

58 {
59  CKNGeometricCoordination relationCoordnation;
60 
61  relationCoordnation.SetCoordination(x, y, z);
62 
63  switch (type)
64  {
66  m_vectNeighborRelation1To2.push_back(relationCoordnation);
67  break;
69  m_vectNeighborRelation2To1.push_back(relationCoordnation);
70  break;
71  }
72 }
Class for coordination.
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation2To1
Neighbor relationship from cation to anion.
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation1To2
Neighbor relationship from anion to cation.
void SetCoordination(CKNGeometricCoordination coordination)
Get coordination with double buffer.

Here is the call graph for this function:

Here is the caller graph for this function:

void CKNGeometricAtomFactory::SetRatio ( double  fRatio[3])
static

Set ratio that applying to length, atom coordination and neighbor position.

Parameters
fRatioRation for x, y, z direction

Definition at line 77 of file KNGeometricAtomFactory.cpp.

References m_vectAtomList_1, m_vectAtomList_2, m_vectNeighborRelation1To2, and m_vectNeighborRelation2To1.

Referenced by SetUnitCellSize().

78 {
79  int i, nSize;
80 
81  nSize = m_vectAtomList_1.size();
82  for (i = 0; i < nSize; ++i)
83  m_vectAtomList_1[i].SetRatio(fRatio);
84 
85  nSize = m_vectAtomList_2.size();
86  for (i = 0; i < nSize; ++i)
87  m_vectAtomList_2[i].SetRatio(fRatio);
88 
89  nSize = m_vectNeighborRelation1To2.size();
90  for (i = 0; i < nSize; ++i)
92 
93  nSize = m_vectNeighborRelation2To1.size();
94  for (i = 0; i < nSize; ++i)
96 }
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation2To1
Neighbor relationship from cation to anion.
static std::vector< CKNGeometricAtom > m_vectAtomList_1
Get total Neighbor count in unit cell.
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation1To2
Neighbor relationship from anion to cation.
static void SetRatio(double fRatio[3])
Set ratio that applying to length, atom coordination and neighbor position.
static std::vector< CKNGeometricAtom > m_vectAtomList_2
Atom array for cation.

Here is the caller graph for this function:

void CKNGeometricAtomFactory::SetUnitCellSize ( double  fSize[3])
static

Set unitcell size.

Parameters
fSizesize for x, y, z direction

Definition at line 101 of file KNGeometricAtomFactory.cpp.

References SetRatio().

102 {
103  SetRatio(fSize);
104 }
static void SetRatio(double fRatio[3])
Set ratio that applying to length, atom coordination and neighbor position.

Here is the call graph for this function:

Friends And Related Function Documentation

friend class CKNGeometricUnitCell
friend

Definition at line 44 of file KNGeometricAtomFactory.h.

Member Data Documentation

std::vector< CKNGeometricAtom > CKNGeometricAtomFactory::m_vectAtomList_1
staticprivate

Get total Neighbor count in unit cell.

Atom array for anion

Definition at line 35 of file KNGeometricAtomFactory.h.

Referenced by CKNGeometricUnitCell::ArrangeAtom(), FreeFactoryData(), GetAtomCountInUnitcell(), InitAtomList(), SetAtomCoordination(), and SetRatio().

std::vector< CKNGeometricAtom > CKNGeometricAtomFactory::m_vectAtomList_2
staticprivate
std::vector< CKNGeometricCoordination > CKNGeometricAtomFactory::m_vectNeighborRelation1To2
staticprivate

Neighbor relationship from anion to cation.

Definition at line 41 of file KNGeometricAtomFactory.h.

Referenced by CKNGeometricUnitCell::BuildNeighborInformation(), FreeFactoryData(), InitNeighborList(), SetNeighborCoordination(), and SetRatio().

std::vector< CKNGeometricCoordination > CKNGeometricAtomFactory::m_vectNeighborRelation2To1
staticprivate

Neighbor relationship from cation to anion.

Definition at line 42 of file KNGeometricAtomFactory.h.

Referenced by CKNGeometricUnitCell::BuildNeighborInformation(), FreeFactoryData(), InitNeighborList(), SetNeighborCoordination(), and SetRatio().


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