|
DFT-FE 1.3.0-pre
Density Functional Theory With Finite-Elements
|
poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order. More...
#include <poissonSolverProblem.h>
Public Member Functions | |
| poissonSolverProblem (const MPI_Comm &mpi_comm) | |
| Constructor. | |
| void | clear () |
| clears all datamembers and reset to original state. | |
| void | reinit (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, distributedCPUVec< double > &x, const dealii::AffineConstraints< double > &constraintMatrix, const dftfe::uInt matrixFreeVectorComponent, const dftfe::uInt matrixFreeQuadratureComponentRhsDensity, const dftfe::uInt matrixFreeQuadratureComponentAX, const std::map< dealii::types::global_dof_index, double > &atoms, const std::map< dealii::CellId, std::vector< double > > &smearedChargeValues, const dftfe::uInt smearedChargeQuadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoValues, const bool isComputeDiagonalA=true, const bool isComputeMeanValueConstraints=false, const bool smearedNuclearCharges=false, const bool isRhoValues=true, const bool isGradSmearedChargeRhs=false, const dftfe::uInt smearedChargeGradientComponentId=0, const bool storeSmearedChargeRhs=false, const bool reuseSmearedChargeRhs=false, const bool reinitializeFastConstraints=false) |
| reinitialize data structures for total electrostatic potential solve. | |
| distributedCPUVec< double > & | getX () |
| get the reference to x field | |
| void | vmult (distributedCPUVec< double > &Ax, distributedCPUVec< double > &x) |
| Compute A matrix multipled by x. | |
| void | computeRhs (distributedCPUVec< double > &rhs) |
| Compute right hand side vector for the problem Ax = rhs. | |
| void | precondition_Jacobi (distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const |
| Jacobi preconditioning. | |
| void | distributeX () |
| distribute x to the constrained nodes. | |
| void | subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
| void | unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
| bool | operator!= (double val) const |
| function needed by dealii to mimic SparseMatrix | |
Public Member Functions inherited from dftfe::dealiiLinearSolverProblem | |
| dealiiLinearSolverProblem () | |
| Constructor. | |
Private Member Functions | |
| void | AX (const dealii::MatrixFree< 3, double > &matrixFreeData, distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const std::pair< dftfe::uInt, dftfe::uInt > &cell_range) const |
| required for the cell_loop operation in dealii's MatrixFree class | |
| void | computeDiagonalA () |
| Compute the diagonal of A. | |
| void | computeMeanValueConstraint () |
| Compute mean value constraint which is required in case of fully periodic boundary conditions. | |
| void | meanValueConstraintDistribute (distributedCPUVec< double > &vec) const |
| Mean value constraint distibute. | |
| void | meanValueConstraintDistributeSlaveToMaster (distributedCPUVec< double > &vec) const |
| Mean value constraint distibute slave to master. | |
| void | meanValueConstraintSetZero (distributedCPUVec< double > &vec) const |
| Mean value constraint set zero. | |
Private Attributes | |
| distributedCPUVec< double > | d_diagonalA |
| storage for diagonal of the A matrix | |
| distributedCPUVec< double > | d_rhsSmearedCharge |
| const dealii::MatrixFree< 3, double > * | d_matrixFreeDataPtr |
| pointer to dealii MatrixFree object | |
| distributedCPUVec< double > * | d_xPtr |
| pointer to the x vector being solved for | |
| const dealii::AffineConstraints< double > * | d_constraintMatrixPtr |
| pointer to dealii dealii::AffineConstraints<double> object | |
| dftfe::uInt | d_matrixFreeVectorComponent |
| dftfe::uInt | d_matrixFreeQuadratureComponentRhsDensity |
| matrix free quadrature index | |
| dftfe::uInt | d_matrixFreeQuadratureComponentAX |
| matrix free quadrature index | |
| const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > * | d_rhoValuesPtr |
| pointer to electron density cell quadrature data | |
| const std::map< dealii::CellId, std::vector< double > > * | d_smearedChargeValuesPtr |
| pointer to smeared charge cell quadrature data | |
| dftfe::uInt | d_smearedChargeQuadratureId |
| const std::map< dealii::types::global_dof_index, double > * | d_atomsPtr |
| std::vector< double > | d_cellShapeFunctionGradientIntegralFlattened |
| shape function gradient integral storage | |
| distributedCPUVec< double > | d_meanValueConstraintVec |
| storage for mean value constraint vector | |
| bool | d_isMeanValueConstraintComputed |
| bool | d_isGradSmearedChargeRhs |
| bool | d_isStoreSmearedChargeRhs |
| bool | d_isReuseSmearedChargeRhs |
| dftfe::uInt | d_smearedChargeGradientComponentId |
| dftfe::uInt | d_meanValueConstraintNodeId |
| mean value constraints: mean value constrained node | |
| dftfe::uInt | d_meanValueConstraintProcId |
| dftUtils::constraintMatrixInfo< dftfe::utils::MemorySpace::HOST > | d_constraintsInfo |
| duplicate constraints object with flattened maps for faster access | |
| std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > | d_basisOperationsPtr |
| bool | d_isFastConstraintsInitialized |
| const MPI_Comm | mpi_communicator |
| const dftfe::uInt | n_mpi_processes |
| const dftfe::uInt | this_mpi_process |
| dealii::ConditionalOStream | pcout |
poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order.
| dftfe::poissonSolverProblem< FEOrderElectro >::poissonSolverProblem | ( | const MPI_Comm & | mpi_comm | ) |
Constructor.
|
private |
required for the cell_loop operation in dealii's MatrixFree class
| void dftfe::poissonSolverProblem< FEOrderElectro >::clear | ( | ) |
clears all datamembers and reset to original state.
|
private |
Compute the diagonal of A.
|
private |
Compute mean value constraint which is required in case of fully periodic boundary conditions.
|
virtual |
Compute right hand side vector for the problem Ax = rhs.
| rhs | vector for the right hand side values |
Implements dftfe::dealiiLinearSolverProblem.
|
virtual |
distribute x to the constrained nodes.
Implements dftfe::dealiiLinearSolverProblem.
|
virtual |
get the reference to x field
Implements dftfe::dealiiLinearSolverProblem.
|
private |
Mean value constraint distibute.
|
private |
Mean value constraint distibute slave to master.
|
private |
Mean value constraint set zero.
|
inlinevirtual |
function needed by dealii to mimic SparseMatrix
Implements dftfe::dealiiLinearSolverProblem.
|
virtual |
Jacobi preconditioning.
Implements dftfe::dealiiLinearSolverProblem.
| void dftfe::poissonSolverProblem< FEOrderElectro >::reinit | ( | const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & | basisOperationsPtr, |
| distributedCPUVec< double > & | x, | ||
| const dealii::AffineConstraints< double > & | constraintMatrix, | ||
| const dftfe::uInt | matrixFreeVectorComponent, | ||
| const dftfe::uInt | matrixFreeQuadratureComponentRhsDensity, | ||
| const dftfe::uInt | matrixFreeQuadratureComponentAX, | ||
| const std::map< dealii::types::global_dof_index, double > & | atoms, | ||
| const std::map< dealii::CellId, std::vector< double > > & | smearedChargeValues, | ||
| const dftfe::uInt | smearedChargeQuadratureId, | ||
| const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & | rhoValues, | ||
| const bool | isComputeDiagonalA = true, | ||
| const bool | isComputeMeanValueConstraints = false, | ||
| const bool | smearedNuclearCharges = false, | ||
| const bool | isRhoValues = true, | ||
| const bool | isGradSmearedChargeRhs = false, | ||
| const dftfe::uInt | smearedChargeGradientComponentId = 0, | ||
| const bool | storeSmearedChargeRhs = false, | ||
| const bool | reuseSmearedChargeRhs = false, | ||
| const bool | reinitializeFastConstraints = false ) |
reinitialize data structures for total electrostatic potential solve.
For Hartree electrostatic potential solve give an empty map to the atoms parameter.
|
inlinevirtual |
function needed by dealii to mimic SparseMatrix for Jacobi preconditioning
Implements dftfe::dealiiLinearSolverProblem.
|
inlinevirtual |
function needed by dealii to mimic SparseMatrix for Jacobi preconditioning
Implements dftfe::dealiiLinearSolverProblem.
|
virtual |
Compute A matrix multipled by x.
Implements dftfe::dealiiLinearSolverProblem.
|
private |
pointer to map between global dof index in current processor and the atomic charge on that dof
|
private |
|
private |
shape function gradient integral storage
|
private |
pointer to dealii dealii::AffineConstraints<double> object
|
private |
duplicate constraints object with flattened maps for faster access
|
private |
storage for diagonal of the A matrix
|
private |
|
private |
|
private |
boolean flag to query if mean value constraint datastructures are precomputed
|
private |
|
private |
|
private |
pointer to dealii MatrixFree object
|
private |
matrix free quadrature index
|
private |
matrix free quadrature index
|
private |
matrix free index required to access the DofHandler and dealii::AffineConstraints<double> objects corresponding to the problem
|
private |
mean value constraints: mean value constrained node
|
private |
mean value constraints: constrained proc id containing the mean value constrained node
|
private |
storage for mean value constraint vector
|
private |
pointer to electron density cell quadrature data
|
private |
storage for smeared charge rhs in case of total potential solve (doesn't change every scf)
|
private |
|
private |
|
private |
pointer to smeared charge cell quadrature data
|
private |
pointer to the x vector being solved for
|
private |
|
private |
|
private |
|
private |