IncompressibleFlowOperationBase< dim, number > Class Template Reference

Developer Documentation: MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number > Class Template Reference
Developer Documentation
MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number > Class Template Referenceabstract

Abstract base class for incompressible flow solvers. More...

#include <incompressible_flow_operation_base.hpp>

Public Member Functions

virtual ~IncompressibleFlowOperationBase ()=default
 
virtual void init_time_advance ()=0
 Initialize data structures required before time stepping begins.
 
virtual void solve ()=0
 Perform a single time step.
 
virtual void set_initial_condition (const dealii::Function< dim > &)=0
 Set the initial condition for the simulation using a given function.
 
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 const dealii::LinearAlgebra::distributed::Vector< number > & get_velocity_old () const =0
 Get the velocity from the previous time step (const).
 
virtual const dealii::DoFHandler< dim > & get_dof_handler_velocity () const =0
 Get the DoF handler for the velocity field.
 
virtual const unsigned int & get_dof_handler_idx_velocity () const =0
 Get the index for the velocity DoFHandler.
 
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 const unsigned int & get_quad_idx_velocity () const =0
 Get the quadrature index used for velocity evaluation.
 
virtual const unsigned int & get_quad_idx_pressure () const =0
 Get the quadrature index used for pressure evaluation.
 
virtual const dealii::AffineConstraints< number > & get_constraints_velocity () const =0
 Get velocity constraints (const).
 
virtual dealii::AffineConstraints< number > & get_constraints_velocity ()=0
 Get reference to velocity constraints (non-const).
 
virtual const dealii::AffineConstraints< number > & get_hanging_node_constraints_velocity () const =0
 Get hanging node constraints for velocity.
 
virtual const dealii::LinearAlgebra::distributed::Vector< number > & get_pressure () const =0
 Get the pressure vector (const).
 
virtual dealii::LinearAlgebra::distributed::Vector< number > & get_pressure ()=0
 Get the pressure vector (non-const).
 
virtual const dealii::DoFHandler< dim > & get_dof_handler_pressure () const =0
 Get the DoF handler for the pressure field.
 
virtual const unsigned int & get_dof_handler_idx_pressure () const =0
 Get the internal index for the pressure DoFHandler.
 
virtual const dealii::AffineConstraints< number > & get_constraints_pressure () const =0
 Get pressure constraints (const).
 
virtual dealii::AffineConstraints< number > & get_constraints_pressure ()=0
 Get pressure constraints (non-const).
 
virtual const dealii::AffineConstraints< number > & get_hanging_node_constraints_pressure () const =0
 Get hanging node constraints for pressure.
 
virtual void set_force_rhs (const dealii::LinearAlgebra::distributed::Vector< number > &vec)=0
 Set the external force right-hand side (e.g., gravity).
 
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 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::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 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 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::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 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 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 attach_vectors_u (std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors)=0
 Attach the velocity vectors.
 
virtual void attach_vectors_p (std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors)=0
 Attach the pressure vectors.
 
virtual void distribute_constraints ()=0
 Distribute the constraints to velocity and pressure fields.
 
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 attach_output_vectors_failed_step (GenericDataOut< dim, number > &data_out) const =0
 Attach velocity and pressure vectors to output when a time step fails.
 

Detailed Description

template<int dim, typename number>
class MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >

Abstract base class for incompressible flow solvers.

This interface defines the common operations and data access patterns required by incompressible flow solvers in MeltPoolDG.

Constructor & Destructor Documentation

◆ ~IncompressibleFlowOperationBase()

template<int dim, typename number >
virtual MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::~IncompressibleFlowOperationBase ( )
virtualdefault

Member Function Documentation

◆ attach_output_vectors()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::attach_output_vectors ( GenericDataOut< dim, number > &  data_out) const
pure virtual

Attach velocity and pressure fields to a GenericDataOut object for visualization.

Parameters
data_outOutput interface object.

◆ attach_output_vectors_failed_step()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::attach_output_vectors_failed_step ( GenericDataOut< dim, number > &  data_out) const
pure virtual

Attach velocity and pressure vectors to output when a time step fails.

Parameters
data_outOutput interface object.

◆ attach_vectors_p()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::attach_vectors_p ( std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &  vectors)
pure virtual

Attach the pressure vectors.

◆ attach_vectors_u()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::attach_vectors_u ( std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &  vectors)
pure virtual

Attach the velocity vectors.

◆ distribute_constraints()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::distribute_constraints ( )
pure virtual

Distribute the constraints to velocity and pressure fields.

◆ get_constraints_pressure() [1/2]

template<int dim, typename number >
virtual const dealii::AffineConstraints< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_constraints_pressure ( ) const
pure virtual

Get pressure constraints (const).

◆ get_constraints_pressure() [2/2]

template<int dim, typename number >
virtual dealii::AffineConstraints< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_constraints_pressure ( )
pure virtual

Get pressure constraints (non-const).

◆ get_constraints_velocity() [1/2]

template<int dim, typename number >
virtual const dealii::AffineConstraints< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_constraints_velocity ( ) const
pure virtual

Get velocity constraints (const).

◆ get_constraints_velocity() [2/2]

template<int dim, typename number >
virtual dealii::AffineConstraints< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_constraints_velocity ( )
pure virtual

Get reference to velocity constraints (non-const).

◆ get_damping() [1/2]

template<int dim, typename number >
virtual const dealii::VectorizedArray< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_damping ( const unsigned int  cell,
const unsigned int  q 
) const
pure virtual

Get the damping at a given cell and quadrature point (const).

◆ get_damping() [2/2]

template<int dim, typename number >
virtual dealii::VectorizedArray< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_damping ( const unsigned int  cell,
const unsigned int  q 
)
pure virtual

Get the damping at a given cell and quadrature point (non-const).

◆ get_density() [1/2]

template<int dim, typename number >
virtual const dealii::VectorizedArray< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_density ( const unsigned int  cell,
const unsigned int  q 
) const
pure virtual

Get the density at a given cell and quadrature point (const).

◆ get_density() [2/2]

template<int dim, typename number >
virtual dealii::VectorizedArray< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_density ( const unsigned int  cell,
const unsigned int  q 
)
pure virtual

Get the density at a given cell and quadrature point (non-const).

◆ get_dof_handler_idx_hanging_nodes_velocity()

template<int dim, typename number >
virtual const unsigned int & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_dof_handler_idx_hanging_nodes_velocity ( ) const
pure virtual

Get the index of the hanging node constraints for the velocity field.

◆ get_dof_handler_idx_pressure()

template<int dim, typename number >
virtual const unsigned int & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_dof_handler_idx_pressure ( ) const
pure virtual

Get the internal index for the pressure DoFHandler.

◆ get_dof_handler_idx_velocity()

template<int dim, typename number >
virtual const unsigned int & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_dof_handler_idx_velocity ( ) const
pure virtual

Get the index for the velocity DoFHandler.

◆ get_dof_handler_pressure()

template<int dim, typename number >
virtual const dealii::DoFHandler< dim > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_dof_handler_pressure ( ) const
pure virtual

Get the DoF handler for the pressure field.

◆ get_dof_handler_velocity()

template<int dim, typename number >
virtual const dealii::DoFHandler< dim > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_dof_handler_velocity ( ) const
pure virtual

Get the DoF handler for the velocity field.

◆ get_hanging_node_constraints_pressure()

template<int dim, typename number >
virtual const dealii::AffineConstraints< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_hanging_node_constraints_pressure ( ) const
pure virtual

Get hanging node constraints for pressure.

◆ get_hanging_node_constraints_velocity()

template<int dim, typename number >
virtual const dealii::AffineConstraints< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_hanging_node_constraints_velocity ( ) const
pure virtual

Get hanging node constraints for velocity.

◆ get_pressure() [1/2]

template<int dim, typename number >
virtual const dealii::LinearAlgebra::distributed::Vector< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_pressure ( ) const
pure virtual

Get the pressure vector (const).

◆ get_pressure() [2/2]

template<int dim, typename number >
virtual dealii::LinearAlgebra::distributed::Vector< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_pressure ( )
pure virtual

Get the pressure vector (non-const).

◆ get_quad_idx_pressure()

template<int dim, typename number >
virtual const unsigned int & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_quad_idx_pressure ( ) const
pure virtual

Get the quadrature index used for pressure evaluation.

◆ get_quad_idx_velocity()

template<int dim, typename number >
virtual const unsigned int & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_quad_idx_velocity ( ) const
pure virtual

Get the quadrature index used for velocity evaluation.

◆ get_velocity() [1/2]

template<int dim, typename number >
virtual const dealii::LinearAlgebra::distributed::Vector< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_velocity ( ) const
pure virtual

Get the current velocity vector (const).

◆ get_velocity() [2/2]

template<int dim, typename number >
virtual dealii::LinearAlgebra::distributed::Vector< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_velocity ( )
pure virtual

Get the current velocity vector (non-const).

◆ get_velocity_old()

template<int dim, typename number >
virtual const dealii::LinearAlgebra::distributed::Vector< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_velocity_old ( ) const
pure virtual

Get the velocity from the previous time step (const).

◆ get_viscosity() [1/2]

template<int dim, typename number >
virtual const dealii::VectorizedArray< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_viscosity ( const unsigned int  cell,
const unsigned int  q 
) const
pure virtual

Get the viscosity at a given cell and quadrature point (const).

◆ get_viscosity() [2/2]

template<int dim, typename number >
virtual dealii::VectorizedArray< number > & MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::get_viscosity ( const unsigned int  cell,
const unsigned int  q 
)
pure virtual

Get the viscosity at a given cell and quadrature point (non-const).

◆ init_time_advance()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::init_time_advance ( )
pure virtual

Initialize data structures required before time stepping begins.

◆ set_force_rhs()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::set_force_rhs ( const dealii::LinearAlgebra::distributed::Vector< number > &  vec)
pure virtual

Set the external force right-hand side (e.g., gravity).

Parameters
vecRight-hand side vector for force contribution.

◆ set_initial_condition()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::set_initial_condition ( const dealii::Function< dim > &  )
pure virtual

Set the initial condition for the simulation using a given function.

◆ set_mass_balance_rhs()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::set_mass_balance_rhs ( const dealii::LinearAlgebra::distributed::Vector< number > &  vec)
pure virtual

Set the right-hand side for the mass balance equation.

Parameters
vecMass conservation right-hand side.

◆ set_user_defined_material()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::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)
pure virtual

Set a user-defined constitutive material law.

◆ solve()

template<int dim, typename number >
virtual void MeltPoolDG::Flow::IncompressibleFlowOperationBase< dim, number >::solve ( )
pure virtual

Perform a single time step.


The documentation for this class was generated from the following file: