DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
|
#include <elpaScalaManager.h>
#include <headers.h>
#include <operator.h>
#include "process_grid.h"
#include "scalapackWrapper.h"
#include "dftParameters.h"
#include <BLASWrapper.h>
Go to the source code of this file.
Namespaces | |
namespace | dftfe |
namespace | dftfe::linearAlgebraOperations |
Contains linear algebra functions used in the implementation of an eigen solver. | |
Functions | |
template<typename T> | |
void | dftfe::linearAlgebraOperations::gramSchmidtOrthogonalization (T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiComm) |
Orthogonalize given subspace using GramSchmidt orthogonalization. | |
unsigned int | dftfe::linearAlgebraOperations::lowdenOrthogonalization (std::vector< dataTypes::number > &X, const unsigned int numberComponents, const MPI_Comm &mpiComm, const dftParameters &dftParams) |
Orthogonalize given subspace using Lowden orthogonalization for double data-type (serial version using LAPACK) | |
template<typename T> | |
unsigned int | dftfe::linearAlgebraOperations::pseudoGramSchmidtOrthogonalization (elpaScalaManager &elpaScala, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, const dftParameters &dftParams) |
Orthogonalize given subspace using Pseudo-Gram-Schmidt orthogonalization (serial version using LAPACK, parallel version using ScaLAPACK) | |
template<typename T> | |
void | dftfe::linearAlgebraOperations::rayleighRitzGEP (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const bool useMixedPrec, const dftParameters &dftParams) |
Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK) | |
template<typename T> | |
void | dftfe::linearAlgebraOperations::rayleighRitz (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const dftParameters &dftParams, const bool doCommAfterBandParal=true) |
Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK) | |
template<typename T> | |
void | dftfe::linearAlgebraOperations::computeEigenResidualNorm (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, T *X, const std::vector< double > &eigenValues, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, std::vector< double > &residualNorm, const dftParameters &dftParams) |
Compute residual norm associated with eigenValue problem of the given operator. | |
template<typename T> | |
void | dftfe::linearAlgebraOperations::densityMatrixEigenBasisFirstOrderResponse (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, T *X, const unsigned int N, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const std::vector< double > &eigenValues, const double fermiEnergy, std::vector< double > &densityMatDerFermiEnergy, elpaScalaManager &elpaScala, const dftParameters &dftParams) |
Compute first order response in density matrix with respect to perturbation in the Hamiltonian. Perturbation is computed in the eigenbasis. | |
void | dftfe::linearAlgebraOperations::XtHX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, std::vector< dataTypes::number > &ProjHam) |
Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj. | |
void | dftfe::linearAlgebraOperations::XtHX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false) |
Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj. | |
void | dftfe::linearAlgebraOperations::XtOX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projOverlapPar) |
Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj. | |
void | dftfe::linearAlgebraOperations::XtHXMixedPrec (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const dataTypes::number *X, const unsigned int totalNumberComponents, const unsigned int singlePrecComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false) |
Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj. | |
void | dftfe::linearAlgebraOperations::XtOXMixedPrec (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const dataTypes::number *X, const unsigned int totalNumberComponents, const unsigned int singlePrecComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projOverlapPar) |
Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj. | |
void | dftfe::linearAlgebraOperations::XtHXXtOX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, dftfe::ScaLAPACKMatrix< dataTypes::number > &projOverlapPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false) |
Computes the projection of Hamiltonian and Overlap with only a single extraction. Single extraction will be beneficial in full M, PAW cases. | |
void | dftfe::linearAlgebraOperations::XtHXXtOXMixedPrec (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const dataTypes::number *X, const unsigned int totalNumberComponents, const unsigned int singlePrecComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, dftfe::ScaLAPACKMatrix< dataTypes::number > &projOverlapPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false) |
Computes the projection of Hamiltonian and Overlap with only a single extraction with mixed precision. Single extraction will be beneficial in full M, PAW cases. THe projected Hamiltonain has full precision along blocks of diagonal and for states greater than Ncore THe projected Overlap will be of full precision along the diagonal. | |