const unsigned int first_index,
const std::bitset<VectorizedArrayType::n_array_elements> &mask) const
{
+# ifdef DEBUG
Assert(dof_values_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
// select between block vectors and non-block vectors. Note that the number
// of components is checked in the internal data
const unsigned int first_index,
const std::bitset<VectorizedArrayType::n_array_elements> &mask) const
{
+# ifdef DEBUG
Assert(dof_values_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
// select between block vectors and non-block vectors. Note that the number
// of components is checked in the internal data
FEEvaluationBase<dim, n_components, Number, is_face, VectorizedArrayType>::
begin_values() const
{
+# ifdef DEBUG
Assert(values_quad_initialized || values_quad_submitted, ExcNotInitialized());
+# endif
return &values_quad[0][0];
}
FEEvaluationBase<dim, n_components, Number, is_face, VectorizedArrayType>::
begin_gradients() const
{
+# ifdef DEBUG
Assert(gradients_quad_initialized || gradients_quad_submitted,
ExcNotInitialized());
+# endif
return &gradients_quad[0][0][0];
}
FEEvaluationBase<dim, n_components, Number, is_face, VectorizedArrayType>::
begin_hessians() const
{
+# ifdef DEBUG
Assert(hessians_quad_initialized, ExcNotInitialized());
+# endif
return &hessians_quad[0][0][0];
}
FEEvaluationBase<dim, n_components_, Number, is_face, VectorizedArrayType>::
get_value(const unsigned int q_point) const
{
+# ifdef DEBUG
Assert(this->values_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
Tensor<1, n_components_, VectorizedArrayType> return_value;
for (unsigned int comp = 0; comp < n_components; comp++)
FEEvaluationBase<dim, n_components_, Number, is_face, VectorizedArrayType>::
get_gradient(const unsigned int q_point) const
{
+# ifdef DEBUG
Assert(this->gradients_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
Assert(jacobian != nullptr, ExcNotInitialized());
get_normal_derivative(const unsigned int q_point) const
{
AssertIndexRange(q_point, this->n_quadrature_points);
+# ifdef DEBUG
Assert(this->gradients_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
Assert(normal_x_jacobian != nullptr, ExcNotInitialized());
get_hessian(const unsigned int q_point) const
{
Assert(!is_face, ExcNotImplemented());
+# ifdef DEBUG
Assert(this->hessians_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
Assert(jacobian != nullptr, ExcNotImplemented());
get_hessian_diagonal(const unsigned int q_point) const
{
Assert(!is_face, ExcNotImplemented());
+# ifdef DEBUG
Assert(this->hessians_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
Assert(jacobian != nullptr, ExcNotImplemented());
get_laplacian(const unsigned int q_point) const
{
Assert(is_face == false, ExcNotImplemented());
+# ifdef DEBUG
Assert(this->hessians_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
Tensor<1, n_components_, VectorizedArrayType> laplacian_out;
submit_value(const Tensor<1, n_components_, VectorizedArrayType> val_in,
const unsigned int q_point)
{
-# ifdef DEBUG
Assert(this->cell != numbers::invalid_unsigned_int, ExcNotInitialized());
AssertIndexRange(q_point, this->n_quadrature_points);
Assert(this->J_value != nullptr, ExcNotInitialized());
+# ifdef DEBUG
this->values_quad_submitted = true;
# endif
const Tensor<1, n_components_, Tensor<1, dim, VectorizedArrayType>> grad_in,
const unsigned int q_point)
{
-# ifdef DEBUG
Assert(this->cell != numbers::invalid_unsigned_int, ExcNotInitialized());
AssertIndexRange(q_point, this->n_quadrature_points);
- this->gradients_quad_submitted = true;
Assert(this->J_value != nullptr, ExcNotInitialized());
Assert(this->jacobian != nullptr, ExcNotInitialized());
+# ifdef DEBUG
+ this->gradients_quad_submitted = true;
# endif
if (!is_face && this->cell_type == internal::MatrixFreeFunctions::cartesian)
const Tensor<1, n_components_, VectorizedArrayType> grad_in,
const unsigned int q_point)
{
-# ifdef DEBUG
AssertIndexRange(q_point, this->n_quadrature_points);
- this->gradients_quad_submitted = true;
Assert(this->normal_x_jacobian != nullptr, ExcNotInitialized());
+# ifdef DEBUG
+ this->gradients_quad_submitted = true;
# endif
if (this->cell_type == internal::MatrixFreeFunctions::cartesian)
FEEvaluationBase<dim, n_components_, Number, is_face, VectorizedArrayType>::
integrate_value() const
{
-# ifdef DEBUG
Assert(this->cell != numbers::invalid_unsigned_int, ExcNotInitialized());
+# ifdef DEBUG
Assert(this->values_quad_submitted == true,
internal::ExcAccessToUninitializedField());
# endif
FEEvaluationAccess<dim, 1, Number, is_face, VectorizedArrayType>::get_value(
const unsigned int q_point) const
{
+# ifdef DEBUG
Assert(this->values_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
return this->values_quad[0][q_point];
}
// could use the base class gradient, but that involves too many expensive
// initialization operations on tensors
+# ifdef DEBUG
Assert(this->gradients_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
Assert(this->jacobian != nullptr, ExcNotInitialized());
const VectorizedArrayType val_in,
const unsigned int q_index)
{
-# ifdef DEBUG
Assert(this->cell != numbers::invalid_unsigned_int, ExcNotInitialized());
AssertIndexRange(q_index, this->n_quadrature_points);
Assert(this->J_value != nullptr, ExcNotInitialized());
+# ifdef DEBUG
this->values_quad_submitted = true;
# endif
+
if (this->cell_type <= internal::MatrixFreeFunctions::affine)
{
const VectorizedArrayType JxW =
submit_gradient(const Tensor<1, dim, VectorizedArrayType> grad_in,
const unsigned int q_index)
{
-# ifdef DEBUG
Assert(this->cell != numbers::invalid_unsigned_int, ExcNotInitialized());
AssertIndexRange(q_index, this->n_quadrature_points);
- this->gradients_quad_submitted = true;
Assert(this->J_value != nullptr, ExcNotInitialized());
Assert(this->jacobian != nullptr, ExcNotInitialized());
+# ifdef DEBUG
+ this->gradients_quad_submitted = true;
# endif
if (!is_face && this->cell_type == internal::MatrixFreeFunctions::cartesian)
FEEvaluationAccess<dim, dim, Number, is_face, VectorizedArrayType>::
get_divergence(const unsigned int q_point) const
{
+# ifdef DEBUG
Assert(this->gradients_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
Assert(this->jacobian != nullptr, ExcNotInitialized());
FEEvaluationAccess<dim, dim, Number, is_face, VectorizedArrayType>::get_hessian(
const unsigned int q_point) const
{
+# ifdef DEBUG
Assert(this->hessians_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
return BaseClass::get_hessian(q_point);
}
submit_divergence(const VectorizedArrayType div_in,
const unsigned int q_point)
{
-# ifdef DEBUG
Assert(this->cell != numbers::invalid_unsigned_int, ExcNotInitialized());
AssertIndexRange(q_point, this->n_quadrature_points);
- this->gradients_quad_submitted = true;
Assert(this->J_value != nullptr, ExcNotInitialized());
Assert(this->jacobian != nullptr, ExcNotInitialized());
+# ifdef DEBUG
+ this->gradients_quad_submitted = true;
# endif
if (!is_face && this->cell_type == internal::MatrixFreeFunctions::cartesian)
// could have used base class operator, but that involves some overhead
// which is inefficient. it is nice to have the symmetric tensor because
// that saves some operations
-# ifdef DEBUG
Assert(this->cell != numbers::invalid_unsigned_int, ExcNotInitialized());
AssertIndexRange(q_point, this->n_quadrature_points);
- this->gradients_quad_submitted = true;
Assert(this->J_value != nullptr, ExcNotInitialized());
Assert(this->jacobian != nullptr, ExcNotInitialized());
+# ifdef DEBUG
+ this->gradients_quad_submitted = true;
# endif
if (!is_face && this->cell_type == internal::MatrixFreeFunctions::cartesian)
FEEvaluationAccess<1, 1, Number, is_face, VectorizedArrayType>::get_value(
const unsigned int q_point) const
{
+# ifdef DEBUG
Assert(this->values_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
return this->values_quad[0][q_point];
}
// could use the base class gradient, but that involves too many inefficient
// initialization operations on tensors
+# ifdef DEBUG
Assert(this->gradients_quad_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
AssertIndexRange(q_point, this->n_quadrature_points);
const Tensor<2, 1, VectorizedArrayType> &jac =
const VectorizedArrayType val_in,
const unsigned int q_point)
{
-# ifdef DEBUG
Assert(this->cell != numbers::invalid_unsigned_int, ExcNotInitialized());
AssertIndexRange(q_point, this->n_quadrature_points);
+# ifdef DEBUG
this->values_quad_submitted = true;
# endif
+
if (this->cell_type == internal::MatrixFreeFunctions::general)
{
const VectorizedArrayType JxW = this->J_value[q_point];
const VectorizedArrayType grad_in,
const unsigned int q_point)
{
-# ifdef DEBUG
Assert(this->cell != numbers::invalid_unsigned_int, ExcNotInitialized());
AssertIndexRange(q_point, this->n_quadrature_points);
+# ifdef DEBUG
this->gradients_quad_submitted = true;
# endif
const bool evaluate_gradients,
const bool evaluate_hessians)
{
+# ifdef DEBUG
Assert(this->dof_values_initialized == true,
internal::ExcAccessToUninitializedField());
+# endif
evaluate(this->values_dofs[0],
evaluate_values,
evaluate_gradients,
const bool integrate_gradients,
VectorizedArrayType *values_array)
{
+# ifdef DEBUG
if (integrate_values == true)
Assert(this->values_quad_submitted == true,
internal::ExcAccessToUninitializedField());
if (integrate_gradients == true)
Assert(this->gradients_quad_submitted == true,
internal::ExcAccessToUninitializedField());
+# endif
Assert(this->matrix_info != nullptr ||
this->mapped_geometry->is_initialized(),
ExcNotInitialized());
this->face_orientation = 0;
}
- this->values_quad_submitted = false;
-
this->cell_type = this->matrix_info->get_mapping_info().face_type[face_index];
const unsigned int offsets =
this->mapping_data->data_index_offsets[face_index];
VectorizedArrayType>::evaluate(const bool evaluate_values,
const bool evaluate_gradients)
{
+# ifdef DEBUG
Assert(this->dof_values_initialized, ExcNotInitialized());
+# endif
evaluate(this->values_dofs[0], evaluate_values, evaluate_gradients);
}