|
IPCC
1.0
|
This class for describing vector for Lanczos method. More...
#include "KNMatrixOperation.h"

Classes | |
| struct | VECTOR_ELEMENT |
Public Types | |
| typedef struct CKNMatrixOperation::CKNVector::VECTOR_ELEMENT * | LPVECTOR_ELEMENT |
Public Member Functions | |
| CKNVector () | |
| Constructor. More... | |
| ~CKNVector () | |
| Destructor. More... | |
| void | SetSize (unsigned int nSize) |
| Set Vector elements size. More... | |
| unsigned int | GetSize () |
| Return Vector elements size. More... | |
| void | SetAt (unsigned int nIndex, CKNComplex value) |
| Set element value in specific index, Call by value. More... | |
| void | SetAtEx (unsigned int nIndex, CKNComplex *pValue) |
| Set element value in specific index, Call by reference. More... | |
| void | SetAt (unsigned int nIndex, double fReal, double fImaginary) |
| Set element value in specific index. More... | |
| CKNComplex | GetAt (unsigned int nIndex) |
| Get element value from specific index. More... | |
| CKNComplex * | GetAtPt (unsigned int nIndex) |
| Get element value from specific index. More... | |
| void | ResetValue () |
| Reset every element to zero. More... | |
| void | ScalarMultiple (CKNComplex Scalar) |
| Scalar multiple operation. More... | |
| void | ScalarMultiple (double fScalar) |
| Scalar multiple operation. More... | |
| void | ScalarDivision (CKNComplex Scalar) |
| Scalar division operation. More... | |
| void | ScalarDivision (double fScalar) |
| Scalar division operation. More... | |
| void | BuildRandomVector () |
| Building vector that has random value elements. More... | |
| void | Normalize (bool bMPI=false) |
| Normalize vector with norm. More... | |
| double | GetNorm (bool bMPI=false) |
| Getting norm of vector. More... | |
| void | MinusVector (CKNVector *vector) |
| Do minus operation between vectors. More... | |
| void | PlusVector (CKNVector *vector) |
| Do plus operation between vectors. More... | |
| void | ScalarMultiThanMinusVector (double fScalar, CKNVector *vector) |
| Do minus operation after scalar multiple to operand between vectors. More... | |
| void | ReorthogonalizationVector (CKNVector *pVector, CKNComplex complex) |
| Do reorthogonalization. More... | |
| void | Finalize () |
| Free allocated memory for vector elements. More... | |
| bool | InsertVector (unsigned int nStartIndex, CKNMatrixOperation::CKNVector *pVector) |
| bool | Serialize (double *pBuffer, bool bStore) |
| Serialize vector. More... | |
| CKNComplex | operator* (CKNVector &vector) |
| operation overload for dot product with reference parameter More... | |
| CKNComplex | operator* (CKNVector *vector) |
| operation overload for dot product with pointer parameter More... | |
| CKNVector | operator- (CKNVector &vector) |
| operation overload for vector minus operation with reference parameter More... | |
| CKNVector | operator- (CKNVector *vector) |
| operation overload for vector minus operation with pointer parameter More... | |
| CKNVector | operator+ (CKNVector &vector) |
| operation overload for vector plus operation with reference parameter More... | |
| CKNVector | operator+ (CKNVector *vector) |
| operation overload for vector plus operation with pointer parameter More... | |
| void | operator= (CKNVector &vector) |
| operation overload for subsitution with reference parameter More... | |
| void | operator= (CKNVector *vector) |
| operation overload for subsitution with pointer parameter More... | |
Private Attributes | |
| double_vector_t | m_vectValueRealBuffer |
| A member variable for saving none zero elements. More... | |
| double_vector_t | m_vectValueImaginaryBuffer |
| A member variable for saving none zero elements. More... | |
| unsigned int | m_nValueCount |
| A numbers of elements. More... | |
| CKNComplex | m_rtnTemp |
| Temporary variable for return value. More... | |
Friends | |
| class | CKNLanczosMethod |
| class | CKNMatrixOperation |
| class | CKNMPIManager |
This class for describing vector for Lanczos method.
Definition at line 60 of file KNMatrixOperation.h.
| typedef struct CKNMatrixOperation::CKNVector::VECTOR_ELEMENT * CKNMatrixOperation::CKNVector::LPVECTOR_ELEMENT |
| CKNMatrixOperation::CKNVector::CKNVector | ( | ) |
Constructor.
CKNVector Class member function - Start
Definition at line 28 of file KNMatrixOperation.cpp.
References m_nValueCount.
| CKNMatrixOperation::CKNVector::~CKNVector | ( | ) |
| void CKNMatrixOperation::CKNVector::BuildRandomVector | ( | ) |
Building vector that has random value elements.
Definition at line 201 of file KNMatrixOperation.cpp.
| void CKNMatrixOperation::CKNVector::Finalize | ( | ) |
Free allocated memory for vector elements.
Definition at line 365 of file KNMatrixOperation.cpp.
Referenced by CKNLanczosMethod::AppendEigenVector(), CKNLanczosTest::AuditResult_EV(), CKNLanczosResultAudit::AuditResult_EV(), CKNHamiltonianBuilder::BuildHonsiteBasicMatrixFor10Band(), CKNHamiltonianBuilder::BuildOffsiteMatrixFor10Band(), CKNLanczosMethod::DoResidualCheck(), CKNLanczosMethod::LanczosIteration(), CKNLanczosMethod::LanczosIterationLoop(), CKNLanczosMethod::MergeDegeneratedEigenvalues(), CKNMatrixOperation::MVMulOptimal(), CKNLanczosMethod::ReleaseResult(), CKNLanczosMethod::SortSolution(), and CKNMPIManager::SplitVector().

| CKNComplex CKNMatrixOperation::CKNVector::GetAt | ( | unsigned int | nIndex | ) |
Get element value from specific index.
| nIndex | Specific element index that want to get |
Definition at line 100 of file KNMatrixOperation.cpp.
References ERROR_OUT_OF_RANGE, and CKNComplex::SetComplexNumber().
Referenced by CKNLanczosTest::AuditResult_WF(), CKNLanczosResultAudit::AuditResult_WF(), CKNHamiltonianBuilder::BuildOffsiteMatrixFor10Band(), CKNLanczosMethod::BuildWaveFunction(), CKNLanczosMethod::CalculateEigenVector(), CKNMPIManager::ConvertVectorToMPIComplexBuffer(), CKNMatrixOperation::CKNCSR::DiagonalOperation(), InsertVector(), CKNMatrixOperation::MVMul(), operator*(), CKNMatrixOperation::CKNCSR::operator*(), operator+(), operator-(), CKNLanczosMethod::RecalcuWaveFunction(), IKNGeometricUnitCellInfo::RotateAxis(), IKNGeometricUnitCellInfo::RotateNeighbor(), CKNHamiltonianBuilder::RotateTransMatrixFor10Band(), CKNLanczosMethod::SaveLanczosResult(), CKNLanczosTest::SaveResult(), CKNMatrixOperation::CKNDMatrix::SetColumnElement(), CKNMatrixOperation::CKNDMatrix::SetDiagonal(), CKNMatrixOperation::CKNDMatrix::SetRowElement(), CKNIPCCUtility::ShowDoubleVector(), and CKNMatrixDebug::ShowDoubleVector().


| CKNComplex * CKNMatrixOperation::CKNVector::GetAtPt | ( | unsigned int | nIndex | ) |
Get element value from specific index.
| nIndex | Specific element index that want to get |
Definition at line 84 of file KNMatrixOperation.cpp.
References ERROR_OUT_OF_RANGE.
Referenced by MinusVector(), and PlusVector().

| double CKNMatrixOperation::CKNVector::GetNorm | ( | bool | bMPI = false | ) |
Getting norm of vector.
| bMPI | Currently running under MPI or not |
Definition at line 232 of file KNMatrixOperation.cpp.
References CKNMPIManager::AllReduceDouble(), and LOOP_OPTIMIZE_COUNT.
Referenced by CKNLanczosTest::AuditResult_EV(), CKNLanczosResultAudit::AuditResult_EV(), CKNHamiltonianBuilder::BuildOffsiteMatrixFor10Band(), CKNLanczosMethod::DoResidualCheck(), CKNMatrixOperation::IsSame(), CKNLanczosMethod::LanczosIterationLoop(), and CKNLanczosMethod::MergeDegeneratedEigenvalues().


|
inline |
Return Vector elements size.
Definition at line 71 of file KNMatrixOperation.h.
References m_nValueCount.
Referenced by CKNLanczosMethod::AppendEigenVector(), CKNMPIManager::ConvertVectorToMPIComplexBuffer(), CKNMatrixOperation::CKNCSR::DiagonalOperation(), InsertVector(), CKNLanczosMethod::MergeDegeneratedEigenvalues(), MinusVector(), CKNMatrixOperation::MVMul(), CKNMatrixOperation::MVMulEx_AsyncCommWithLocalBlocks(), operator*(), CKNMatrixOperation::CKNCSR::operator*(), operator+(), operator-(), operator=(), PlusVector(), ReorthogonalizationVector(), CKNLanczosMethod::SaveLanczosResult(), ScalarMultiThanMinusVector(), CKNMatrixOperation::CKNDMatrix::SetColumnElement(), CKNMatrixOperation::CKNDMatrix::SetDiagonal(), CKNMatrixOperation::CKNDMatrix::SetRowElement(), CKNMatrixDebug::ShowDoubleVector(), CKNIPCCUtility::ShowDoubleVector(), and CKNMatrixOperation::VVDot().

| bool CKNMatrixOperation::CKNVector::InsertVector | ( | unsigned int | nStartIndex, |
| CKNMatrixOperation::CKNVector * | pVector | ||
| ) |
| nStartIndex | Start index that position of want to insert |
| pVector | Source vector |
Definition at line 378 of file KNMatrixOperation.cpp.
References GetAt(), CKNComplex::GetImaginaryNumber(), CKNComplex::GetRealNumber(), and GetSize().

| void CKNMatrixOperation::CKNVector::MinusVector | ( | CKNVector * | vector | ) |
Do minus operation between vectors.
| vector | vector that is used in minus operation |
Definition at line 322 of file KNMatrixOperation.cpp.
References ERROR_WRONG_ORDER_OPERATION, GetAtPt(), CKNComplex::GetImaginaryNumber(), CKNComplex::GetRealNumber(), and GetSize().
Referenced by CKNLanczosTest::AuditResult_EV(), CKNLanczosResultAudit::AuditResult_EV(), CKNLanczosMethod::DoResidualCheck(), CKNMatrixOperation::Gram_schmidt(), CKNMatrixOperation::IsSame(), and CKNLanczosMethod::MergeDegeneratedEigenvalues().


| void CKNMatrixOperation::CKNVector::Normalize | ( | bool | bMPI = false | ) |
Normalize vector with norm.
| bMPI | Operation with MPI environment or not |
Definition at line 216 of file KNMatrixOperation.cpp.
Referenced by CKNMatrixOperation::Gram_schmidt(), and CKNLanczosMethod::LanczosIteration().

| CKNComplex CKNMatrixOperation::CKNVector::operator* | ( | CKNVector & | vector | ) |
operation overload for dot product with reference parameter
| vector | Vector operand |
Definition at line 443 of file KNMatrixOperation.cpp.
References ERROR_WRONG_ORDER_OPERATION, GetAt(), and GetSize().

| CKNComplex CKNMatrixOperation::CKNVector::operator* | ( | CKNVector * | vector | ) |
operation overload for dot product with pointer parameter
| vector | Vector operand |
Definition at line 434 of file KNMatrixOperation.cpp.
References operator*().

| CKNMatrixOperation::CKNVector CKNMatrixOperation::CKNVector::operator+ | ( | CKNVector & | vector | ) |
operation overload for vector plus operation with reference parameter
| vector | Vector operand |
Definition at line 507 of file KNMatrixOperation.cpp.
References ERROR_WRONG_ORDER_OPERATION, GetAt(), GetSize(), SetAt(), and SetSize().

| CKNMatrixOperation::CKNVector CKNMatrixOperation::CKNVector::operator+ | ( | CKNVector * | vector | ) |
operation overload for vector plus operation with pointer parameter
| vector | Vector operand |
Definition at line 498 of file KNMatrixOperation.cpp.
| CKNMatrixOperation::CKNVector CKNMatrixOperation::CKNVector::operator- | ( | CKNVector & | vector | ) |
operation overload for vector minus operation with reference parameter
| vector | Vector operand |
Definition at line 474 of file KNMatrixOperation.cpp.
References ERROR_WRONG_ORDER_OPERATION, GetAt(), GetSize(), SetAt(), and SetSize().

| CKNMatrixOperation::CKNVector CKNMatrixOperation::CKNVector::operator- | ( | CKNVector * | vector | ) |
operation overload for vector minus operation with pointer parameter
| vector | Vector operand |
Definition at line 465 of file KNMatrixOperation.cpp.
| void CKNMatrixOperation::CKNVector::operator= | ( | CKNVector & | vector | ) |
operation overload for subsitution with reference parameter
| vector | Vector operand |
Definition at line 540 of file KNMatrixOperation.cpp.
References GetSize(), m_vectValueImaginaryBuffer, and m_vectValueRealBuffer.

| void CKNMatrixOperation::CKNVector::operator= | ( | CKNVector * | vector | ) |
operation overload for subsitution with pointer parameter
| vector | Vector operand |
Definition at line 531 of file KNMatrixOperation.cpp.
| void CKNMatrixOperation::CKNVector::PlusVector | ( | CKNVector * | vector | ) |
Do plus operation between vectors.
| vector | vector that is used in plus operation |
Definition at line 345 of file KNMatrixOperation.cpp.
References ERROR_WRONG_ORDER_OPERATION, GetAtPt(), CKNComplex::GetImaginaryNumber(), CKNComplex::GetRealNumber(), and GetSize().

| void CKNMatrixOperation::CKNVector::ReorthogonalizationVector | ( | CKNVector * | pVector, |
| CKNComplex | complex | ||
| ) |
Do reorthogonalization.
| pVector | Target vector for orthogonalization |
| complex | Input scalar |
Definition at line 293 of file KNMatrixOperation.cpp.
References ERROR_WRONG_ORDER_OPERATION, CKNComplex::GetImaginaryNumber(), CKNComplex::GetRealNumber(), GetSize(), m_vectValueImaginaryBuffer, and m_vectValueRealBuffer.

| void CKNMatrixOperation::CKNVector::ResetValue | ( | ) |
Reset every element to zero.
Definition at line 114 of file KNMatrixOperation.cpp.
| void CKNMatrixOperation::CKNVector::ScalarDivision | ( | CKNComplex | Scalar | ) |
Scalar division operation.
| Scalar | Scalar value that want to use in operation |
Definition at line 164 of file KNMatrixOperation.cpp.
References CKNComplex::GetImaginaryNumber(), CKNComplex::GetRealNumber(), and CKNComplex::SetComplexNumber().
Referenced by CKNLanczosMethod::LanczosIterationLoop(), and operator/().


| void CKNMatrixOperation::CKNVector::ScalarDivision | ( | double | fScalar | ) |
Scalar division operation.
| fScalar | Scalar value that want to use in operation |
Definition at line 182 of file KNMatrixOperation.cpp.
| void CKNMatrixOperation::CKNVector::ScalarMultiple | ( | CKNComplex | Scalar | ) |
Scalar multiple operation.
| Scalar | Scalar value that want to use in operation |
Definition at line 129 of file KNMatrixOperation.cpp.
References CKNComplex::GetImaginaryNumber(), CKNComplex::GetRealNumber(), and CKNComplex::SetComplexNumber().
Referenced by CKNLanczosTest::AuditResult_EV(), CKNLanczosResultAudit::AuditResult_EV(), CKNLanczosMethod::DoResidualCheck(), CKNMatrixOperation::Gram_schmidt(), CKNLanczosMethod::MergeDegeneratedEigenvalues(), and operator*().


| void CKNMatrixOperation::CKNVector::ScalarMultiple | ( | double | fScalar | ) |
Scalar multiple operation.
| fScalar | Scalar value that want to use in operation |
Definition at line 149 of file KNMatrixOperation.cpp.
| void CKNMatrixOperation::CKNVector::ScalarMultiThanMinusVector | ( | double | fScalar, |
| CKNVector * | vector | ||
| ) |
Do minus operation after scalar multiple to operand between vectors.
| fScalar | Scalar factor |
| vector | Vector operand for minus operation |
Definition at line 264 of file KNMatrixOperation.cpp.
References ERROR_WRONG_ORDER_OPERATION, GetSize(), m_vectValueImaginaryBuffer, and m_vectValueRealBuffer.
Referenced by CKNLanczosMethod::LanczosIterationLoop().


| bool CKNMatrixOperation::CKNVector::Serialize | ( | double * | pBuffer, |
| bool | bStore | ||
| ) |
Serialize vector.
| pBuffer | Saving/Loading buffer |
| bStore | Saving(true) or Loading(false) |
Definition at line 401 of file KNMatrixOperation.cpp.
Referenced by CKNMPIManager::ReceiveVectorSync(), and CKNMPIManager::SendVectorSync().

| void CKNMatrixOperation::CKNVector::SetAt | ( | unsigned int | nIndex, |
| CKNComplex | value | ||
| ) |
Set element value in specific index, Call by value.
| nIndex | Specific element index that want to set |
| value | element value |
Definition at line 54 of file KNMatrixOperation.cpp.
References CKNComplex::GetImaginaryNumber(), and CKNComplex::GetRealNumber().
Referenced by CKNTBMS_Solver::ApplyPhPotential(), CKNHamiltonianBuilder::BuildHaaDiagonalFor10Band(), CKNHamiltonianBuilder::BuildHccDiagonalFor10Band(), CKNZincblendeParam::BuildMatrix(), CKNLanczosMethod::BuildWaveFunction(), CKNLanczosMethod::CalculateEigenVector(), CKNMatrixOperation::CKNDMatrix::GetColumnByVector(), CKNMatrixOperation::CKNDMatrix::GetRowByVector(), CKNLanczosMethod::LanczosIteration(), CKNMatrixOperation::MVMul(), CKNMatrixOperation::CKNCSR::operator*(), operator+(), operator-(), CKNLanczosMethod::RecalcuWaveFunction(), IKNGeometricUnitCellInfo::RotateAxis(), IKNGeometricUnitCellInfo::RotateNeighbor(), CKNHamiltonianBuilder::RotateTransMatrixFor10Band(), and CKNMPIManager::SplitVector().


| void CKNMatrixOperation::CKNVector::SetAt | ( | unsigned int | nIndex, |
| double | fReal, | ||
| double | fImaginary | ||
| ) |
Set element value in specific index.
| nIndex | Specific element index that want to set |
| fReal | Real number of element value |
| fImaginary | Imaginary number of element value |
Definition at line 69 of file KNMatrixOperation.cpp.
References ERROR_OUT_OF_RANGE, and THROW_END_EXIT.
| void CKNMatrixOperation::CKNVector::SetAtEx | ( | unsigned int | nIndex, |
| CKNComplex * | pValue | ||
| ) |
Set element value in specific index, Call by reference.
Definition at line 59 of file KNMatrixOperation.cpp.
References CKNComplex::GetImaginaryNumber(), and CKNComplex::GetRealNumber().

| void CKNMatrixOperation::CKNVector::SetSize | ( | unsigned int | nSize | ) |
Set Vector elements size.
| nSize | Vector elements size |
Definition at line 40 of file KNMatrixOperation.cpp.
Referenced by CKNLanczosMethod::AppendEigenVector(), CKNTBMS_Solver::ApplyPhPotential(), CKNLanczosTest::AuditResult_EV(), CKNLanczosResultAudit::AuditResult_EV(), CKNHamiltonianBuilder::BuildHonsiteBasicMatrixFor10Band(), CKNZincblendeParam::BuildMatrix(), CKNLanczosMethod::BuildWaveFunction(), CKNLanczosMethod::DoResidualCheck(), CKNMatrixOperation::CKNDMatrix::GetColumnByVector(), CKNMatrixOperation::CKNDMatrix::GetRowByVector(), CKNLanczosMethod::LanczosIteration(), CKNLanczosMethod::LanczosIterationLoop(), CKNLanczosMethod::MergeDegeneratedEigenvalues(), CKNMatrixOperation::MVMul(), CKNMatrixOperation::MVMulOptimal(), CKNMatrixOperation::CKNCSR::operator*(), operator+(), operator-(), IKNGeometricUnitCellInfo::RotateAxis(), IKNGeometricUnitCellInfo::RotateNeighbor(), CKNHamiltonianBuilder::RotateTransMatrixFor10Band(), CKNLanczosMethod::SortSolution(), and CKNMPIManager::SplitVector().

|
friend |
Definition at line 109 of file KNMatrixOperation.h.
|
friend |
Definition at line 110 of file KNMatrixOperation.h.
|
friend |
Definition at line 111 of file KNMatrixOperation.h.
|
private |
A numbers of elements.
Definition at line 106 of file KNMatrixOperation.h.
Referenced by CKNVector(), and GetSize().
|
private |
Temporary variable for return value.
Definition at line 107 of file KNMatrixOperation.h.
|
private |
A member variable for saving none zero elements.
Definition at line 105 of file KNMatrixOperation.h.
Referenced by CKNLanczosMethod::LanczosIterationLoop(), CKNMPIManager::MergeVector(), CKNMPIManager::MergeVectorEx_Optimal(), CKNMPIManager::MergeVectorOptimal(), CKNMatrixOperation::MVMul(), CKNMatrixOperation::MVMulEx_AsyncCommWithLocalBlocks(), CKNMatrixOperation::MVMulEx_Optimal(), CKNMatrixOperation::MVMulOptimal(), operator=(), ReorthogonalizationVector(), ScalarMultiThanMinusVector(), and CKNMatrixOperation::VVDot().
|
private |
A member variable for saving none zero elements.
Definition at line 104 of file KNMatrixOperation.h.
Referenced by CKNLanczosMethod::LanczosIterationLoop(), CKNMPIManager::MergeVector(), CKNMPIManager::MergeVectorEx_Optimal(), CKNMPIManager::MergeVectorOptimal(), CKNMatrixOperation::MVMul(), CKNMatrixOperation::MVMulEx_AsyncCommWithLocalBlocks(), CKNMatrixOperation::MVMulEx_Optimal(), CKNMatrixOperation::MVMulOptimal(), operator=(), ReorthogonalizationVector(), ScalarMultiThanMinusVector(), and CKNMatrixOperation::VVDot().