33 element.dofs_per_cell,
37 , quadrature(quadrature)
50 Assert(this->get_mapping().is_compatible_with(cell->reference_cell()),
52 "You are trying to call FEImmersedSurfaceValues::reinit() with "
54 cell->reference_cell().to_string() +
55 " with a Mapping that is not compatible with it."));
59 this->present_cell.is_initialized() ==
false,
61 "FEImmersedSurfaceValues::reinit() can only be used for one cell!"));
63 this->present_cell = {cell};
73 template <
bool level_dof_access>
79 Assert(this->get_mapping().is_compatible_with(cell->reference_cell()),
81 "You are trying to call FEImmersedSurfaceValues::reinit() with "
83 cell->reference_cell().to_string() +
84 " with a Mapping that is not compatible with it."));
93 this->present_cell.is_initialized() ==
false,
95 "FEImmersedSurfaceValues::reinit() can only be used for one cell!"));
97 this->present_cell = {cell};
114 this->get_mapping().fill_fe_immersed_surface_values(
118 this->mapping_output);
124 this->get_fe().fill_fe_values(this->present_cell,
129 this->mapping_output,
131 this->finite_element_output);
139 const unsigned int function_no,
140 const unsigned int quadrature_point)
const
142 const unsigned int component = 0;
143 return shape_surface_grad_component(function_no,
153 const unsigned int function_no,
154 const unsigned int quadrature_point,
155 const unsigned int component)
const
158 this->shape_grad_component(function_no, quadrature_point, component);
159 const Tensor<1, dim> &normal = this->normal_vector(quadrature_point);
161 return gradient - (normal * gradient) * normal;
179 UpdateFlags flags = this->compute_update_flags(update_flags);
186 this->mapping_output.initialize(this->n_quadrature_points, flags);
187 this->finite_element_output.initialize(this->n_quadrature_points,
195 std::unique_ptr<typename FiniteElement<dim, dim>::InternalDataBase>>
201 this->finite_element_output);
211 this->update_flags = flags;
214 this->fe_data = std::move(fe_get_data.return_value());
216 this->mapping_data = std::move(mapping_get_data.
return_value());
219 std::make_unique<typename Mapping<dim>::InternalDataBase>();
224# 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)