41 namespace DataOutImplementation
43 template <
int dim,
int spacedim>
45 const unsigned int n_datasets,
46 const unsigned int n_subdivisions,
47 const std::vector<unsigned int> &n_postprocessor_outputs,
48 const ::hp::MappingCollection<dim, spacedim> &mapping,
53 const std::vector<std::vector<unsigned int>> &cell_to_patch_index_map)
56 n_postprocessor_outputs,
61 , cell_to_patch_index_map(&cell_to_patch_index_map)
68template <
int dim,
typename DoFHandlerType>
77 return this->first_locally_owned_cell();
80 return this->next_locally_owned_cell(cell);
86template <
int dim,
typename DoFHandlerType>
89 const std::pair<cell_iterator, unsigned int> *cell_and_index,
91 DoFHandlerType::space_dimension>
93 const unsigned int n_subdivisions,
98 DoFHandlerType::space_dimension>
101 patch.reference_cell = cell_and_index->first->reference_cell();
104 scratch_data.reinit_all_fe_values(this->dof_data, cell_and_index->first);
107 &fe_patch_values = scratch_data.get_present_fe_values(0);
112 for (
const unsigned int vertex : cell_and_index->first->vertex_indices())
113 if (scratch_data.mapping_collection[0].preserves_vertex_locations())
114 patch.vertices[vertex] = cell_and_index->first->vertex(vertex);
116 patch.vertices[vertex] =
118 cell_and_index->first,
123 scratch_data.patch_values_scalar.solution_values.resize(n_q_points);
124 scratch_data.patch_values_scalar.solution_gradients.resize(n_q_points);
125 scratch_data.patch_values_scalar.solution_hessians.resize(n_q_points);
126 scratch_data.patch_values_system.solution_values.resize(n_q_points);
127 scratch_data.patch_values_system.solution_gradients.resize(n_q_points);
128 scratch_data.patch_values_system.solution_hessians.resize(n_q_points);
130 for (
unsigned int dataset = 0;
131 dataset < scratch_data.postprocessed_values.size();
133 if (scratch_data.postprocessed_values[dataset].size() != 0)
134 scratch_data.postprocessed_values[dataset].resize(n_q_points);
146 if (curved_cell_region == curved_inner_cells ||
147 (curved_cell_region == curved_boundary &&
148 (cell_and_index->first->at_boundary() ||
149 (DoFHandlerType::dimension != DoFHandlerType::space_dimension))) ||
150 (cell_and_index->first->reference_cell() !=
151 ReferenceCells::get_hypercube<dim>()))
153 Assert(patch.space_dim == DoFHandlerType::space_dimension,
158 patch.points_are_available =
true;
162 const std::vector<Point<DoFHandlerType::space_dimension>> &q_points =
165 patch.data.reinit(scratch_data.n_datasets +
166 DoFHandlerType::space_dimension,
168 for (
unsigned int i = 0; i < DoFHandlerType::space_dimension; ++i)
169 for (
unsigned int q = 0; q < n_q_points; ++q)
170 patch.data(patch.data.size(0) - DoFHandlerType::space_dimension + i,
175 patch.data.reinit(scratch_data.n_datasets, n_q_points);
176 patch.points_are_available =
false;
181 if (scratch_data.n_datasets > 0)
184 unsigned int offset = 0;
187 unsigned int dataset_number = 0;
188 for (
const auto &dataset : this->dof_data)
191 DoFHandlerType::space_dimension>
192 &this_fe_patch_values =
193 scratch_data.get_present_fe_values(dataset_number);
194 const unsigned int n_components =
195 this_fe_patch_values.get_fe().n_components();
198 *postprocessor = dataset->postprocessor;
200 if (postprocessor !=
nullptr)
207 if ((n_components == 1) &&
208 (dataset->is_complex_valued() ==
false))
217 dataset->get_function_values(
218 this_fe_patch_values,
221 scratch_data.patch_values_scalar.solution_values);
224 dataset->get_function_gradients(
225 this_fe_patch_values,
228 scratch_data.patch_values_scalar.solution_gradients);
231 dataset->get_function_hessians(
232 this_fe_patch_values,
235 scratch_data.patch_values_scalar.solution_hessians);
240 scratch_data.patch_values_scalar.evaluation_points =
241 this_fe_patch_values.get_quadrature_points();
243 const typename DoFHandlerType::cell_iterator dh_cell(
244 &cell_and_index->first->get_triangulation(),
245 cell_and_index->first->level(),
246 cell_and_index->first->index(),
247 dataset->dof_handler);
248 scratch_data.patch_values_scalar.template set_cell<dim>(
254 scratch_data.patch_values_scalar,
255 scratch_data.postprocessed_values[dataset_number]);
268 if (dataset->is_complex_valued() ==
false)
270 scratch_data.resize_system_vectors(n_components);
273 dataset->get_function_values(
274 this_fe_patch_values,
277 scratch_data.patch_values_system.solution_values);
280 dataset->get_function_gradients(
281 this_fe_patch_values,
284 scratch_data.patch_values_system.solution_gradients);
287 dataset->get_function_hessians(
288 this_fe_patch_values,
291 scratch_data.patch_values_system.solution_hessians);
299 if (n_components == 1)
301 scratch_data.resize_system_vectors(2);
308 dataset->get_function_values(
309 this_fe_patch_values,
311 ComponentExtractor::real_part,
312 scratch_data.patch_values_scalar
315 for (
unsigned int i = 0;
316 i < scratch_data.patch_values_scalar
317 .solution_values.size();
321 scratch_data.patch_values_system
325 scratch_data.patch_values_system
326 .solution_values[i][0] =
327 scratch_data.patch_values_scalar
334 dataset->get_function_gradients(
335 this_fe_patch_values,
337 ComponentExtractor::real_part,
338 scratch_data.patch_values_scalar
339 .solution_gradients);
341 for (
unsigned int i = 0;
342 i < scratch_data.patch_values_scalar
343 .solution_gradients.size();
347 scratch_data.patch_values_system
351 scratch_data.patch_values_system
352 .solution_gradients[i][0] =
353 scratch_data.patch_values_scalar
354 .solution_gradients[i];
360 dataset->get_function_hessians(
361 this_fe_patch_values,
363 ComponentExtractor::real_part,
364 scratch_data.patch_values_scalar
367 for (
unsigned int i = 0;
368 i < scratch_data.patch_values_scalar
369 .solution_hessians.size();
373 scratch_data.patch_values_system
374 .solution_hessians[i]
377 scratch_data.patch_values_system
378 .solution_hessians[i][0] =
379 scratch_data.patch_values_scalar
380 .solution_hessians[i];
391 dataset->get_function_values(
392 this_fe_patch_values,
394 ComponentExtractor::imaginary_part,
395 scratch_data.patch_values_scalar
398 for (
unsigned int i = 0;
399 i < scratch_data.patch_values_scalar
400 .solution_values.size();
404 scratch_data.patch_values_system
408 scratch_data.patch_values_system
409 .solution_values[i][1] =
410 scratch_data.patch_values_scalar
417 dataset->get_function_gradients(
418 this_fe_patch_values,
420 ComponentExtractor::imaginary_part,
421 scratch_data.patch_values_scalar
422 .solution_gradients);
424 for (
unsigned int i = 0;
425 i < scratch_data.patch_values_scalar
426 .solution_gradients.size();
430 scratch_data.patch_values_system
434 scratch_data.patch_values_system
435 .solution_gradients[i][1] =
436 scratch_data.patch_values_scalar
437 .solution_gradients[i];
443 dataset->get_function_hessians(
444 this_fe_patch_values,
446 ComponentExtractor::imaginary_part,
447 scratch_data.patch_values_scalar
450 for (
unsigned int i = 0;
451 i < scratch_data.patch_values_scalar
452 .solution_hessians.size();
456 scratch_data.patch_values_system
457 .solution_hessians[i]
460 scratch_data.patch_values_system
461 .solution_hessians[i][1] =
462 scratch_data.patch_values_scalar
463 .solution_hessians[i];
469 scratch_data.resize_system_vectors(2 * n_components);
498 std::vector<Vector<double>> tmp(
499 scratch_data.patch_values_system.solution_values
504 dataset->get_function_values(
505 this_fe_patch_values,
507 ComponentExtractor::real_part,
512 for (
unsigned int i = 0;
513 i < scratch_data.patch_values_system
514 .solution_values.size();
518 scratch_data.patch_values_system
522 for (
unsigned int j = 0; j < n_components;
524 scratch_data.patch_values_system
525 .solution_values[i][j] = tmp[i][j];
531 dataset->get_function_values(
532 this_fe_patch_values,
534 ComponentExtractor::imaginary_part,
537 for (
unsigned int i = 0;
538 i < scratch_data.patch_values_system
539 .solution_values.size();
542 for (
unsigned int j = 0; j < n_components;
544 scratch_data.patch_values_system
545 .solution_values[i][j + n_components] =
553 std::vector<std::vector<
556 scratch_data.patch_values_system
557 .solution_gradients.size(),
563 dataset->get_function_gradients(
564 this_fe_patch_values,
566 ComponentExtractor::real_part,
569 for (
unsigned int i = 0;
570 i < scratch_data.patch_values_system
571 .solution_gradients.size();
575 scratch_data.patch_values_system
576 .solution_gradients[i]
579 for (
unsigned int j = 0; j < n_components;
581 scratch_data.patch_values_system
582 .solution_gradients[i][j] = tmp[i][j];
586 dataset->get_function_gradients(
587 this_fe_patch_values,
589 ComponentExtractor::imaginary_part,
592 for (
unsigned int i = 0;
593 i < scratch_data.patch_values_system
594 .solution_gradients.size();
597 for (
unsigned int j = 0; j < n_components;
599 scratch_data.patch_values_system
600 .solution_gradients[i][j + n_components] =
608 std::vector<std::vector<
611 scratch_data.patch_values_system
612 .solution_gradients.size(),
618 dataset->get_function_hessians(
619 this_fe_patch_values,
621 ComponentExtractor::real_part,
624 for (
unsigned int i = 0;
625 i < scratch_data.patch_values_system
626 .solution_hessians.size();
630 scratch_data.patch_values_system
631 .solution_hessians[i]
634 for (
unsigned int j = 0; j < n_components;
636 scratch_data.patch_values_system
637 .solution_hessians[i][j] = tmp[i][j];
641 dataset->get_function_hessians(
642 this_fe_patch_values,
644 ComponentExtractor::imaginary_part,
647 for (
unsigned int i = 0;
648 i < scratch_data.patch_values_system
649 .solution_hessians.size();
652 for (
unsigned int j = 0; j < n_components;
654 scratch_data.patch_values_system
655 .solution_hessians[i][j + n_components] =
664 scratch_data.patch_values_system.evaluation_points =
665 this_fe_patch_values.get_quadrature_points();
667 const typename DoFHandlerType::cell_iterator dh_cell(
668 &cell_and_index->first->get_triangulation(),
669 cell_and_index->first->level(),
670 cell_and_index->first->index(),
671 dataset->dof_handler);
672 scratch_data.patch_values_system.template set_cell<dim>(
680 scratch_data.patch_values_system,
681 scratch_data.postprocessed_values[dataset_number]);
687 for (
unsigned int q = 0; q < n_q_points; ++q)
688 for (
unsigned int component = 0;
689 component < dataset->n_output_variables;
691 patch.data(offset + component, q) =
692 scratch_data.postprocessed_values[dataset_number][q](
697 offset += dataset->n_output_variables;
704 if (n_components == 1)
709 dataset->get_function_values(
710 this_fe_patch_values,
713 scratch_data.patch_values_scalar.solution_values);
714 for (
unsigned int q = 0; q < n_q_points; ++q)
715 patch.data(offset, q) =
716 scratch_data.patch_values_scalar.solution_values[q];
724 if (dataset->is_complex_valued() ==
true)
726 dataset->get_function_values(
727 this_fe_patch_values,
730 scratch_data.patch_values_scalar.solution_values);
731 for (
unsigned int q = 0; q < n_q_points; ++q)
732 patch.data(offset, q) =
733 scratch_data.patch_values_scalar.solution_values[q];
739 scratch_data.resize_system_vectors(n_components);
746 if (dataset->is_complex_valued() ==
false)
748 dataset->get_function_values(
749 this_fe_patch_values,
752 scratch_data.patch_values_system.solution_values);
753 for (
unsigned int component = 0; component < n_components;
755 for (
unsigned int q = 0; q < n_q_points; ++q)
756 patch.data(offset + component, q) =
757 scratch_data.patch_values_system.solution_values[q](
761 offset += dataset->n_output_variables;
793 dataset->get_function_values(
794 this_fe_patch_values,
797 scratch_data.patch_values_system.solution_values);
803 Assert(dataset->data_component_interpretation.size() ==
807 unsigned int destination = offset;
808 for (
unsigned int component = 0;
809 component < n_components;
813 dataset->data_component_interpretation[component])
826 for (
unsigned int q = 0; q < n_q_points;
828 patch.data(destination, q) =
829 scratch_data.patch_values_system
830 .solution_values[q](component);
852 const unsigned int size =
853 DoFHandlerType::space_dimension;
854 for (
unsigned int c = 0; c < size; ++c)
855 for (
unsigned int q = 0; q < n_q_points;
857 patch.data(destination + c, q) =
858 scratch_data.patch_values_system
859 .solution_values[q](component + c);
862 destination += 2 * size;
871 const unsigned int size =
872 DoFHandlerType::space_dimension *
873 DoFHandlerType::space_dimension;
874 for (
unsigned int c = 0; c < size; ++c)
875 for (
unsigned int q = 0; q < n_q_points;
877 patch.data(destination + c, q) =
878 scratch_data.patch_values_system
879 .solution_values[q](component + c);
882 destination += 2 * size;
896 dataset->get_function_values(
897 this_fe_patch_values,
900 scratch_data.patch_values_system.solution_values);
902 unsigned int destination = offset;
903 for (
unsigned int component = 0;
904 component < n_components;
908 dataset->data_component_interpretation[component])
917 for (
unsigned int q = 0; q < n_q_points;
919 patch.data(destination + 1, q) =
920 scratch_data.patch_values_system
921 .solution_values[q](component);
937 const unsigned int size =
938 DoFHandlerType::space_dimension;
939 for (
unsigned int c = 0; c < size; ++c)
940 for (
unsigned int q = 0; q < n_q_points;
942 patch.data(destination + size + c, q) =
943 scratch_data.patch_values_system
944 .solution_values[q](component + c);
947 destination += 2 * size;
956 const unsigned int size =
957 DoFHandlerType::space_dimension *
958 DoFHandlerType::space_dimension;
959 for (
unsigned int c = 0; c < size; ++c)
960 for (
unsigned int q = 0; q < n_q_points;
962 patch.data(destination + size + c, q) =
963 scratch_data.patch_values_system
964 .solution_values[q](component + c);
967 destination += 2 * size;
982 offset += dataset->n_output_variables * 2;
994 if (this->cell_data.size() != 0)
998 for (
const auto &dataset : this->cell_data)
1002 const double value =
1003 dataset->get_cell_data_value(cell_and_index->second,
1005 ComponentExtractor::real_part);
1006 for (
unsigned int q = 0; q < n_q_points; ++q)
1007 patch.data(offset, q) = value;
1011 if (dataset->is_complex_valued() ==
true)
1013 const double value = dataset->get_cell_data_value(
1014 cell_and_index->second,
1017 for (
unsigned int q = 0; q < n_q_points; ++q)
1018 patch.data(offset + 1, q) = value;
1021 offset += (dataset->is_complex_valued() ? 2 : 1);
1027 for (
const unsigned int f : cell_and_index->first->face_indices())
1039 if (cell_and_index->first->at_boundary(f) ||
1040 (cell_and_index->first->neighbor(f)->level() !=
1041 cell_and_index->first->level()))
1047 const cell_iterator neighbor = cell_and_index->first->neighbor(f);
1048 Assert(
static_cast<unsigned int>(neighbor->level()) <
1049 scratch_data.cell_to_patch_index_map->size(),
1051 if ((
static_cast<unsigned int>(neighbor->index()) >=
1052 (*scratch_data.cell_to_patch_index_map)[neighbor->level()].size()) ||
1053 ((*scratch_data.cell_to_patch_index_map)[neighbor->level()]
1054 [neighbor->index()] ==
1063 patch.neighbors[f] =
1065 .cell_to_patch_index_map)[neighbor->level()][neighbor->index()];
1068 const unsigned int patch_idx =
1069 (*scratch_data.cell_to_patch_index_map)[cell_and_index->first->level()]
1070 [cell_and_index->first->index()];
1073 patch.patch_index = patch_idx;
1078 this->patches[patch_idx].swap(patch);
1083template <
int dim,
typename DoFHandlerType>
1092 DoFHandlerType::space_dimension>(),
1099template <
int dim,
typename DoFHandlerType>
1104 const unsigned int n_subdivisions_,
1108 DoFHandlerType::space_dimension>
1109 mapping_collection(mapping);
1111 build_patches(mapping_collection, n_subdivisions_, curved_region);
1116template <
int dim,
typename DoFHandlerType>
1120 DoFHandlerType::space_dimension> &mapping,
1121 const unsigned int n_subdivisions_,
1125 Assert(dim == DoFHandlerType::dimension,
1131 const unsigned int n_subdivisions =
1132 (n_subdivisions_ != 0) ? n_subdivisions_ : this->default_subdivisions;
1133 Assert(n_subdivisions >= 1,
1137 this->validate_dataset_names();
1155 std::vector<std::vector<unsigned int>> cell_to_patch_index_map;
1156 cell_to_patch_index_map.resize(this->
triangulation->n_levels());
1160 unsigned int max_index = 0;
1164 if (
static_cast<unsigned int>(cell->level()) ==
l)
1166 std::max(max_index,
static_cast<unsigned int>(cell->index()));
1168 cell_to_patch_index_map[
l].resize(
1171 DoFHandlerType::dimension,
1172 DoFHandlerType::space_dimension>::no_neighbor);
1176 std::vector<std::pair<cell_iterator, unsigned int>> all_cells;
1184 unsigned int active_index = 0;
1191 while (active_cell != this->
triangulation->end() && cell->is_active() &&
1192 decltype(active_cell)(cell) != active_cell)
1198 Assert(
static_cast<unsigned int>(cell->level()) <
1199 cell_to_patch_index_map.size(),
1201 Assert(
static_cast<unsigned int>(cell->index()) <
1202 cell_to_patch_index_map[cell->level()].size(),
1206 cell_to_patch_index_map[cell->level()][cell->index()] =
1209 all_cells.emplace_back(cell, active_index);
1213 this->patches.clear();
1214 this->patches.resize(all_cells.size());
1222 unsigned int n_datasets = 0;
1223 for (
unsigned int i = 0; i < this->cell_data.size(); ++i)
1224 n_datasets += (this->cell_data[i]->is_complex_valued() &&
1225 (this->cell_data[i]->postprocessor ==
nullptr) ?
1228 for (
unsigned int i = 0; i < this->dof_data.size(); ++i)
1229 n_datasets += (this->dof_data[i]->n_output_variables *
1230 (this->dof_data[i]->is_complex_valued() &&
1231 (this->dof_data[i]->postprocessor ==
nullptr) ?
1235 std::vector<unsigned int> n_postprocessor_outputs(this->dof_data.size());
1236 for (
unsigned int dataset = 0; dataset < this->dof_data.size(); ++dataset)
1237 if (this->dof_data[dataset]->postprocessor)
1238 n_postprocessor_outputs[dataset] =
1239 this->dof_data[dataset]->n_output_variables;
1241 n_postprocessor_outputs[dataset] = 0;
1244 (n_subdivisions < 2 ? no_curved_cells : curved_region);
1247 if (curved_cell_region != no_curved_cells)
1250 for (
unsigned int i = 0; i < this->dof_data.size(); ++i)
1251 if (this->dof_data[i]->postprocessor)
1253 this->dof_data[i]->postprocessor->get_needed_update_flags();
1259 "The update of normal vectors may not be requested for evaluation of "
1260 "data on cells via DataPostprocessor."));
1263 DoFHandlerType::space_dimension>
1264 thread_data(n_datasets,
1266 n_postprocessor_outputs,
1270 cell_to_patch_index_map);
1272 auto worker = [
this, n_subdivisions, curved_cell_region](
1273 const std::pair<cell_iterator, unsigned int> *cell_and_index,
1275 DoFHandlerType::dimension,
1276 DoFHandlerType::space_dimension> &scratch_data,
1280 this->build_one_patch(cell_and_index,
1283 curved_cell_region);
1287 if (all_cells.size() > 0)
1289 all_cells.data() + all_cells.size(),
1292 std::function<
void(
const int)>(),
1307template <
int dim,
typename DoFHandlerType>
1315 first_cell_function = first_cell;
1316 next_cell_function = next_cell;
1321template <
int dim,
typename DoFHandlerType>
1326 const auto first_cell =
1337 const auto next_cell =
1357 set_cell_selection(first_cell, next_cell);
1362template <
int dim,
typename DoFHandlerType>
1363const std::pair<typename DataOut<dim, DoFHandlerType>::FirstCellFunctionType,
1367 return std::make_pair(first_cell_function, next_cell_function);
1372template <
int dim,
typename DoFHandlerType>
1381template <
int dim,
typename DoFHandlerType>
1389 DoFHandlerType::space_dimension>::active_cell_iterator
1397template <
int dim,
typename DoFHandlerType>
1405 while ((cell != this->
triangulation->end()) && cell->is_active() &&
1406 !cell->is_locally_owned())
1407 cell = next_cell(cell);
1414template <
int dim,
typename DoFHandlerType>
1420 next_cell(old_cell);
1421 while ((cell != this->
triangulation->end()) && cell->is_active() &&
1422 !cell->is_locally_owned())
1423 cell = next_cell(cell);
1429#include "data_out.inst"
virtual cell_iterator first_cell()
typename DataOut_DoFData< DoFHandlerType, DoFHandlerType::dimension, DoFHandlerType::space_dimension >::cell_iterator cell_iterator
void set_cell_selection(const std::function< cell_iterator(const Triangulation< dim, spacedim > &)> &first_cell, const std::function< cell_iterator(const Triangulation< dim, spacedim > &, const cell_iterator &)> &next_cell)
virtual void build_patches(const unsigned int n_subdivisions=0)
const std::pair< FirstCellFunctionType, NextCellFunctionType > get_cell_selection() const
virtual cell_iterator first_locally_owned_cell()
typename std::function< cell_iterator(const Triangulation< dim, spacedim > &, const cell_iterator &)> NextCellFunctionType
void build_one_patch(const std::pair< cell_iterator, unsigned int > *cell_and_index, internal::DataOutImplementation::ParallelData< DoFHandlerType::dimension, DoFHandlerType::space_dimension > &scratch_data, const unsigned int n_subdivisions, const CurvedCellRegion curved_cell_region)
virtual cell_iterator next_locally_owned_cell(const cell_iterator &cell)
virtual cell_iterator next_cell(const cell_iterator &cell)
virtual UpdateFlags get_needed_update_flags() const =0
virtual void evaluate_vector_field(const DataPostprocessorInputs::Vector< dim > &input_data, std::vector< Vector< double > > &computed_quantities) const
virtual void evaluate_scalar_field(const DataPostprocessorInputs::Scalar< dim > &input_data, std::vector< Vector< double > > &computed_quantities) const
const std::vector< Point< spacedim > > & get_quadrature_points() const
const Mapping< dim, spacedim > & get_mapping() const
const unsigned int n_quadrature_points
FilteredIterator & set_to_next_positive(const BaseIterator &bi)
Abstract base class for mapping classes.
virtual Point< spacedim > transform_unit_to_real_cell(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const Point< dim > &p) const =0
static unsigned int n_threads()
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
@ update_hessians
Second derivatives of shape functions.
@ update_values
Shape function values.
@ update_normal_vectors
Normal vectors.
@ update_gradients
Shape function gradients.
@ update_quadrature_points
Transformed quadrature points.
static ::ExceptionBase & ExcInvalidNumberOfSubdivisions(int arg1)
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
static ::ExceptionBase & ExcInternalError()
unsigned int n_subdivisions
static ::ExceptionBase & ExcNoTriangulationSelected()
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
static ::ExceptionBase & ExcMessage(std::string arg1)
const Mapping< dim, spacedim > & get_default_linear_mapping(const Triangulation< dim, spacedim > &triangulation)
@ component_is_part_of_tensor
@ component_is_part_of_vector
Tensor< 2, dim, Number > l(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
void run(const std::vector< std::vector< Iterator > > &colored_iterators, Worker worker, Copier copier, const ScratchData &sample_scratch_data, const CopyData &sample_copy_data, const unsigned int queue_length=2 *MultithreadInfo::n_threads(), const unsigned int chunk_size=8)
static const unsigned int invalid_unsigned_int
::VectorizedArray< Number, width > max(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
const ::parallel::distributed::Triangulation< dim, spacedim > * triangulation
ParallelData(const unsigned int n_datasets, const unsigned int n_subdivisions, const std::vector< unsigned int > &n_postprocessor_outputs, const ::hp::MappingCollection< dim, spacedim > &mapping, const std::vector< std::shared_ptr<::hp::FECollection< dim, spacedim > > > &finite_elements, const UpdateFlags update_flags, const std::vector< std::vector< unsigned int > > &cell_to_patch_index_map)