DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace > Class Template Reference

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

#include <symmetry.h>

Public Member Functions

 symmetryClass (dftClass< FEOrder, FEOrderElectro, memorySpace > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &_interpoolcomm)
 
void initSymmetry ()
 
void computeAndSymmetrize_rhoOut ()
 
void computeLocalrhoOut ()
 
void clearMaps ()
 
dealii::Point< 3 > crys2cart (dealii::Point< 3 > p, int flag)
 

Private Attributes

dftClass< FEOrder, FEOrderElectro, memorySpace > * dftPtr
 
dealii::FE_Q< 3 > FE
 
dealii::TimerOutput computing_timer
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm mpi_communicator
 
const MPI_Comm interpoolcomm
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
std::vector< std::vector< std::vector< double > > > symmMat
 
unsigned int numSymm
 
double translation [500][3]
 
std::vector< std::vector< int > > symmUnderGroup
 
std::vector< int > numSymmUnderGroup
 
std::map< dealii::CellId, std::vector< std::tuple< int, std::vector< double >, int > > > cellMapTable
 
std::vector< std::vector< std::vector< std::tuple< int, int, int > > > > mappedGroup
 
std::map< int, typename dealii::DoFHandler< 3 >::active_cell_iterator > dealIICellId
 
std::map< dealii::CellId, int > globalCellId
 
std::vector< int > ownerProcGlobal
 
std::vector< std::vector< std::vector< std::vector< int > > > > mappedGroupSend0
 
std::vector< std::vector< std::vector< std::vector< int > > > > mappedGroupSend2
 
std::vector< std::vector< std::vector< std::vector< std::vector< double > > > > > mappedGroupSend1
 
std::vector< std::vector< std::vector< int > > > mappedGroupRecvd0
 
std::vector< std::vector< std::vector< int > > > mappedGroupRecvd2
 
std::vector< std::vector< std::vector< std::vector< double > > > > mappedGroupRecvd1
 
std::vector< std::vector< std::vector< std::vector< int > > > > send_buf_size
 
std::vector< std::vector< std::vector< std::vector< int > > > > recv_buf_size
 
std::vector< std::vector< std::vector< std::vector< double > > > > rhoRecvd
 
std::vector< std::vector< std::vector< std::vector< double > > > > gradRhoRecvd
 
std::vector< std::vector< std::vector< std::vector< int > > > > groupOffsets
 
unsigned int totPoints
 
std::vector< int > mpi_scatter_offset
 
std::vector< int > send_scatter_size
 
std::vector< int > recv_size
 
std::vector< int > mpi_scatterGrad_offset
 
std::vector< int > send_scatterGrad_size
 
std::vector< int > mpi_offsets0
 
std::vector< int > mpi_offsets1
 
std::vector< int > mpiGrad_offsets1
 
std::vector< int > recvdData0
 
std::vector< int > recvdData2
 
std::vector< int > recvdData3
 
std::vector< std::vector< double > > recvdData1
 
std::vector< int > recv_size0
 
std::vector< int > recv_size1
 
std::vector< int > recvGrad_size1
 

Friends

class dftClass< FEOrder, FEOrderElectro, memorySpace >
 

Detailed Description

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
class dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >

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

Author
Krishnendu Ghosh, krisg.nosp@m.@umi.nosp@m.ch.ed.nosp@m.u

Constructor & Destructor Documentation

◆ symmetryClass()

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::symmetryClass ( dftClass< FEOrder, FEOrderElectro, memorySpace > * _dftPtr,
const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const MPI_Comm & _interpoolcomm )

symmetryClass constructor

Member Function Documentation

◆ clearMaps()

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
void dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::clearMaps ( )

Wipes out mapping tables between relaxation steps

◆ computeAndSymmetrize_rhoOut()

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
void dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::computeAndSymmetrize_rhoOut ( )

computes total density by summing over all the symmetry transformed points

◆ computeLocalrhoOut()

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
void dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::computeLocalrhoOut ( )

computes density at all the transformed points received from other processors and scatters the density back to the corresponding processors

◆ crys2cart()

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
dealii::Point< 3 > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::crys2cart ( dealii::Point< 3 > p,
int flag )

quick snippet to go back and forth between crystal and cartesian coordinates

Parameters
[in]ppoint that is to be transformed
[in]flagtype of coordinate transformation, 1 takes crys. to cart. -1 takes cart. to crys.

◆ initSymmetry()

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
void dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::initSymmetry ( )

Main driver routine to generate and communicate mapping tables

Friends And Related Symbol Documentation

◆ dftClass< FEOrder, FEOrderElectro, memorySpace >

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
friend class dftClass< FEOrder, FEOrderElectro, memorySpace >
friend

Member Data Documentation

◆ cellMapTable

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::map<dealii::CellId, std::vector<std::tuple<int, std::vector<double>, int> > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::cellMapTable
private

Data members required for storing mapping tables locally

◆ computing_timer

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
dealii::TimerOutput dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::computing_timer
private

compute-time logger

◆ d_mpiCommParent

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::d_mpiCommParent
private

parallel objects

◆ dealIICellId

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::map<int, typename dealii::DoFHandler<3>::active_cell_iterator> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::dealIICellId
private

◆ dftPtr

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
dftClass<FEOrder, FEOrderElectro, memorySpace>* dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::dftPtr
private

◆ FE

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
dealii::FE_Q<3> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::FE
private

dealii based FE data structres

◆ globalCellId

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::map<dealii::CellId, int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::globalCellId
private

◆ gradRhoRecvd

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::vector<double> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::gradRhoRecvd
private

◆ groupOffsets

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::groupOffsets
private

◆ interpoolcomm

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::interpoolcomm
private

◆ mappedGroup

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::tuple<int, int, int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroup
private

◆ mappedGroupRecvd0

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<int> > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupRecvd0
private

◆ mappedGroupRecvd1

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::vector<double> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupRecvd1
private

◆ mappedGroupRecvd2

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<int> > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupRecvd2
private

◆ mappedGroupSend0

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupSend0
private

Data members required for communicating mapping tables

◆ mappedGroupSend1

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::vector<std::vector<double> > > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupSend1
private

◆ mappedGroupSend2

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupSend2
private

◆ mpi_communicator

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
const MPI_Comm dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_communicator
private

◆ mpi_offsets0

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_offsets0
private

◆ mpi_offsets1

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_offsets1
private

◆ mpi_scatter_offset

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_scatter_offset
private

◆ mpi_scatterGrad_offset

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_scatterGrad_offset
private

◆ mpiGrad_offsets1

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpiGrad_offsets1
private

◆ n_mpi_processes

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
const unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::n_mpi_processes
private

◆ numSymm

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::numSymm
private

◆ numSymmUnderGroup

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::numSymmUnderGroup
private

◆ ownerProcGlobal

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::ownerProcGlobal
private

◆ pcout

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
dealii::ConditionalOStream dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::pcout
private

◆ recv_buf_size

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recv_buf_size
private

◆ recv_size

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recv_size
private

◆ recv_size0

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recv_size0
private

◆ recv_size1

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recv_size1
private

◆ recvdData0

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvdData0
private

◆ recvdData1

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<double> > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvdData1
private

◆ recvdData2

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvdData2
private

◆ recvdData3

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvdData3
private

◆ recvGrad_size1

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvGrad_size1
private

◆ rhoRecvd

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::vector<double> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::rhoRecvd
private

◆ send_buf_size

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::send_buf_size
private

◆ send_scatter_size

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::send_scatter_size
private

◆ send_scatterGrad_size

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::send_scatterGrad_size
private

◆ symmMat

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<std::vector<double> > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::symmMat
private

Space group symmetry related data

◆ symmUnderGroup

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
std::vector<std::vector<int> > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::symmUnderGroup
private

◆ this_mpi_process

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
const unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::this_mpi_process
private

◆ totPoints

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::totPoints
private

Data sizes and offsets required for MPI scattering and gathering of mapping tables and symmetrized density They have to be data members since the same sizes and offsets are used in both communication mapping tables and symmetrized density

◆ translation

template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
double dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::translation[500][3]
private

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