41 typedef typename Base::VectorType VectorType;
43 typedef typename Base::scalar scalar;
44 typedef typename Base::vector vector;
45 typedef typename Base::tensor tensor;
47 typedef typename Base::Range Range;
49 typedef typename Base::FaceIntegratorU FaceIntegratorU;
50 typedef typename Base::FaceIntegratorP FaceIntegratorP;
57 std::shared_ptr<dealii::Mapping<dim>
const> mapping,
62 std::string
const & field,
63 MPI_Comm
const & mpi_comm);
76 apply_velocity_divergence_term(VectorType & dst, VectorType
const & src)
const;
79 rhs_velocity_divergence_term_dirichlet_bc_from_dof_vector(VectorType & dst,
80 VectorType
const & velocity)
const;
84 rhs_ppe_div_term_body_forces_add(VectorType & dst,
double const & time)
const;
88 rhs_ppe_div_term_convective_term_add(VectorType & dst, VectorType
const & src)
const;
92 rhs_ppe_nbc_body_force_term_add(VectorType & dst,
double const & time)
const;
96 rhs_ppe_nbc_numerical_time_derivative_add(VectorType & dst, VectorType
const & src)
const;
100 rhs_ppe_nbc_convective_add(VectorType & dst, VectorType
const & src)
const;
104 rhs_ppe_nbc_viscous_add(VectorType & dst, VectorType
const & src)
const;
107 rhs_ppe_laplace_add(VectorType & dst,
double const & time)
const;
110 solve_pressure(VectorType & dst, VectorType
const & src,
bool const update_preconditioner)
const;
117 apply_helmholtz_operator(VectorType & dst, VectorType
const & src)
const;
120 rhs_add_viscous_term(VectorType & dst,
double const time)
const;
123 solve_viscous(VectorType & dst,
124 VectorType
const & src,
125 bool const & update_preconditioner,
126 double const & scaling_factor_mass);
137 interpolate_velocity_dirichlet_bc(VectorType & dst,
double const & time)
const;
141 setup_preconditioners_and_solvers()
final;
147 setup_helmholtz_preconditioner();
150 setup_helmholtz_solver();
157 cell_loop_empty(dealii::MatrixFree<dim, Number>
const &,
165 face_loop_empty(dealii::MatrixFree<dim, Number>
const &,
176 local_rhs_ppe_div_term_convective_term_boundary_face(
177 dealii::MatrixFree<dim, Number>
const & matrix_free,
179 VectorType
const & src,
180 Range
const & face_range)
const;
184 local_rhs_ppe_div_term_body_forces_boundary_face(
185 dealii::MatrixFree<dim, Number>
const & matrix_free,
187 VectorType
const & src,
188 Range
const & face_range)
const;
194 local_rhs_ppe_nbc_numerical_time_derivative_add_boundary_face(
195 dealii::MatrixFree<dim, Number>
const & matrix_free,
197 VectorType
const & src,
198 Range
const & face_range)
const;
202 local_rhs_ppe_nbc_body_force_term_add_boundary_face(
203 dealii::MatrixFree<dim, Number>
const & matrix_free,
205 VectorType
const & src,
206 Range
const & face_range)
const;
210 local_rhs_ppe_nbc_convective_add_boundary_face(
211 dealii::MatrixFree<dim, Number>
const & matrix_free,
213 VectorType
const & src,
214 Range
const & face_range)
const;
218 local_rhs_ppe_nbc_viscous_add_boundary_face(dealii::MatrixFree<dim, Number>
const & matrix_free,
220 VectorType
const & src,
221 Range
const & face_range)
const;
224 local_interpolate_velocity_dirichlet_bc_boundary_face(
225 dealii::MatrixFree<dim, Number>
const & matrix_free,
227 VectorType
const & src,
228 Range
const & face_range)
const;
234 std::shared_ptr<PreconditionerBase<Number>> helmholtz_preconditioner;
236 std::shared_ptr<Krylov::SolverBase<VectorType>> helmholtz_solver;