20#if defined(DFTFE_WITH_DEVICE)
22# ifndef kerkerSolverProblemDevice_H_
23# define kerkerSolverProblemDevice_H_
41 template <
unsigned int FEOrderElectro>
42 class kerkerSolverProblemDevice :
public linearSolverProblemDevice
46 kerkerSolverProblemDevice(
const MPI_Comm &mpi_comm_parent,
47 const MPI_Comm &mpi_comm_domain);
62 FEBasisOperations<double, double, dftfe::utils::MemorySpace::DEVICE>>
64 dealii::AffineConstraints<double> &constraintMatrix,
65 distributedCPUVec<double> & x,
66 double kerkerMixingParameter,
67 const unsigned int matrixFreeVectorComponent,
68 const unsigned int matrixFreeQuadratureComponent);
81 distributedCPUVec<double> &x,
82 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
91 distributedDeviceVec<double> &
100 distributedDeviceVec<double> &
109 computeAX(distributedDeviceVec<double> &Ax,
110 distributedDeviceVec<double> &x);
123 computeRhs(distributedCPUVec<double> &rhs);
139 copyXfromDeviceToHost();
145 subscribe(std::atomic<bool> *
const validity,
146 const std::string & identifier =
"")
const {};
152 unsubscribe(std::atomic<bool> *
const validity,
153 const std::string & identifier =
"")
const {};
158 operator!=(
double val)
const
188 distributedCPUVec<double> d_diagonalA;
189 distributedDeviceVec<double> d_diagonalAdevice;
192 distributedCPUVec<double> *d_xPtr;
195 distributedDeviceVec<double> d_xDevice;
199 int d_nLocalCells, d_xLocalDof, d_xLen;
205 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE>
206 d_shapeFunction, d_jacobianFactor;
207 dftfe::utils::MemoryStorage<int, dftfe::utils::MemorySpace::DEVICE> d_map;
211 double *d_shapeFunctionPtr;
212 double *d_jacobianFactorPtr;
216 dftUtils::constraintMatrixInfo<dftfe::utils::MemorySpace::DEVICE>
217 d_constraintsTotalPotentialInfo;
221 unsigned int d_matrixFreeVectorComponent;
224 unsigned int d_matrixFreeQuadratureComponent;
228 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
229 * d_residualQuadValuesPtr;
230 const dealii::DoFHandler<3> * d_dofHandlerPRefinedPtr;
231 const dealii::AffineConstraints<double> *d_constraintMatrixPRefinedPtr;
232 const dealii::MatrixFree<3, double> * d_matrixFreeDataPRefinedPtr;
235 FEBasisOperations<double, double, dftfe::utils::MemorySpace::DEVICE>>
236 d_basisOperationsPtr;
240 const MPI_Comm d_mpiCommParent;
241 const MPI_Comm mpi_communicator;
242 const unsigned int n_mpi_processes;
243 const unsigned int this_mpi_process;
244 dealii::ConditionalOStream pcout;
Definition pseudoPotentialToDftfeConverter.cc:34