78class ProjectionOperator :
public OperatorBase<dim, Number, dim>
81 typedef OperatorBase<dim, Number, dim> Base;
83 typedef dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> vector;
85 typedef typename Base::VectorType VectorType;
86 typedef typename Base::IntegratorCell IntegratorCell;
87 typedef typename Base::IntegratorFace IntegratorFace;
93 typedef Number value_type;
95 ProjectionOperator() : velocity(
nullptr), time_step_size(1.0)
100 initialize(dealii::MatrixFree<dim, Number>
const & matrix_free,
101 dealii::AffineConstraints<Number>
const & affine_constraints,
107 initialize(dealii::MatrixFree<dim, Number>
const & matrix_free,
108 dealii::AffineConstraints<Number>
const & affine_constraints,
110 std::shared_ptr<DivKernel> div_penalty_kernel,
111 std::shared_ptr<ContiKernel> conti_penalty_kernel);
117 get_divergence_kernel_data()
const;
120 get_continuity_kernel_data()
const;
123 get_time_step_size()
const;
125 dealii::LinearAlgebra::distributed::Vector<Number>
const &
126 get_velocity()
const;
129 update(VectorType
const & velocity,
double const & dt);
133 reinit_cell_derived(IntegratorCell & integrator,
unsigned int const cell)
const final;
136 reinit_face_derived(IntegratorFace & integrator_m,
137 IntegratorFace & integrator_p,
138 unsigned int const face)
const final;
141 reinit_boundary_face_derived(IntegratorFace & integrator_m,
unsigned int const face)
const final;
144 reinit_face_cell_based_derived(IntegratorFace & integrator_m,
145 IntegratorFace & integrator_p,
146 unsigned int const cell,
147 unsigned int const face,
148 dealii::types::boundary_id
const boundary_id)
const final;
151 do_cell_integral(IntegratorCell & integrator)
const final;
154 do_face_integral(IntegratorFace & integrator_m, IntegratorFace & integrator_p)
const final;
157 do_face_int_integral(IntegratorFace & integrator_m, IntegratorFace & integrator_p)
const final;
160 do_face_ext_integral(IntegratorFace & integrator_m, IntegratorFace & integrator_p)
const final;
163 do_boundary_integral(IntegratorFace & integrator_m,
164 OperatorType
const & operator_type,
165 dealii::types::boundary_id
const & boundary_id)
const final;
169 VectorType
const * velocity;
170 double time_step_size;
172 std::shared_ptr<Operators::DivergencePenaltyKernel<dim, Number>> div_kernel;
173 std::shared_ptr<Operators::ContinuityPenaltyKernel<dim, Number>> conti_kernel;