dealii::hp::FECollection<dim,spacedim> fe_collection (dof.get_fe());
IDScratchData<dim,spacedim> data(mapping, fe_collection, q, update_flags);
- //FIXME
- // temporary vectors of consistent with InVector type
+ // FIXME
+ // temporary vectors of consistent with InVector type.
+ // Need these because IDScratchData does not have a template type for the InVector
std::vector<dealii::Vector<Number>> function_values;
- std::vector<std::vector<Tensor<1,spacedim,Number> >> function_grads;
+ std::vector<std::vector<Tensor<1,spacedim,Number> > > function_grads;
// loop over all cells
for (typename DH::active_cell_iterator cell = dof.begin_active();
p_d_triangulation
= dynamic_cast<const parallel::distributed::Triangulation<dim,spacedim> *>(&dof.get_tria()))
{
+ // The type used to store the elements of the global vector may be a
+ // real or a complex number. Do the global reduction always with real
+ // and imaginary types so that we don't have to distinguish, and to this
+ // end just copy everything into a complex number and, later, back into
+ // the original data type.
std::complex<double> mean_double = mean;
double my_values[3] = { mean_double.real(), mean_double.imag(), area };
double global_values[3];
get_function_hessians (const FEValuesBase<DH::dimension,DH::space_dimension> &fe_patch_values,
std::vector<std::vector<Tensor<2,DH::space_dimension> > > &patch_hessians_system) const
{
+ // FIXME
std::vector<std::vector<Tensor<2,DH::space_dimension,typename VectorType::value_type> > > tmp(patch_hessians_system.size());
for (unsigned int i = 0; i < tmp.size(); i++)
tmp[i].resize(patch_hessians_system[i].size());
get_function_hessians (const FEValuesBase<DH::dimension,DH::space_dimension> &fe_patch_values,
std::vector<Tensor<2,DH::space_dimension> > &patch_hessians) const
{
+ // FIXME
std::vector<Tensor<2,DH::space_dimension,typename VectorType::value_type> > tmp(patch_hessians.size());
fe_patch_values.get_function_hessians (*vector, tmp);
for (unsigned int i = 0; i < tmp.size(); i++)