22#ifndef kerkerSolverProblem_H_ 
   23#  define kerkerSolverProblem_H_ 
   33  template <dftfe::uInt FEOrderElectro>
 
   39                        const MPI_Comm &mpi_comm_domain);
 
   54             FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
 
   56         dealii::AffineConstraints<double> &constraintMatrix,
 
   58         double                             kerkerMixingParameter,
 
  110                        const double                     omega) 
const;
 
  124              const std::string       &identifier = 
"")
 const {};
 
 
  130                const std::string       &identifier = 
"")
 const {};
 
 
  145    AX(
const dealii::MatrixFree<3, double>       &matrixFreeData,
 
  148       const std::pair<dftfe::uInt, dftfe::uInt> &cell_range) 
const;
 
  185        FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
 
 
dealiiLinearSolverProblem()
Constructor.
 
const MPI_Comm mpi_communicator
Definition kerkerSolverProblem.h:190
 
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:164
 
void distributeX()
distribute x to the constrained nodes.
 
dealii::ConditionalOStream pcout
Definition kerkerSolverProblem.h:193
 
void reinit(distributedCPUVec< double > &x, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadPointValues)
reinitialize data structures .
 
dftfe::uInt d_matrixFreeVectorComponent
Definition kerkerSolverProblem.h:171
 
const dftfe::uInt this_mpi_process
Definition kerkerSolverProblem.h:192
 
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:123
 
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
 
dftfe::uInt d_matrixFreeAxQuadratureComponent
Definition kerkerSolverProblem.h:175
 
const dftfe::uInt n_mpi_processes
Definition kerkerSolverProblem.h:191
 
const dealii::MatrixFree< 3, double > * d_matrixFreeDataPRefinedPtr
Definition kerkerSolverProblem.h:182
 
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtr
Definition kerkerSolverProblem.h:186
 
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
 
bool operator!=(double val) const
function needed by dealii to mimic SparseMatrix
Definition kerkerSolverProblem.h:134
 
distributedCPUVec< double > d_diagonalA
storage for diagonal of the A matrix
Definition kerkerSolverProblem.h:160
 
double d_gamma
Definition kerkerSolverProblem.h:167
 
const dealii::DoFHandler< 3 > * d_dofHandlerPRefinedPtr
Definition kerkerSolverProblem.h:180
 
void computeRhs(distributedCPUVec< double > &rhs)
Compute right hand side vector for the problem Ax = rhs.
 
const dealii::AffineConstraints< double > * d_constraintMatrixPRefinedPtr
Definition kerkerSolverProblem.h:181
 
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 dftfe::uInt matrixFreeVectorComponent, const dftfe::uInt matrixFreeQuadratureComponent, const dftfe::uInt matrixFreeAxQuadratureComponent)
initialize the matrix-free data structures
 
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > * d_residualQuadValuesPtr
pointer to electron density cell and grad residual data
Definition kerkerSolverProblem.h:179
 
dftfe::uInt d_matrixFreeQuadratureComponent
matrix free quadrature index
Definition kerkerSolverProblem.h:174
 
void unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
Definition kerkerSolverProblem.h:129
 
const MPI_Comm d_mpiCommParent
Definition kerkerSolverProblem.h:189
 
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
 
std::uint32_t uInt
Definition TypeConfig.h:10