20#if defined(DFTFE_WITH_DEVICE)
22# ifndef kerkerSolverProblemDevice_H_
23# define kerkerSolverProblemDevice_H_
43 template <dftfe::uInt FEOrderElectro>
44 class kerkerSolverProblemDevice :
public linearSolverProblemDevice
48 kerkerSolverProblemDevice(
const MPI_Comm &mpi_comm_parent,
49 const MPI_Comm &mpi_comm_domain);
63 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
65 dealii::AffineConstraints<double> &constraintMatrix,
66 distributedCPUVec<double> &x,
67 double kerkerMixingParameter,
83 distributedCPUVec<double> &x,
84 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
93 distributedDeviceVec<double> &
102 distributedDeviceVec<double> &
111 computeAX(distributedDeviceVec<double> &Ax,
112 distributedDeviceVec<double> &x);
125 computeRhs(distributedCPUVec<double> &rhs);
141 copyXfromDeviceToHost();
167 distributedCPUVec<double> d_diagonalA;
168 distributedDeviceVec<double> d_diagonalAdevice;
171 distributedCPUVec<double> *d_xPtr;
174 distributedDeviceVec<double> d_xDevice;
178 dftfe::Int d_nLocalCells, d_xLocalDof, d_xLen;
185 dftfe::MatrixFreeWrapperClass<double,
189 d_matrixFreeWrapperDevice;
192 dftUtils::constraintMatrixInfo<dftfe::utils::MemorySpace::DEVICE>
193 d_constraintsTotalPotentialInfo;
204 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
205 *d_residualQuadValuesPtr;
206 const dealii::DoFHandler<3> *d_dofHandlerPRefinedPtr;
207 const dealii::AffineConstraints<double> *d_constraintMatrixPRefinedPtr;
208 const dealii::MatrixFree<3, double> *d_matrixFreeDataPRefinedPtr;
211 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
212 d_basisOperationsPtr;
214 const MPI_Comm d_mpiCommParent;
215 const MPI_Comm mpi_communicator;
218 dealii::ConditionalOStream pcout;
@ DEVICE
Definition MemorySpaceType.h:36
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10
@ Helmholtz
Definition MatrixFreeDevice.h:39
std::int32_t Int
Definition TypeConfig.h:11