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

Factory class for create CKNGeometricAtom instance. More...

#include "GeometricAtomFactory.h"

Collaboration diagram for CGeometricAtomFactory:
Collaboration graph

Public Member Functions

 CGeometricAtomFactory ()
 
 ~CGeometricAtomFactory ()
 

Static Public Member Functions

static void SetAtomCoordination (CGeometricAtom::ATOM_TYPE type, double x, double y, double z)
 Setting atom coordination. More...
 
static void SetNeighborCoordination (CGeometricAtom::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, CGeometricAtom::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
< CGeometricAtom
m_vectAtomList_1
 Get total Neighbor count in unit cell. More...
 
static std::vector
< CGeometricAtom
m_vectAtomList_2
 Atom array for cation. More...
 
static std::vector
< CGeometricCoordination
m_vectNeighborRelation1To2
 Neighbor relationship from anion to cation. More...
 
static std::vector
< CGeometricCoordination
m_vectNeighborRelation2To1
 Neighbor relationship from cation to anion. More...
 

Friends

class CGeometricUnitCell
 

Detailed Description

Factory class for create CKNGeometricAtom instance.

Date
03/Oct/2014

Definition at line 17 of file GeometricAtomFactory.h.

Constructor & Destructor Documentation

CGeometricAtomFactory::CGeometricAtomFactory ( )

Definition at line 17 of file GeometricAtomFactory.cpp.

18 {
19 }
CGeometricAtomFactory::~CGeometricAtomFactory ( )

Definition at line 22 of file GeometricAtomFactory.cpp.

23 {
24 }

Member Function Documentation

void CGeometricAtomFactory::FreeFactoryData ( )
static

Release all setting data.

Definition at line 105 of file GeometricAtomFactory.cpp.

References m_vectAtomList_1, m_vectAtomList_2, m_vectNeighborRelation1To2, and m_vectNeighborRelation2To1.

106 {
107  m_vectAtomList_1.clear();
108  m_vectAtomList_2.clear();
111 }
static std::vector< CGeometricCoordination > m_vectNeighborRelation2To1
Neighbor relationship from cation to anion.
static std::vector< CGeometricCoordination > m_vectNeighborRelation1To2
Neighbor relationship from anion to cation.
static std::vector< CGeometricAtom > m_vectAtomList_1
Get total Neighbor count in unit cell.
static std::vector< CGeometricAtom > m_vectAtomList_2
Atom array for cation.
static int CGeometricAtomFactory::GetAtomCountInUnitcell ( )
inlinestatic

Definition at line 28 of file GeometricAtomFactory.h.

References m_vectAtomList_1, and m_vectAtomList_2.

Referenced by CGeometricUnitCell::AddPeridoicDirection(), CGeometricUnitCell::Deserialize(), CGeometricShape::Deserialize(), CGeometricShape::ExchangeAtomInfoBetweenNode(), CGeometricShape::Serialize(), CGeometricUnitCell::SetPeriodic(), and CGeometricUnitCell::SetPeriodicDirection().

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

Here is the caller graph for this function:

MATERIAL_INDEX CGeometricAtomFactory::GetMaterialNumber ( char *  pszMaterialName,
CGeometricAtom::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 118 of file GeometricAtomFactory.cpp.

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

Referenced by CGeometricUnitCell::ArrangeAtom(), CGeometricShape::BuildPEBiasVector(), CGeometricShape::BuildPEHamiltonian(), CGeometricUnitCell::NumberingSubElement(), and CGeometricUnitCell::SetSubDomainMaterial().

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

Here is the caller graph for this function:

MATERIAL_INDEX CGeometricAtomFactory::GetMaterialNumber ( char *  pszMaterialName)
static

Get Atom number that mean material of atom number.

Parameters
pszMaterialNameMaterial name
Returns
Material number

Definition at line 158 of file GeometricAtomFactory.cpp.

References ATOM_NUM_BASE, GaAs, InAs, and Si.

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

Definition at line 33 of file GeometricAtomFactory.h.

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

Definition at line 176 of file GeometricAtomFactory.cpp.

References m_vectAtomList_1, and m_vectAtomList_2.

Referenced by CGeometricShape::SetAtomAndNeighborInformation().

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

Here is the caller graph for this function:

void CGeometricAtomFactory::InitNeighborList ( )
static

Definition at line 182 of file GeometricAtomFactory.cpp.

References m_vectNeighborRelation1To2, and m_vectNeighborRelation2To1.

Referenced by CGeometricShape::SetAtomAndNeighborInformation().

183 {
186 }
static std::vector< CGeometricCoordination > m_vectNeighborRelation2To1
Neighbor relationship from cation to anion.
static std::vector< CGeometricCoordination > m_vectNeighborRelation1To2
Neighbor relationship from anion to cation.

Here is the caller graph for this function:

void CGeometricAtomFactory::SetAtomCoordination ( CGeometricAtom::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 32 of file GeometricAtomFactory.cpp.

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

Referenced by CGeometricShape::SetAtomAndNeighborInformation().

33 {
34  CGeometricAtom atom;
35 
36  atom.SetType(type, ATOM_NUM_BASE);
37  atom.SetCoordination(x, y, z);
38 
39  switch (type)
40  {
41  case CGeometricAtom::A:
42  m_vectAtomList_1.push_back(atom);
43  break;
44  case CGeometricAtom::C:
45  m_vectAtomList_2.push_back(atom);
46  break;
47  }
48 }
Class for Atom.
Definition: GeometricAtom.h:15
void SetType(ATOM_TYPE type, MATERIAL_INDEX number)
Set atom information.
void SetCoordination(CGeometricCoordination coordination)
Get atom coordination.
static std::vector< CGeometricAtom > m_vectAtomList_1
Get total Neighbor count in unit cell.
static std::vector< CGeometricAtom > m_vectAtomList_2
Atom array for cation.

Here is the call graph for this function:

Here is the caller graph for this function:

void CGeometricAtomFactory::SetNeighborCoordination ( CGeometricAtom::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 56 of file GeometricAtomFactory.cpp.

References CGeometricAtom::A2C, CGeometricAtom::C2A, m_vectNeighborRelation1To2, m_vectNeighborRelation2To1, and CGeometricCoordination::SetCoordination().

Referenced by CGeometricShape::SetAtomAndNeighborInformation().

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

Here is the call graph for this function:

Here is the caller graph for this function:

void CGeometricAtomFactory::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 76 of file GeometricAtomFactory.cpp.

References m_vectAtomList_1, m_vectAtomList_2, m_vectNeighborRelation1To2, and m_vectNeighborRelation2To1.

Referenced by SetUnitCellSize().

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

Here is the caller graph for this function:

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

Set unitcell size.

Parameters
fSizesize for x, y, z direction

Definition at line 100 of file GeometricAtomFactory.cpp.

References SetRatio().

101 {
102  SetRatio(fSize);
103 }
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 CGeometricUnitCell
friend

Definition at line 42 of file GeometricAtomFactory.h.

Member Data Documentation

std::vector< CGeometricAtom > CGeometricAtomFactory::m_vectAtomList_1
staticprivate

Get total Neighbor count in unit cell.

Atom array for anion

Definition at line 33 of file GeometricAtomFactory.h.

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

std::vector< CGeometricAtom > CGeometricAtomFactory::m_vectAtomList_2
staticprivate
std::vector< CGeometricCoordination > CGeometricAtomFactory::m_vectNeighborRelation1To2
staticprivate

Neighbor relationship from anion to cation.

Definition at line 39 of file GeometricAtomFactory.h.

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

std::vector< CGeometricCoordination > CGeometricAtomFactory::m_vectNeighborRelation2To1
staticprivate

Neighbor relationship from cation to anion.

Definition at line 40 of file GeometricAtomFactory.h.

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


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