109 patch.reference_cell = cell->face(face_number)->reference_cell();
115 for (
const unsigned int vertex : cell->face(face_number)->vertex_indices())
119 cell->reference_cell().face_to_cell_vertices(
120 face_number, vertex, cell->combined_face_orientation(face_number)));
123 data.mapping_collection[0].transform_unit_to_real_cell(
130 if (
data.n_datasets > 0)
132 data.reinit_all_fe_values(this->dof_data, cell, face_number);
139 const std::vector<Point<dim>> &q_points =
146 patch.points_are_available =
true;
148 for (
unsigned int i = 0; i < dim; ++i)
149 for (
unsigned int q = 0;
q < n_q_points; ++
q)
153 unsigned int offset = 0;
160 const unsigned int n_components =
163 this->dof_data[
dataset]->postprocessor;
164 if (postprocessor !=
nullptr)
169 postprocessor->get_needed_update_flags();
171 if (n_components == 1)
176 this->dof_data[
dataset]->get_function_values(
180 data.patch_values_scalar.solution_values);
182 this->dof_data[
dataset]->get_function_gradients(
186 data.patch_values_scalar.solution_gradients);
188 this->dof_data[
dataset]->get_function_hessians(
192 data.patch_values_scalar.solution_hessians);
195 data.patch_values_scalar.evaluation_points =
199 data.patch_values_scalar.normals =
203 dh_cell(&cell->get_triangulation(),
210 postprocessor->evaluate_scalar_field(
211 data.patch_values_scalar,
218 data.resize_system_vectors(n_components);
220 this->dof_data[
dataset]->get_function_values(
224 data.patch_values_system.solution_values);
226 this->dof_data[
dataset]->get_function_gradients(
230 data.patch_values_system.solution_gradients);
232 this->dof_data[
dataset]->get_function_hessians(
236 data.patch_values_system.solution_hessians);
239 data.patch_values_system.evaluation_points =
243 data.patch_values_system.normals =
247 dh_cell(&cell->get_triangulation(),
254 postprocessor->evaluate_vector_field(
255 data.patch_values_system,
259 for (
unsigned int q = 0;
q < n_q_points; ++
q)
260 for (
unsigned int component = 0;
261 component < this->dof_data[
dataset]->n_output_variables;
270 if (n_components == 1)
272 this->dof_data[
dataset]->get_function_values(
275 data.patch_values_scalar.solution_values);
276 for (
unsigned int q = 0;
q < n_q_points; ++
q)
278 data.patch_values_scalar.solution_values[
q];
282 data.resize_system_vectors(n_components);
283 this->dof_data[
dataset]->get_function_values(
286 data.patch_values_system.solution_values);
287 for (
unsigned int component = 0; component < n_components;
289 for (
unsigned int q = 0;
q < n_q_points; ++
q)
291 data.patch_values_system.solution_values[
q](component);
294 offset += this->dof_data[
dataset]->n_output_variables;
307 "The current function is trying to generate cell-data output "
308 "for a face that does not belong to an active cell. This is "
314 const double value = this->cell_data[
dataset]->get_cell_data_value(
317 for (
unsigned int q = 0;
q < n_q_points; ++
q)
348 const unsigned int n_subdivisions =
351 Assert(n_subdivisions >= 1,
358 this->validate_dataset_names();
360 unsigned int n_datasets = this->cell_data.size();
361 for (
unsigned int i = 0; i < this->dof_data.size(); ++i)
362 n_datasets += this->dof_data[i]->n_output_variables;
372 face = next_face(face))
376 this->patches.clear();
383 if (this->dof_data[
dataset]->postprocessor)
385 this->dof_data[
dataset]->n_output_variables;
390 for (
unsigned int i = 0; i < this->dof_data.size(); ++i)
391 if (this->dof_data[i]->postprocessor)
393 this->dof_data[i]->postprocessor->get_needed_update_flags();
414 this->build_one_patch(cell_and_face, data, patch);
417 internal::DataOutFacesImplementation::append_patch_to_list<dim, spacedim>(
418 patch, this->patches);
void build_one_patch(const FaceDescriptor *cell_and_face, internal::DataOutFacesImplementation::ParallelData< dim, spacedim > &data, DataOutBase::Patch< patch_dim, patch_spacedim > &patch)
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)
void append_patch_to_list(const DataOutBase::Patch< DataOutFaces< dim, spacedim >::patch_dim, DataOutFaces< dim, spacedim >::patch_spacedim > &patch, std::vector< DataOutBase::Patch< DataOutFaces< dim, spacedim >::patch_dim, DataOutFaces< dim, spacedim >::patch_spacedim > > &patches)
ParallelData(const unsigned int n_datasets, const unsigned int n_subdivisions, const std::vector< unsigned int > &n_postprocessor_outputs, const Mapping< dim, spacedim > &mapping, const std::vector< std::shared_ptr<::hp::FECollection< dim, spacedim > > > &finite_elements, const UpdateFlags update_flags)