const UpdateFlags flags = this->compute_update_flags (update_flags);
// initialize the base classes
- this->mapping_output.initialize(this->n_quadrature_points, flags);
+ if (flags & update_mapping)
+ this->mapping_output.initialize(this->n_quadrature_points, flags);
this->finite_element_output.initialize(this->n_quadrature_points, *this->fe, flags);
// then get objects into which the FE and the Mapping can store
this->quadrature,
this->finite_element_output);
Threads::Task<typename Mapping<dim,spacedim>::InternalDataBase *>
- mapping_get_data = Threads::new_task (&Mapping<dim,spacedim>::get_face_data,
- *this->mapping,
- flags,
- this->quadrature);
+ mapping_get_data;
+ if (flags & update_mapping)
+ mapping_get_data = Threads::new_task (&Mapping<dim,spacedim>::get_face_data,
+ *this->mapping,
+ flags,
+ this->quadrature);
this->update_flags = flags;
// then collect answers from the two task above
this->fe_data.reset (fe_get_data.return_value());
- this->mapping_data.reset (mapping_get_data.return_value());
+ if (flags & update_mapping)
+ this->mapping_data.reset (mapping_get_data.return_value());
}
const typename Triangulation<dim,spacedim>::cell_iterator cell=*this->present_cell;
this->present_face_index=cell->face_index(face_no);
- this->get_mapping().fill_fe_face_values(*this->present_cell,
- face_no,
- this->quadrature,
- *this->mapping_data,
- this->mapping_output);
+ if (this->update_flags & update_mapping)
+ {
+ this->get_mapping().fill_fe_face_values(*this->present_cell,
+ face_no,
+ this->quadrature,
+ *this->mapping_data,
+ this->mapping_output);
+ }
this->get_fe().fill_fe_face_values(*this->present_cell,
face_no,
const UpdateFlags flags = this->compute_update_flags (update_flags);
// initialize the base classes
- this->mapping_output.initialize(this->n_quadrature_points, flags);
+ if (flags & update_mapping)
+ this->mapping_output.initialize(this->n_quadrature_points, flags);
this->finite_element_output.initialize(this->n_quadrature_points, *this->fe, flags);
// then get objects into which the FE and the Mapping can store
this->quadrature,
this->finite_element_output);
Threads::Task<typename Mapping<dim,spacedim>::InternalDataBase *>
- mapping_get_data = Threads::new_task (&Mapping<dim,spacedim>::get_subface_data,
- *this->mapping,
- flags,
- this->quadrature);
+ mapping_get_data;
+ if (flags & update_mapping)
+ mapping_get_data = Threads::new_task (&Mapping<dim,spacedim>::get_subface_data,
+ *this->mapping,
+ flags,
+ this->quadrature);
this->update_flags = flags;
// then collect answers from the two task above
this->fe_data.reset (fe_get_data.return_value());
- this->mapping_data.reset (mapping_get_data.return_value());
+ if (flags & update_mapping)
+ this->mapping_data.reset (mapping_get_data.return_value());
}
}
// now ask the mapping and the finite element to do the actual work
- this->get_mapping().fill_fe_subface_values(*this->present_cell,
- face_no,
- subface_no,
- this->quadrature,
- *this->mapping_data,
- this->mapping_output);
+ if (this->update_flags & update_mapping)
+ {
+ this->get_mapping().fill_fe_subface_values(*this->present_cell,
+ face_no,
+ subface_no,
+ this->quadrature,
+ *this->mapping_data,
+ this->mapping_output);
+ }
this->get_fe().fill_fe_subface_values(*this->present_cell,
face_no,