3939#include < deal.II/lac/precondition.h>
4040#include < deal.II/lac/solver_cg.h>
4141
42- #include < deal.II/matrix_free/cuda_fe_evaluation .h>
43- #include < deal.II/matrix_free/cuda_matrix_free .h>
42+ #include < deal.II/matrix_free/portable_fe_evaluation .h>
43+ #include < deal.II/matrix_free/portable_matrix_free .h>
4444
4545// boost
4646#include < boost/algorithm/string.hpp>
@@ -134,8 +134,8 @@ class OperatorDealiiMassQuad
134134{
135135public:
136136 DEAL_II_HOST_DEVICE void
137- operator ()(CUDAWrappers ::FEEvaluation<dim, fe_degree, fe_degree + 1 , 1 , Number> *fe_eval,
138- const int q_point) const
137+ operator ()(Portable ::FEEvaluation<dim, fe_degree, fe_degree + 1 , 1 , Number> *fe_eval,
138+ const int q_point) const
139139 {
140140 fe_eval->submit_value (fe_eval->get_value (q_point), q_point);
141141 }
@@ -148,8 +148,8 @@ class OperatorDealiiLaplaceQuad
148148{
149149public:
150150 DEAL_II_HOST_DEVICE void
151- operator ()(CUDAWrappers ::FEEvaluation<dim, fe_degree, fe_degree + 1 , 1 , Number> *fe_eval,
152- const int q_point) const
151+ operator ()(Portable ::FEEvaluation<dim, fe_degree, fe_degree + 1 , 1 , Number> *fe_eval,
152+ const int q_point) const
153153 {
154154 fe_eval->submit_gradient (fe_eval->get_gradient (q_point), q_point);
155155 }
@@ -162,23 +162,18 @@ class OperatorDealiiMassLocal
162162{
163163public:
164164 DEAL_II_HOST_DEVICE void
165- operator ()(const unsigned int cell,
166- const typename CUDAWrappers::MatrixFree<dim, Number>::Data *gpu_data,
167- CUDAWrappers::SharedData<dim, Number> *shared_data,
168- const Number *src,
169- Number *dst) const
165+ operator ()(const typename Portable::MatrixFree<dim, Number>::Data *data,
166+ const Portable::DeviceVector<Number> &src,
167+ Portable::DeviceVector<Number> &dst) const
170168 {
171- (void )cell;
172-
173- CUDAWrappers::FEEvaluation<dim, fe_degree, fe_degree + 1 , 1 , Number> fe_eval (/* cell,*/ gpu_data,
174- shared_data);
169+ Portable::FEEvaluation<dim, fe_degree, fe_degree + 1 , 1 , Number> fe_eval (data);
175170 fe_eval.read_dof_values (src);
176171 fe_eval.evaluate (EvaluationFlags::values);
177172 fe_eval.apply_for_each_quad_point (OperatorDealiiMassQuad<dim, fe_degree, Number>());
178173 fe_eval.integrate (EvaluationFlags::values);
179174 fe_eval.distribute_local_to_global (dst);
180175 }
181- static const unsigned int n_dofs_1d = fe_degree + 1 ;
176+
182177 static const unsigned int n_local_dofs = Utilities::pow(fe_degree + 1 , dim);
183178 static const unsigned int n_q_points = Utilities::pow(fe_degree + 1 , dim);
184179};
@@ -190,23 +185,18 @@ class OperatorDealiiLaplaceLocal
190185{
191186public:
192187 DEAL_II_HOST_DEVICE void
193- operator ()(const unsigned int cell,
194- const typename CUDAWrappers::MatrixFree<dim, Number>::Data *gpu_data,
195- CUDAWrappers::SharedData<dim, Number> *shared_data,
196- const Number *src,
197- Number *dst) const
188+ operator ()(const typename Portable::MatrixFree<dim, Number>::Data *data,
189+ const Portable::DeviceVector<Number> &src,
190+ Portable::DeviceVector<Number> &dst) const
198191 {
199- (void )cell;
200-
201- CUDAWrappers::FEEvaluation<dim, fe_degree, fe_degree + 1 , 1 , Number> fe_eval (/* cell,*/ gpu_data,
202- shared_data);
192+ Portable::FEEvaluation<dim, fe_degree, fe_degree + 1 , 1 , Number> fe_eval (data);
203193 fe_eval.read_dof_values (src);
204194 fe_eval.evaluate (EvaluationFlags::gradients);
205195 fe_eval.apply_for_each_quad_point (OperatorDealiiLaplaceQuad<dim, fe_degree, Number>());
206196 fe_eval.integrate (EvaluationFlags::gradients);
207197 fe_eval.distribute_local_to_global (dst);
208198 }
209- static const unsigned int n_dofs_1d = fe_degree + 1 ;
199+
210200 static const unsigned int n_local_dofs = Utilities::pow(fe_degree + 1 , dim);
211201 static const unsigned int n_q_points = Utilities::pow(fe_degree + 1 , dim);
212202};
@@ -248,7 +238,7 @@ class OperatorDealii : public OperatorBase<Number, MemorySpace::Default>
248238 reinit () override
249239 {
250240 // configure MatrixFree
251- typename CUDAWrappers ::MatrixFree<dim, Number>::AdditionalData additional_data;
241+ typename Portable ::MatrixFree<dim, Number>::AdditionalData additional_data;
252242
253243 if (bp <= BPType::BP2) // mass matrix
254244 additional_data.mapping_update_flags = update_JxW_values | update_values;
@@ -351,7 +341,7 @@ class OperatorDealii : public OperatorBase<Number, MemorySpace::Default>
351341 /* *
352342 * MatrixFree object.
353343 */
354- CUDAWrappers ::MatrixFree<dim, Number> matrix_free;
344+ Portable ::MatrixFree<dim, Number> matrix_free;
355345};
356346
357347
0 commit comments