26 static void SetLength(
double fLength[3],
double fOriginLength[3]);
35 void SetCoordination(
double fXCoordination,
double fYCoordination,
double fZCoordination);
43 void SetAssignIndex(
double fXAssignIndex,
double fYAssignIndex,
double fZAssignIndex);
50 void SetUnitcellList(std::vector<CKNGeometricUnitCell> *pVect, std::vector<CKNGeometricUnitCell> *pVectPrev, std::vector<CKNGeometricUnitCell> *pVectNext);
54 void SetPeriodic(
bool bPeriodic,
int periodicDirection);
56 static double CalculatingIndex(
double fXAssignedIndex,
double fYAssignedIndex,
double fZAssignedIndex,
double fAssignedCount[3]);
double m_fUnitCellID
Unit cell ID.
double m_fAssignedIndex[3]
Assign index.
CKNGeometricCoordination m_coordination
Coordination of unit cell.
static void SetFullFillIndex(int nIndex)
Changing Full fill neighbor index.
Factory class for create CKNGeometricAtom instance.
int IsMachedNeighborRule(CKNGeometricAtom *pCompare1, CKNGeometricAtom *pCompare2, std::vector< CKNGeometricCoordination > *pNeighborRelation, int &nCheckFill)
Checking neighbor with rule.
Class for Geometric unit cell.
std::vector< double > m_vectNeighborCellID
Neighbor unit cell list.
void CheckingNeighborCandiate(double fAssignedCount[3], bool bFrontFace, bool bBackEnd)
Find neigbhor candidate for neighbor in atom. Maxium 26 unitcell index can be assigned.
std::vector< CKNGeometricUnitCell > * m_vectUnitCellInNext
Back side unit cell list in shape.
static void ResetSubElementID()
Get unit cell length.
int m_periodicDirection
Periodic direction information.
void ShiftAtomID(double fShift)
Get neighbor unit cell ID.
void CopyInnerAtomIndex(CKNGeometricUnitCell srcUnitCell)
Copy atom id from source. This functino for periodic atom setting.
void ShiftID(double fShift)
Get unit cell ID.
This class for parsing input command file.
void FinalSubElement()
Finalizing SubElement.
std::vector< double > * GetNeighborCellID()
double * GetAssignedIndex()
void ArrangeAtom(CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam)
Set atoms information(coordination, type) in unit cell.
std::vector< CKNGeometricUnitCell > * m_vectUnitCellInPrev
Front side unit cell list in shape.
CKNGeometricAtom * GetSubElementByID(double fID)
Return atom in unitcell by atom ID.
CKNGeometricCoordination GetCoordination()
static double m_fLength[3]
Unit cell length.
void SetAssignIndex(double fXAssignIndex, double fYAssignIndex, double fZAssignIndex)
Get Assign index.
bool m_bPeriodicElement
Periodic element flag.
void SetPeriodic(bool bPeriodic, int periodicDirection)
To mark unit cell is periodic condition.
Structure for save input command file parsing result.
std::vector< CKNGeometricAtom > m_vectIntenalAtom
Atom in unit cell.
bool FindingNeighborInUnitcell(CKNGeometricUnitCell *pUnitcell, CKNGeometricAtom *pCompare1, CKNGeometricAtom::ATOM_TYPE type1, std::vector< CKNGeometricCoordination > *pNeighborRelation, int &nCheckFill)
Finding neighbor in same unit cell.
void Serialize(double *pBuffer)
Convert unit cell data to double buffer.
static double GetSubElementID()
Reset SubElement ID to Zero.
void AddPeridoicDirection(CKNGeometricAtom::PERIODIC_DIRECTION periodicDirection)
Adding periodic direction.
void SetPeriodicDirection(int periodicDirection)
Set periodic direction.
unsigned int NumberingSubElement(CKNGeometricCoordination ShapeCoordination, double fLength[3], int nShapeType, char *pszDomainMatName)
Assign atom ID to sub element(atoms in unit cell)
CKNGeometricAtom * GetSubElementAt(double fIndex)
Get atom count in unit cell.
static void SetLength(double fLength[3], double fOriginLength[3])
Set unit cell length.
void SetSubDomainMaterial(CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam)
Set atoms information(coordination, type) in unit cell.
static double CalculatingIndex(double fXAssignedIndex, double fYAssignedIndex, double fZAssignedIndex, double fAssignedCount[3])
Calulating unit cell index.
static double m_SubElementID
Maxium atom ID in shape.
bool IsPeriodicUnitCell()
Check this unit cell is periodic condition or not.
static double GetLength(AXIS_DEFINE index)
void SetCoordination(CKNGeometricCoordination coordination)
Get coordination of unit cell.
static int m_nFullFillIndex
Get SubElement ID. It means new atom id.
double GetID()
Set unit cell ID.
void Deserialize(double *pBuffer)
Convert double buffer to unit cell data.
void SetUnitcellList(std::vector< CKNGeometricUnitCell > *pVect, std::vector< CKNGeometricUnitCell > *pVectPrev, std::vector< CKNGeometricUnitCell > *pVectNext)
Set unit cell list of shape to each unit cell.
void BuildNeighborInformation(double *pfAssignCount, std::vector< CKNGeometricAtom * > *pSurfaceList)
Build neighbor information to each atom.
std::vector< CKNGeometricUnitCell > * m_vectUnitCellInShape
Unit cell list in shape.