ViscousKernels< dim, number > Struct Template Reference

Developer Documentation: MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number > Struct Template Reference
Developer Documentation
MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number > Struct Template Reference

Viscous kernel operations for compressible flow solvers. More...

#include <viscous_kernels.hpp>

Public Types

using ConservedVariables = ConservedVariablesType< dim, number >
 
using ConservedVariablesGradient = ConservedVariablesGradientType< dim, number >
 

Public Member Functions

 ViscousKernels (const Material< dim, number > &material_in)
 
DEAL_II_ALWAYS_INLINE dealii::Tensor< 2, dim, dealii::VectorizedArray< number > > calculate_viscous_stress_tensor (const dealii::Tensor< 2, dim, dealii::VectorizedArray< number > > &grad_u) const
 Calculate the viscous stress tensor.
 
DEAL_II_ALWAYS_INLINE ConservedVariablesGradient calculate_viscous_flux (const ConservedVariables &conserved_variables, const ConservedVariablesGradient &grad_conserved_variables) const
 Calculate the viscous flux F_v, i.e. F_v(u, grad(u)).
 
DEAL_II_ALWAYS_INLINE ConservedVariables calculate_viscous_numerical_flux (const ConservedVariables &u_m, const ConservedVariables &u_p, const ConservedVariablesGradient &grad_u_m, const ConservedVariablesGradient &grad_u_p, const dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > &normal, dealii::VectorizedArray< number > penalty_parameter) const
 Calculate the viscous numerical flux F_v^* using the symmetric interior penalty method.
 
DEAL_II_ALWAYS_INLINE std::pair< ConservedVariablesGradient, ConservedVariablesGradientcalculate_viscous_numerical_flux_gradient (const ConservedVariables &u_m, const ConservedVariables &u_p, const dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > &normal) const
 Calculate the visocus flux, where jump(u) instead of grad(u) is used resulting in the F_v(u, jump(u)).
 
ConservedVariablesGradient calculate_jacobian_viscous_numerical_flux (const std::pair< ConservedVariables, ConservedVariables > &w_q, const std::pair< ConservedVariablesGradient, ConservedVariablesGradient > &grad_w_q, const std::pair< ConservedVariables, ConservedVariables > &delta_w_q, const std::pair< ConservedVariablesGradient, ConservedVariablesGradient > &grad_delta_w_q, const dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > &normal, dealii::VectorizedArray< number > penalty_parameter) const
 Compute the linearization of the viscous numerical flux with respect to the primary variables.
 
ConservedVariablesGradient calculate_jacobian_viscous_flux (const ConservedVariables &w_q, const ConservedVariablesGradient &grad_w_q, const ConservedVariables &delta_w_q, const ConservedVariablesGradient &grad_delta_w_q) const
 Compute the linearization of the viscous flux with respect to the primary variables.
 
ConservedVariablesGradient calculate_jacobian_viscous_numerical_flux_jump_term (const std::pair< ConservedVariables, ConservedVariables > &delta_w_q, const dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > &normal, dealii::VectorizedArray< number > penalty_parameter) const
 Compute the linearization of the viscous numerical flux jump term.
 

Private Attributes

const Material< dim, number > & material
 Object which provides all relevant material properties for a specific phase.
 
number lambda_div_c
 precomputed constant
 

Detailed Description

template<int dim, typename number>
struct MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >

Viscous kernel operations for compressible flow solvers.

This struct implements the evaluation of viscous fluxes and their linearizations for compressible flow governed by the Euler or Navier–Stokes equations. It supports flux evaluation on both volume cells and faces.

It also provides functionality to compute the Jacobian (linearized form) of these fluxes, which is required for implicit schemes.

Member Typedef Documentation

◆ ConservedVariables

template<int dim, typename number >
using MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::ConservedVariables = ConservedVariablesType<dim, number>

◆ ConservedVariablesGradient

template<int dim, typename number >
using MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::ConservedVariablesGradient = ConservedVariablesGradientType<dim, number>

Constructor & Destructor Documentation

◆ ViscousKernels()

template<int dim, typename number >
MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::ViscousKernels ( const Material< dim, number > &  material_in)
explicit

Member Function Documentation

◆ calculate_jacobian_viscous_flux()

template<int dim, typename number >
DEAL_II_ALWAYS_INLINE auto MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::calculate_jacobian_viscous_flux ( const ConservedVariables w_q,
const ConservedVariablesGradient grad_w_q,
const ConservedVariables delta_w_q,
const ConservedVariablesGradient grad_delta_w_q 
) const
inline

Compute the linearization of the viscous flux with respect to the primary variables.

Parameters
w_qPrimary variables.
grad_w_qGradient of the primary variables.
delta_w_qChange in the primary variables.
grad_delta_w_qGradient of the change in the primary variables.
Returns
Linearized viscous flux.

◆ calculate_jacobian_viscous_numerical_flux()

template<int dim, typename number >
DEAL_II_ALWAYS_INLINE auto MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::calculate_jacobian_viscous_numerical_flux ( const std::pair< ConservedVariables, ConservedVariables > &  w_q,
const std::pair< ConservedVariablesGradient, ConservedVariablesGradient > &  grad_w_q,
const std::pair< ConservedVariables, ConservedVariables > &  delta_w_q,
const std::pair< ConservedVariablesGradient, ConservedVariablesGradient > &  grad_delta_w_q,
const dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > &  normal,
dealii::VectorizedArray< number >  penalty_parameter 
) const
inline

Compute the linearization of the viscous numerical flux with respect to the primary variables.

Parameters
w_qPrimary variables on the inner (first) and outer (second) face.
grad_w_qGradient of the primary variables on the inner (first) and outer (second) face.
delta_w_qChange in the primary variables n the inner (first) and outer (second) face.
grad_delta_w_qGradient of the change in the primary variables on inner (first) and outer (second) face.
normalOuter facing normal vector.
penalty_parameterValue of the symmetric interior penalty parameter.
Returns
Linearized viscous numerical flux.

◆ calculate_jacobian_viscous_numerical_flux_jump_term()

template<int dim, typename number >
DEAL_II_ALWAYS_INLINE auto MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::calculate_jacobian_viscous_numerical_flux_jump_term ( const std::pair< ConservedVariables, ConservedVariables > &  delta_w_q,
const dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > &  normal,
dealii::VectorizedArray< number >  penalty_parameter 
) const
inline

Compute the linearization of the viscous numerical flux jump term.

Compute the Jacobian of the jump term in the viscous numerical flux. For the used symmetric interior penalty approach the jump therm is given by the penalty parameter multiplied with the jump in the primary variables.

Parameters
delta_w_qChange in the primary variables n the inner (first) and outer (second) face.
normalOuter facing normal vector.
penalty_parameterValue of the symmetric interior penalty parameter.
Returns
Linearized jump term of the viscous numerical flux jump term.

◆ calculate_viscous_flux()

template<int dim, typename number >
DEAL_II_ALWAYS_INLINE auto MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::calculate_viscous_flux ( const ConservedVariables conserved_variables,
const ConservedVariablesGradient grad_conserved_variables 
) const
inline

Calculate the viscous flux F_v, i.e. F_v(u, grad(u)).

Parameters
conserved_variablesCurrent values of the conserved variables.
grad_conserved_variablesCurrent gradient of the conserved variables.
Returns
Viscous flux F_v(u, grad(u)).

◆ calculate_viscous_numerical_flux()

template<int dim, typename number >
DEAL_II_ALWAYS_INLINE auto MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::calculate_viscous_numerical_flux ( const ConservedVariables u_m,
const ConservedVariables u_p,
const ConservedVariablesGradient grad_u_m,
const ConservedVariablesGradient grad_u_p,
const dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > &  normal,
dealii::VectorizedArray< number >  penalty_parameter 
) const
inline

Calculate the viscous numerical flux F_v^* using the symmetric interior penalty method.

Parameters
u_mCurrent values of the conserved variables on the inner face.
u_pCurrent values of the conserved variables on the outer type.
grad_u_mCurrent values of the gradient of the conserved variables on the inner face.
grad_u_pCurrent values of the gradient of the conserved variables on the outer face.
normalOuter facing normal vector.
penalty_parameterSymmetric interior penalty parameter.
Returns
Visocus numerical flux.

◆ calculate_viscous_numerical_flux_gradient()

template<int dim, typename number >
DEAL_II_ALWAYS_INLINE auto MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::calculate_viscous_numerical_flux_gradient ( const ConservedVariables u_m,
const ConservedVariables u_p,
const dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > &  normal 
) const
inline

Calculate the visocus flux, where jump(u) instead of grad(u) is used resulting in the F_v(u, jump(u)).

Parameters
u_mCurrent values of the conserved variables on the inner face.
u_pCurrent values of the conserved variables on the outer type.
normalOuter facing normal vector.
Returns
Viscous flux F_v(u, jump(u)).

◆ calculate_viscous_stress_tensor()

template<int dim, typename number >
DEAL_II_ALWAYS_INLINE dealii::Tensor< 2, dim, dealii::VectorizedArray< number > > MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::calculate_viscous_stress_tensor ( const dealii::Tensor< 2, dim, dealii::VectorizedArray< number > > &  grad_u) const
inline

Calculate the viscous stress tensor.

Calculate the viscous stress tensor τ given by τ = μ*(grad(u)+grad(u)^T-2/3*(grad*u)*I), where μ is the dynamic viscosity and I representing the identity matrix.

Parameters
grad_uCurrent gradient of the velocity field.
Returns
Viscous stress tensor τ.

Member Data Documentation

◆ lambda_div_c

template<int dim, typename number >
number MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::lambda_div_c
private

precomputed constant

◆ material

template<int dim, typename number >
const Material<dim, number>& MeltPoolDG::CompressibleFlow::ViscousKernels< dim, number >::material
private

Object which provides all relevant material properties for a specific phase.


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