32 element.dofs_per_cell,
36 , quadrature(quadrature)
49 Assert(this->get_mapping().is_compatible_with(cell->reference_cell()),
51 "You are trying to call FEImmersedSurfaceValues::reinit() with "
53 cell->reference_cell().to_string() +
54 " with a Mapping that is not compatible with it."));
58 this->present_cell.is_initialized() ==
false,
60 "FEImmersedSurfaceValues::reinit() can only be used for one cell!"));
62 this->present_cell = {cell};
72 template <
bool level_dof_access>
78 Assert(this->get_mapping().is_compatible_with(cell->reference_cell()),
80 "You are trying to call FEImmersedSurfaceValues::reinit() with "
82 cell->reference_cell().to_string() +
83 " with a Mapping that is not compatible with it."));
92 this->present_cell.is_initialized() ==
false,
94 "FEImmersedSurfaceValues::reinit() can only be used for one cell!"));
96 this->present_cell = {cell};
113 this->get_mapping().fill_fe_immersed_surface_values(
117 this->mapping_output);
123 this->get_fe().fill_fe_values(this->present_cell,
128 this->mapping_output,
130 this->finite_element_output);
138 const unsigned int function_no,
139 const unsigned int quadrature_point)
const
141 const unsigned int component = 0;
142 return shape_surface_grad_component(function_no,
152 const unsigned int function_no,
153 const unsigned int quadrature_point,
154 const unsigned int component)
const
157 this->shape_grad_component(function_no, quadrature_point, component);
158 const Tensor<1, dim> &normal = this->normal_vector(quadrature_point);
160 return gradient - (normal * gradient) * normal;
178 UpdateFlags flags = this->compute_update_flags(update_flags);
185 this->mapping_output.initialize(this->n_quadrature_points, flags);
186 this->finite_element_output.initialize(this->n_quadrature_points,
194 std::unique_ptr<typename FiniteElement<dim, dim>::InternalDataBase>>
200 this->finite_element_output);
210 this->update_flags = flags;
213 this->fe_data = std::move(fe_get_data.return_value());
215 this->mapping_data = std::move(mapping_get_data.
return_value());
218 std::make_unique<typename Mapping<dim>::InternalDataBase>();
223# include "fe_immersed_values.inst"
Abstract base class for mapping classes.
void reinit(const typename Triangulation< dim >::cell_iterator &cell)
void initialize(const UpdateFlags update_flags)
Tensor< 1, dim > shape_surface_grad_component(const unsigned int function_no, const unsigned int quadrature_point, const unsigned int component) const
Tensor< 1, dim > shape_surface_grad(const unsigned int function_no, const unsigned int quadrature_point) const
const NonMatching::ImmersedSurfaceQuadrature< dim > & get_quadrature() const
FEImmersedSurfaceValues(const Mapping< dim > &mapping, const FiniteElement< dim > &element, const ImmersedSurfaceQuadrature< dim > &quadrature, const UpdateFlags update_flags)
internal::return_value< RT >::reference_type return_value()
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcMessage(std::string arg1)
@ update_normal_vectors
Normal vectors.
@ update_JxW_values
Transformed quadrature weights.
@ update_covariant_transformation
Covariant transformation.
@ update_default
No update.
Task< RT > new_task(const std::function< RT()> &function)