18#ifndef DFTFE_MULTIVECTORPOISSONLINEARSOLVERPROBLEM_H
19#define DFTFE_MULTIVECTORPOISSONLINEARSOLVERPROBLEM_H
30 template <dftfe::utils::MemorySpace memorySpace>
37 const MPI_Comm &mpi_comm_domain);
52 const dealii::AffineConstraints<double> &constraintMatrix,
53 const unsigned int matrixFreeVectorComponent,
54 const unsigned int matrixFreeQuadratureComponentRhs,
55 const unsigned int matrixFreeQuadratureComponentAX,
56 bool isComputeMeanValueConstraint);
66 unsigned int blockSizeInput)
override;
75 unsigned int blockSize)
override;
92 const double omega)
const override;
103 const double omega)
const override;
150 std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace>>
Definition MultiVectorLinearSolverProblem.h:31
char d_transA
Definition MultiVectorPoissonLinearSolverProblem.h:180
std::vector< double > d_shapeFunctionValue
storage for shapefunctions
Definition MultiVectorPoissonLinearSolverProblem.h:216
bool d_isMeanValueConstraintComputed
Definition MultiVectorPoissonLinearSolverProblem.h:133
const dealii::DoFHandler< 3 > * d_dofHandler
Definition MultiVectorPoissonLinearSolverProblem.h:197
double d_beta
Definition MultiVectorPoissonLinearSolverProblem.h:178
const unsigned int n_mpi_processes
Definition MultiVectorPoissonLinearSolverProblem.h:167
bool d_isComputeDiagonalA
Definition MultiVectorPoissonLinearSolverProblem.h:131
dftfe::utils::MemoryStorage< double, memorySpace > d_xCellLLevelNodalData
Definition MultiVectorPoissonLinearSolverProblem.h:187
const dealii::MatrixFree< 3, double > * d_matrixFreeDataPtr
pointer to dealii MatrixFree object
Definition MultiVectorPoissonLinearSolverProblem.h:158
unsigned int d_matrixFreeQuadratureComponentAX
Definition MultiVectorPoissonLinearSolverProblem.h:193
dftfe::utils::MemoryStorage< double, memorySpace > d_diagonalA
Definition MultiVectorPoissonLinearSolverProblem.h:147
void setDataForRhsVec(dftfe::utils::MemoryStorage< double, memorySpace > &inputQuadData)
function to set data for Rhs Vec.
void vmult(dftfe::linearAlgebra::MultiVector< double, memorySpace > &Ax, dftfe::linearAlgebra::MultiVector< double, memorySpace > &x, unsigned int blockSize) override
Compute A matrix multipled by x.
double d_scalarCoeffAlpha
Definition MultiVectorPoissonLinearSolverProblem.h:177
unsigned int d_nQuadsPerCell
Definition MultiVectorPoissonLinearSolverProblem.h:193
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
Definition MultiVectorPoissonLinearSolverProblem.h:151
std::vector< double > d_cellShapeFunctionGradientIntegral
finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_...
Definition MultiVectorPoissonLinearSolverProblem.h:205
void distributeX() override
Apply the constraints to the solution vector.
const dftfe::utils::MemoryStorage< double, memorySpace > * d_cellStiffnessMatrixPtr
Definition MultiVectorPoissonLinearSolverProblem.h:161
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, memorySpace > > d_basisOperationsPtr
Definition MultiVectorPoissonLinearSolverProblem.h:155
double d_negScalarCoeffAlpha
Definition MultiVectorPoissonLinearSolverProblem.h:176
unsigned int d_matrixFreeVectorComponent
Definition MultiVectorPoissonLinearSolverProblem.h:144
size_type d_numberDofsPerElement
Definition MultiVectorPoissonLinearSolverProblem.h:172
char d_transB
Definition MultiVectorPoissonLinearSolverProblem.h:181
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > d_mapNodeIdToProcId
Definition MultiVectorPoissonLinearSolverProblem.h:185
dftfe::utils::MemoryStorage< double, memorySpace > d_diagonalSqrtA
Definition MultiVectorPoissonLinearSolverProblem.h:148
size_type d_inc
Definition MultiVectorPoissonLinearSolverProblem.h:175
dealii::ConditionalOStream pcout
Definition MultiVectorPoissonLinearSolverProblem.h:169
void computeMeanValueConstraint()
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > d_mapQuadIdToProcId
Definition MultiVectorPoissonLinearSolverProblem.h:185
~MultiVectorPoissonLinearSolverProblem()
const dealii::AffineConstraints< double > * d_constraintMatrixPtr
pointer to dealii dealii::AffineConstraints<double> object
Definition MultiVectorPoissonLinearSolverProblem.h:136
void precondition_JacobiSqrt(dftfe::linearAlgebra::MultiVector< double, memorySpace > &dst, const dftfe::linearAlgebra::MultiVector< double, memorySpace > &src, const double omega) const override
Apply square-root of the Jacobi preconditioner function.
dftfe::utils::MemoryStorage< double, memorySpace > * d_rhsQuadDataPtr
Definition MultiVectorPoissonLinearSolverProblem.h:191
std::vector< double > d_cellShapeFunctionJxW
finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_...
Definition MultiVectorPoissonLinearSolverProblem.h:213
size_type d_locallyOwnedSize
Definition MultiVectorPoissonLinearSolverProblem.h:170
dftfe::linearAlgebra::MultiVector< double, memorySpace > * d_blockedXPtr
Definition MultiVectorPoissonLinearSolverProblem.h:140
void tempRhsVecCalc(dftfe::linearAlgebra::MultiVector< double, memorySpace > &rhs)
void reinit(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, memorySpace > > basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int matrixFreeVectorComponent, const unsigned int matrixFreeQuadratureComponentRhs, const unsigned int matrixFreeQuadratureComponentAX, bool isComputeMeanValueConstraint)
const MPI_Comm d_mpi_parent
Definition MultiVectorPoissonLinearSolverProblem.h:166
dftfe::linearAlgebra::MultiVector< double, memorySpace > * d_blockedNDBCPtr
Definition MultiVectorPoissonLinearSolverProblem.h:141
dftfe::linearAlgebra::MultiVector< double, memorySpace > & computeRhs(dftfe::linearAlgebra::MultiVector< double, memorySpace > &NDBCVec, dftfe::linearAlgebra::MultiVector< double, memorySpace > &outputVec, unsigned int blockSizeInput) override
Compute right hand side vector for the problem Ax = rhs.
MultiVectorPoissonLinearSolverProblem(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
void precondition_Jacobi(dftfe::linearAlgebra::MultiVector< double, memorySpace > &dst, const dftfe::linearAlgebra::MultiVector< double, memorySpace > &src, const double omega) const override
Jacobi preconditioning function.
dftfe::utils::MemoryStorage< double, memorySpace > d_AxCellLLevelNodalData
Definition MultiVectorPoissonLinearSolverProblem.h:188
unsigned int d_matrixFreeQuadratureComponentRhs
Definition MultiVectorPoissonLinearSolverProblem.h:143
const MPI_Comm mpi_communicator
data members for the mpi implementation
Definition MultiVectorPoissonLinearSolverProblem.h:166
void preComputeShapeFunction()
size_type d_numCells
Definition MultiVectorPoissonLinearSolverProblem.h:173
dftUtils::constraintMatrixInfo< memorySpace > d_constraintsInfo
Definition MultiVectorPoissonLinearSolverProblem.h:163
const unsigned int this_mpi_process
Definition MultiVectorPoissonLinearSolverProblem.h:168
dftfe::linearAlgebra::MultiVector< double, memorySpace > d_rhsVec
Definition MultiVectorPoissonLinearSolverProblem.h:141
unsigned int d_blockSize
Definition MultiVectorPoissonLinearSolverProblem.h:145
unsigned int d_cellBlockSize
Definition MultiVectorPoissonLinearSolverProblem.h:218
double d_alpha
Definition MultiVectorPoissonLinearSolverProblem.h:179
Definition FEBasisOperations.h:84
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:43
Definition BLASWrapper.h:35
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
Definition MemoryStorage.h:33
Definition pseudoPotentialToDftfeConverter.cc:34
unsigned int size_type
Definition TypeConfig.h:6