// then get objects into which the FE and the Mapping can store
// intermediate data used across calls to reinit. we can do this in parallel
+ Threads::Task<typename FiniteElement<dim,spacedim>::InternalDataBase *>
+ fe_get_data = Threads::new_task (&FiniteElement<dim,spacedim>::get_data,
+ *this->fe,
+ flags,
+ *this->mapping,
+ quadrature);
Threads::Task<typename Mapping<dim,spacedim>::InternalDataBase *>
mapping_get_data = Threads::new_task (&Mapping<dim,spacedim>::get_data,
*this->mapping,
flags,
quadrature);
- this->fe_data.reset (this->fe->get_data(flags, *this->mapping, quadrature));
- this->mapping_data.reset (mapping_get_data.return_value());
-
// initialize the base classes
internal::FEValues::MappingRelatedData<dim,spacedim>::initialize(this->n_quadrature_points, flags);
internal::FEValues::FiniteElementRelatedData<dim,spacedim>::initialize(this->n_quadrature_points, *this->fe, flags);
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());
}
// then get objects into which the FE and the Mapping can store
// intermediate data used across calls to reinit. this can be done in parallel
+ Threads::Task<typename FiniteElement<dim,spacedim>::InternalDataBase *>
+ fe_get_data = Threads::new_task (&FiniteElement<dim,spacedim>::get_face_data,
+ *this->fe,
+ flags,
+ *this->mapping,
+ this->quadrature);
Threads::Task<typename Mapping<dim,spacedim>::InternalDataBase *>
mapping_get_data = Threads::new_task (&Mapping<dim,spacedim>::get_face_data,
*this->mapping,
flags,
this->quadrature);
- this->fe_data.reset (this->fe->get_face_data(flags, *this->mapping, this->quadrature));
- this->mapping_data.reset (mapping_get_data.return_value());
-
// initialize the base classes
internal::FEValues::MappingRelatedData<dim,spacedim>::initialize(this->n_quadrature_points, flags);
internal::FEValues::FiniteElementRelatedData<dim,spacedim>::initialize(this->n_quadrature_points, *this->fe, flags);
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());
}
// then get objects into which the FE and the Mapping can store
// intermediate data used across calls to reinit. this can be done
// in parallel
+ Threads::Task<typename FiniteElement<dim,spacedim>::InternalDataBase *>
+ fe_get_data = Threads::new_task (&FiniteElement<dim,spacedim>::get_subface_data,
+ *this->fe,
+ flags,
+ *this->mapping,
+ this->quadrature);
Threads::Task<typename Mapping<dim,spacedim>::InternalDataBase *>
mapping_get_data = Threads::new_task (&Mapping<dim,spacedim>::get_subface_data,
*this->mapping,
flags,
this->quadrature);
- this->fe_data.reset (this->fe->get_subface_data(flags,
- *this->mapping,
- this->quadrature));
- this->mapping_data.reset (mapping_get_data.return_value());
-
// initialize the base classes
internal::FEValues::MappingRelatedData<dim,spacedim>::initialize(this->n_quadrature_points, flags);
internal::FEValues::FiniteElementRelatedData<dim,spacedim>::initialize(this->n_quadrature_points, *this->fe, flags);
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());
}