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,
54 const bool isNonCollinearSpin =
false);
58 std::vector<std::vector<double>> &atomLocations,
59 std::vector<std::vector<double>> &domainBoundingVectors);
72 const dealii::DoFHandler<3> &dofHandler);
79 const dealii::DoFHandler<3> &dofHandler);
84 &vectorFieldValues)
const;
93 std::vector<double> &kPointWeights)
const;
134 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:128
void symmetrizeScalarFieldFromLocalValues(distributedCPUVec< double > &scalarField, const dealii::DoFHandler< 3 > &dofHandler)
dealii::MappingQ1< 3 > mapping
Definition groupSymmetry.h:137
std::vector< std::vector< double > > d_translation
Definition groupSymmetry.h:115
dftfe::uInt d_numAtoms
Definition groupSymmetry.h:117
std::vector< dealii::Point< 3 > > requiredPointCoordinates
Definition groupSymmetry.h:136
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:123
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:107
const MPI_Comm d_mpiCommDomain
Definition groupSymmetry.h:104
dealii::Utilities::MPI::RemotePointEvaluation< 3, 3 > remotePointCache
Definition groupSymmetry.h:135
void symmetrizeForce(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &vectorFieldValues) const
std::vector< bool > d_periodicBoundaryConditions
Definition groupSymmetry.h:126
const bool d_isTimeReversal
Definition groupSymmetry.h:130
std::vector< std::vector< double > > d_symmMatInverse
Definition groupSymmetry.h:114
dealii::TimerOutput computing_timer
Definition groupSymmetry.h:100
const MPI_Comm d_mpiCommParent
Definition groupSymmetry.h:104
std::vector< std::vector< dftfe::uInt > > localDoFIndexToPointIndexMap
Definition groupSymmetry.h:133
const dftfe::uInt this_mpi_process
Definition groupSymmetry.h:106
std::vector< std::vector< double > > d_symmMatCart
Definition groupSymmetry.h:113
const bool d_isGroupSymmetry
Definition groupSymmetry.h:131
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_domainBoundingVectors
Definition groupSymmetry.h:121
void symmetrizeVectorFieldFromLocalValues(distributedCPUVec< double > &vectorFieldComponentx, distributedCPUVec< double > &vectorFieldComponenty, distributedCPUVec< double > &vectorFieldComponentz, const dealii::DoFHandler< 3 > &dofHandler)
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_atomicCoordsFrac
Definition groupSymmetry.h:119
const dftfe::uInt n_mpi_processes
Definition groupSymmetry.h:105
void symmetrizeStress(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &tensorValues) const
dftfe::uInt d_numSymm
Definition groupSymmetry.h:111
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:112
void initGroupSymmetry(std::vector< std::vector< double > > &atomLocations, std::vector< std::vector< double > > &domainBoundingVectors, std::vector< bool > &periodicBoundaryConditions, const bool isCollinearSpin=false, const bool isNonCollinearSpin=false)
Definition MemoryStorage.h:33
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:92