40 typedef CellIntegrator<dim, 1, Number> CellIntegratorP;
42 typedef dealii::VectorizedArray<Number> scalar;
43 typedef dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> vector;
51 flags.cells = dealii::update_JxW_values | dealii::update_gradients;
52 flags.inner_faces = dealii::update_JxW_values | dealii::update_normal_vectors;
53 flags.boundary_faces =
54 dealii::update_JxW_values | dealii::update_quadrature_points | dealii::update_normal_vectors;
62 inline DEAL_II_ALWAYS_INLINE
64 calculate_flux(scalar
const & value_m, scalar
const & value_p)
const
66 return 0.5 * (value_m + value_p);
73 inline DEAL_II_ALWAYS_INLINE
75 get_volume_flux_weak(CellIntegratorP & pressure,
unsigned int const q)
const
78 return -pressure.get_value(q);
85 inline DEAL_II_ALWAYS_INLINE
87 get_volume_flux_strong(CellIntegratorP & pressure,
unsigned int const q)
const
89 return pressure.get_gradient(q);
121class GradientOperator
124 typedef GradientOperator<dim, Number> This;
126 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
128 typedef dealii::VectorizedArray<Number> scalar;
129 typedef dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> vector;
131 typedef std::pair<unsigned int, unsigned int> Range;
133 typedef CellIntegrator<dim, dim, Number> CellIntegratorU;
134 typedef CellIntegrator<dim, 1, Number> CellIntegratorP;
136 typedef FaceIntegrator<dim, dim, Number> FaceIntegratorU;
137 typedef FaceIntegrator<dim, 1, Number> FaceIntegratorP;
142 initialize(dealii::MatrixFree<dim, Number>
const & matrix_free_in,
146 set_scaling_factor_pressure(
double const & scaling_factor);
149 get_operator_data()
const;
153 apply(VectorType & dst, VectorType
const & src)
const;
156 apply_add(VectorType & dst, VectorType
const & src)
const;
160 rhs(VectorType & dst, Number
const evaluation_time)
const;
163 rhs_bc_from_dof_vector(VectorType & dst, VectorType
const & pressure_bc)
const;
166 rhs_add(VectorType & dst, Number
const evaluation_time)
const;
170 evaluate(VectorType & dst, VectorType
const & src, Number
const evaluation_time)
const;
173 evaluate_add(VectorType & dst, VectorType
const & src, Number
const evaluation_time)
const;
176 evaluate_bc_from_dof_vector(VectorType & dst,
177 VectorType
const & src,
178 VectorType
const & pressure_bc)
const;
182 do_cell_integral_weak(CellIntegratorP & pressure, CellIntegratorU & velocity)
const;
185 do_cell_integral_strong(CellIntegratorP & pressure, CellIntegratorU & velocity)
const;
188 do_face_integral(FaceIntegratorP & pressure_m,
189 FaceIntegratorP & pressure_p,
190 FaceIntegratorU & velocity_m,
191 FaceIntegratorU & velocity_p)
const;
194 do_boundary_integral(FaceIntegratorP & pressure,
195 FaceIntegratorU & velocity,
196 OperatorType
const & operator_type,
197 dealii::types::boundary_id
const & boundary_id)
const;
200 do_boundary_integral_from_dof_vector(FaceIntegratorP & pressure,
201 FaceIntegratorP & pressure_exterior,
202 FaceIntegratorU & velocity,
203 OperatorType
const & operator_type,
204 dealii::types::boundary_id
const & boundary_id)
const;
207 cell_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
209 VectorType
const & src,
210 Range
const & cell_range)
const;
213 face_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
215 VectorType
const & src,
216 Range
const & face_range)
const;
219 boundary_face_loop_hom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
221 VectorType
const & src,
222 Range
const & face_range)
const;
225 boundary_face_loop_full_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
227 VectorType
const & src,
228 Range
const & face_range)
const;
231 cell_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
233 VectorType
const & src,
234 Range
const & cell_range)
const;
237 face_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
239 VectorType
const & src,
240 Range
const & face_range)
const;
243 boundary_face_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
245 VectorType
const & src,
246 Range
const & face_range)
const;
249 boundary_face_loop_inhom_operator_bc_from_dof_vector(
250 dealii::MatrixFree<dim, Number>
const & matrix_free,
252 VectorType
const & src,
253 Range
const & face_range)
const;
256 boundary_face_loop_full_operator_bc_from_dof_vector(
257 dealii::MatrixFree<dim, Number>
const & matrix_free,
259 VectorType
const & src,
260 Range
const & face_range)
const;
262 dealii::MatrixFree<dim, Number>
const * matrix_free;
274 double inverse_scaling_factor_pressure;
279 mutable VectorType
const * pressure_bc;