27 typedef CellIntegrator<dim, dim, Number> CellIntegratorU;
29 typedef dealii::VectorizedArray<Number> scalar;
30 typedef dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> vector;
38 flags.cells = dealii::update_JxW_values | dealii::update_gradients;
39 flags.inner_faces = dealii::update_JxW_values | dealii::update_normal_vectors;
40 flags.boundary_faces =
41 dealii::update_JxW_values | dealii::update_quadrature_points | dealii::update_normal_vectors;
49 inline DEAL_II_ALWAYS_INLINE
51 calculate_flux(vector
const & value_m, vector
const & value_p)
const
53 return 0.5 * (value_m + value_p);
60 inline DEAL_II_ALWAYS_INLINE
62 get_volume_flux_weak(CellIntegratorU & velocity,
unsigned int const q)
const
65 return -velocity.get_value(q);
72 inline DEAL_II_ALWAYS_INLINE
74 get_volume_flux_strong(CellIntegratorU & velocity,
unsigned int const q)
const
76 return velocity.get_divergence(q);
113 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
115 typedef dealii::VectorizedArray<Number> scalar;
116 typedef dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> vector;
118 typedef std::pair<unsigned int, unsigned int> Range;
120 typedef CellIntegrator<dim, dim, Number> CellIntegratorU;
121 typedef CellIntegrator<dim, 1, Number> CellIntegratorP;
123 typedef FaceIntegrator<dim, dim, Number> FaceIntegratorU;
124 typedef FaceIntegrator<dim, 1, Number> FaceIntegratorP;
129 initialize(dealii::MatrixFree<dim, Number>
const & matrix_free,
133 get_operator_data()
const;
137 apply(VectorType & dst, VectorType
const & src)
const;
140 apply_add(VectorType & dst, VectorType
const & src)
const;
144 rhs(VectorType & dst, Number
const evaluation_time)
const;
147 rhs_bc_from_dof_vector(VectorType & dst, VectorType
const & src)
const;
150 rhs_add(VectorType & dst, Number
const evaluation_time)
const;
154 evaluate(VectorType & dst, VectorType
const & src, Number
const evaluation_time)
const;
157 evaluate_add(VectorType & dst, VectorType
const & src, Number
const evaluation_time)
const;
161 do_cell_integral_weak(CellIntegratorP & pressure, CellIntegratorU & velocity)
const;
164 do_cell_integral_strong(CellIntegratorP & pressure, CellIntegratorU & velocity)
const;
167 do_face_integral(FaceIntegratorU & velocity_m,
168 FaceIntegratorU & velocity_p,
169 FaceIntegratorP & pressure_m,
170 FaceIntegratorP & pressure_p)
const;
173 do_boundary_integral(FaceIntegratorU & velocity,
174 FaceIntegratorP & pressure,
175 OperatorType
const & operator_type,
176 dealii::types::boundary_id
const & boundary_id)
const;
179 do_boundary_integral_from_dof_vector(FaceIntegratorU & velocity,
180 FaceIntegratorU & velocity_exterior,
181 FaceIntegratorP & pressure,
182 OperatorType
const & operator_type,
183 dealii::types::boundary_id
const & boundary_id)
const;
186 cell_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
188 VectorType
const & src,
189 Range
const & cell_range)
const;
192 face_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
194 VectorType
const & src,
195 Range
const & face_range)
const;
198 boundary_face_loop_hom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
200 VectorType
const & src,
201 Range
const & face_range)
const;
204 boundary_face_loop_full_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
206 VectorType
const & src,
207 Range
const & face_range)
const;
210 cell_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
212 VectorType
const & src,
213 Range
const & cell_range)
const;
216 face_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
218 VectorType
const & src,
219 Range
const & face_range)
const;
222 boundary_face_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
224 VectorType
const & src,
225 std::pair<unsigned int, unsigned int>
const & face_range)
const;
228 boundary_face_loop_inhom_operator_bc_from_dof_vector(
229 dealii::MatrixFree<dim, Number>
const & matrix_free,
231 VectorType
const & src,
232 Range
const & face_range)
const;
234 dealii::MatrixFree<dim, Number>
const * matrix_free;
243 mutable VectorType
const * velocity_bc;