41 typedef CellIntegrator<dim, dim, Number> CellIntegratorU;
43 typedef dealii::VectorizedArray<Number> scalar;
44 typedef dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> vector;
52 flags.cells = dealii::update_JxW_values | dealii::update_gradients;
53 flags.inner_faces = dealii::update_JxW_values | dealii::update_normal_vectors;
54 flags.boundary_faces =
55 dealii::update_JxW_values | dealii::update_quadrature_points | dealii::update_normal_vectors;
63 inline DEAL_II_ALWAYS_INLINE
65 calculate_flux(vector
const & value_m, vector
const & value_p)
const
67 return 0.5 * (value_m + value_p);
74 inline DEAL_II_ALWAYS_INLINE
76 get_volume_flux_weak(CellIntegratorU & velocity,
unsigned int const q)
const
79 return -velocity.get_value(q);
86 inline DEAL_II_ALWAYS_INLINE
88 get_volume_flux_strong(CellIntegratorU & velocity,
unsigned int const q)
const
90 return velocity.get_divergence(q);
122class DivergenceOperator
125 typedef DivergenceOperator<dim, Number> This;
127 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
129 typedef dealii::VectorizedArray<Number> scalar;
130 typedef dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> vector;
132 typedef std::pair<unsigned int, unsigned int> Range;
134 typedef CellIntegrator<dim, dim, Number> CellIntegratorU;
135 typedef CellIntegrator<dim, 1, Number> CellIntegratorP;
137 typedef FaceIntegrator<dim, dim, Number> FaceIntegratorU;
138 typedef FaceIntegrator<dim, 1, Number> FaceIntegratorP;
140 DivergenceOperator();
143 initialize(dealii::MatrixFree<dim, Number>
const & matrix_free,
147 get_operator_data()
const;
151 apply(VectorType & dst, VectorType
const & src)
const;
154 apply_add(VectorType & dst, VectorType
const & src)
const;
158 rhs(VectorType & dst, Number
const evaluation_time)
const;
161 rhs_bc_from_dof_vector(VectorType & dst, VectorType
const & src)
const;
164 rhs_add(VectorType & dst, Number
const evaluation_time)
const;
168 evaluate(VectorType & dst, VectorType
const & src, Number
const evaluation_time)
const;
171 evaluate_add(VectorType & dst, VectorType
const & src, Number
const evaluation_time)
const;
175 do_cell_integral_weak(CellIntegratorP & pressure, CellIntegratorU & velocity)
const;
178 do_cell_integral_strong(CellIntegratorP & pressure, CellIntegratorU & velocity)
const;
181 do_face_integral(FaceIntegratorU & velocity_m,
182 FaceIntegratorU & velocity_p,
183 FaceIntegratorP & pressure_m,
184 FaceIntegratorP & pressure_p)
const;
187 do_boundary_integral(FaceIntegratorU & velocity,
188 FaceIntegratorP & pressure,
189 OperatorType
const & operator_type,
190 dealii::types::boundary_id
const & boundary_id)
const;
193 do_boundary_integral_from_dof_vector(FaceIntegratorU & velocity,
194 FaceIntegratorU & velocity_exterior,
195 FaceIntegratorP & pressure,
196 OperatorType
const & operator_type,
197 dealii::types::boundary_id
const & boundary_id)
const;
200 cell_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
202 VectorType
const & src,
203 Range
const & cell_range)
const;
206 face_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
208 VectorType
const & src,
209 Range
const & face_range)
const;
212 boundary_face_loop_hom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
214 VectorType
const & src,
215 Range
const & face_range)
const;
218 boundary_face_loop_full_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
220 VectorType
const & src,
221 Range
const & face_range)
const;
224 cell_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
226 VectorType
const & src,
227 Range
const & cell_range)
const;
230 face_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
232 VectorType
const & src,
233 Range
const & face_range)
const;
236 boundary_face_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
238 VectorType
const & src,
239 std::pair<unsigned int, unsigned int>
const & face_range)
const;
242 boundary_face_loop_inhom_operator_bc_from_dof_vector(
243 dealii::MatrixFree<dim, Number>
const & matrix_free,
245 VectorType
const & src,
246 Range
const & face_range)
const;
248 dealii::MatrixFree<dim, Number>
const * matrix_free;
257 mutable VectorType
const * velocity_bc;