include/meltpooldg/flow/incompressible_flow_operation_base.hpp Source File

Developer Documentation: include/meltpooldg/flow/incompressible_flow_operation_base.hpp Source File
Developer Documentation
incompressible_flow_operation_base.hpp
Go to the documentation of this file.
1#pragma once
2#include <deal.II/lac/generic_linear_algebra.h>
3
5
6namespace MeltPoolDG::Flow
7{
14 template <int dim, typename number>
16 {
17 public:
22 virtual void
24
28 virtual void
29 solve() = 0;
30
34 virtual void
35 set_initial_condition(const dealii::Function<dim> &) = 0;
36
40 virtual const dealii::LinearAlgebra::distributed::Vector<number> &
41 get_velocity() const = 0;
42
46 virtual dealii::LinearAlgebra::distributed::Vector<number> &
48
52 virtual const dealii::LinearAlgebra::distributed::Vector<number> &
53 get_velocity_old() const = 0;
54
58 virtual const dealii::DoFHandler<dim> &
60
64 virtual const unsigned int &
66
70 virtual const unsigned int &
72
73
77 virtual const unsigned int &
79
83 virtual const unsigned int &
85
89 virtual const dealii::AffineConstraints<number> &
91
95 virtual dealii::AffineConstraints<number> &
97
101 virtual const dealii::AffineConstraints<number> &
103
107 virtual const dealii::LinearAlgebra::distributed::Vector<number> &
108 get_pressure() const = 0;
109
113 virtual dealii::LinearAlgebra::distributed::Vector<number> &
115
119 virtual const dealii::DoFHandler<dim> &
121
125 virtual const unsigned int &
127
131 virtual const dealii::AffineConstraints<number> &
133
137 virtual dealii::AffineConstraints<number> &
139
143 virtual const dealii::AffineConstraints<number> &
145
151 virtual void
152 set_force_rhs(const dealii::LinearAlgebra::distributed::Vector<number> &vec) = 0;
153
159 virtual void
160 set_mass_balance_rhs(const dealii::LinearAlgebra::distributed::Vector<number> &vec) = 0;
161
165 virtual void
166 set_user_defined_material(std::function<dealii::Tensor<2, dim, dealii::VectorizedArray<number>>(
167 const dealii::Tensor<2, dim, dealii::VectorizedArray<number>> &,
168 const unsigned int,
169 const unsigned int,
170 const bool)> my_user_defined_material) = 0;
171
175 virtual dealii::VectorizedArray<number> &
176 get_density(const unsigned int cell, const unsigned int q) = 0;
177
181 virtual const dealii::VectorizedArray<number> &
182 get_density(const unsigned int cell, const unsigned int q) const = 0;
183
187 virtual dealii::VectorizedArray<number> &
188 get_viscosity(const unsigned int cell, const unsigned int q) = 0;
189
193 virtual const dealii::VectorizedArray<number> &
194 get_viscosity(const unsigned int cell, const unsigned int q) const = 0;
195
199 virtual dealii::VectorizedArray<number> &
200 get_damping(const unsigned int cell, const unsigned int q) = 0;
201
205 virtual const dealii::VectorizedArray<number> &
206 get_damping(const unsigned int cell, const unsigned int q) const = 0;
207
211 virtual void
213 std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors) = 0;
214
218 virtual void
220 std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors) = 0;
221
225 virtual void
227
233 virtual void
235
241 virtual void
243 };
244} // namespace MeltPoolDG::Flow
Abstract base class for incompressible flow solvers.
Definition incompressible_flow_operation_base.hpp:16
virtual dealii::AffineConstraints< number > & get_constraints_pressure()=0
Get pressure constraints (non-const).
virtual const dealii::AffineConstraints< number > & get_hanging_node_constraints_velocity() const =0
Get hanging node constraints for velocity.
virtual dealii::VectorizedArray< number > & get_density(const unsigned int cell, const unsigned int q)=0
Get the density at a given cell and quadrature point (non-const).
virtual dealii::VectorizedArray< number > & get_damping(const unsigned int cell, const unsigned int q)=0
Get the damping at a given cell and quadrature point (non-const).
virtual const unsigned int & get_dof_handler_idx_hanging_nodes_velocity() const =0
Get the index of the hanging node constraints for the velocity field.
virtual void attach_output_vectors_failed_step(GenericDataOut< dim, number > &data_out) const =0
Attach velocity and pressure vectors to output when a time step fails.
virtual const unsigned int & get_quad_idx_velocity() const =0
Get the quadrature index used for velocity evaluation.
virtual const unsigned int & get_dof_handler_idx_velocity() const =0
Get the index for the velocity DoFHandler.
virtual void attach_vectors_p(std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors)=0
Attach the pressure vectors.
virtual const dealii::AffineConstraints< number > & get_constraints_pressure() const =0
Get pressure constraints (const).
virtual void attach_output_vectors(GenericDataOut< dim, number > &data_out) const =0
Attach velocity and pressure fields to a GenericDataOut object for visualization.
virtual void solve()=0
Perform a single time step.
virtual const dealii::VectorizedArray< number > & get_density(const unsigned int cell, const unsigned int q) const =0
Get the density at a given cell and quadrature point (const).
virtual const dealii::LinearAlgebra::distributed::Vector< number > & get_pressure() const =0
Get the pressure vector (const).
virtual const dealii::LinearAlgebra::distributed::Vector< number > & get_velocity_old() const =0
Get the velocity from the previous time step (const).
virtual const dealii::AffineConstraints< number > & get_hanging_node_constraints_pressure() const =0
Get hanging node constraints for pressure.
virtual const dealii::DoFHandler< dim > & get_dof_handler_velocity() const =0
Get the DoF handler for the velocity field.
virtual dealii::LinearAlgebra::distributed::Vector< number > & get_pressure()=0
Get the pressure vector (non-const).
virtual void set_force_rhs(const dealii::LinearAlgebra::distributed::Vector< number > &vec)=0
Set the external force right-hand side (e.g., gravity).
virtual const unsigned int & get_quad_idx_pressure() const =0
Get the quadrature index used for pressure evaluation.
virtual const dealii::DoFHandler< dim > & get_dof_handler_pressure() const =0
Get the DoF handler for the pressure field.
virtual const dealii::AffineConstraints< number > & get_constraints_velocity() const =0
Get velocity constraints (const).
virtual const dealii::VectorizedArray< number > & get_damping(const unsigned int cell, const unsigned int q) const =0
Get the damping at a given cell and quadrature point (const).
virtual void init_time_advance()=0
Initialize data structures required before time stepping begins.
virtual void attach_vectors_u(std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors)=0
Attach the velocity vectors.
virtual void set_mass_balance_rhs(const dealii::LinearAlgebra::distributed::Vector< number > &vec)=0
Set the right-hand side for the mass balance equation.
virtual const unsigned int & get_dof_handler_idx_pressure() const =0
Get the internal index for the pressure DoFHandler.
virtual const dealii::VectorizedArray< number > & get_viscosity(const unsigned int cell, const unsigned int q) const =0
Get the viscosity at a given cell and quadrature point (const).
virtual void set_user_defined_material(std::function< dealii::Tensor< 2, dim, dealii::VectorizedArray< number > >(const dealii::Tensor< 2, dim, dealii::VectorizedArray< number > > &, const unsigned int, const unsigned int, const bool)> my_user_defined_material)=0
Set a user-defined constitutive material law.
virtual dealii::AffineConstraints< number > & get_constraints_velocity()=0
Get reference to velocity constraints (non-const).
virtual dealii::VectorizedArray< number > & get_viscosity(const unsigned int cell, const unsigned int q)=0
Get the viscosity at a given cell and quadrature point (non-const).
virtual const dealii::LinearAlgebra::distributed::Vector< number > & get_velocity() const =0
Get the current velocity vector (const).
virtual dealii::LinearAlgebra::distributed::Vector< number > & get_velocity()=0
Get the current velocity vector (non-const).
virtual void set_initial_condition(const dealii::Function< dim > &)=0
Set the initial condition for the simulation using a given function.
virtual void distribute_constraints()=0
Distribute the constraints to velocity and pressure fields.
A generic utility for managing simulation output data in the MeltPoolDG context.
Definition generic_data_out.hpp:32
Definition equation_of_state.hpp:17