IPCC  1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
KNGeometricAtomFactory.cpp
Go to the documentation of this file.
1 
7 #include "stdafx.h"
8 #include <string.h>
10 
11 std::vector<CKNGeometricAtom> CKNGeometricAtomFactory::m_vectAtomList_1;
12 std::vector<CKNGeometricAtom> CKNGeometricAtomFactory::m_vectAtomList_2;
13 
14 std::vector<CKNGeometricCoordination> CKNGeometricAtomFactory::m_vectNeighborRelation1To2;
15 std::vector<CKNGeometricCoordination> CKNGeometricAtomFactory::m_vectNeighborRelation2To1;
16 
17 
19 {
20 }
21 
22 
24 {
25 }
26 
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 }
50 
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 }
73 
77 void CKNGeometricAtomFactory::SetRatio(double fRatio[3])
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 }
97 
102 {
103  SetRatio(fSize);
104 }
105 
107 {
108  m_vectAtomList_1.clear();
109  m_vectAtomList_2.clear();
112 }
113 
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 }
154 
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 }
176 
178 {
179  m_vectAtomList_1.clear();
180  m_vectAtomList_2.clear();
181 }
182 
184 {
187 }
MATERIAL_INDEX
Definition: CKNGlobal.h:106
static void SetNeighborCoordination(CKNGeometricAtom::NEIGHOR_RELATION type, double x, double y, double z)
Setting neighbor coordination.
Definition: CKNGlobal.h:106
Factory class for create CKNGeometricAtom instance.
Class for coordination.
void SetCoordination(CKNGeometricCoordination coordination)
Get atom coordination.
void SetType(ATOM_TYPE type, MATERIAL_INDEX number)
Set atom information.
static void SetAtomCoordination(CKNGeometricAtom::ATOM_TYPE type, double x, double y, double z)
Setting atom coordination.
static MATERIAL_INDEX GetMaterialNumber(char *pszMaterialName, CKNGeometricAtom::ATOM_TYPE type)
Get total atom counts in unit cell.
Definition: CKNGlobal.h:106
Definition: CKNGlobal.h:106
static std::vector< CKNGeometricCoordination > m_vectNeighborRelation2To1
Neighbor relationship from cation to anion.
static void FreeFactoryData()
Release all setting data.
Definition: CKNGlobal.h:106
Class for Atom.
static std::vector< CKNGeometricAtom > m_vectAtomList_1
Get total Neighbor count in unit cell.
static void SetUnitCellSize(double fSize[3])
Set unitcell size.
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.
void SetCoordination(CKNGeometricCoordination coordination)
Get coordination with double buffer.
static std::vector< CKNGeometricAtom > m_vectAtomList_2
Atom array for cation.