class FEEvaluation;
+/**
+ * @brief The EvaluationFlags enum
+ */
+namespace EvaluationFlags
+{
+ /**
+ * @brief The type enum
+ */
+ enum EvaluationFlags
+ {
+ /**
+ *
+ */
+ nothing = 0,
+ /**
+ *
+ */
+ values = 0x1,
+ /**
+ *
+ */
+ gradients = 0x2,
+ /**
+ *
+ */
+ hessians = 0x4
+ };
+
+
+ /**
+ * Global operator which returns an object in which all bits are set which are
+ * either set in the first or the second argument. This operator exists since
+ * if it did not then the result of the bit-or <tt>operator |</tt> would be an
+ * integer which would in turn trigger a compiler warning when we tried to
+ * assign it to an object of type UpdateFlags.
+ *
+ * @ref type
+ */
+ inline EvaluationFlags
+ operator|(const EvaluationFlags f1, const EvaluationFlags f2)
+ {
+ return static_cast<EvaluationFlags>(static_cast<unsigned int>(f1) |
+ static_cast<unsigned int>(f2));
+ }
+
+
+
+ /**
+ * Global operator which sets the bits from the second argument also in the
+ * first one.
+ *
+ * @ref type
+ */
+ inline EvaluationFlags &
+ operator|=(EvaluationFlags &f1, const EvaluationFlags f2)
+ {
+ f1 = f1 | f2;
+ return f1;
+ }
+
+
+ /**
+ * Global operator which returns an object in which all bits are set which are
+ * set in the first as well as the second argument. This operator exists since
+ * if it did not then the result of the bit-and <tt>operator &</tt> would be
+ * an integer which would in turn trigger a compiler warning when we tried to
+ * assign it to an object of type UpdateFlags.
+ *
+ * @ref UpdateFlags
+ */
+ inline EvaluationFlags operator&(const EvaluationFlags f1,
+ const EvaluationFlags f2)
+ {
+ return static_cast<EvaluationFlags>(static_cast<unsigned int>(f1) &
+ static_cast<unsigned int>(f2));
+ }
+
+
+ /**
+ * Global operator which clears all the bits in the first argument if they are
+ * not also set in the second argument.
+ *
+ * @ref UpdateFlags
+ */
+ inline EvaluationFlags &
+ operator&=(EvaluationFlags &f1, const EvaluationFlags f2)
+ {
+ f1 = f1 & f2;
+ return f1;
+ }
+
+} // namespace EvaluationFlags
+
/**
* This is the base class for the FEEvaluation classes. This class is a base
* class and needs usually not be called in user code. It does not have any
* manually).
*/
void
+ evaluate(const EvaluationFlags::EvaluationFlags evaluation_flag);
+
+ /**
+ * Like above but with separate bool flags.
+ * @deprecated use evaluate() with the EvaluationFlags argument.
+ */
+ DEAL_II_DEPRECATED
+ void
evaluate(const bool evaluate_values,
const bool evaluate_gradients,
const bool evaluate_hessians = false);
* useful information (unless these values have been set manually).
*/
void
+ evaluate(const VectorizedArrayType * values_array,
+ const EvaluationFlags::EvaluationFlags evaluation_flag);
+
+ /**
+ * Like above but using separate bool flags.
+ * @deprecated use evaluate() with the EvaluationFlags argument.
+ */
+ DEAL_II_DEPRECATED
+ void
evaluate(const VectorizedArrayType *values_array,
const bool evaluate_values,
const bool evaluate_gradients,
*/
template <typename VectorType>
void
+ gather_evaluate(const VectorType & input_vector,
+ const EvaluationFlags::EvaluationFlags evaluation_flag);
+
+ /**
+ * @deprecated Please use the gather_evaluate() function with the EvaluationFlags argument.
+ */
+ template <typename VectorType>
+ DEAL_II_DEPRECATED void
gather_evaluate(const VectorType &input_vector,
const bool evaluate_values,
const bool evaluate_gradients,
* distribute_local_to_global() or set_dof_values() methods).
*/
void
+ integrate(const EvaluationFlags::EvaluationFlags integration_flag);
+
+
+ /**
+ * @deprecated Please use the integrate() function with the EvaluationFlags argument.
+ */
+ DEAL_II_DEPRECATED void
integrate(const bool integrate_values, const bool integrate_gradients);
/**
* internal data structures behind begin_dof_values().
*/
void
+ integrate(const EvaluationFlags::EvaluationFlags integration_flag,
+ VectorizedArrayType * values_array);
+
+ /**
+ * @deprecated Please use the integrate() function with the EvaluationFlags argument.
+ */
+ DEAL_II_DEPRECATED
+ void
integrate(const bool integrate_values,
const bool integrate_gradients,
VectorizedArrayType *values_array);
*/
template <typename VectorType>
void
+ integrate_scatter(const EvaluationFlags::EvaluationFlags evaluation_flag,
+ VectorType & output_vector);
+
+ /**
+ * @deprecated Please use the integrate_scatter() function with the EvaluationFlags argument.
+ */
+ template <typename VectorType>
+ DEAL_II_DEPRECATED void
integrate_scatter(const bool integrate_values,
const bool integrate_gradients,
VectorType &output_vector);
* accessing the internal data pointers).
*/
void
+ evaluate(const EvaluationFlags::EvaluationFlags evaluation_flag);
+
+ /**
+ * @deprecated Please use the evaluate() function with the EvaluationFlags argument.
+ */
+ DEAL_II_DEPRECATED
+ void
evaluate(const bool evaluate_values, const bool evaluate_gradients);
/**
* been set manually).
*/
void
+ evaluate(const VectorizedArrayType * values_array,
+ const EvaluationFlags::EvaluationFlags evaluation_flag);
+
+ /**
+ * @deprecated Please use the evaluate() function with the EvaluationFlags argument.
+ */
+ DEAL_II_DEPRECATED
+ void
evaluate(const VectorizedArrayType *values_array,
const bool evaluate_values,
const bool evaluate_gradients);
*/
template <typename VectorType>
void
+ gather_evaluate(const VectorType & input_vector,
+ const EvaluationFlags::EvaluationFlags evaluation_flag);
+
+ /**
+ * @deprecated Please use the gather_evaluate() function with the EvaluationFlags argument.
+ */
+ template <typename VectorType>
+ DEAL_II_DEPRECATED void
gather_evaluate(const VectorType &input_vector,
const bool evaluate_values,
const bool evaluate_gradients);
* distribute_local_to_global() or set_dof_values() methods).
*/
void
+ integrate(const EvaluationFlags::EvaluationFlags evaluation_flag);
+
+ /**
+ * @deprecated Please use the integrate() function with the EvaluationFlags argument.
+ */
+ DEAL_II_DEPRECATED
+ void
integrate(const bool integrate_values, const bool integrate_gradients);
/**
* call stores the result of the testing in the given array `values_array`.
*/
void
+ integrate(const EvaluationFlags::EvaluationFlags evaluation_flag,
+ VectorizedArrayType * values_array);
+
+ /**
+ * @deprecated Please use the integrate() function with the EvaluationFlags argument.
+ */
+ DEAL_II_DEPRECATED
+ void
integrate(const bool integrate_values,
const bool integrate_gradients,
VectorizedArrayType *values_array);
*/
template <typename VectorType>
void
+ integrate_scatter(const EvaluationFlags::EvaluationFlags evaluation_flag,
+ VectorType & output_vector);
+
+ /**
+ * @deprecated Please use the integrate_scatter() function with the EvaluationFlags argument.
+ */
+ template <typename VectorType>
+ DEAL_II_DEPRECATED void
integrate_scatter(const bool integrate_values,
const bool integrate_gradients,
VectorType &output_vector);
}
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components_,
+ typename Number,
+ typename VectorizedArrayType>
+inline void
+FEEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components_,
+ Number,
+ VectorizedArrayType>::
+ evaluate(const EvaluationFlags::EvaluationFlags evaluation_flags)
+{
+# ifdef DEBUG
+ Assert(this->dof_values_initialized == true,
+ internal::ExcAccessToUninitializedField());
+# endif
+ evaluate(this->values_dofs[0], evaluation_flags);
+}
+
+
template <int dim,
int fe_degree,
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components_,
+ typename Number,
+ typename VectorizedArrayType>
+inline void
+FEEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components_,
+ Number,
+ VectorizedArrayType>::
+ evaluate(const VectorizedArrayType * values_array,
+ const EvaluationFlags::EvaluationFlags evaluation_flags)
+{
+ SelectEvaluator<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components,
+ VectorizedArrayType>::
+ evaluate(*this->data,
+ const_cast<VectorizedArrayType *>(values_array),
+ this->values_quad[0],
+ this->gradients_quad[0][0],
+ this->hessians_quad[0][0],
+ this->scratch_data,
+ evaluation_flags & EvaluationFlags::values,
+ evaluation_flags & EvaluationFlags::gradients,
+ evaluation_flags & EvaluationFlags::hessians);
+
+# ifdef DEBUG
+ if (evaluation_flags & EvaluationFlags::values)
+ this->values_quad_initialized = true;
+ if (evaluation_flags & EvaluationFlags::gradients)
+ this->gradients_quad_initialized = true;
+ if (evaluation_flags & EvaluationFlags::hessians)
+ this->hessians_quad_initialized = true;
+# endif
+}
+
+
+
template <int dim,
int fe_degree,
int n_q_points_1d,
n_components_,
Number,
VectorizedArrayType>::gather_evaluate(const VectorType &input_vector,
- const bool evaluate_values,
- const bool evaluate_gradients,
- const bool evaluate_hessians)
+
+ const bool evaluate_values,
+ const bool evaluate_gradients,
+ const bool evaluate_hessians)
+{
+ const EvaluationFlags::EvaluationFlags flag =
+ ((evaluate_values) ? EvaluationFlags::values : EvaluationFlags::nothing) |
+ ((evaluate_gradients) ? EvaluationFlags::gradients :
+ EvaluationFlags::nothing) |
+ ((evaluate_hessians) ? EvaluationFlags::hessians :
+ EvaluationFlags::nothing);
+
+ gather_evaluate(input_vector, flag);
+}
+
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components_,
+ typename Number,
+ typename VectorizedArrayType>
+template <typename VectorType>
+inline void
+FEEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components_,
+ Number,
+ VectorizedArrayType>::
+ gather_evaluate(const VectorType & input_vector,
+ const EvaluationFlags::EvaluationFlags evaluation_flag)
{
// If the index storage is interleaved and contiguous and the vector storage
// has the correct alignment, we can directly pass the pointer into the
VectorizedArrayType::size());
evaluate(vec_values,
- evaluate_values,
- evaluate_gradients,
- evaluate_hessians);
+ evaluation_flag & EvaluationFlags::values,
+ evaluation_flag & EvaluationFlags::gradients,
+ evaluation_flag & EvaluationFlags::hessians);
}
else
{
this->read_dof_values(input_vector);
evaluate(this->begin_dof_values(),
- evaluate_values,
- evaluate_gradients,
- evaluate_hessians);
+ evaluation_flag & EvaluationFlags::values,
+ evaluation_flag & EvaluationFlags::gradients,
+ evaluation_flag & EvaluationFlags::hessians);
}
}
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components_,
+ typename Number,
+ typename VectorizedArrayType>
+inline void
+FEEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components_,
+ Number,
+ VectorizedArrayType>::
+ integrate(const EvaluationFlags::EvaluationFlags integration_flag)
+{
+ integrate(integration_flag, this->values_dofs[0]);
+
+# ifdef DEBUG
+ this->dof_values_initialized = true;
+# endif
+}
+
+
+
template <int dim,
int fe_degree,
int n_q_points_1d,
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components_,
+ typename Number,
+ typename VectorizedArrayType>
+inline void
+FEEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components_,
+ Number,
+ VectorizedArrayType>::
+ integrate(const EvaluationFlags::EvaluationFlags integration_flag,
+ VectorizedArrayType * values_array)
+{
+# ifdef DEBUG
+ if (integration_flag & EvaluationFlags::values)
+ Assert(this->values_quad_submitted == true,
+ internal::ExcAccessToUninitializedField());
+ if (integration_flag & EvaluationFlags::gradients)
+ Assert(this->gradients_quad_submitted == true,
+ internal::ExcAccessToUninitializedField());
+# endif
+ Assert(this->matrix_info != nullptr ||
+ this->mapped_geometry->is_initialized(),
+ ExcNotInitialized());
+
+ Assert(
+ (integration_flag &
+ ~(EvaluationFlags::values | EvaluationFlags::gradients)) == 0,
+ ExcMessage(
+ "Only EvaluationFlags::values and EvaluationFlags::gradients are supported."));
+
+ SelectEvaluator<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components,
+ VectorizedArrayType>::integrate(*this->data,
+ values_array,
+ this->values_quad[0],
+ this->gradients_quad[0][0],
+ this->scratch_data,
+ integration_flag &
+ EvaluationFlags::values,
+ integration_flag &
+ EvaluationFlags::gradients,
+ false);
+
+# ifdef DEBUG
+ this->dof_values_initialized = true;
+# endif
+}
+
+
+
template <int dim,
int fe_degree,
int n_q_points_1d,
VectorizedArrayType>::integrate_scatter(const bool integrate_values,
const bool integrate_gradients,
VectorType &destination)
+{
+ const EvaluationFlags::EvaluationFlags flag =
+ ((integrate_values) ? EvaluationFlags::values : EvaluationFlags::nothing) |
+ ((integrate_gradients) ? EvaluationFlags::gradients :
+ EvaluationFlags::nothing);
+
+ integrate_scatter(flag, destination);
+}
+
+
+
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components_,
+ typename Number,
+ typename VectorizedArrayType>
+template <typename VectorType>
+inline void
+FEEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components_,
+ Number,
+ VectorizedArrayType>::
+ integrate_scatter(const EvaluationFlags::EvaluationFlags evaluation_flag,
+ VectorType & destination)
{
// If the index storage is interleaved and contiguous and the vector storage
// has the correct alignment, we can directly pass the pointer into the
->component_dof_indices_offset[this->active_fe_index]
[this->first_selected_component] *
VectorizedArrayType::size());
- SelectEvaluator<dim,
- fe_degree,
- n_q_points_1d,
- n_components,
- VectorizedArrayType>::integrate(*this->data,
- vec_values,
- this->values_quad[0],
- this
- ->gradients_quad[0][0],
- this->scratch_data,
- integrate_values,
- integrate_gradients,
- true);
+ SelectEvaluator<
+ dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components,
+ VectorizedArrayType>::integrate(*this->data,
+ vec_values,
+ this->values_quad[0],
+ this->gradients_quad[0][0],
+ this->scratch_data,
+ evaluation_flag &
+ EvaluationFlags::values,
+ evaluation_flag &
+ EvaluationFlags::gradients,
+ true);
}
else
{
- integrate(integrate_values,
- integrate_gradients,
+ integrate(evaluation_flag & EvaluationFlags::values,
+ evaluation_flag & EvaluationFlags::gradients,
this->begin_dof_values());
this->distribute_local_to_global(destination);
}
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components,
+ typename Number,
+ typename VectorizedArrayType>
+inline void
+FEFaceEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components,
+ Number,
+ VectorizedArrayType>::
+ evaluate(const EvaluationFlags::EvaluationFlags evaluation_flag)
+{
+# ifdef DEBUG
+ Assert(this->dof_values_initialized, ExcNotInitialized());
+# endif
+
+ evaluate(this->values_dofs[0], evaluation_flag);
+}
+
+
+
template <int dim,
int fe_degree,
int n_q_points_1d,
const bool evaluate_values,
const bool evaluate_gradients)
{
- if (!(evaluate_values + evaluate_gradients))
+ const EvaluationFlags::EvaluationFlags flag =
+ ((evaluate_values) ? EvaluationFlags::values : EvaluationFlags::nothing) |
+ ((evaluate_gradients) ? EvaluationFlags::gradients :
+ EvaluationFlags::nothing);
+
+ evaluate(values_array, flag);
+}
+
+
+
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components,
+ typename Number,
+ typename VectorizedArrayType>
+inline void
+FEFaceEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components,
+ Number,
+ VectorizedArrayType>::
+ evaluate(const VectorizedArrayType * values_array,
+ const EvaluationFlags::EvaluationFlags evaluation_flag)
+{
+ Assert(
+ (evaluation_flag &
+ ~(EvaluationFlags::values | EvaluationFlags::gradients)) == 0,
+ ExcMessage(
+ "Only EvaluationFlags::values and EvaluationFlags::gradients are supported."));
+
+ if (!(evaluation_flag & EvaluationFlags::values) &&
+ !(evaluation_flag & EvaluationFlags::gradients))
return;
internal::FEFaceEvaluationSelector<
this->begin_values(),
this->begin_gradients(),
this->scratch_data,
- evaluate_values,
- evaluate_gradients,
+ evaluation_flag & EvaluationFlags::values,
+ evaluation_flag & EvaluationFlags::gradients,
this->face_no,
this->subface_index,
this->face_orientation,
.face_orientations);
# ifdef DEBUG
- if (evaluate_values == true)
+ if (evaluation_flag & EvaluationFlags::values)
this->values_quad_initialized = true;
- if (evaluate_gradients == true)
+ if (evaluation_flag & EvaluationFlags::gradients)
this->gradients_quad_initialized = true;
# endif
}
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components,
+ typename Number,
+ typename VectorizedArrayType>
+inline void
+FEFaceEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components,
+ Number,
+ VectorizedArrayType>::
+ integrate(const EvaluationFlags::EvaluationFlags evaluation_flag)
+{
+ integrate(evaluation_flag, this->values_dofs[0]);
+
+# ifdef DEBUG
+ this->dof_values_initialized = true;
+# endif
+}
+
+
+
template <int dim,
int fe_degree,
int n_q_points_1d,
VectorizedArrayType
*values_array)
{
- if (!(integrate_values + integrate_gradients))
+ const EvaluationFlags::EvaluationFlags flag =
+ ((integrate_values) ? EvaluationFlags::values : EvaluationFlags::nothing) |
+ ((integrate_gradients) ? EvaluationFlags::gradients :
+ EvaluationFlags::nothing);
+
+ integrate(flag, values_array);
+}
+
+
+
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components,
+ typename Number,
+ typename VectorizedArrayType>
+inline void
+FEFaceEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components,
+ Number,
+ VectorizedArrayType>::
+ integrate(const EvaluationFlags::EvaluationFlags evaluation_flag,
+ VectorizedArrayType * values_array)
+{
+ Assert(
+ (evaluation_flag &
+ ~(EvaluationFlags::values | EvaluationFlags::gradients)) == 0,
+ ExcMessage(
+ "Only EvaluationFlags::values and EvaluationFlags::gradients are supported."));
+
+ if (!(evaluation_flag & EvaluationFlags::values) &&
+ !(evaluation_flag & EvaluationFlags::gradients))
return;
- internal::FEFaceEvaluationSelector<
- dim,
- fe_degree,
- n_q_points_1d,
- n_components,
- Number,
- VectorizedArrayType>::integrate(*this->data,
- values_array,
- this->begin_values(),
- this->begin_gradients(),
- this->scratch_data,
- integrate_values,
- integrate_gradients,
- this->face_no,
- this->subface_index,
- this->face_orientation,
- this->mapping_data
- ->descriptor[this->active_fe_index]
- .face_orientations);
+ internal::FEFaceEvaluationSelector<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components,
+ Number,
+ VectorizedArrayType>::
+ integrate(
+ *this->data,
+ values_array,
+ this->begin_values(),
+ this->begin_gradients(),
+ this->scratch_data,
+ evaluation_flag & EvaluationFlags::values,
+ evaluation_flag & EvaluationFlags::gradients,
+ this->face_no,
+ this->subface_index,
+ this->face_orientation,
+ this->mapping_data->descriptor[this->active_fe_index].face_orientations);
}
VectorizedArrayType>::gather_evaluate(const VectorType &input_vector,
const bool evaluate_values,
const bool evaluate_gradients)
+{
+ const EvaluationFlags::EvaluationFlags flag =
+ ((evaluate_values) ? EvaluationFlags::values : EvaluationFlags::nothing) |
+ ((evaluate_gradients) ? EvaluationFlags::gradients :
+ EvaluationFlags::nothing);
+
+ gather_evaluate(input_vector, flag);
+}
+
+
+
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components_,
+ typename Number,
+ typename VectorizedArrayType>
+template <typename VectorType>
+inline void
+FEFaceEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components_,
+ Number,
+ VectorizedArrayType>::
+ gather_evaluate(const VectorType & input_vector,
+ const EvaluationFlags::EvaluationFlags evaluation_flag)
{
static_assert(internal::has_begin<VectorType>::value &&
(std::is_same<decltype(std::declval<VectorType>().begin()),
"evaluating to a pointer to basic number (float,double). "
"Use read_dof_values() followed by evaluate() instead.");
+ Assert(
+ (evaluation_flag &
+ ~(EvaluationFlags::values | EvaluationFlags::gradients)) == 0,
+ ExcMessage(
+ "Only EvaluationFlags::values and EvaluationFlags::gradients are supported."));
+
if (!internal::FEFaceEvaluationSelector<dim,
fe_degree,
n_q_points_1d,
this->begin_values(),
this->begin_gradients(),
this->scratch_data,
- evaluate_values,
- evaluate_gradients,
+ evaluation_flag & EvaluationFlags::values,
+ evaluation_flag & EvaluationFlags::gradients,
this->active_fe_index,
this->first_selected_component,
this->cell,
.face_orientations))
{
this->read_dof_values(input_vector);
- this->evaluate(evaluate_values, evaluate_gradients);
+ this->evaluate(evaluation_flag);
}
# ifdef DEBUG
- if (evaluate_values == true)
+ if (evaluation_flag & EvaluationFlags::values)
this->values_quad_initialized = true;
- if (evaluate_gradients == true)
+ if (evaluation_flag & EvaluationFlags::gradients)
this->gradients_quad_initialized = true;
# endif
}
VectorizedArrayType>::integrate_scatter(const bool integrate_values,
const bool integrate_gradients,
VectorType &destination)
+{
+ const EvaluationFlags::EvaluationFlags flag =
+ ((integrate_values) ? EvaluationFlags::values : EvaluationFlags::nothing) |
+ ((integrate_gradients) ? EvaluationFlags::gradients :
+ EvaluationFlags::nothing);
+
+ integrate_scatter(flag, destination);
+}
+
+
+
+template <int dim,
+ int fe_degree,
+ int n_q_points_1d,
+ int n_components_,
+ typename Number,
+ typename VectorizedArrayType>
+template <typename VectorType>
+inline void
+FEFaceEvaluation<dim,
+ fe_degree,
+ n_q_points_1d,
+ n_components_,
+ Number,
+ VectorizedArrayType>::
+ integrate_scatter(const EvaluationFlags::EvaluationFlags evaluation_flag,
+ VectorType & destination)
{
static_assert(internal::has_begin<VectorType>::value &&
(std::is_same<decltype(std::declval<VectorType>().begin()),
this->begin_values(),
this->begin_gradients(),
this->scratch_data,
- integrate_values,
- integrate_gradients,
+ evaluation_flag & EvaluationFlags::values,
+ evaluation_flag & EvaluationFlags::gradients,
this->active_fe_index,
this->first_selected_component,
this->cell,