165 dealii::FE_DGQ<1> fe(points_source - 1);
166 dealii::FullMatrix<double> matrix(points_target, points_source);
168 .get_interpolation_matrix(fe, matrix);
171 shape_values.resize(points_source * points_target);
172 for(
unsigned int i = 0; i < points_source; ++i)
173 for(
unsigned int q = 0; q < points_target; ++q)
174 shape_values[i * points_target + q] = matrix(q, i);
199 dealii::AlignedVector<double> temp1(MAX(dofs_source, dofs_target));
200 dealii::AlignedVector<double> temp2(MAX(dofs_source, dofs_target));
203 double const * src_ = src;
206 for(
int c = 0; c < cells; c++)
209 for(
int d = 0; d < DIM; d++)
216 EvaluatorTensorProduct<dealii::internal::evaluate_general, 2, 0, 0, double>
217 eval_val(shape_values, shape_values, shape_values, points_source, points_target);
218 eval_val.template values<0, true, false>(src_, temp2.begin());
219 eval_val.template values<1, true, false>(temp2.begin(), temp1.begin());
225 EvaluatorTensorProduct<dealii::internal::evaluate_general, 3, 0, 0, double>
226 eval_val(shape_values, shape_values, shape_values, points_source, points_target);
227 eval_val.template values<0, true, false>(src_, temp1.begin());
228 eval_val.template values<1, true, false>(temp1.begin(), temp2.begin());
229 eval_val.template values<2, true, false>(temp2.begin(), temp1.begin());
232 for(
int i = 0; i < dofs_target; i++)
233 dst_[i * DIM + d] = temp1[i];
238 dst_ += dofs_target * DIM;
340 io(
int type,
char const * filename, VEC & src)
343 unsigned long int dofs = cells * dofs_source;
346 8 *
sizeof(int) +
static_cast<unsigned long int>(start) * dofs_source *
sizeof(double) * DIM;
350 MPI_Type_contiguous(dofs, MPI_DOUBLE, &stype);
351 MPI_Type_commit(&stype);
356 MPI_File_open(comm, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
358 MPI_File_open(comm, filename, MPI_MODE_WRONLY, MPI_INFO_NULL, &fh);
361 MPI_File_set_view(fh, disp, MPI_DOUBLE, MPI_DOUBLE,
"native", MPI_INFO_NULL);
365 MPI_File_read_all(fh, (
void *)src, dofs * DIM, MPI_DOUBLE, MPI_STATUSES_IGNORE);
368 MPI_File_write_all(fh, src, dofs * DIM, MPI_DOUBLE, MPI_STATUSES_IGNORE);
374 MPI_Type_free(&stype);