DFT-FE 1.3.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
dftfe::configurationalForceClass< memorySpace > Class Template Reference

#include <configurationalForce.h>

Public Member Functions

 configurationalForceClass (std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperPtrHost, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
 
void setUnmovedTriangulation (const dealii::parallel::distributed::Triangulation< 3 > &unmovedTriangulation, const dealii::Triangulation< 3, 3 > &serialUnmovedTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors)
 
void initialize (std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > basisOperationsPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost, std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, memorySpace > > basisOperationsPtrElectro, std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrElectroHost, std::shared_ptr< dftfe::pseudopotentialBaseClass< dataTypes::number, memorySpace > > pseudopotentialClassPtr, std::shared_ptr< excManager< memorySpace > > excManagerPtr, const dftfe::uInt densityQuadratureId, const dftfe::uInt densityQuadratureIdElectro, const dftfe::uInt lpspQuadratureId, const dftfe::uInt lpspQuadratureIdElectro, const dftfe::uInt nlpspQuadratureId, const dftfe::uInt smearedChargeQuadratureIdElectro)
 
void computeForceAndStress (const dftfe::uInt &numEigenValues, const std::vector< double > &kPointCoords, const std::vector< double > &kPointWeights, const std::vector< std::vector< double > > &domainBoundingVectors, const double domainVolume, const std::shared_ptr< groupSymmetryClass > &groupSymmetryPtr, const dispersionCorrection &dispersionCorr, const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > &eigenVectors, const std::vector< std::vector< double > > &eigenValues, const std::vector< std::vector< double > > &partialOccupancies, const std::vector< std::vector< double > > &atomLocations, const std::vector< dftfe::Int > &imageIds, const std::vector< double > &imageCharges, const std::vector< std::vector< double > > &imagePositions, const distributedCPUVec< double > &phiTotRhoOutValues, const distributedCPUVec< double > &rhoOutNodalValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &tauOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCOutRepresentationPtr, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocValues, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const dealii::DoFHandler< 3 > &dofHandlerRhoNodal, const vselfBinsManager &vselfBinsManager, const std::vector< distributedCPUVec< double > > &vselfFieldGateauxDerStrainFDBins, const dftfe::uInt &binsStartDofHandlerIndexElectro, const std::map< dealii::CellId, std::vector< dftfe::Int > > &bQuadAtomIdsAllAtoms, const std::map< dealii::CellId, std::vector< dftfe::Int > > &bQuadAtomIdsAllAtomsImages, const std::map< dealii::CellId, std::vector< double > > &bQuadValuesAllAtoms, const std::vector< double > &smearedChargeWidths, const std::vector< double > &smearedChargeScaling, const std::vector< double > &gaussianConstantsForce, const std::vector< double > &generatorFlatTopWidths, const bool floatingNuclearCharges, const bool computeForce, const bool computeStress)
 
void printStress ()
 
void printAtomsForces ()
 
std::vector< double > & getAtomsForces ()
 
dealii::Tensor< 2, 3, double > & getStress ()
 

Private Member Functions

void computeWfcContribNloc (std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > nonLocalOperator, const CouplingStructure couplingtype, const std::vector< const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > * > &couplingMatrixPtrs, const std::map< dftfe::uInt, dftfe::uInt > nonlocalAtomIdToGlobalIdMap, const dftfe::uInt &numEigenValues, const std::vector< double > &kPointCoords, const std::vector< double > &kPointWeights, const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > &eigenVectors, const std::vector< std::vector< double > > &eigenValues, const std::vector< std::vector< double > > &partialOccupancies, const bool floatingNuclearCharges, const bool computeForce, const bool computeStress)
 
void computeWfcContribNlocAtomOnNode (std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > nonLocalOperator, const CouplingStructure couplingtype, const std::vector< const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > * > &couplingMatrixPtrs, const std::map< dftfe::uInt, dftfe::uInt > nonlocalAtomIdToGlobalIdMap, const dftfe::uInt &numEigenValues, const std::vector< double > &kPointCoords, const std::vector< double > &kPointWeights, const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > &eigenVectors, const std::vector< std::vector< double > > &eigenValues, const std::vector< std::vector< double > > &partialOccupancies, const bool floatingNuclearCharges, const bool computeForce, const bool computeStress)
 
void computeWfcContribLocal (const dftfe::uInt &numEigenValues, const std::vector< double > &kPointCoords, const std::vector< double > &kPointWeights, const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > &eigenVectors, const std::vector< std::vector< double > > &eigenValues, const std::vector< std::vector< double > > &partialOccupancies, const bool floatingNuclearCharges, const std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCOutRepresentationPtr, const bool computeForce, const bool computeStress)
 
void computeElectroContribEshelby (const distributedCPUVec< double > &phiTotRhoOutValues, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhooutValues, const bool floatingNuclearCharges, const bool computeForce, const bool computeStress)
 
void computeESelfContribEshelby (const std::vector< std::vector< double > > &atomLocations, const std::vector< dftfe::Int > &imageIds, const std::vector< double > &imageCharges, const std::vector< std::vector< double > > &imagePositions, const vselfBinsManager &vselfBinsManager, const bool floatingNuclearCharges, const bool computeForce, const bool computeStress)
 
void computeSmearedContribAll (const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imagePositions, const vselfBinsManager &vselfBinsManager, const dftfe::uInt &binsStartDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutValues, const std::map< dealii::CellId, std::vector< dftfe::Int > > &bQuadAtomIdsAllAtoms, const std::map< dealii::CellId, std::vector< dftfe::Int > > &bQuadAtomIdsAllAtomsImages, const std::map< dealii::CellId, std::vector< double > > &bQuadValuesAllAtoms, const bool floatingNuclearCharges, const bool computeForce, const bool computeStress)
 
void computeLPSPContribAll (const std::vector< std::vector< double > > &atomLocations, const std::vector< dftfe::Int > &imageIds, const std::vector< double > &imageCharges, const std::vector< std::vector< double > > &imagePositions, const distributedCPUVec< double > &rhoOutNodalValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocValues, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const dealii::DoFHandler< 3 > &dofHandlerRhoNodal, const vselfBinsManager &vselfBinsManager, const std::vector< distributedCPUVec< double > > &vselfFieldGateauxDerStrainFDBins, const std::vector< double > &smearedChargeWidths, const std::vector< double > &smearedChargeScaling, const bool floatingNuclearCharges, const bool computeForce, const bool computeStress)
 
void computeXCContribAll (const std::vector< std::vector< double > > &atomLocations, const std::vector< dftfe::Int > &imageIds, const std::vector< std::vector< double > > &imagePositions, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &tauOutValues, const std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCOutRepresentationPtr, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const bool floatingNuclearCharges, const bool computeForce, const bool computeStress)
 
void createBinObjectsForce (const dealii::DoFHandler< 3 > &dofHandlerRhoNodal, const vselfBinsManager &vselfBinsManager, std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > &cellsVselfBallsDofHandler, std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > &cellsVselfBallsDofHandlerForce, std::vector< std::map< dealii::CellId, dftfe::uInt > > &cellsVselfBallsClosestAtomIdDofHandler, std::map< dftfe::uInt, dftfe::uInt > &AtomIdBinIdLocalDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > &cellFacesVselfBallSurfacesDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > &cellFacesVselfBallSurfacesDofHandlerForce)
 
void computeAtomsForcesGaussianGenerator (const std::vector< std::vector< double > > &atomLocations, const std::vector< dftfe::Int > &imageIds, const std::vector< std::vector< double > > &imagePositions, const std::vector< double > &gaussianConstantsForce, const std::vector< double > &generatorFlatTopWidths, const distributedCPUVec< double > &configForceVectorLinFE, const MPI_Comm mpiComm, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &forceContrib)
 

Private Attributes

std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
 
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtrHost
 
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > d_basisOperationsPtr
 
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
 
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, memorySpace > > d_basisOperationsPtrElectro
 
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrElectroHost
 
std::shared_ptr< dftfe::pseudopotentialBaseClass< dataTypes::number, memorySpace > > d_pseudopotentialClassPtr
 
std::shared_ptr< excManager< memorySpace > > d_excManagerPtr
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_forceTotal
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_stressTotal
 
std::vector< double > d_forceVector
 
dealii::Tensor< 2, 3, double > d_stressTensor
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm d_mpiCommDomain
 
const MPI_Comm d_mpiCommInterPool
 
const MPI_Comm d_mpiCommInterBandGroup
 
const dftParametersd_dftParams
 
const dftfe::uInt n_mpi_processes
 
const dftfe::uInt this_mpi_process
 
dealii::ConditionalOStream pcout
 
dftfe::uInt d_densityQuadratureId
 
dftfe::uInt d_densityQuadratureIdElectro
 
dftfe::uInt d_lpspQuadratureId
 
dftfe::uInt d_lpspQuadratureIdElectro
 
dftfe::uInt d_nlpspQuadratureId
 
dftfe::uInt d_smearedChargeQuadratureIdElectro
 
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerElectro
 
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerForceElectro
 
std::vector< std::map< dealii::CellId, dftfe::uInt > > d_cellsVselfBallsClosestAtomIdDofHandlerElectro
 
std::map< dftfe::uInt, dftfe::uIntd_AtomIdBinIdLocalDofHandlerElectro
 
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > d_cellFacesVselfBallSurfacesDofHandlerElectro
 
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > d_cellFacesVselfBallSurfacesDofHandlerForceElectro
 
std::map< dealii::CellId, dealii::DoFHandler< 3 >::active_cell_iterator > d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro
 
dealii::FESystem< 3 > FEForce
 
dealii::AffineConstraints< double > d_affineConstraintsForce
 
dealii::DoFHandler< 3 > d_dofHandlerForce
 
dealii::IndexSet d_locally_owned_dofsForce
 
distributedCPUVec< double > d_configForceContribsLinFE
 
distributedCPUVec< double > d_configForceContribsWfcLinFE
 
dealii::TimerOutput computing_timer
 

Constructor & Destructor Documentation

◆ configurationalForceClass()

template<dftfe::utils::MemorySpace memorySpace>
dftfe::configurationalForceClass< memorySpace >::configurationalForceClass ( std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr,
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperPtrHost,
const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const MPI_Comm & interpoolcomm,
const MPI_Comm & interBandGroupComm,
const dftParameters & dftParams )

Member Function Documentation

◆ computeAtomsForcesGaussianGenerator()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeAtomsForcesGaussianGenerator ( const std::vector< std::vector< double > > & atomLocations,
const std::vector< dftfe::Int > & imageIds,
const std::vector< std::vector< double > > & imagePositions,
const std::vector< double > & gaussianConstantsForce,
const std::vector< double > & generatorFlatTopWidths,
const distributedCPUVec< double > & configForceVectorLinFE,
const MPI_Comm mpiComm,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & forceContrib )
private

◆ computeElectroContribEshelby()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeElectroContribEshelby ( const distributedCPUVec< double > & phiTotRhoOutValues,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhooutValues,
const bool floatingNuclearCharges,
const bool computeForce,
const bool computeStress )
private

◆ computeESelfContribEshelby()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeESelfContribEshelby ( const std::vector< std::vector< double > > & atomLocations,
const std::vector< dftfe::Int > & imageIds,
const std::vector< double > & imageCharges,
const std::vector< std::vector< double > > & imagePositions,
const vselfBinsManager & vselfBinsManager,
const bool floatingNuclearCharges,
const bool computeForce,
const bool computeStress )
private

◆ computeForceAndStress()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeForceAndStress ( const dftfe::uInt & numEigenValues,
const std::vector< double > & kPointCoords,
const std::vector< double > & kPointWeights,
const std::vector< std::vector< double > > & domainBoundingVectors,
const double domainVolume,
const std::shared_ptr< groupSymmetryClass > & groupSymmetryPtr,
const dispersionCorrection & dispersionCorr,
const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > & eigenVectors,
const std::vector< std::vector< double > > & eigenValues,
const std::vector< std::vector< double > > & partialOccupancies,
const std::vector< std::vector< double > > & atomLocations,
const std::vector< dftfe::Int > & imageIds,
const std::vector< double > & imageCharges,
const std::vector< std::vector< double > > & imagePositions,
const distributedCPUVec< double > & phiTotRhoOutValues,
const distributedCPUVec< double > & rhoOutNodalValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & densityOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradDensityOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & tauOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValuesLpsp,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesLpsp,
const std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCOutRepresentationPtr,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & hessianRhoCoreValues,
const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms,
const std::map< dealii::CellId, std::vector< double > > & pseudoVLocValues,
const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtoms,
const dealii::DoFHandler< 3 > & dofHandlerRhoNodal,
const vselfBinsManager & vselfBinsManager,
const std::vector< distributedCPUVec< double > > & vselfFieldGateauxDerStrainFDBins,
const dftfe::uInt & binsStartDofHandlerIndexElectro,
const std::map< dealii::CellId, std::vector< dftfe::Int > > & bQuadAtomIdsAllAtoms,
const std::map< dealii::CellId, std::vector< dftfe::Int > > & bQuadAtomIdsAllAtomsImages,
const std::map< dealii::CellId, std::vector< double > > & bQuadValuesAllAtoms,
const std::vector< double > & smearedChargeWidths,
const std::vector< double > & smearedChargeScaling,
const std::vector< double > & gaussianConstantsForce,
const std::vector< double > & generatorFlatTopWidths,
const bool floatingNuclearCharges,
const bool computeForce,
const bool computeStress )

◆ computeLPSPContribAll()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeLPSPContribAll ( const std::vector< std::vector< double > > & atomLocations,
const std::vector< dftfe::Int > & imageIds,
const std::vector< double > & imageCharges,
const std::vector< std::vector< double > > & imagePositions,
const distributedCPUVec< double > & rhoOutNodalValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValuesLpsp,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & pseudoVLocValues,
const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtoms,
const dealii::DoFHandler< 3 > & dofHandlerRhoNodal,
const vselfBinsManager & vselfBinsManager,
const std::vector< distributedCPUVec< double > > & vselfFieldGateauxDerStrainFDBins,
const std::vector< double > & smearedChargeWidths,
const std::vector< double > & smearedChargeScaling,
const bool floatingNuclearCharges,
const bool computeForce,
const bool computeStress )
private

◆ computeSmearedContribAll()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeSmearedContribAll ( const std::vector< std::vector< double > > & atomLocations,
const std::vector< std::vector< double > > & imagePositions,
const vselfBinsManager & vselfBinsManager,
const dftfe::uInt & binsStartDofHandlerIndexElectro,
const distributedCPUVec< double > & phiTotRhoOutValues,
const std::map< dealii::CellId, std::vector< dftfe::Int > > & bQuadAtomIdsAllAtoms,
const std::map< dealii::CellId, std::vector< dftfe::Int > > & bQuadAtomIdsAllAtomsImages,
const std::map< dealii::CellId, std::vector< double > > & bQuadValuesAllAtoms,
const bool floatingNuclearCharges,
const bool computeForce,
const bool computeStress )
private

◆ computeWfcContribLocal()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeWfcContribLocal ( const dftfe::uInt & numEigenValues,
const std::vector< double > & kPointCoords,
const std::vector< double > & kPointWeights,
const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > & eigenVectors,
const std::vector< std::vector< double > > & eigenValues,
const std::vector< std::vector< double > > & partialOccupancies,
const bool floatingNuclearCharges,
const std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCOutRepresentationPtr,
const bool computeForce,
const bool computeStress )
private

◆ computeWfcContribNloc()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeWfcContribNloc ( std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > nonLocalOperator,
const CouplingStructure couplingtype,
const std::vector< const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > * > & couplingMatrixPtrs,
const std::map< dftfe::uInt, dftfe::uInt > nonlocalAtomIdToGlobalIdMap,
const dftfe::uInt & numEigenValues,
const std::vector< double > & kPointCoords,
const std::vector< double > & kPointWeights,
const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > & eigenVectors,
const std::vector< std::vector< double > > & eigenValues,
const std::vector< std::vector< double > > & partialOccupancies,
const bool floatingNuclearCharges,
const bool computeForce,
const bool computeStress )
private

◆ computeWfcContribNlocAtomOnNode()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeWfcContribNlocAtomOnNode ( std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > nonLocalOperator,
const CouplingStructure couplingtype,
const std::vector< const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > * > & couplingMatrixPtrs,
const std::map< dftfe::uInt, dftfe::uInt > nonlocalAtomIdToGlobalIdMap,
const dftfe::uInt & numEigenValues,
const std::vector< double > & kPointCoords,
const std::vector< double > & kPointWeights,
const dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > & eigenVectors,
const std::vector< std::vector< double > > & eigenValues,
const std::vector< std::vector< double > > & partialOccupancies,
const bool floatingNuclearCharges,
const bool computeForce,
const bool computeStress )
private

◆ computeXCContribAll()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::computeXCContribAll ( const std::vector< std::vector< double > > & atomLocations,
const std::vector< dftfe::Int > & imageIds,
const std::vector< std::vector< double > > & imagePositions,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & densityOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradDensityOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & tauOutValues,
const std::shared_ptr< AuxDensityMatrix< memorySpace > > auxDensityXCOutRepresentationPtr,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms,
const bool floatingNuclearCharges,
const bool computeForce,
const bool computeStress )
private

◆ createBinObjectsForce()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::createBinObjectsForce ( const dealii::DoFHandler< 3 > & dofHandlerRhoNodal,
const vselfBinsManager & vselfBinsManager,
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > & cellsVselfBallsDofHandler,
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > & cellsVselfBallsDofHandlerForce,
std::vector< std::map< dealii::CellId, dftfe::uInt > > & cellsVselfBallsClosestAtomIdDofHandler,
std::map< dftfe::uInt, dftfe::uInt > & AtomIdBinIdLocalDofHandler,
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > & cellFacesVselfBallSurfacesDofHandler,
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > & cellFacesVselfBallSurfacesDofHandlerForce )
private

◆ getAtomsForces()

template<dftfe::utils::MemorySpace memorySpace>
std::vector< double > & dftfe::configurationalForceClass< memorySpace >::getAtomsForces ( )

◆ getStress()

template<dftfe::utils::MemorySpace memorySpace>
dealii::Tensor< 2, 3, double > & dftfe::configurationalForceClass< memorySpace >::getStress ( )

◆ initialize()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::initialize ( std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > basisOperationsPtr,
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost,
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, memorySpace > > basisOperationsPtrElectro,
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrElectroHost,
std::shared_ptr< dftfe::pseudopotentialBaseClass< dataTypes::number, memorySpace > > pseudopotentialClassPtr,
std::shared_ptr< excManager< memorySpace > > excManagerPtr,
const dftfe::uInt densityQuadratureId,
const dftfe::uInt densityQuadratureIdElectro,
const dftfe::uInt lpspQuadratureId,
const dftfe::uInt lpspQuadratureIdElectro,
const dftfe::uInt nlpspQuadratureId,
const dftfe::uInt smearedChargeQuadratureIdElectro )

◆ printAtomsForces()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::printAtomsForces ( )

◆ printStress()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::printStress ( )

◆ setUnmovedTriangulation()

template<dftfe::utils::MemorySpace memorySpace>
void dftfe::configurationalForceClass< memorySpace >::setUnmovedTriangulation ( const dealii::parallel::distributed::Triangulation< 3 > & unmovedTriangulation,
const dealii::Triangulation< 3, 3 > & serialUnmovedTriangulation,
const std::vector< std::vector< double > > & domainBoundingVectors )

Member Data Documentation

◆ computing_timer

template<dftfe::utils::MemorySpace memorySpace>
dealii::TimerOutput dftfe::configurationalForceClass< memorySpace >::computing_timer
private

◆ d_affineConstraintsForce

template<dftfe::utils::MemorySpace memorySpace>
dealii::AffineConstraints<double> dftfe::configurationalForceClass< memorySpace >::d_affineConstraintsForce
private

◆ d_AtomIdBinIdLocalDofHandlerElectro

template<dftfe::utils::MemorySpace memorySpace>
std::map<dftfe::uInt, dftfe::uInt> dftfe::configurationalForceClass< memorySpace >::d_AtomIdBinIdLocalDofHandlerElectro
private

Internal data: stores the map of atom Id (only in the local processor) to the vself bin Id.

◆ d_basisOperationsPtr

template<dftfe::utils::MemorySpace memorySpace>
std::shared_ptr< dftfe::basis::FEBasisOperations<dataTypes::number, double, memorySpace> > dftfe::configurationalForceClass< memorySpace >::d_basisOperationsPtr
private

◆ d_basisOperationsPtrElectro

template<dftfe::utils::MemorySpace memorySpace>
std::shared_ptr< dftfe::basis::FEBasisOperations<double, double, memorySpace> > dftfe::configurationalForceClass< memorySpace >::d_basisOperationsPtrElectro
private

◆ d_basisOperationsPtrElectroHost

template<dftfe::utils::MemorySpace memorySpace>
std::shared_ptr< dftfe::basis:: FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST> > dftfe::configurationalForceClass< memorySpace >::d_basisOperationsPtrElectroHost
private

◆ d_basisOperationsPtrHost

template<dftfe::utils::MemorySpace memorySpace>
std::shared_ptr< dftfe::basis::FEBasisOperations<dataTypes::number, double, dftfe::utils::MemorySpace::HOST> > dftfe::configurationalForceClass< memorySpace >::d_basisOperationsPtrHost
private

◆ d_BLASWrapperPtr

template<dftfe::utils::MemorySpace memorySpace>
std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace> > dftfe::configurationalForceClass< memorySpace >::d_BLASWrapperPtr
private

◆ d_BLASWrapperPtrHost

template<dftfe::utils::MemorySpace memorySpace>
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::HOST> > dftfe::configurationalForceClass< memorySpace >::d_BLASWrapperPtrHost
private

◆ d_cellFacesVselfBallSurfacesDofHandlerElectro

template<dftfe::utils::MemorySpace memorySpace>
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<dftfe::uInt> > > dftfe::configurationalForceClass< memorySpace >::d_cellFacesVselfBallSurfacesDofHandlerElectro
private

◆ d_cellFacesVselfBallSurfacesDofHandlerForceElectro

template<dftfe::utils::MemorySpace memorySpace>
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<dftfe::uInt> > > dftfe::configurationalForceClass< memorySpace >::d_cellFacesVselfBallSurfacesDofHandlerForceElectro
private

◆ d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro

template<dftfe::utils::MemorySpace memorySpace>
std::map<dealii::CellId, dealii::DoFHandler<3>::active_cell_iterator> dftfe::configurationalForceClass< memorySpace >::d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro
private

◆ d_cellsVselfBallsClosestAtomIdDofHandlerElectro

template<dftfe::utils::MemorySpace memorySpace>
std::vector<std::map<dealii::CellId, dftfe::uInt> > dftfe::configurationalForceClass< memorySpace >::d_cellsVselfBallsClosestAtomIdDofHandlerElectro
private

Internal data: stores map of vself ball cell Id to the closest atom Id of that cell. Outer vector over vself bins.

◆ d_cellsVselfBallsDofHandlerElectro

template<dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::configurationalForceClass< memorySpace >::d_cellsVselfBallsDofHandlerElectro
private

Internal data: stores cell iterators of all cells in dftPtr->d_dofHandler which are part of the vself ball. Outer vector is over vself bins.

◆ d_cellsVselfBallsDofHandlerForceElectro

template<dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::configurationalForceClass< memorySpace >::d_cellsVselfBallsDofHandlerForceElectro
private

Internal data: stores cell iterators of all cells in d_dofHandlerForce which are part of the vself ball. Outer vector is over vself bins.

◆ d_configForceContribsLinFE

template<dftfe::utils::MemorySpace memorySpace>
distributedCPUVec<double> dftfe::configurationalForceClass< memorySpace >::d_configForceContribsLinFE
private

◆ d_configForceContribsWfcLinFE

template<dftfe::utils::MemorySpace memorySpace>
distributedCPUVec<double> dftfe::configurationalForceClass< memorySpace >::d_configForceContribsWfcLinFE
private

◆ d_densityQuadratureId

template<dftfe::utils::MemorySpace memorySpace>
dftfe::uInt dftfe::configurationalForceClass< memorySpace >::d_densityQuadratureId
private

◆ d_densityQuadratureIdElectro

template<dftfe::utils::MemorySpace memorySpace>
dftfe::uInt dftfe::configurationalForceClass< memorySpace >::d_densityQuadratureIdElectro
private

◆ d_dftParams

template<dftfe::utils::MemorySpace memorySpace>
const dftParameters& dftfe::configurationalForceClass< memorySpace >::d_dftParams
private

◆ d_dofHandlerForce

template<dftfe::utils::MemorySpace memorySpace>
dealii::DoFHandler<3> dftfe::configurationalForceClass< memorySpace >::d_dofHandlerForce
private

◆ d_excManagerPtr

template<dftfe::utils::MemorySpace memorySpace>
std::shared_ptr<excManager<memorySpace> > dftfe::configurationalForceClass< memorySpace >::d_excManagerPtr
private

◆ d_forceTotal

◆ d_forceVector

template<dftfe::utils::MemorySpace memorySpace>
std::vector<double> dftfe::configurationalForceClass< memorySpace >::d_forceVector
private

◆ d_locally_owned_dofsForce

template<dftfe::utils::MemorySpace memorySpace>
dealii::IndexSet dftfe::configurationalForceClass< memorySpace >::d_locally_owned_dofsForce
private

◆ d_lpspQuadratureId

template<dftfe::utils::MemorySpace memorySpace>
dftfe::uInt dftfe::configurationalForceClass< memorySpace >::d_lpspQuadratureId
private

◆ d_lpspQuadratureIdElectro

template<dftfe::utils::MemorySpace memorySpace>
dftfe::uInt dftfe::configurationalForceClass< memorySpace >::d_lpspQuadratureIdElectro
private

◆ d_mpiCommDomain

template<dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::configurationalForceClass< memorySpace >::d_mpiCommDomain
private

◆ d_mpiCommInterBandGroup

template<dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::configurationalForceClass< memorySpace >::d_mpiCommInterBandGroup
private

◆ d_mpiCommInterPool

template<dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::configurationalForceClass< memorySpace >::d_mpiCommInterPool
private

◆ d_mpiCommParent

template<dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::configurationalForceClass< memorySpace >::d_mpiCommParent
private

◆ d_nlpspQuadratureId

template<dftfe::utils::MemorySpace memorySpace>
dftfe::uInt dftfe::configurationalForceClass< memorySpace >::d_nlpspQuadratureId
private

◆ d_pseudopotentialClassPtr

template<dftfe::utils::MemorySpace memorySpace>
std::shared_ptr< dftfe::pseudopotentialBaseClass<dataTypes::number, memorySpace> > dftfe::configurationalForceClass< memorySpace >::d_pseudopotentialClassPtr
private

◆ d_smearedChargeQuadratureIdElectro

template<dftfe::utils::MemorySpace memorySpace>
dftfe::uInt dftfe::configurationalForceClass< memorySpace >::d_smearedChargeQuadratureIdElectro
private

◆ d_stressTensor

template<dftfe::utils::MemorySpace memorySpace>
dealii::Tensor<2, 3, double> dftfe::configurationalForceClass< memorySpace >::d_stressTensor
private

◆ d_stressTotal

◆ FEForce

template<dftfe::utils::MemorySpace memorySpace>
dealii::FESystem<3> dftfe::configurationalForceClass< memorySpace >::FEForce
private

Finite element object for configurational force computation. Linear finite elements with three force field components are used.

◆ n_mpi_processes

template<dftfe::utils::MemorySpace memorySpace>
const dftfe::uInt dftfe::configurationalForceClass< memorySpace >::n_mpi_processes
private

◆ pcout

template<dftfe::utils::MemorySpace memorySpace>
dealii::ConditionalOStream dftfe::configurationalForceClass< memorySpace >::pcout
private

◆ this_mpi_process

template<dftfe::utils::MemorySpace memorySpace>
const dftfe::uInt dftfe::configurationalForceClass< memorySpace >::this_mpi_process
private

The documentation for this class was generated from the following file: