22#ifndef kerkerSolverProblem_H_
23# define kerkerSolverProblem_H_
33 template <
unsigned int FEOrderElectro>
39 const MPI_Comm &mpi_comm_domain);
54 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
56 dealii::AffineConstraints<double> &constraintMatrix,
58 double kerkerMixingParameter,
59 const unsigned int matrixFreeVectorComponent,
60 const unsigned int matrixFreeQuadratureComponent);
109 const double omega)
const;
123 const std::string & identifier =
"")
const {};
129 const std::string & identifier =
"")
const {};
144 AX(
const dealii::MatrixFree<3, double> & matrixFreeData,
147 const std::pair<unsigned int, unsigned int> &cell_range)
const;
184 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
dealiiLinearSolverProblem()
Constructor.
const MPI_Comm mpi_communicator
Definition kerkerSolverProblem.h:189
void vmult(distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)
Compute A matrix multipled by x.
distributedCPUVec< double > * d_xPtr
pointer to the x vector being solved for
Definition kerkerSolverProblem.h:163
void distributeX()
distribute x to the constrained nodes.
dealii::ConditionalOStream pcout
Definition kerkerSolverProblem.h:192
void reinit(distributedCPUVec< double > &x, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadPointValues)
reinitialize data structures .
void AX(const dealii::MatrixFree< 3, double > &matrixFreeData, distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const std::pair< unsigned int, unsigned int > &cell_range) const
required for the cell_loop operation in dealii's MatrixFree class
void computeDiagonalA()
Compute the diagonal of A.
kerkerSolverProblem(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
Constructor.
void subscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
Definition kerkerSolverProblem.h:122
void precondition_Jacobi(distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const
Jacobi preconditioning.
distributedCPUVec< double > & getX()
get the reference to x field
const unsigned int n_mpi_processes
Definition kerkerSolverProblem.h:190
const dealii::MatrixFree< 3, double > * d_matrixFreeDataPRefinedPtr
Definition kerkerSolverProblem.h:181
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtr
Definition kerkerSolverProblem.h:185
bool operator!=(double val) const
function needed by dealii to mimic SparseMatrix
Definition kerkerSolverProblem.h:133
unsigned int d_matrixFreeQuadratureComponent
matrix free quadrature index
Definition kerkerSolverProblem.h:173
void init(std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &x, double kerkerMixingParameter, const unsigned int matrixFreeVectorComponent, const unsigned int matrixFreeQuadratureComponent)
initialize the matrix-free data structures
const unsigned int this_mpi_process
Definition kerkerSolverProblem.h:191
distributedCPUVec< double > d_diagonalA
storage for diagonal of the A matrix
Definition kerkerSolverProblem.h:159
double d_gamma
Definition kerkerSolverProblem.h:166
const dealii::DoFHandler< 3 > * d_dofHandlerPRefinedPtr
Definition kerkerSolverProblem.h:179
void computeRhs(distributedCPUVec< double > &rhs)
Compute right hand side vector for the problem Ax = rhs.
const dealii::AffineConstraints< double > * d_constraintMatrixPRefinedPtr
Definition kerkerSolverProblem.h:180
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > * d_residualQuadValuesPtr
pointer to electron density cell and grad residual data
Definition kerkerSolverProblem.h:178
unsigned int d_matrixFreeVectorComponent
Definition kerkerSolverProblem.h:170
void unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
Definition kerkerSolverProblem.h:128
const MPI_Comm d_mpiCommParent
Definition kerkerSolverProblem.h:188
Definition MemoryStorage.h:33
Definition FEBasisOperations.h:30
Definition pseudoPotentialToDftfeConverter.cc:34
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:92