167 dealii::FE_DGQ<1> fe(points_source - 1);
168 dealii::FullMatrix<double> matrix(points_target, points_source);
170 .get_interpolation_matrix(fe, matrix);
173 shape_values.resize(points_source * points_target);
174 for(
unsigned int i = 0; i < points_source; ++i)
175 for(
unsigned int q = 0; q < points_target; ++q)
176 shape_values[i * points_target + q] = matrix(q, i);
201 dealii::AlignedVector<double> temp1(MAX(dofs_source, dofs_target));
202 dealii::AlignedVector<double> temp2(MAX(dofs_source, dofs_target));
205 double const * src_ = src;
208 for(
int c = 0; c < cells; c++)
211 for(
int d = 0; d < DIM; d++)
218 EvaluatorTensorProduct<dealii::internal::evaluate_general, 2, 0, 0, double>
219 eval_val(shape_values, shape_values, shape_values, points_source, points_target);
220 eval_val.template values<0, true, false>(src_, temp2.begin());
221 eval_val.template values<1, true, false>(temp2.begin(), temp1.begin());
227 EvaluatorTensorProduct<dealii::internal::evaluate_general, 3, 0, 0, double>
228 eval_val(shape_values, shape_values, shape_values, points_source, points_target);
229 eval_val.template values<0, true, false>(src_, temp1.begin());
230 eval_val.template values<1, true, false>(temp1.begin(), temp2.begin());
231 eval_val.template values<2, true, false>(temp2.begin(), temp1.begin());
234 for(
int i = 0; i < dofs_target; i++)
235 dst_[i * DIM + d] = temp1[i];
240 dst_ += dofs_target * DIM;
342 io(
int type,
char const * filename, VEC & src)
345 unsigned long int dofs = cells * dofs_source;
348 8 *
sizeof(int) +
static_cast<unsigned long int>(start) * dofs_source *
sizeof(double) * DIM;
352 MPI_Type_contiguous(dofs, MPI_DOUBLE, &stype);
353 MPI_Type_commit(&stype);
358 MPI_File_open(comm, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
360 MPI_File_open(comm, filename, MPI_MODE_WRONLY, MPI_INFO_NULL, &fh);
363 MPI_File_set_view(fh, disp, MPI_DOUBLE, MPI_DOUBLE,
"native", MPI_INFO_NULL);
367 MPI_File_read_all(fh, (
void *)src, dofs * DIM, MPI_DOUBLE, MPI_STATUSES_IGNORE);
370 MPI_File_write_all(fh, src, dofs * DIM, MPI_DOUBLE, MPI_STATUSES_IGNORE);
376 MPI_Type_free(&stype);