|
IPCC
1.0
|
Class for Schrodinger-Poisson solver. More...
#include "SPLoop.h"

Public Member Functions | |
| CSPLoop (void) | |
| CSPLoop (bool bMPI) | |
| ~CSPLoop (void) | |
| unsigned int | ConstructionGeometric () |
| unsigned int | BuildHamiltonian () |
| bool | executeSPLoop () |
| void | SetParam (CCommandFileParser::LPINPUT_CMD_PARAM lpParam) |
| void | Prepare () |
| void | Finalize () |
Private Member Functions | |
| void | Initialize () |
| bool | MapZBandCB () |
| bool | IsSatisfyCriteria () |
| void | SolveSchroedinger (double *pVA, double *pEval, double **pWF) |
| void | SolvePoisson (CMatrixOperation::CVector *pRHS, CMatrixOperation::CVector *pSolution) |
| void | DumpSolution (double *pVsol, double *pQsol, NEIGHBOR_MAP_INFO *nbrmap) |
| void | Fermi_Dirac (CMatrixOperation::CVector *pWF, CLanczosMethod::LPEIGENVALUE_RESULT lpResult) |
| void | ApplyingPotential (CMatrixOperation::CVector *pVA) |
| void | SetInitialPotential (double *potential, double *impurity_position, bool bUseSplitVector) |
| void | GetChargeProfile (double *impurity_position, double **WF, CMatrixOperation::CVector *charge) |
| LP_CONTACT_GROUP_INFO * | AllocateContactGrp (unsigned int &nRtn) |
| CMatrixOperation::CCSR * | AllocateCSR (unsigned int &nRtn, NEIGHBOR_MAP_INFO *lpMapInfo, CCommandFileParser::LPINPUT_CMD_PARAM lpParam, CGeometricShape *pGeometricShape, bool bMPI, int &nLBIndex, int nMultipleSize) |
Private Attributes | |
| CMatrixOperation::CCSR * | m_pHamiltonian |
| CMatrixOperation::CCSR * | m_pFDMPoisson |
| CGeometricShape | m_SchroedingerGeometric |
| Geometric construction for Schroedinger. More... | |
| CGeometricShape | m_PossionGeometric |
| Geometric construction for Poisson. More... | |
| bool | m_bMPI |
| CCommandFileParser::LPINPUT_CMD_PARAM | m_lpParam |
| double * | m_pMap |
| NEIGHBOR_MAP_INFO | m_SchroedingerMapInfo |
| NEIGHBOR_MAP_INFO | m_PossionMapInfo |
| double | m_fTotalSurfaceCount |
| CMatrixOperation::CVector | m_BiasVector |
| ConjugateGradientMethod | m_CG |
| CLanczosMethod | m_Lanczos |
| CSPLoop::CSPLoop | ( | void | ) |
Definition at line 12 of file SPLoop.cpp.
References Initialize().

| CSPLoop::CSPLoop | ( | bool | bMPI | ) |
Definition at line 18 of file SPLoop.cpp.
References Initialize(), and m_bMPI.

| CSPLoop::~CSPLoop | ( | void | ) |
Definition at line 25 of file SPLoop.cpp.
|
private |
Definition at line 666 of file SPLoop.cpp.
References ERROR_MALLOC, m_lpParam, and CCommandFileParser::INPUT_CMD_PARAM::nContactNumber.
Referenced by ConstructionGeometric().

|
private |
| nRtn[out] | Operation result |
| lpMapInfo | Structure that include atom map |
| lpParam | Strcuture that include options parameter for program launching |
| pGeometricShape | Class that include shape information |
| bMPI | Running with MPI enviroment or not |
Definition at line 474 of file SPLoop.cpp.
References CMatrixOperation::CCSR::BuildDataBuffer(), ERROR_MALLOC, NEIGHBOR_MAP_INFO::fItemCount, CGeometricShape::GetAtomStartID(), CGeometricShape::GetTotalAtomCount(), CMPIManager::InitCommunicationBufferMetric(), CMPIManager::LoadBlancing(), CCommandFileParser::INPUT_CMD_PARAM::nMatrixDemension, CMatrixOperation::CCSR::SetColumnCount(), CMatrixOperation::CCSR::SetFirstRowIndex(), and CMatrixOperation::CCSR::SetRowCount().
Referenced by BuildHamiltonian().


|
private |
| unsigned int CSPLoop::BuildHamiltonian | ( | ) |
< Building Schroedinger Hamiltonian
< Building Hamiltonian matrix
< Building Hamiltonian matrix
Definition at line 155 of file SPLoop.cpp.
References AllocateCSR(), CCommandFileParser::INPUT_CMD_PARAM::bSaveHamiltonian, CHamiltonianBuilder::BuildHamiltonian(), CGeometricShape::BuildPEHamiltonian(), CAN_NOT_LOAD_METERIAL_PARAM, CUtility::DumpCSR(), CGeometricShape::GetAtomStartID(), CMPIManager::IsRootRank(), m_bMPI, m_CG, m_Lanczos, m_lpParam, CGeometricShape::m_nAtomFirstLayer, CGeometricShape::m_nAtomLastLayer, m_pFDMPoisson, m_pHamiltonian, m_PossionGeometric, m_PossionMapInfo, m_SchroedingerGeometric, m_SchroedingerMapInfo, CCommandFileParser::INPUT_CMD_PARAM::nBandSize, CMatrixOperation::CCSR::nComponentsFirstUnitCell, CMatrixOperation::CCSR::nComponentsLastUnitCell, CLanczosMethod::SetLBIndex(), SHOW_SIMPLE_MSG, and CUtility::ShowMsg().
Referenced by SPLoopMain().


| unsigned int CSPLoop::ConstructionGeometric | ( | ) |
< Building Schroedinger Geometric - Start
< Building Poisson Geometric - Start
< Creating contact group object
< Building Poisson Geometric - End
Definition at line 41 of file SPLoop.cpp.
References AllocateContactGrp(), CMPIManager::AllReduceDouble(), CGeometricShape::BuildPEBiasVector(), CALCULATION_SUCCESS, CAN_MAPPING_ZB_TO_CB, CGeometricShape::ConstructBasicGeometric(), CGeometricShape::ConstructContactRegionOnPoissonGrid(), CUBIC, NEIGHBOR_MAP_INFO::fItemCount, CGeometricShape::GetSurfaceAtomList(), CMPIManager::IsRootRank(), m_BiasVector, m_bMPI, m_fTotalSurfaceCount, m_lpParam, m_pMap, m_PossionGeometric, m_PossionMapInfo, m_SchroedingerGeometric, m_SchroedingerMapInfo, MapZBandCB(), CCommandFileParser::INPUT_CMD_PARAM::nContactNumber, CCommandFileParser::INPUT_CMD_PARAM::nDirectionSingle, CGeometricShape::SetMatchingUnitcellCount(), CGeometricShape::SetupPEBoundaryCondition(), SHOW_SIMPLE_MSG, CUtility::ShowMsg(), and CCommandFileParser::INPUT_CMD_PARAM::szStructureType.
Referenced by SPLoopMain().


|
private |
Definition at line 375 of file SPLoop.cpp.
References CMPIManager::Barrier(), NEIGHBOR_MAP_INFO::fItemCount, CMPIManager::GetCurrentRank(), CMPIManager::GetTotalNodeCount(), CMPIManager::IsDeflationRoot(), CMPIManager::IsRootRank(), NEIGHBOR_MAP_INFO::pfX_Coordination, NEIGHBOR_MAP_INFO::pfY_Coordination, and NEIGHBOR_MAP_INFO::pfZ_Coordination.
Referenced by executeSPLoop().


| bool CSPLoop::executeSPLoop | ( | ) |
Definition at line 210 of file SPLoop.cpp.
References DumpSolution(), CHamiltonianBuilder::FinalizeMatrixBuffer(), NEIGHBOR_MAP_INFO::fItemCount, CCommandFileParser::INPUT_CMD_PARAM::fKPoints, CCommandFileParser::INPUT_CMD_PARAM::fShapeLength, CCommandFileParser::INPUT_CMD_PARAM::fUnitcellLength, CMatrixOperation::CVector::GetAt(), GetChargeProfile(), CMPIManager::GetCurrentLoadBalanceCount(), CLanczosMethod::GetLBIndex(), CMatrixOperation::CCSR::GetNoneZeroCount(), CComplex::GetRealNumber(), CGeometricShape::GetUnitCellLength(), CMPIManager::IsRootRank(), m_BiasVector, m_Lanczos, m_lpParam, m_pHamiltonian, m_pMap, m_PossionGeometric, m_PossionMapInfo, m_SchroedingerMapInfo, CMatrixOperation::CCSR::m_vectColumn, CMatrixOperation::CCSR::m_vectRow, CMatrixOperation::CCSR::m_vectValueImaginaryBuffer, CMatrixOperation::CVector::m_vectValueRealBuffer, CMatrixOperation::CCSR::m_vectValueRealBuffer, CCommandFileParser::INPUT_CMD_PARAM::nContactNumber, CCommandFileParser::INPUT_CMD_PARAM::nFindingEigenValueCount, NM, phi_tid, CMatrixOperation::CVector::PlusVector(), Qo, CMatrixOperation::CVector::SetAt(), SetInitialPotential(), CMPIManager::SetPhiTid(), CMatrixOperation::CVector::SetSize(), CLanczosMethod::ShowLanczosWorkingTime(), CUtility::ShowMsg(), SolvePoisson(), SolveSchroedinger(), CTimeMeasurement::TotalMeasurementEnd(), and CTimeMeasurement::TotalMeasurementStart().
Referenced by SPLoopMain().


|
private |
Definition at line 534 of file SPLoop.cpp.
References CLanczosMethod::EIGENVALUE_RESULT::pWaveFunctions.
| void CSPLoop::Finalize | ( | ) |
Definition at line 688 of file SPLoop.cpp.
References CMatrixOperation::CVector::Finalize(), FREE_MEM, CMatrixOperation::FreeCSR(), CGeometricShape::FreeMapInfo(), m_BiasVector, m_pFDMPoisson, m_pHamiltonian, m_pMap, m_PossionMapInfo, and m_SchroedingerMapInfo.
Referenced by SPLoopMain().


|
private |
Definition at line 425 of file SPLoop.cpp.
References NEIGHBOR_MAP_INFO::fItemCount, m_SchroedingerMapInfo, NEIGHBOR_MAP_INFO::pfX_Coordination, NEIGHBOR_MAP_INFO::pfY_Coordination, NEIGHBOR_MAP_INFO::pfZ_Coordination, and CMatrixOperation::CVector::SetAt().
Referenced by executeSPLoop().


|
private |
Definition at line 30 of file SPLoop.cpp.
References m_bMPI, m_fTotalSurfaceCount, m_lpParam, m_pFDMPoisson, m_pHamiltonian, and m_pMap.
Referenced by CSPLoop().

|
private |
Definition at line 503 of file SPLoop.cpp.
|
private |
Definition at line 112 of file SPLoop.cpp.
References NEIGHBOR_MAP_INFO::fItemCount, FREE_MEM, GENERAL_TOLERANCE, CMPIManager::IsRootRank(), CMatrixOperation::IsSame(), m_pMap, m_PossionMapInfo, m_SchroedingerMapInfo, NEIGHBOR_MAP_INFO::pfX_Coordination, NEIGHBOR_MAP_INFO::pfY_Coordination, and NEIGHBOR_MAP_INFO::pfZ_Coordination.
Referenced by ConstructionGeometric().


| void CSPLoop::Prepare | ( | ) |
Definition at line 684 of file SPLoop.cpp.
Referenced by SPLoopMain().

|
private |
Definition at line 445 of file SPLoop.cpp.
References NEIGHBOR_MAP_INFO::fItemCount, CMPIManager::IsRootRank(), m_SchroedingerMapInfo, NEIGHBOR_MAP_INFO::pfX_Coordination, NEIGHBOR_MAP_INFO::pfY_Coordination, NEIGHBOR_MAP_INFO::pfZ_Coordination, and CUtility::ShowMsg().
Referenced by executeSPLoop().


|
inline |
Definition at line 36 of file SPLoop.h.
References m_lpParam.
Referenced by SPLoopMain().

|
private |
Definition at line 511 of file SPLoop.cpp.
References CMatrixOperation::CVector::GetNorm(), CMPIManager::IsRootRank(), m_bMPI, m_CG, m_lpParam, m_pFDMPoisson, and CUtility::ShowMsg().
Referenced by executeSPLoop().


|
private |
< Calculating k points
< Calculating phase
< Launching lanczos method
< Release memery for lanczos result
< Calculating phase
Definition at line 539 of file SPLoop.cpp.
References CCommandFileParser::INPUT_CMD_PARAM::bCalculateEigenVectors, CCommandFileParser::INPUT_CMD_PARAM::bCalculateWaveFunction, CCommandFileParser::INPUT_CMD_PARAM::bDoSelectiveReorthogonalization, CMPIManager::BroadcastDouble(), CMatrixOperation::CCSR::DiagonalOperation(), CLanczosMethod::DoLanczosMethod(), CCommandFileParser::INPUT_CMD_PARAM::fConvergeceCriteria, CCommandFileParser::INPUT_CMD_PARAM::fevMax, CCommandFileParser::INPUT_CMD_PARAM::fevMin, NEIGHBOR_MAP_INFO::fItemCount, CCommandFileParser::INPUT_CMD_PARAM::fKPoints, CUtility::GetKValues(), CMatrixOperation::CCSR::GetNoneZeroCount(), CMatrixOperation::CVector::GetSize(), CMPIManager::IsDeflationRoot(), CMPIManager::IsMultiLevelMPI(), CMPIManager::IsRootRank(), CCommandFileParser::INPUT_CMD_PARAM::load_in_MIC, m_Lanczos, m_lpParam, m_pHamiltonian, m_SchroedingerGeometric, m_SchroedingerMapInfo, CMatrixOperation::CCSR::m_vectColumn, CMatrixOperation::CCSR::m_vectRow, CMatrixOperation::CCSR::m_vectValueImaginaryBuffer, CMatrixOperation::CVector::m_vectValueRealBuffer, CMatrixOperation::CCSR::m_vectValueRealBuffer, CLanczosMethod::MergeDegeneratedEigenvalues(), CMatrixOperation::CCSR::MINUS, CCommandFileParser::INPUT_CMD_PARAM::nBandSize, CCommandFileParser::INPUT_CMD_PARAM::nCheckEigenvalueInterval, CLanczosMethod::EIGENVALUE_RESULT::nEigenValueCount, CCommandFileParser::INPUT_CMD_PARAM::nFindingDegeneratedEVCount, CCommandFileParser::INPUT_CMD_PARAM::nFindingEigenValueCount, CCommandFileParser::INPUT_CMD_PARAM::nLanczosIterationCount, CLanczosMethod::EIGENVALUE_RESULT::pEigenValues, CMatrixOperation::CCSR::PLUS, CLanczosMethod::EIGENVALUE_RESULT::pWaveFunctions, CLanczosMethod::RecalcuWaveFunction(), CGeometricShape::RefillPeriodicBinding(), CLanczosMethod::ReleaseResult(), CLanczosMethod::ShowLanczosResult(), CUtility::ShowMsg(), and CLanczosMethod::SortSolution().
Referenced by executeSPLoop().


|
private |
Definition at line 63 of file SPLoop.h.
Referenced by ConstructionGeometric(), executeSPLoop(), and Finalize().
|
private |
Definition at line 57 of file SPLoop.h.
Referenced by BuildHamiltonian(), ConstructionGeometric(), CSPLoop(), Initialize(), and SolvePoisson().
|
private |
Definition at line 64 of file SPLoop.h.
Referenced by BuildHamiltonian(), and SolvePoisson().
|
private |
Definition at line 62 of file SPLoop.h.
Referenced by ConstructionGeometric(), and Initialize().
|
private |
Definition at line 65 of file SPLoop.h.
Referenced by BuildHamiltonian(), executeSPLoop(), and SolveSchroedinger().
|
private |
Definition at line 58 of file SPLoop.h.
Referenced by AllocateContactGrp(), BuildHamiltonian(), ConstructionGeometric(), executeSPLoop(), Initialize(), SetParam(), SolvePoisson(), and SolveSchroedinger().
|
private |
Definition at line 54 of file SPLoop.h.
Referenced by BuildHamiltonian(), Finalize(), Initialize(), and SolvePoisson().
|
private |
Definition at line 53 of file SPLoop.h.
Referenced by BuildHamiltonian(), executeSPLoop(), Finalize(), Initialize(), and SolveSchroedinger().
|
private |
Definition at line 59 of file SPLoop.h.
Referenced by ConstructionGeometric(), executeSPLoop(), Finalize(), Initialize(), and MapZBandCB().
|
private |
Geometric construction for Poisson.
Definition at line 56 of file SPLoop.h.
Referenced by BuildHamiltonian(), ConstructionGeometric(), and executeSPLoop().
|
private |
Definition at line 61 of file SPLoop.h.
Referenced by BuildHamiltonian(), ConstructionGeometric(), executeSPLoop(), Finalize(), and MapZBandCB().
|
private |
Geometric construction for Schroedinger.
Definition at line 55 of file SPLoop.h.
Referenced by BuildHamiltonian(), ConstructionGeometric(), and SolveSchroedinger().
|
private |
Definition at line 60 of file SPLoop.h.
Referenced by BuildHamiltonian(), ConstructionGeometric(), executeSPLoop(), Finalize(), GetChargeProfile(), MapZBandCB(), SetInitialPotential(), and SolveSchroedinger().