|
IPCC
1.0
|
Class for Geometric shape. More...
#include "KNGeometricShape.h"

Public Member Functions | |
| CKNGeometricShape () | |
| ~CKNGeometricShape () | |
| void | SetOriginCoordination (double x, double y, double z) |
| Building Geometric part. More... | |
| void | SetDirection (double x_axis, double y_axis, double z_axis) |
| Set direciton of shape. More... | |
| void | SetLength (double lx, double ly, double lz) |
| Set length of shape. More... | |
| MATERIAL_INDEX | GetMaterialType () |
| void | SetMaterialType (MATERIAL_INDEX type) |
| Get maetrial typpe of shap. More... | |
| void | SetMaterialType (char *pszType) |
| Set maetrial type of shape. More... | |
| unsigned int | GetShapeForm () |
| void | SetShapeForm (unsigned int form) |
| Get form type of shape. More... | |
| void | SetShapeForm (char *pszForm) |
| Get form type of shape. More... | |
| bool | GetConsideringBoundaryCondition (AXIS_DEFINE direction) |
| void | SetConsideringBoundaryCondition (bool bConsider, AXIS_DEFINE direction) |
| Get bondary condition of shape. More... | |
| bool | FillUnitcell (CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam) |
| Set bondary condition of shape. More... | |
| void | BuildNeighborInformation () |
| Find neighbor of each atom. More... | |
| bool | IsFrontFace () |
| void | SetFrontFace (bool bFrontFace) |
| Check is this front face side in MPI running enviroment. More... | |
| bool | IsBackendFace () |
| Set front face side mark to shape object. More... | |
| void | SetBackendFace (bool bBackendFace) |
| Check is this back end face side in MPI running enviroment. More... | |
| bool | ConstructMapInfo (LPNEIGHBOR_MAP_INFO lpMapInfo, CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam) |
| Extract atom information from runtime objects. More... | |
| void | ShiftAtomID (double fShift) |
| Shift atom id in MPI running enviroment. More... | |
| void | PeriodicUnitCellNumbering (bool bXAxis=false) |
| Numbering to periodic unitcell. More... | |
| void | InitMapInfo (LPNEIGHBOR_MAP_INFO lpMapInfo) |
| Intilize map info data. More... | |
| bool | RefillPeriodicBinding (CKNMatrixOperation::CKNCSR *pResult, CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam, LPNEIGHBOR_MAP_INFO lpMapInfo, unsigned int nRepeatIndex, double fKValue[3]) |
| Applying phase to Hamiltonian. More... | |
| double | GetTotalAtomCount () |
| void | SetTotalAtomCount (double fTotalAtomCountinMPI) |
| Get total valid atom count in shape. More... | |
| double | GetAtomStartID () |
| Set total valid atom count in shape. More... | |
| void | ExchangeAtomInfoBetweenNode () |
| Get start index of atom in shape, using in MPI running enviroment. More... | |
| void | FinalShape () |
| Finalize Shape variable. More... | |
| std::vector< CKNGeometricAtom * > * | GetSurfaceAtomList () |
Static Public Member Functions | |
| static void | SetShapeInformation (CKNGeometricShape &shape, CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam) |
| Set shape information(Length, material, bondary condition and so on) More... | |
| static bool | SetAtomAndNeighborInformation (CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam) |
| Set neighbor information to AtomFactory. More... | |
| static void | FreeMapInfo (LPNEIGHBOR_MAP_INFO lpMapInfo) |
| Release mapinfo data. More... | |
Public Attributes | |
| unsigned int | m_nAtomFirstLayer |
| Get Surface atom list. More... | |
| unsigned int | m_nAtomLastLayer |
| Last layer information for sending to next node. More... | |
Static Public Attributes | |
| static CKNGeometricUnitCellInfo_zincblende | m_UnitCellInfo_zincblende |
| static CKNGeometricUnitCellInfo_cubic | m_UnitCellInfo_cubic |
| static IKNGeometricUnitCellInfo * | m_pUnitCellInfo |
| Unitcell information pointer for using in class internal. More... | |
| static CKNMatrixOperation::CKNDMatrix | m_rotationMatrix |
| Rotation matrix for given direction. More... | |
Private Member Functions | |
| bool | IsInBoundaryCondition (int x, int y, int z, int maxX, int maxY, int maxZ) |
| Check unitcell is in the bondary area or not. More... | |
| void | FreeUnitCellList () |
| Relase unitcell list. More... | |
| void | InitShape () |
| Initialize Shape variable. More... | |
| void | RotateMatrix (CKNMatrixOperation::CKNDMatrix *pMatrixNbr, CKNMatrixOperation::CKNDMatrix *pMatrixResult, double fDegree[2]) |
| Rotate matrix with calculated degree. More... | |
| CKNGeometricAtom * | GetAtomByIndex (double fID) |
| Get atom instance by ID. More... | |
| double | GetKPhaseSign (double fAtomPos, double fPeriodicAtomPos) |
| Calculating Phase sign. More... | |
| int | GetPeriodicDirection (int x, int y, int z, int maxX, int maxY, int maxZ) |
| Get periodic direction information. More... | |
| bool | CalculateUnitcellCount () |
| Calculating unitcell count in shape. More... | |
| void | ArrangeUnitCell (CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam) |
| Arranging unitcell into shape. More... | |
| void | CheckingNeighborCandiate () |
| Checking neighbor unitcell by calculating index. More... | |
| double * | Serialize (double fXLayer) |
| Serialize unitcells with specific later index to double array. More... | |
| void | Deserialize (std::vector< CKNGeometricUnitCell > *pVectUnitCell, double *pBuffer, bool bFrontSide) |
| Deerialize unitcells from double array. More... | |
| void | BuildGeoFileName (char *pszFileName, CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam) |
| Make atom map naming. More... | |
| bool | SetMapInfoSize (LPNEIGHBOR_MAP_INFO lpMapInfo, double fSize) |
| Building Hamiltonian part. More... | |
Static Private Member Functions | |
| static void | BuildRotationMatrix (double fDegree[2]) |
| Build rotation matrix for given direction. More... | |
| static void | CalculateDegree (CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam) |
| Calculating degree from direction information. More... | |
Private Attributes | |
| double | m_fLength [3] |
| Building Geometric part. More... | |
| double | m_fAssignedCount [3] |
| Unitcell assigend count in shape for each direction. More... | |
| unsigned int | m_ShapeForm |
| Shape form. More... | |
| bool | m_bConsiderBoundaryCondition [3] |
| Bondary condition for each driection. More... | |
| bool | m_bFrontFace |
| Flag of front face or not. More... | |
| bool | m_bBackendFace |
| Flag of back end face or not. More... | |
| double | m_fTotalAtomCountinMPI |
| Total valid atom count in shape. More... | |
| double | m_fAtomIDStartIndex |
| Start atom index in current Shape. More... | |
| MATERIAL_INDEX | m_MaterialType |
| Material type of shape. More... | |
| std::vector< CKNGeometricUnitCell > | m_vectUnitCell |
| Array of unitcell in shape. More... | |
| std::vector< CKNGeometricUnitCell > | m_vectPrevUnitCell |
| Front edge unit cell that copy from previous side node. More... | |
| std::vector< CKNGeometricUnitCell > | m_vectNextUnitCell |
| Back end edge unit cell that copy from next side node. More... | |
| std::vector< CKNGeometricAtom * > | m_vectSurfaceAtom |
| CKNGeometricCoordination | m_originCoordination |
| Orign coordination of shape. More... | |
| CKNGeometricDirection | m_shapDirection |
| Direction of shape. More... | |
| CKNGeometricShape::CKNGeometricShape | ( | ) |
Definition at line 33 of file KNGeometricShape.cpp.
References InitShape().

| CKNGeometricShape::~CKNGeometricShape | ( | ) |
Definition at line 38 of file KNGeometricShape.cpp.
References FinalShape().

|
private |
Arranging unitcell into shape.
| lpParam | Input parameters parsing from command file |
Definition at line 393 of file KNGeometricShape.cpp.
References _X, _Y, _Z, CKNGeometricUnitCell::ArrangeAtom(), CKNGeometricCoordination::GetCoordination(), CKNGeometricCoordination::GetCoordinationAll(), CKNMPIManager::GetCurrentRank(), CKNGeometricUnitCell::GetLength(), GetPeriodicDirection(), CKNMPIManager::GetTotalNodeCount(), IsInBoundaryCondition(), m_bConsiderBoundaryCondition, m_bFrontFace, m_fAssignedCount, m_fLength, m_nAtomFirstLayer, m_nAtomLastLayer, m_originCoordination, m_vectNextUnitCell, m_vectPrevUnitCell, m_vectUnitCell, CKNGeometricAtom::NONE, CKNCommandFileParser::INPUT_CMD_PARAM::nShape, CKNGeometricUnitCell::NumberingSubElement(), CKNGeometricUnitCell::ResetSubElementID(), CKNGeometricUnitCell::SetAssignIndex(), CKNGeometricCoordination::SetCoordination(), CKNGeometricUnitCell::SetCoordination(), CKNGeometricUnitCell::SetID(), CKNGeometricCoordination::SetOffset(), CKNGeometricUnitCell::SetPeriodic(), CKNGeometricUnitCell::SetSubDomainMaterial(), CKNGeometricUnitCell::SetUnitcellList(), and CKNCommandFileParser::INPUT_CMD_PARAM::szDomainMat.
Referenced by FillUnitcell().


|
private |
Make atom map naming.
| [out] | pszFileName | Geometric information file name |
| lpParam | Input parameter parsing from command file |
Definition at line 1291 of file KNGeometricShape.cpp.
References CKNCommandFileParser::INPUT_CMD_PARAM::bConsiderBoundaryCondition, CKNCommandFileParser::INPUT_CMD_PARAM::nDirectionSingle, CKNCommandFileParser::INPUT_CMD_PARAM::nSubDomainNumber, and CKNCommandFileParser::INPUT_CMD_PARAM::szShape.
Referenced by ConstructMapInfo().

| void CKNGeometricShape::BuildNeighborInformation | ( | ) |
Find neighbor of each atom.
Definition at line 117 of file KNGeometricShape.cpp.
References GetSurfaceAtomList(), m_fAssignedCount, and m_vectUnitCell.
Referenced by CKNTBMS_Solver::Launching_TBMS_Solver().


|
staticprivate |
Build rotation matrix for given direction.
| fDegree | Given degree of theta and phi |
Definition at line 1268 of file KNGeometricShape.cpp.
References CKNMatrixOperation::CKNDMatrix::BuildMatrixFirst(), m_rotationMatrix, PHI_DEGREE, CKNMatrixOperation::CKNDMatrix::SetElement(), THETA_DEGREE, and CKNMatrixOperation::CKNDMatrix::TrnasPos().
Referenced by SetAtomAndNeighborInformation().


|
staticprivate |
Calculating degree from direction information.
| lpParam | Input parameters parsing from command file |
Definition at line 696 of file KNGeometricShape.cpp.
References CKNCommandFileParser::INPUT_CMD_PARAM::fDegree, CKNCommandFileParser::INPUT_CMD_PARAM::fDirection, PHI_DEGREE, PI_VALUE, and THETA_DEGREE.
Referenced by SetAtomAndNeighborInformation().

|
private |
Calculating unitcell count in shape.
< Only for Show unitcell count
< Only for Show unitcell count
Definition at line 254 of file KNGeometricShape.cpp.
References _X, _Y, _Z, CKNMPIManager::AllReduceDouble(), CKNGeometricCoordination::GetCoordination(), CKNMPIManager::GetCurrentRank(), CKNGeometricUnitCell::GetLength(), CKNMPIManager::GetTotalNodeCount(), CKNMPIManager::IsRootRank(), m_bBackendFace, m_bConsiderBoundaryCondition, m_bFrontFace, m_fAssignedCount, m_fLength, m_originCoordination, CKNGeometricCoordination::SetOffset(), and CKNIPCCUtility::ShowMsg().
Referenced by FillUnitcell().


|
private |
Checking neighbor unitcell by calculating index.
Definition at line 735 of file KNGeometricShape.cpp.
References m_bBackendFace, m_bFrontFace, m_fAssignedCount, and m_vectUnitCell.
Referenced by FillUnitcell().

| bool CKNGeometricShape::ConstructMapInfo | ( | LPNEIGHBOR_MAP_INFO | lpMapInfo, |
| CKNCommandFileParser::LPINPUT_CMD_PARAM | lpParam | ||
| ) |
Extract atom information from runtime objects.
| lpMapInfo | Atom map information |
| bFileWrite | Option for save file or not |
Definition at line 750 of file KNGeometricShape.cpp.
References _X, _Y, _Z, ATOM_DEFAULT_INDEX, CKNCommandFileParser::INPUT_CMD_PARAM::bSaveMapFile, BuildGeoFileName(), NEIGHBOR_MAP_INFO::fItemCount, FreeMapInfo(), CKNGeometricCoordination::GetCoordination(), CKNGeometricAtom::GetCoordination(), CKNMPIManager::GetCurrentRank(), CKNGeometricAtom::GetDomainMaterialNumber(), CKNGeometricAtom::GetID(), CKNGeometricAtom::GetMaterialMaterialNumber(), CKNGeometricAtom::GetMaterialNumber(), CKNGeometricAtom::GetNeighborAtomID(), CKNGeometricAtom::GetNeighborCount(), CKNGeometricUnitCell::GetSubElementID(), CKNMPIManager::GetTotalNodeCount(), CKNGeometricAtom::GetType(), InitMapInfo(), CKNMPIManager::IsDeflationRoot(), CKNGeometricAtom::IsPeriodicAtom(), CKNGeometricAtom::IsPeriodicCoupling(), CKNMPIManager::IsRootRank(), m_vectUnitCell, NEIGHBOR_MAP_INFO::pAtomType, NEIGHBOR_MAP_INFO::pbPeriodicCondition, NEIGHBOR_MAP_INFO::pDomainMaterialNumber, NEIGHBOR_MAP_INFO::pfID, NEIGHBOR_MAP_INFO::pfNeighbor, NEIGHBOR_MAP_INFO::pfX_Coordination, NEIGHBOR_MAP_INFO::pfY_Coordination, NEIGHBOR_MAP_INFO::pfZ_Coordination, NEIGHBOR_MAP_INFO::pMaterialNumber, NEIGHBOR_MAP_INFO::pNeighborMaterial, CKNMPIManager::ReceiveDoubleBufferSync(), CKNMPIManager::SendDoubleBufferSync(), SetMapInfoSize(), and CKNIPCCUtility::ShowMsg().
Referenced by CKNTBMS_Solver::Launching_TBMS_Solver().


|
private |
Deerialize unitcells from double array.
| [out] | pVectUnitCell | Buffer for saving deserializing result |
| pBuffer | Source data buffer | |
| bFrontSide | Option is fornt side or not |
Definition at line 1241 of file KNGeometricShape.cpp.
References _Y, _Z, CKNGeometricUnitCell::Deserialize(), CKNGeometricAtomFactory::GetAtomCountInUnitcell(), m_fAssignedCount, m_vectUnitCell, CKNGeometricUnitCell::SetID(), and UNITCELL_WRITING_BLOCK_SIZE.
Referenced by ExchangeAtomInfoBetweenNode().


| void CKNGeometricShape::ExchangeAtomInfoBetweenNode | ( | ) |
Get start index of atom in shape, using in MPI running enviroment.
Exchange edge information between MPI nodes
< Exchange bondary atom layer to back side
< Exchange bondary atom layer to front side
Definition at line 1096 of file KNGeometricShape.cpp.
References _X, _Y, _Z, CKNMPIManager::BroadcastDouble(), Deserialize(), FREE_MEM, CKNGeometricAtomFactory::GetAtomCountInUnitcell(), CKNMPIManager::GetCurrentRank(), CKNGeometricUnitCell::GetSubElementID(), CKNMPIManager::GetTotalNodeCount(), CKNMPIManager::IsRootRank(), m_bConsiderBoundaryCondition, m_fAssignedCount, m_fAtomIDStartIndex, m_fTotalAtomCountinMPI, m_vectNextUnitCell, m_vectPrevUnitCell, m_vectUnitCell, CKNMPIManager::ReceiveDoubleBufferSync(), CKNMPIManager::SendDoubleBufferSync(), Serialize(), ShiftAtomID(), and UNITCELL_WRITING_BLOCK_SIZE.
Referenced by CKNTBMS_Solver::Launching_TBMS_Solver(), and CKNGeometricConstructionLaunch::LaunchingGeometricConstructionMPI().


| bool CKNGeometricShape::FillUnitcell | ( | CKNCommandFileParser::LPINPUT_CMD_PARAM | lpParam | ) |
Set bondary condition of shape.
Spreading atom into shape
| lpParam | Input parameter parsing from command file |
Definition at line 103 of file KNGeometricShape.cpp.
References ArrangeUnitCell(), CalculateUnitcellCount(), and CheckingNeighborCandiate().
Referenced by CKNTBMS_Solver::Launching_TBMS_Solver(), CKNGeometricConstructionLaunch::LaunchingGeometricConstruction(), and CKNGeometricConstructionLaunch::LaunchingGeometricConstructionMPI().


| void CKNGeometricShape::FinalShape | ( | ) |
Finalize Shape variable.
Definition at line 249 of file KNGeometricShape.cpp.
References FreeUnitCellList().
Referenced by CKNTBMS_Solver::Launching_TBMS_Solver(), and ~CKNGeometricShape().


|
static |
Release mapinfo data.
| lpMapInfo | Atom map information |
Definition at line 1043 of file KNGeometricShape.cpp.
References FREE_MEM, MAX_NEIGHBOR, NEIGHBOR_MAP_INFO::pAtomType, NEIGHBOR_MAP_INFO::pbPeriodicCondition, NEIGHBOR_MAP_INFO::pDomainMaterialNumber, NEIGHBOR_MAP_INFO::pfID, NEIGHBOR_MAP_INFO::pfNeighbor, NEIGHBOR_MAP_INFO::pfX_Coordination, NEIGHBOR_MAP_INFO::pfY_Coordination, NEIGHBOR_MAP_INFO::pfZ_Coordination, NEIGHBOR_MAP_INFO::pMaterialNumber, and NEIGHBOR_MAP_INFO::pNeighborMaterial.
Referenced by ConstructMapInfo(), CKNTBMS_Solver::FinalEvn(), and CKNGeometricConstructionLaunch::LaunchingGeometricConstruction().

|
private |
Relase unitcell list.
Definition at line 220 of file KNGeometricShape.cpp.
References m_vectNextUnitCell, m_vectPrevUnitCell, m_vectSurfaceAtom, and m_vectUnitCell.
Referenced by FinalShape().

|
private |
Get atom instance by ID.
| fID | Atom ID |
Definition at line 677 of file KNGeometricShape.cpp.
References CKNGeometricAtom::IsPeriodicAtom(), and m_vectUnitCell.
Referenced by RefillPeriodicBinding().


|
inline |
Set total valid atom count in shape.
Definition at line 57 of file KNGeometricShape.h.
References m_fAtomIDStartIndex.
Referenced by CKNTBMS_Solver::AllocateCSR(), and CKNTBMS_Solver::Launching_TBMS_Solver().

|
inline |
Definition at line 42 of file KNGeometricShape.h.
References m_bConsiderBoundaryCondition.
|
private |
Calculating Phase sign.
| fAtomPos | Atom coordination |
| fPeriodicAtomPos | Periodic atom coordination |
Definition at line 663 of file KNGeometricShape.cpp.
Referenced by RefillPeriodicBinding().

|
inline |
Definition at line 36 of file KNGeometricShape.h.
References m_MaterialType.
|
private |
Get periodic direction information.
| x | x direction unitcell index |
| y | y direction unitcall index |
| z | z direction unitcell index |
| maxX | x direction max index of unitcell |
| maxY | y direction max index of unitcell |
| maxZ | z direction max index of unitcell |
Definition at line 136 of file KNGeometricShape.cpp.
References _X, _Y, _Z, CKNMPIManager::GetCurrentRank(), CKNMPIManager::GetTotalNodeCount(), CKNMPIManager::IsRootRank(), m_bConsiderBoundaryCondition, CKNGeometricAtom::NONE, CKNGeometricAtom::X_DIRECTION, CKNGeometricAtom::Y_DIRECTION, and CKNGeometricAtom::Z_DIRECTION.
Referenced by ArrangeUnitCell().


|
inline |
|
inline |
Definition at line 60 of file KNGeometricShape.h.
Referenced by BuildNeighborInformation(), and CKNTBMS_Solver::Launching_TBMS_Solver().

|
inline |
Definition at line 55 of file KNGeometricShape.h.
References m_fTotalAtomCountinMPI.
Referenced by CKNTBMS_Solver::AllocateCSR().

| void CKNGeometricShape::InitMapInfo | ( | LPNEIGHBOR_MAP_INFO | lpMapInfo | ) |
Intilize map info data.
| lpMapInfo | Atom map information |
Definition at line 1066 of file KNGeometricShape.cpp.
References NEIGHBOR_MAP_INFO::fItemCount, MAX_NEIGHBOR, NEIGHBOR_MAP_INFO::pAtomType, NEIGHBOR_MAP_INFO::pbPeriodicCondition, NEIGHBOR_MAP_INFO::pfID, NEIGHBOR_MAP_INFO::pfNeighbor, NEIGHBOR_MAP_INFO::pfX_Coordination, NEIGHBOR_MAP_INFO::pfY_Coordination, NEIGHBOR_MAP_INFO::pfZ_Coordination, and NEIGHBOR_MAP_INFO::pNeighborMaterial.
Referenced by ConstructMapInfo().

|
private |
Initialize Shape variable.
Definition at line 228 of file KNGeometricShape.cpp.
References _X, _Y, _Z, BOX_SHAPE, m_bBackendFace, m_bConsiderBoundaryCondition, m_bFrontFace, m_fAtomIDStartIndex, m_fLength, m_fTotalAtomCountinMPI, m_MaterialType, m_nAtomFirstLayer, m_nAtomLastLayer, m_originCoordination, m_pUnitCellInfo, m_shapDirection, m_ShapeForm, CKNGeometricCoordination::SetCoordination(), CKNGeometricDirection::SetDirection(), and Si.
Referenced by CKNGeometricShape().


|
inline |
Set front face side mark to shape object.
Definition at line 48 of file KNGeometricShape.h.
References m_bBackendFace.
|
inline |
Definition at line 46 of file KNGeometricShape.h.
References m_bFrontFace.
|
private |
Check unitcell is in the bondary area or not.
| x | x direction unitcell index |
| y | y direction unitcall index |
| z | z direction unitcell index |
| maxX | x direction max index of unitcell |
| maxY | y direction max index of unitcell |
| maxZ | z direction max index of unitcell |
Definition at line 180 of file KNGeometricShape.cpp.
References _X, _Y, _Z, CKNMPIManager::GetCurrentRank(), CKNMPIManager::GetTotalNodeCount(), CKNMPIManager::IsRootRank(), and m_bConsiderBoundaryCondition.
Referenced by ArrangeUnitCell().


| void CKNGeometricShape::PeriodicUnitCellNumbering | ( | bool | bXAxis = false | ) |
Numbering to periodic unitcell.
| bXAxis | Do operation to x axis or not |
Definition at line 498 of file KNGeometricShape.cpp.
References _X, _Y, _Z, CKNGeometricUnitCell::CalculatingIndex(), FIND_TARGET_INDEX, CKNMPIManager::GetCurrentRank(), CKNMPIManager::GetTotalNodeCount(), CKNMPIManager::IsRootRank(), m_bConsiderBoundaryCondition, m_fAssignedCount, m_vectNextUnitCell, m_vectPrevUnitCell, and m_vectUnitCell.
Referenced by CKNTBMS_Solver::Launching_TBMS_Solver(), CKNGeometricConstructionLaunch::LaunchingGeometricConstruction(), and CKNGeometricConstructionLaunch::LaunchingGeometricConstructionMPI().


| bool CKNGeometricShape::RefillPeriodicBinding | ( | CKNMatrixOperation::CKNCSR * | pResult, |
| CKNCommandFileParser::LPINPUT_CMD_PARAM | lpParam, | ||
| LPNEIGHBOR_MAP_INFO | lpMapInfo, | ||
| unsigned int | nRepeatIndex, | ||
| double | fKValue[3] | ||
| ) |
Applying phase to Hamiltonian.
| [out] | CKNMatrixOperation | CSR instance |
| lpParam | Input parameters parsing from command file | |
| lpMapInfo | Atom map information | |
| nRepeatIndex | Repeat index, means k points | |
| fKValue | k value for x, y, z direction |
Definition at line 596 of file KNGeometricShape.cpp.
References CKNMatrixOperation::CKNCSR::AreaScalarMultiple(), ATOM_DEFAULT_INDEX, NEIGHBOR_MAP_INFO::fItemCount, GetAtomByIndex(), CKNGeometricCoordination::GetCoordination(), CKNGeometricAtom::GetCoordination(), CKNGeometricDirection::GetDirectionAll(), GetKPhaseSign(), CKNGeometricAtom::GetNeighborCoordination(), CKNGeometricAtom::GetNeighborPeriodicDirection(), CKNGeometricAtom::IsPeriodicCoupling(), m_shapDirection, ORBITALS, NEIGHBOR_MAP_INFO::pfID, NEIGHBOR_MAP_INFO::pfNeighbor, PI_VALUE, and CKNComplex::SetComplexNumber().
Referenced by CKNTBMS_Solver::Launching_TBMS_Solver().


|
private |
Rotate matrix with calculated degree.
| pMatrixNbr | Source matrix |
| pMatrixResult | Rotated matrix |
| paramter | Geometric parameters |
Definition at line 710 of file KNGeometricShape.cpp.
References CKNMatrixOperation::CKNDMatrix::BuildMatrixFirst(), CKNMatrixOperation::MMMul(), PHI_DEGREE, CKNMatrixOperation::CKNDMatrix::SetElement(), THETA_DEGREE, and CKNMatrixOperation::CKNDMatrix::TrnasPos().

|
private |
Serialize unitcells with specific later index to double array.
| fXLayer | Target x layer index |
Definition at line 1216 of file KNGeometricShape.cpp.
References _Y, _Z, CKNGeometricAtomFactory::GetAtomCountInUnitcell(), m_fAssignedCount, m_vectUnitCell, and UNITCELL_WRITING_BLOCK_SIZE.
Referenced by ExchangeAtomInfoBetweenNode().


|
static |
Set neighbor information to AtomFactory.
| lpParam | Input parameters parsing from command file |
Definition at line 927 of file KNGeometricShape.cpp.
References _X, _Y, _Z, CKNGeometricAtom::A, CKNGeometricAtom::A2C, CKNCommandFileParser::INPUT_CMD_PARAM::bNeedRotate, BuildRotationMatrix(), CKNGeometricAtom::C, CKNGeometricAtom::C2A, CalculateDegree(), CUBIC, CKNCommandFileParser::INPUT_CMD_PARAM::fDegree, CKNCommandFileParser::INPUT_CMD_PARAM::fUnitcellLength, IKNGeometricUnitCellInfo::GetA2CNeighborCount(), IKNGeometricUnitCellInfo::GetAnionCount(), IKNGeometricUnitCellInfo::GetAtomCoordination(), IKNGeometricUnitCellInfo::GetC2ANeighborCount(), IKNGeometricUnitCellInfo::GetCationCount(), CKNGeometricCoordination::GetCoordination(), IKNGeometricUnitCellInfo::GetNeighborCoordination(), IKNGeometricUnitCellInfo::GetUnitcCellSize(), CKNGeometricAtomFactory::InitAtomList(), IKNGeometricUnitCellInfo::InitCoordination(), CKNGeometricAtomFactory::InitNeighborList(), m_pUnitCellInfo, m_UnitCellInfo_cubic, m_UnitCellInfo_zincblende, CKNCommandFileParser::INPUT_CMD_PARAM::nDirectionSingle, IKNGeometricUnitCellInfo::RotateNeighbor(), IKNGeometricUnitCellInfo::SetAtomCoordination(), CKNGeometricAtomFactory::SetAtomCoordination(), CKNGeometricUnitCellInfo_zincblende::SetDireciton(), CKNGeometricUnitCell::SetLength(), IKNGeometricUnitCellInfo::SetNeighborCoordination(), CKNGeometricAtomFactory::SetNeighborCoordination(), CKNGeometricAtom::SetNeighborNumber(), IKNGeometricUnitCellInfo::SetUnitCellSize(), CKNCommandFileParser::INPUT_CMD_PARAM::szStructureType, and ZB.
Referenced by CKNTBMS_Solver::Launching_TBMS_Solver().


|
inline |
Check is this back end face side in MPI running enviroment.
Set back end side mark to shape object
Definition at line 49 of file KNGeometricShape.h.
References m_bBackendFace.
Referenced by CKNGeometricConstructionLaunch::SetShapeInformation(), and SetShapeInformation().

|
inline |
Get bondary condition of shape.
Definition at line 43 of file KNGeometricShape.h.
References m_bConsiderBoundaryCondition.
Referenced by CKNGeometricConstructionLaunch::SetShapeInformation(), and SetShapeInformation().

| void CKNGeometricShape::SetDirection | ( | double | x_axis, |
| double | y_axis, | ||
| double | z_axis | ||
| ) |
Set direciton of shape.
| x_axis | x direction information |
| y_axis | y direction information |
| z_axis | z direction information |
Definition at line 58 of file KNGeometricShape.cpp.
References m_shapDirection, and CKNGeometricDirection::SetDirection().
Referenced by CKNGeometricConstructionLaunch::SetShapeInformation(), and SetShapeInformation().


|
inline |
Check is this front face side in MPI running enviroment.
Definition at line 47 of file KNGeometricShape.h.
References m_bFrontFace.
Referenced by CKNGeometricConstructionLaunch::SetShapeInformation(), and SetShapeInformation().

| void CKNGeometricShape::SetLength | ( | double | lx, |
| double | ly, | ||
| double | lz | ||
| ) |
Set length of shape.
| lx | x direction length |
| ly | y direction length |
| lz | z direction length |
Definition at line 68 of file KNGeometricShape.cpp.
References _X, _Y, _Z, and m_fLength.
Referenced by CKNGeometricConstructionLaunch::SetShapeInformation(), and SetShapeInformation().

|
private |
Building Hamiltonian part.
Set map info size, size that means aton count in map info
| lpMapInfo | Atom map information |
| fSize | Size of map |
Definition at line 1016 of file KNGeometricShape.cpp.
References ALLOC_WITH_NULL_INIT, MAX_NEIGHBOR, NEIGHBOR_MAP_INFO::pAtomType, NEIGHBOR_MAP_INFO::pbPeriodicCondition, NEIGHBOR_MAP_INFO::pDomainMaterialNumber, NEIGHBOR_MAP_INFO::pfID, NEIGHBOR_MAP_INFO::pfNeighbor, NEIGHBOR_MAP_INFO::pfX_Coordination, NEIGHBOR_MAP_INFO::pfY_Coordination, NEIGHBOR_MAP_INFO::pfZ_Coordination, NEIGHBOR_MAP_INFO::pMaterialNumber, and NEIGHBOR_MAP_INFO::pNeighborMaterial.
Referenced by ConstructMapInfo().

|
inline |
Get maetrial typpe of shap.
Definition at line 37 of file KNGeometricShape.h.
References m_MaterialType.
Referenced by SetMaterialType(), CKNGeometricConstructionLaunch::SetShapeInformation(), and SetShapeInformation().

| void CKNGeometricShape::SetMaterialType | ( | char * | pszType | ) |
Set maetrial type of shape.
Set maetrial type of shape
| pszType | Material type information |
Definition at line 78 of file KNGeometricShape.cpp.
References GaAs, InAs, SetMaterialType(), and Si.

| void CKNGeometricShape::SetOriginCoordination | ( | double | x, |
| double | y, | ||
| double | z | ||
| ) |
Building Geometric part.
Set origin coordination of shape
| x | x coordination |
| y | y coordination |
| z | z coordination |
Definition at line 48 of file KNGeometricShape.cpp.
References m_originCoordination, and CKNGeometricCoordination::SetCoordination().
Referenced by CKNGeometricConstructionLaunch::SetShapeInformation(), and SetShapeInformation().


|
inline |
Get form type of shape.
Definition at line 40 of file KNGeometricShape.h.
References m_ShapeForm.
Referenced by SetShapeForm(), CKNGeometricConstructionLaunch::SetShapeInformation(), and SetShapeInformation().

| void CKNGeometricShape::SetShapeForm | ( | char * | pszForm | ) |
Get form type of shape.
Get form type of shape
| pszForm | Shape form |
Definition at line 91 of file KNGeometricShape.cpp.
References BOX_SHAPE, CYLINDER_SHAPE, and SetShapeForm().

|
static |
Set shape information(Length, material, bondary condition and so on)
| shape | Geometric Shape |
| lpParam | Input parameters parsing from command file |
Definition at line 901 of file KNGeometricShape.cpp.
References _X, _Y, _Z, CKNCommandFileParser::INPUT_CMD_PARAM::bConsiderBoundaryCondition, CKNCommandFileParser::INPUT_CMD_PARAM::fOrigin, CKNCommandFileParser::INPUT_CMD_PARAM::fShapeLength, CKNMPIManager::GetCurrentRank(), CKNMPIManager::GetTotalNodeCount(), CKNMPIManager::IsRootRank(), SetBackendFace(), SetConsideringBoundaryCondition(), SetDirection(), SetFrontFace(), SetLength(), SetMaterialType(), SetOriginCoordination(), SetShapeForm(), CKNCommandFileParser::INPUT_CMD_PARAM::szDomainMat, and CKNCommandFileParser::INPUT_CMD_PARAM::szShape.
Referenced by CKNTBMS_Solver::Launching_TBMS_Solver().


|
inline |
Get total valid atom count in shape.
Definition at line 56 of file KNGeometricShape.h.
References m_fTotalAtomCountinMPI.
| void CKNGeometricShape::ShiftAtomID | ( | double | fShift | ) |
Shift atom id in MPI running enviroment.
| fShift | Increasing count of ID |
Definition at line 1088 of file KNGeometricShape.cpp.
References m_vectUnitCell.
Referenced by ExchangeAtomInfoBetweenNode().

|
private |
Flag of back end face or not.
Definition at line 74 of file KNGeometricShape.h.
Referenced by CalculateUnitcellCount(), CheckingNeighborCandiate(), InitShape(), IsBackendFace(), and SetBackendFace().
|
private |
Bondary condition for each driection.
Definition at line 72 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), CalculateUnitcellCount(), ExchangeAtomInfoBetweenNode(), GetConsideringBoundaryCondition(), GetPeriodicDirection(), InitShape(), IsInBoundaryCondition(), PeriodicUnitCellNumbering(), and SetConsideringBoundaryCondition().
|
private |
Flag of front face or not.
Definition at line 73 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), CalculateUnitcellCount(), CheckingNeighborCandiate(), InitShape(), IsFrontFace(), and SetFrontFace().
|
private |
Unitcell assigend count in shape for each direction.
Definition at line 70 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), BuildNeighborInformation(), CalculateUnitcellCount(), CheckingNeighborCandiate(), Deserialize(), ExchangeAtomInfoBetweenNode(), PeriodicUnitCellNumbering(), and Serialize().
|
private |
Start atom index in current Shape.
Definition at line 76 of file KNGeometricShape.h.
Referenced by ExchangeAtomInfoBetweenNode(), GetAtomStartID(), and InitShape().
|
private |
Building Geometric part.
Length of shape
Definition at line 69 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), CalculateUnitcellCount(), InitShape(), and SetLength().
|
private |
Total valid atom count in shape.
Definition at line 75 of file KNGeometricShape.h.
Referenced by ExchangeAtomInfoBetweenNode(), GetTotalAtomCount(), InitShape(), and SetTotalAtomCount().
|
private |
Material type of shape.
Definition at line 77 of file KNGeometricShape.h.
Referenced by GetMaterialType(), InitShape(), and SetMaterialType().
| unsigned int CKNGeometricShape::m_nAtomFirstLayer |
Get Surface atom list.
Building Hamiltonian part First layer information for sending to previous node
Definition at line 60 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), InitShape(), and CKNTBMS_Solver::Launching_TBMS_Solver().
| unsigned int CKNGeometricShape::m_nAtomLastLayer |
Last layer information for sending to next node.
Definition at line 64 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), InitShape(), and CKNTBMS_Solver::Launching_TBMS_Solver().
|
private |
Orign coordination of shape.
Definition at line 82 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), CalculateUnitcellCount(), InitShape(), and SetOriginCoordination().
|
static |
Unitcell information pointer for using in class internal.
Definition at line 108 of file KNGeometricShape.h.
Referenced by InitShape(), and SetAtomAndNeighborInformation().
|
static |
Rotation matrix for given direction.
Definition at line 109 of file KNGeometricShape.h.
Referenced by CKNHamiltonianBuilder::BuildACCANeighborFor10Band(), BuildRotationMatrix(), and CKNHamiltonianBuilder::RotateTransMatrixFor10Band().
|
private |
Direction of shape.
Definition at line 83 of file KNGeometricShape.h.
Referenced by InitShape(), RefillPeriodicBinding(), and SetDirection().
|
private |
Shape form.
Definition at line 71 of file KNGeometricShape.h.
Referenced by GetShapeForm(), InitShape(), and SetShapeForm().
|
static |
Definition at line 107 of file KNGeometricShape.h.
Referenced by SetAtomAndNeighborInformation().
|
static |
Definition at line 106 of file KNGeometricShape.h.
Referenced by SetAtomAndNeighborInformation().
|
private |
Back end edge unit cell that copy from next side node.
Definition at line 80 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), ExchangeAtomInfoBetweenNode(), FreeUnitCellList(), and PeriodicUnitCellNumbering().
|
private |
Front edge unit cell that copy from previous side node.
Definition at line 79 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), ExchangeAtomInfoBetweenNode(), FreeUnitCellList(), and PeriodicUnitCellNumbering().
|
private |
Definition at line 81 of file KNGeometricShape.h.
Referenced by FreeUnitCellList().
|
private |
Array of unitcell in shape.
Definition at line 78 of file KNGeometricShape.h.
Referenced by ArrangeUnitCell(), BuildNeighborInformation(), CheckingNeighborCandiate(), ConstructMapInfo(), Deserialize(), ExchangeAtomInfoBetweenNode(), FreeUnitCellList(), GetAtomByIndex(), PeriodicUnitCellNumbering(), Serialize(), and ShiftAtomID().