DFT-EFE
 
Loading...
Searching...
No Matches
dftefe::basis::GenerateMesh Class Reference

#include <GenerateMesh.h>

Collaboration diagram for dftefe::basis::GenerateMesh:

Public Member Functions

 GenerateMesh (const std::vector< utils::Point > &atomCoordinates, const std::vector< utils::Point > &domainBoundingVectors, double radiusAroundAtom, double meshSizeAroundAtom, const std::vector< bool > &isPeriodicFlags, const basis::CellMappingBase &cellMapping, const MPI_Comm &mpiDomainCommunicator, const MPI_Comm &mpiInterpoolCommunicator=utils::mpi::MPICommSelf)
 This class generates and stores adaptive finite element meshes for the real-space dft problem. More...
 
 GenerateMesh (const std::vector< utils::Point > &atomCoordinates, const std::vector< utils::Point > &domainBoundingVectors, double radiusAtAtom, double meshSizeAtAtom, double radiusAroundAtom, double meshSizeAroundAtom, const std::vector< bool > &isPeriodicFlags, const basis::CellMappingBase &cellMapping, const MPI_Comm &mpiDomainCommunicator, const MPI_Comm &mpiInterpoolCommunicator=utils::mpi::MPICommSelf)
 This class generates and stores adaptive finite element meshes for the real-space dft problem. More...
 
 ~GenerateMesh ()=default
 
void createMesh (TriangulationBase &triangulation)
 

Private Member Functions

void generateCoarseMesh (TriangulationBase &triangulation, const std::vector< bool > &isPeriodicFlags)
 
bool refinementAlgorithm (TriangulationBase &triangulation, std::vector< size_type > &locallyOwnedCellsRefineFlags, std::map< size_type, size_type > &cellIdToCellRefineFlagMapLocal, const basis::CellMappingBase &cellMapping)
 

Private Attributes

bool d_adaptiveWithFineMesh
 
size_type d_dim
 
double d_radiusAtAtom
 
double d_radiusAroundAtom
 
double d_meshSizeAtAtom
 
double d_meshSizeAroundAtom
 
size_type d_maxRefinementSteps
 
const std::vector< utils::Point > & d_atomCoordinates
 
const std::vector< utils::Point > & d_domainBoundingVectors
 
const std::vector< bool > & d_isPeriodicFlags
 
const MPI_Comm & d_mpiDomainCommunicator
 
const MPI_Comm & d_mpiInterpoolCommunicator
 
const basis::CellMappingBased_cellMapping
 
utils::ConditionalOStream d_rootCout
 
std::vector< std::vector< bool > > d_triaCurrentRefinement
 

Detailed Description

An abstract class to handle GenerateMesh, for mesh generation around atom.

Constructor & Destructor Documentation

◆ GenerateMesh() [1/2]

dftefe::basis::GenerateMesh::GenerateMesh ( const std::vector< utils::Point > &  atomCoordinates,
const std::vector< utils::Point > &  domainBoundingVectors,
double  radiusAroundAtom,
double  meshSizeAroundAtom,
const std::vector< bool > &  isPeriodicFlags,
const basis::CellMappingBase cellMapping,
const MPI_Comm &  mpiDomainCommunicator,
const MPI_Comm &  mpiInterpoolCommunicator = utils::mpi::MPICommSelf 
)

This class generates and stores adaptive finite element meshes for the real-space dft problem.

The class uses an adpative mesh generation strategy to generate finite element mesh for given domain based on: atomBallRadius, meshSizeAroundAtom. Mainly to be used in PseudoPotential Caluclations. Additionaly, this class also applies periodicity to mesh.

Author
dftefe
Here is the call graph for this function:

◆ GenerateMesh() [2/2]

dftefe::basis::GenerateMesh::GenerateMesh ( const std::vector< utils::Point > &  atomCoordinates,
const std::vector< utils::Point > &  domainBoundingVectors,
double  radiusAtAtom,
double  meshSizeAtAtom,
double  radiusAroundAtom,
double  meshSizeAroundAtom,
const std::vector< bool > &  isPeriodicFlags,
const basis::CellMappingBase cellMapping,
const MPI_Comm &  mpiDomainCommunicator,
const MPI_Comm &  mpiInterpoolCommunicator = utils::mpi::MPICommSelf 
)

This class generates and stores adaptive finite element meshes for the real-space dft problem.

The class uses an adpative mesh generation strategy to generate finite element mesh for given domain based on: atomBallRadius, meshSizeAroundAtom, meshSizeAtAtom .Mainly used in AllElectron Calculations. Additionaly, this class also applies periodicity to mesh.

Author
dftefe
Here is the call graph for this function:

◆ ~GenerateMesh()

dftefe::basis::GenerateMesh::~GenerateMesh ( )
default

Member Function Documentation

◆ createMesh()

void dftefe::basis::GenerateMesh::createMesh ( TriangulationBase triangulation)
Here is the call graph for this function:

◆ generateCoarseMesh()

void dftefe::basis::GenerateMesh::generateCoarseMesh ( TriangulationBase triangulation,
const std::vector< bool > &  isPeriodicFlags 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ refinementAlgorithm()

bool dftefe::basis::GenerateMesh::refinementAlgorithm ( TriangulationBase triangulation,
std::vector< size_type > &  locallyOwnedCellsRefineFlags,
std::map< size_type, size_type > &  cellIdToCellRefineFlagMapLocal,
const basis::CellMappingBase cellMapping 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ d_adaptiveWithFineMesh

bool dftefe::basis::GenerateMesh::d_adaptiveWithFineMesh
private

◆ d_atomCoordinates

const std::vector<utils::Point>& dftefe::basis::GenerateMesh::d_atomCoordinates
private

◆ d_cellMapping

const basis::CellMappingBase& dftefe::basis::GenerateMesh::d_cellMapping
private

◆ d_dim

size_type dftefe::basis::GenerateMesh::d_dim
private

◆ d_domainBoundingVectors

const std::vector<utils::Point>& dftefe::basis::GenerateMesh::d_domainBoundingVectors
private

◆ d_isPeriodicFlags

const std::vector<bool>& dftefe::basis::GenerateMesh::d_isPeriodicFlags
private

◆ d_maxRefinementSteps

size_type dftefe::basis::GenerateMesh::d_maxRefinementSteps
private

◆ d_meshSizeAroundAtom

double dftefe::basis::GenerateMesh::d_meshSizeAroundAtom
private

◆ d_meshSizeAtAtom

double dftefe::basis::GenerateMesh::d_meshSizeAtAtom
private

◆ d_mpiDomainCommunicator

const MPI_Comm& dftefe::basis::GenerateMesh::d_mpiDomainCommunicator
private

◆ d_mpiInterpoolCommunicator

const MPI_Comm& dftefe::basis::GenerateMesh::d_mpiInterpoolCommunicator
private

◆ d_radiusAroundAtom

double dftefe::basis::GenerateMesh::d_radiusAroundAtom
private

◆ d_radiusAtAtom

double dftefe::basis::GenerateMesh::d_radiusAtAtom
private

◆ d_rootCout

utils::ConditionalOStream dftefe::basis::GenerateMesh::d_rootCout
private

◆ d_triaCurrentRefinement

std::vector<std::vector<bool> > dftefe::basis::GenerateMesh::d_triaCurrentRefinement
private

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