16#ifndef groupSymmetry_H_
17#define groupSymmetry_H_
28#include <deal.II/base/mpi_remote_point_evaluation.h>
45 const MPI_Comm &mpi_comm_domain,
46 const bool isGroupSymmetry,
47 const bool isTimeReversal);
51 std::vector<std::vector<double>> &domainBoundingVectors,
52 std::vector<bool> &periodicBoundaryConditions,
53 const bool isCollinearSpin =
false);
57 std::vector<std::vector<double>> &atomLocations,
58 std::vector<std::vector<double>> &domainBoundingVectors);
71 const dealii::DoFHandler<3> &dofHandler);
76 &vectorFieldValues)
const;
85 std::vector<double> &kPointWeights)
const;
99 dealii::ConditionalOStream
pcout;
125 std::vector<std::map<dftfe::uInt, dftfe::uInt>>
127 mutable dealii::Utilities::MPI::RemotePointEvaluation<3, 3>
void reduceKPointGrid(std::vector< double > &kPointCoordinatesFrac, std::vector< double > &kPointWeights) const
std::vector< std::vector< dftfe::uInt > > d_pointMapsForSymmetry
Definition groupSymmetry.h:120
std::vector< std::map< dftfe::uInt, dftfe::uInt > > localDoFIndexToPointIndexMap
Definition groupSymmetry.h:126
void symmetrizeScalarFieldFromLocalValues(distributedCPUVec< double > &scalarField, const dealii::DoFHandler< 3 > &dofHandler)
void initGroupSymmetry(std::vector< std::vector< double > > &atomLocations, std::vector< std::vector< double > > &domainBoundingVectors, std::vector< bool > &periodicBoundaryConditions, const bool isCollinearSpin=false)
dealii::MappingQ1< 3 > mapping
Definition groupSymmetry.h:130
std::vector< std::vector< double > > d_translation
Definition groupSymmetry.h:107
dftfe::uInt d_numAtoms
Definition groupSymmetry.h:109
std::vector< dealii::Point< 3 > > requiredPointCoordinates
Definition groupSymmetry.h:129
void reinitGroupSymmetry(std::vector< std::vector< double > > &atomLocations, std::vector< std::vector< double > > &domainBoundingVectors)
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_domainBoundingVectorsInverse
Definition groupSymmetry.h:115
groupSymmetryClass(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const bool isGroupSymmetry, const bool isTimeReversal)
dealii::ConditionalOStream pcout
Definition groupSymmetry.h:99
const MPI_Comm d_mpiCommDomain
Definition groupSymmetry.h:96
dealii::Utilities::MPI::RemotePointEvaluation< 3, 3 > remotePointCache
Definition groupSymmetry.h:128
void symmetrizeForce(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &vectorFieldValues) const
std::vector< bool > d_periodicBoundaryConditions
Definition groupSymmetry.h:118
const bool d_isTimeReversal
Definition groupSymmetry.h:122
std::vector< std::vector< double > > d_symmMatInverse
Definition groupSymmetry.h:106
dealii::TimerOutput computing_timer
Definition groupSymmetry.h:92
const MPI_Comm d_mpiCommParent
Definition groupSymmetry.h:96
const dftfe::uInt this_mpi_process
Definition groupSymmetry.h:98
std::vector< std::vector< double > > d_symmMatCart
Definition groupSymmetry.h:105
const bool d_isGroupSymmetry
Definition groupSymmetry.h:123
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_domainBoundingVectors
Definition groupSymmetry.h:113
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_atomicCoordsFrac
Definition groupSymmetry.h:111
const dftfe::uInt n_mpi_processes
Definition groupSymmetry.h:97
void symmetrizeStress(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &tensorValues) const
dftfe::uInt d_numSymm
Definition groupSymmetry.h:103
void setupCommPatternForNodalField(const dealii::DoFHandler< 3 > &dofHandler)
bool computeAtomIdMapsFromGlobalFractionalCoordinates(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &globalPointCoords)
std::vector< std::vector< double > > d_symmMat
Definition groupSymmetry.h:104
Definition MemoryStorage.h:33
Definition pseudoPotentialToDftfeConverter.cc:34
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:92
std::uint32_t uInt
Definition TypeConfig.h:10