DFT-FE 1.3.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
dftfe::groupSymmetryClass Class Reference

density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculations using point group symmetries More...

#include <groupSymmetry.h>

Public Member Functions

 groupSymmetryClass (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const bool isGroupSymmetry, const bool isTimeReversal)
 
void initGroupSymmetry (std::vector< std::vector< double > > &atomLocations, std::vector< std::vector< double > > &domainBoundingVectors, std::vector< bool > &periodicBoundaryConditions, const bool isCollinearSpin=false)
 
void reinitGroupSymmetry (std::vector< std::vector< double > > &atomLocations, std::vector< std::vector< double > > &domainBoundingVectors)
 
void setupCommPatternForNodalField (const dealii::DoFHandler< 3 > &dofHandler)
 
bool computeAtomIdMapsFromGlobalFractionalCoordinates (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &globalPointCoords)
 
void symmetrizeScalarFieldFromLocalValues (distributedCPUVec< double > &scalarField, const dealii::DoFHandler< 3 > &dofHandler)
 
void symmetrizeForce (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &vectorFieldValues) const
 
void symmetrizeStress (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &tensorValues) const
 
void reduceKPointGrid (std::vector< double > &kPointCoordinatesFrac, std::vector< double > &kPointWeights) const
 

Private Attributes

dealii::TimerOutput computing_timer
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm d_mpiCommDomain
 
const dftfe::uInt n_mpi_processes
 
const dftfe::uInt this_mpi_process
 
dealii::ConditionalOStream pcout
 
dftfe::uInt d_numSymm
 
std::vector< std::vector< double > > d_symmMat
 
std::vector< std::vector< double > > d_symmMatCart
 
std::vector< std::vector< double > > d_symmMatInverse
 
std::vector< std::vector< double > > d_translation
 
dftfe::uInt d_numAtoms
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_atomicCoordsFrac
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_domainBoundingVectors
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_domainBoundingVectorsInverse
 
std::vector< bool > d_periodicBoundaryConditions
 
std::vector< std::vector< dftfe::uInt > > d_pointMapsForSymmetry
 
const bool d_isTimeReversal
 
const bool d_isGroupSymmetry
 
std::vector< std::map< dftfe::uInt, dftfe::uInt > > localDoFIndexToPointIndexMap
 
dealii::Utilities::MPI::RemotePointEvaluation< 3, 3 > remotePointCache
 
std::vector< dealii::Point< 3 > > requiredPointCoordinates
 
dealii::MappingQ1< 3 > mapping
 

Detailed Description

density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculations using point group symmetries

Author
Nikhil Kodali

Constructor & Destructor Documentation

◆ groupSymmetryClass()

dftfe::groupSymmetryClass::groupSymmetryClass ( const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const bool isGroupSymmetry,
const bool isTimeReversal )

groupSymmetryClass constructor

Member Function Documentation

◆ computeAtomIdMapsFromGlobalFractionalCoordinates()

bool dftfe::groupSymmetryClass::computeAtomIdMapsFromGlobalFractionalCoordinates ( dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & globalPointCoords)

◆ initGroupSymmetry()

void dftfe::groupSymmetryClass::initGroupSymmetry ( std::vector< std::vector< double > > & atomLocations,
std::vector< std::vector< double > > & domainBoundingVectors,
std::vector< bool > & periodicBoundaryConditions,
const bool isCollinearSpin = false )

◆ reduceKPointGrid()

void dftfe::groupSymmetryClass::reduceKPointGrid ( std::vector< double > & kPointCoordinatesFrac,
std::vector< double > & kPointWeights ) const

◆ reinitGroupSymmetry()

void dftfe::groupSymmetryClass::reinitGroupSymmetry ( std::vector< std::vector< double > > & atomLocations,
std::vector< std::vector< double > > & domainBoundingVectors )

◆ setupCommPatternForNodalField()

void dftfe::groupSymmetryClass::setupCommPatternForNodalField ( const dealii::DoFHandler< 3 > & dofHandler)

◆ symmetrizeForce()

void dftfe::groupSymmetryClass::symmetrizeForce ( dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & vectorFieldValues) const

◆ symmetrizeScalarFieldFromLocalValues()

void dftfe::groupSymmetryClass::symmetrizeScalarFieldFromLocalValues ( distributedCPUVec< double > & scalarField,
const dealii::DoFHandler< 3 > & dofHandler )

◆ symmetrizeStress()

void dftfe::groupSymmetryClass::symmetrizeStress ( dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & tensorValues) const

Member Data Documentation

◆ computing_timer

dealii::TimerOutput dftfe::groupSymmetryClass::computing_timer
private

compute-time logger

◆ d_atomicCoordsFrac

dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::groupSymmetryClass::d_atomicCoordsFrac
private

◆ d_domainBoundingVectors

dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::groupSymmetryClass::d_domainBoundingVectors
private

◆ d_domainBoundingVectorsInverse

dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::groupSymmetryClass::d_domainBoundingVectorsInverse
private

◆ d_isGroupSymmetry

const bool dftfe::groupSymmetryClass::d_isGroupSymmetry
private

◆ d_isTimeReversal

const bool dftfe::groupSymmetryClass::d_isTimeReversal
private

◆ d_mpiCommDomain

const MPI_Comm dftfe::groupSymmetryClass::d_mpiCommDomain
private

◆ d_mpiCommParent

const MPI_Comm dftfe::groupSymmetryClass::d_mpiCommParent
private

parallel objects

◆ d_numAtoms

dftfe::uInt dftfe::groupSymmetryClass::d_numAtoms
private

◆ d_numSymm

dftfe::uInt dftfe::groupSymmetryClass::d_numSymm
private

Space group symmetry related data

◆ d_periodicBoundaryConditions

std::vector<bool> dftfe::groupSymmetryClass::d_periodicBoundaryConditions
private

◆ d_pointMapsForSymmetry

std::vector<std::vector<dftfe::uInt> > dftfe::groupSymmetryClass::d_pointMapsForSymmetry
private

◆ d_symmMat

std::vector<std::vector<double> > dftfe::groupSymmetryClass::d_symmMat
private

◆ d_symmMatCart

std::vector<std::vector<double> > dftfe::groupSymmetryClass::d_symmMatCart
private

◆ d_symmMatInverse

std::vector<std::vector<double> > dftfe::groupSymmetryClass::d_symmMatInverse
private

◆ d_translation

std::vector<std::vector<double> > dftfe::groupSymmetryClass::d_translation
private

◆ localDoFIndexToPointIndexMap

std::vector<std::map<dftfe::uInt, dftfe::uInt> > dftfe::groupSymmetryClass::localDoFIndexToPointIndexMap
private

◆ mapping

dealii::MappingQ1<3> dftfe::groupSymmetryClass::mapping
private

◆ n_mpi_processes

const dftfe::uInt dftfe::groupSymmetryClass::n_mpi_processes
private

◆ pcout

dealii::ConditionalOStream dftfe::groupSymmetryClass::pcout
private

◆ remotePointCache

dealii::Utilities::MPI::RemotePointEvaluation<3, 3> dftfe::groupSymmetryClass::remotePointCache
mutableprivate

◆ requiredPointCoordinates

std::vector<dealii::Point<3> > dftfe::groupSymmetryClass::requiredPointCoordinates
private

◆ this_mpi_process

const dftfe::uInt dftfe::groupSymmetryClass::this_mpi_process
private

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