41 typedef CellIntegrator<dim, 1, Number> CellIntegratorP;
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(scalar
const & value_m, scalar
const & value_p)
const
67 return 0.5 * (value_m + value_p);
74 inline DEAL_II_ALWAYS_INLINE
76 get_volume_flux_weak(CellIntegratorP & pressure,
unsigned int const q)
const
79 return -pressure.get_value(q);
86 inline DEAL_II_ALWAYS_INLINE
88 get_volume_flux_strong(CellIntegratorP & pressure,
unsigned int const q)
const
90 return pressure.get_gradient(q);
122class GradientOperator
125 typedef GradientOperator<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;
143 initialize(dealii::MatrixFree<dim, Number>
const & matrix_free_in,
147 set_scaling_factor_pressure(
double const & scaling_factor);
150 get_operator_data()
const;
154 apply(VectorType & dst, VectorType
const & src)
const;
157 apply_add(VectorType & dst, VectorType
const & src)
const;
161 rhs(VectorType & dst, Number
const evaluation_time)
const;
164 rhs_bc_from_dof_vector(VectorType & dst, VectorType
const & pressure_bc)
const;
167 rhs_add(VectorType & dst, Number
const evaluation_time)
const;
171 evaluate(VectorType & dst, VectorType
const & src, Number
const evaluation_time)
const;
174 evaluate_add(VectorType & dst, VectorType
const & src, Number
const evaluation_time)
const;
177 evaluate_bc_from_dof_vector(VectorType & dst,
178 VectorType
const & src,
179 VectorType
const & pressure_bc)
const;
183 do_cell_integral_weak(CellIntegratorP & pressure, CellIntegratorU & velocity)
const;
186 do_cell_integral_strong(CellIntegratorP & pressure, CellIntegratorU & velocity)
const;
189 do_face_integral(FaceIntegratorP & pressure_m,
190 FaceIntegratorP & pressure_p,
191 FaceIntegratorU & velocity_m,
192 FaceIntegratorU & velocity_p)
const;
195 do_boundary_integral(FaceIntegratorP & pressure,
196 FaceIntegratorU & velocity,
197 OperatorType
const & operator_type,
198 dealii::types::boundary_id
const & boundary_id)
const;
201 do_boundary_integral_from_dof_vector(FaceIntegratorP & pressure,
202 FaceIntegratorP & pressure_exterior,
203 FaceIntegratorU & velocity,
204 OperatorType
const & operator_type,
205 dealii::types::boundary_id
const & boundary_id)
const;
208 cell_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
210 VectorType
const & src,
211 Range
const & cell_range)
const;
214 face_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
216 VectorType
const & src,
217 Range
const & face_range)
const;
220 boundary_face_loop_hom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
222 VectorType
const & src,
223 Range
const & face_range)
const;
226 boundary_face_loop_full_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
228 VectorType
const & src,
229 Range
const & face_range)
const;
232 cell_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
234 VectorType
const & src,
235 Range
const & cell_range)
const;
238 face_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
240 VectorType
const & src,
241 Range
const & face_range)
const;
244 boundary_face_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
246 VectorType
const & src,
247 Range
const & face_range)
const;
250 boundary_face_loop_inhom_operator_bc_from_dof_vector(
251 dealii::MatrixFree<dim, Number>
const & matrix_free,
253 VectorType
const & src,
254 Range
const & face_range)
const;
257 boundary_face_loop_full_operator_bc_from_dof_vector(
258 dealii::MatrixFree<dim, Number>
const & matrix_free,
260 VectorType
const & src,
261 Range
const & face_range)
const;
263 dealii::MatrixFree<dim, Number>
const * matrix_free;
275 double inverse_scaling_factor_pressure;
280 mutable VectorType
const * pressure_bc;