31 element.dofs_per_cell,
35 , quadrature(quadrature)
48 Assert(this->get_mapping().is_compatible_with(cell->reference_cell()),
50 "You are trying to call FEImmersedSurfaceValues::reinit() with "
52 cell->reference_cell().to_string() +
53 " with a Mapping that is not compatible with it."));
57 this->present_cell.is_initialized() ==
false,
59 "FEImmersedSurfaceValues::reinit() can only be used for one cell!"));
61 this->present_cell = {cell};
71 template <
bool level_dof_access>
77 Assert(this->get_mapping().is_compatible_with(cell->reference_cell()),
79 "You are trying to call FEImmersedSurfaceValues::reinit() with "
81 cell->reference_cell().to_string() +
82 " with a Mapping that is not compatible with it."));
91 this->present_cell.is_initialized() ==
false,
93 "FEImmersedSurfaceValues::reinit() can only be used for one cell!"));
95 this->present_cell = {cell};
112 this->get_mapping().fill_fe_immersed_surface_values(
116 this->mapping_output);
122 this->get_fe().fill_fe_values(this->present_cell,
127 this->mapping_output,
129 this->finite_element_output);
137 const unsigned int function_no,
138 const unsigned int quadrature_point)
const
140 const unsigned int component = 0;
141 return shape_surface_grad_component(function_no,
151 const unsigned int function_no,
152 const unsigned int quadrature_point,
153 const unsigned int component)
const
156 this->shape_grad_component(function_no, quadrature_point, component);
157 const Tensor<1, dim> &normal = this->normal_vector(quadrature_point);
159 return gradient - (normal * gradient) * normal;
177 UpdateFlags flags = this->compute_update_flags(update_flags);
184 this->mapping_output.initialize(this->n_quadrature_points, flags);
185 this->finite_element_output.initialize(this->n_quadrature_points,
193 std::unique_ptr<typename FiniteElement<dim, dim>::InternalDataBase>>
199 this->finite_element_output);
209 this->update_flags = flags;
212 this->fe_data = std::move(fe_get_data.return_value());
214 this->mapping_data = std::move(mapping_get_data.
return_value());
217 std::make_unique<typename Mapping<dim>::InternalDataBase>();
222# 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
@ update_normal_vectors
Normal vectors.
@ update_JxW_values
Transformed quadrature weights.
@ update_covariant_transformation
Covariant transformation.
@ update_default
No update.
#define Assert(cond, exc)
static ::ExceptionBase & ExcMessage(std::string arg1)
Task< RT > new_task(const std::function< RT()> &function)