30 element.dofs_per_cell,
34 , quadrature(quadrature)
47 Assert(this->get_mapping().is_compatible_with(cell->reference_cell()),
49 "You are trying to call FEImmersedSurfaceValues::reinit() with "
51 cell->reference_cell().to_string() +
52 " with a Mapping that is not compatible with it."));
56 this->present_cell.is_initialized() ==
false,
58 "FEImmersedSurfaceValues::reinit() can only be used for one cell!"));
60 this->present_cell = {cell};
70 template <
bool level_dof_access>
76 Assert(this->get_mapping().is_compatible_with(cell->reference_cell()),
78 "You are trying to call FEImmersedSurfaceValues::reinit() with "
80 cell->reference_cell().to_string() +
81 " with a Mapping that is not compatible with it."));
90 this->present_cell.is_initialized() ==
false,
92 "FEImmersedSurfaceValues::reinit() can only be used for one cell!"));
94 this->present_cell = {cell};
111 this->get_mapping().fill_fe_immersed_surface_values(
115 this->mapping_output);
121 this->get_fe().fill_fe_values(this->present_cell,
126 this->mapping_output,
128 this->finite_element_output);
136 const unsigned int function_no,
137 const unsigned int quadrature_point)
const
139 const unsigned int component = 0;
140 return shape_surface_grad_component(function_no,
150 const unsigned int function_no,
151 const unsigned int quadrature_point,
152 const unsigned int component)
const
155 this->shape_grad_component(function_no, quadrature_point, component);
156 const Tensor<1, dim> &normal = this->normal_vector(quadrature_point);
158 return gradient - (normal * gradient) * normal;
176 UpdateFlags flags = this->compute_update_flags(update_flags);
183 this->mapping_output.initialize(this->n_quadrature_points, flags);
184 this->finite_element_output.initialize(this->n_quadrature_points,
192 std::unique_ptr<typename FiniteElement<dim, dim>::InternalDataBase>>
198 this->finite_element_output);
208 this->update_flags = flags;
211 this->fe_data = std::move(fe_get_data.return_value());
213 this->mapping_data = std::move(mapping_get_data.
return_value());
216 std::make_unique<typename Mapping<dim>::InternalDataBase>();
221# include "non_matching/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)