77class ProjectionOperator :
public OperatorBase<dim, Number, dim>
80 typedef OperatorBase<dim, Number, dim> Base;
82 typedef dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> vector;
84 typedef typename Base::VectorType VectorType;
85 typedef typename Base::IntegratorCell IntegratorCell;
86 typedef typename Base::IntegratorFace IntegratorFace;
92 typedef Number value_type;
94 ProjectionOperator() : velocity(
nullptr), time_step_size(1.0)
99 initialize(dealii::MatrixFree<dim, Number>
const & matrix_free,
100 dealii::AffineConstraints<Number>
const & affine_constraints,
106 initialize(dealii::MatrixFree<dim, Number>
const & matrix_free,
107 dealii::AffineConstraints<Number>
const & affine_constraints,
109 std::shared_ptr<DivKernel> div_penalty_kernel,
110 std::shared_ptr<ContiKernel> conti_penalty_kernel);
116 get_divergence_kernel_data()
const;
119 get_continuity_kernel_data()
const;
122 get_time_step_size()
const;
124 dealii::LinearAlgebra::distributed::Vector<Number>
const &
125 get_velocity()
const;
128 update(VectorType
const & velocity,
double const & dt);
132 reinit_cell_derived(IntegratorCell & integrator,
unsigned int const cell)
const final;
135 reinit_face_derived(IntegratorFace & integrator_m,
136 IntegratorFace & integrator_p,
137 unsigned int const face)
const final;
140 reinit_boundary_face_derived(IntegratorFace & integrator_m,
unsigned int const face)
const final;
143 reinit_face_cell_based_derived(IntegratorFace & integrator_m,
144 IntegratorFace & integrator_p,
145 unsigned int const cell,
146 unsigned int const face,
147 dealii::types::boundary_id
const boundary_id)
const final;
150 do_cell_integral(IntegratorCell & integrator)
const final;
153 do_face_integral(IntegratorFace & integrator_m, IntegratorFace & integrator_p)
const final;
156 do_face_int_integral(IntegratorFace & integrator_m, IntegratorFace & integrator_p)
const final;
159 do_face_ext_integral(IntegratorFace & integrator_m, IntegratorFace & integrator_p)
const final;
162 do_boundary_integral(IntegratorFace & integrator_m,
163 OperatorType
const & operator_type,
164 dealii::types::boundary_id
const & boundary_id)
const final;
168 VectorType
const * velocity;
169 double time_step_size;
171 std::shared_ptr<Operators::DivergencePenaltyKernel<dim, Number>> div_kernel;
172 std::shared_ptr<Operators::ContinuityPenaltyKernel<dim, Number>> conti_kernel;