CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid > Class Template Reference

Developer Documentation: MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid > Class Template Reference
Developer Documentation
MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid > Class Template Reference

Operator for the matrix-free of a compressible multiphase flow cutDG formulation. More...

#include <multiphase_operator.hpp>

Public Types

using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 
using MappingInfoType = CutUtil::MappingInfoType< dim, number >
 
using MappingInfoVectorType = CutUtil::MappingInfoVectorType< dim, number >
 
using ConservedVariablesType = CompressibleFlow::ConservedVariablesType< dim, number >
 
using ConservedVariablesGradType = CompressibleFlow::ConservedVariablesGradientType< dim, number >
 
using FlowFluxType = CompressibleFlow::FluxType< dim, number >
 
using FlowSourceType = CompressibleFlow::SourceType< dim, number >
 
using ConvectiveKernel = CompressibleFlow::ConvectiveFlux< dim, number, ConservedVariablesType, ConservedVariablesGradType >
 
using DiffusiveKernel = CompressibleFlow::DiffusiveFlux< dim, number, ConservedVariablesType, ConservedVariablesGradType, FlowFluxType >
 
using ConvectionDiffusionOperator = Utils::DGConvectionDiffusionOperator< dim, number, ConvectiveKernel, DiffusiveKernel >
 
using ConvectionOperator = Utils::DGConvectionOperator< dim, number, ConvectiveKernel >
 
using DofValueView = CompressibleFlow::DofValueView< dim, ConservedVariablesType >
 
using DofPrimitiveValueView = CompressibleFlow::DofPrimitiveValueView< dim, ConservedVariablesType >
 
using DofPrimitiveStateView = CompressibleFlow::DofPrimitiveStateView< dim, number, const ConservedVariablesType >
 
using DofStateView = CompressibleFlow::DofStateView< dim, number, const ConservedVariablesType >
 
using DofValueAndGradientStateView = CompressibleFlow::DofValueAndGradientStateView< dim, number, const ConservedVariablesType, const ConservedVariablesGradType >
 
template<int n_components = CompressibleFlow::n_conserved_variables<dim>>
using DomainEval = FECellIntegrator< dim, n_components, number >
 
template<int n_components = CompressibleFlow::n_conserved_variables<dim>>
using FaceEval = FEFaceIntegrator< dim, n_components, number >
 
template<int n_components = CompressibleFlow::n_conserved_variables<dim>>
using DomainPointEval = dealii::FEPointEvaluation< n_components, dim, dim, dealii::VectorizedArray< number > >
 
template<int n_components = CompressibleFlow::n_conserved_variables<dim>>
using FacePointEval = dealii::FEFacePointEvaluation< n_components, dim, dim, dealii::VectorizedArray< number > >
 

Public Member Functions

 CompressibleMultiphaseOperator (CompressibleFlow::MultiphaseOperationScratchData< dim, number > &multiphase_scratch_data, const MappingInfoType &mapping_info_interface_in, const MappingInfoVectorType &mapping_info_cells_in, const MappingInfoVectorType &mapping_info_faces_in)
 Constructor.
 
void local_apply_cell_rhs (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 Local applier for the cell integrals in the right-hand side evaluation.
 
void local_apply_face_rhs (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
 Local applier for the face integrals in the right-hand side evaluation.
 
void local_apply_boundary_face_rhs (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
 Local applier for the boundary face integral in the right-hand side evaluation.
 
void local_apply_cell_lhs (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 Local applier for the cell integrals in the left-hand side matrix-vector product evaluation.
 
void local_apply_face_lhs (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
 Local applier for the face integrals in the left-hand side matrix-vector product evaluation.
 
void local_apply_boundary_face_lhs (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
 Local applier for the boundary face integrals in the left-hand side matrix-vector product evaluation.
 
void create_rhs (const number &time, const number &time_step_in, VectorType &dst, const VectorType &src) const
 Function for the matrix-free right-hand side vector evaluation.
 
void vmult (VectorType &dst, const VectorType &src) const
 Function for the matrix-free matrix-vector product evaluation.
 
void set_current_time (const number &current_time_in)
 Set the current time.
 
void add_external_force (std::shared_ptr< CompressibleFlow::ExternalFlowForce< dim, number > > external_force)
 Add external fluid forces (e.g. gravity, ...).
 
template<typename EvaluatorType >
void ghost_penalty_face_integral (EvaluatorType &eval_m, EvaluatorType &eval_p, const unsigned int q, const number cell_side_length, const number cell_side_length_pow_3, const number cell_side_length_pow_5) const
 Evaluates the face-based ghost penalty stabilization at quadrature point q.
 
void compute_inverse_diagonal_from_matrixfree (VectorType &diagonal) const
 Compute the inverse diagonal of the system matrix. Used by the diagonal preconditioner.
 
void compute_system_matrix_from_matrixfree (dealii::TrilinosWrappers::SparseMatrix &system_matrix) const
 Assemble the system matrix explicitly from the matrix-free operator. Used by matrix-based preconditioners.
 

Private Member Functions

FECellIntegrator< dim, dim+2, number > create_cell_integrator (const CutUtil::CellCategory category, const unsigned int offset=0) const
 Wrapper for the generation of a FECellIntegrator object.
 
FEFaceIntegrator< dim, dim+2, number > create_face_integrator (const bool is_inner_face, const CutUtil::CellCategory category, const unsigned int offset=0) const
 Wrapper for the generation of a FEFaceIntegrator object.
 
std::pair< FEFaceIntegrator< dim, dim+2, number >, FEFaceIntegrator< dim, dim+2, number > > create_face_integrators (const CutUtil::CellCategory category, const unsigned int offset=0) const
 Wrapper for the generation of a pair of FEFaceIntegrator objects for the "interior" face and the "exterior" face.
 
void internal_compute_diagonal_or_system_matrix (VectorType &diagonal, dealii::TrilinosWrappers::SparseMatrix &system_matrix, const bool do_diagonal) const
 Shared implementation of the matrix-free diagonal and system matrix assembly.
 

Private Attributes

CompressibleFlow::MultiphaseOperationScratchData< dim, number > & multiphase_scratch_data
 Scratch data for multiphase case.
 
const MappingInfoType & mapping_info_interface
 Mapping information for integration over the phase interface.
 
const MappingInfoVectorType & mapping_info_cells
 Mapping information for integration over cut cells.
 
const MappingInfoVectorType & mapping_info_faces
 Mapping information for integration over cut faces.
 
dealii::FESystem< dim > fe_point_temp
 FESystem object, required by FEPointEvaluation.
 
const unsigned int n_dofs_per_cell
 Number of DoFs per cell.
 
number visc_ave_weight_phase_liquid
 Weighting factors for Nitsche-type viscous interface flux.
 
number visc_ave_weight_phase_gas
 
std::vector< std::shared_ptr< CompressibleFlow::ExternalFlowForce< dim, number > > > external_forces
 
number time_step = 0.
 Current time step size.
 
number inv_time_step = 0.
 Inverse time step size.
 
number current_time = 0.
 Current time.
 
LevelSetAdvection< dim, number > level_set_advection_operator
 Object for the analytical advection of the level set field for 1D simulations.
 
std::unique_ptr< Evaporation::EvaporationModelKnight< number > > evaporation_model_knight
 Pointer to the object for the evaluation of the Knight evaporation model.
 
Flow::DarcyDampingModel< number > darcy_damping_model
 Darcy damping model for the computation of the damping coefficient.
 

Static Private Attributes

static constexpr std::array< unsigned int, 2 > first_component
 

Detailed Description

template<int dim, typename number, bool is_viscous_gas = true, bool is_viscous_liquid = true>
class MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >

Operator for the matrix-free of a compressible multiphase flow cutDG formulation.

Template Parameters
dimDimension of the considered simulation case.
numberFloating point format type.
is_viscous_gasIndicates whether the gas phase is viscous.
is_viscous_liquidIndicates whether the liquid phase is viscous.

Member Typedef Documentation

◆ ConservedVariablesGradType

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConservedVariablesGradType = CompressibleFlow::ConservedVariablesGradientType<dim, number>

◆ ConservedVariablesType

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConservedVariablesType = CompressibleFlow::ConservedVariablesType<dim, number>

◆ ConvectionDiffusionOperator

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConvectionDiffusionOperator = Utils::DGConvectionDiffusionOperator<dim, number, ConvectiveKernel, DiffusiveKernel>

◆ ConvectionOperator

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConvectionOperator = Utils::DGConvectionOperator<dim, number, ConvectiveKernel>

◆ ConvectiveKernel

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConvectiveKernel = CompressibleFlow:: ConvectiveFlux<dim, number, ConservedVariablesType, ConservedVariablesGradType>

◆ DiffusiveKernel

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DiffusiveKernel = CompressibleFlow:: DiffusiveFlux<dim, number, ConservedVariablesType, ConservedVariablesGradType, FlowFluxType>

◆ DofPrimitiveStateView

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofPrimitiveStateView = CompressibleFlow::DofPrimitiveStateView<dim, number, const ConservedVariablesType>

◆ DofPrimitiveValueView

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofPrimitiveValueView = CompressibleFlow::DofPrimitiveValueView<dim, ConservedVariablesType>

◆ DofStateView

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofStateView = CompressibleFlow::DofStateView<dim, number, const ConservedVariablesType>

◆ DofValueAndGradientStateView

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofValueAndGradientStateView = CompressibleFlow::DofValueAndGradientStateView<dim, number, const ConservedVariablesType, const ConservedVariablesGradType>

◆ DofValueView

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofValueView = CompressibleFlow::DofValueView<dim, ConservedVariablesType>

◆ DomainEval

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
template<int n_components = CompressibleFlow::n_conserved_variables<dim>>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DomainEval = FECellIntegrator<dim, n_components, number>

◆ DomainPointEval

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
template<int n_components = CompressibleFlow::n_conserved_variables<dim>>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DomainPointEval = dealii::FEPointEvaluation<n_components, dim, dim, dealii::VectorizedArray<number> >

◆ FaceEval

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
template<int n_components = CompressibleFlow::n_conserved_variables<dim>>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::FaceEval = FEFaceIntegrator<dim, n_components, number>

◆ FacePointEval

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
template<int n_components = CompressibleFlow::n_conserved_variables<dim>>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::FacePointEval = dealii::FEFacePointEvaluation<n_components, dim, dim, dealii::VectorizedArray<number> >

◆ FlowFluxType

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::FlowFluxType = CompressibleFlow::FluxType<dim, number>

◆ FlowSourceType

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::FlowSourceType = CompressibleFlow::SourceType<dim, number>

◆ MappingInfoType

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::MappingInfoType = CutUtil::MappingInfoType<dim, number>

◆ MappingInfoVectorType

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::MappingInfoVectorType = CutUtil::MappingInfoVectorType<dim, number>

◆ VectorType

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::VectorType = dealii::LinearAlgebra::distributed::Vector<number>

Constructor & Destructor Documentation

◆ CompressibleMultiphaseOperator()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::CompressibleMultiphaseOperator ( CompressibleFlow::MultiphaseOperationScratchData< dim, number > &  multiphase_scratch_data,
const MappingInfoType &  mapping_info_interface_in,
const MappingInfoVectorType &  mapping_info_cells_in,
const MappingInfoVectorType &  mapping_info_faces_in 
)
explicit

Constructor.

Initializes the operators, integrators, and mapping objects needed to compute the matrix-free evaluation of a compressible multiphase cutDG formulation.

Parameters
multiphase_scratch_dataFlow scratch data object holding all relevant compressible flow data required by the operator.
mapping_info_interface_indealii::NonMatching::MappingInfo object, provides the mapping information computation and mapping data storage of the interface.
mapping_info_cells_inVector of dealii::NonMatching::MappingInfo objects, provides the mapping information computation and mapping data storage of the cells on the inner subdomain and the outer subdomain, respectively.
mapping_info_faces_inVector of dealii::NonMatching::MappingInfo objects, provides the mapping information computation and mapping data storage of the faces on the inner subdomain and the outer subdomain, respectively.

Member Function Documentation

◆ add_external_force()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::add_external_force ( std::shared_ptr< CompressibleFlow::ExternalFlowForce< dim, number > >  external_force)

Add external fluid forces (e.g. gravity, ...).

Parameters
external_forceA provided shared pointer to an external force definition.

◆ compute_inverse_diagonal_from_matrixfree()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::compute_inverse_diagonal_from_matrixfree ( VectorType &  diagonal) const

Compute the inverse diagonal of the system matrix. Used by the diagonal preconditioner.

Parameters
diagonalOutput vector containing the diagonal inverse values.

◆ compute_system_matrix_from_matrixfree()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::compute_system_matrix_from_matrixfree ( dealii::TrilinosWrappers::SparseMatrix &  system_matrix) const

Assemble the system matrix explicitly from the matrix-free operator. Used by matrix-based preconditioners.

Parameters
system_matrixOutput sparse matrix holding the assembled system matrix.

◆ create_cell_integrator()

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
FECellIntegrator< dim, dim+2, number > MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::create_cell_integrator ( const CutUtil::CellCategory  category,
const unsigned int  offset = 0 
) const
inlineprivate

Wrapper for the generation of a FECellIntegrator object.

Parameters
categoryCategory of the considered cell range (liquid/intersected/gas).
offsetOffset for the first selected component in a FESystem.
Returns
Generated FECellIntegrator object.

◆ create_face_integrator()

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
FEFaceIntegrator< dim, dim+2, number > MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::create_face_integrator ( const bool  is_inner_face,
const CutUtil::CellCategory  category,
const unsigned int  offset = 0 
) const
inlineprivate

Wrapper for the generation of a FEFaceIntegrator object.

Parameters
is_inner_faceThis selects which of the two cells of an internal face the current evaluator will be based upon. The interior face is the main face along which the normal vectors are oriented.
categoryCategory of the considered cell adjacent to the face (liquid/intersected/gas).
offsetOffset for the first selected component in a FESystem.
Returns
Generated FEFaceIntegrator object.

◆ create_face_integrators()

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
std::pair< FEFaceIntegrator< dim, dim+2, number >, FEFaceIntegrator< dim, dim+2, number > > MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::create_face_integrators ( const CutUtil::CellCategory  category,
const unsigned int  offset = 0 
) const
inlineprivate

Wrapper for the generation of a pair of FEFaceIntegrator objects for the "interior" face and the "exterior" face.

The "interior" face is the main face along which the normal vectors are oriented.

Parameters
categoryCategory of the considered cell adjacent to the face (liquid/intersected/gas).
offsetOffset for the first selected component in a FESystem.
Returns
Pair of FEFaceIntegrator objects. The first one corresponds to the "interior" face and the second one to the "exterior" face.

◆ create_rhs()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::create_rhs ( const number &  time,
const number &  time_step_in,
VectorType &  dst,
const VectorType &  src 
) const

Function for the matrix-free right-hand side vector evaluation.

Parameters
timeCurrent simulation time.
time_step_inCurrent time step size.
dstVector where the computed right-hand side rhs(src) is stored.
srcThe solution vector at the current time.

◆ ghost_penalty_face_integral()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
template<typename EvaluatorType >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ghost_penalty_face_integral ( EvaluatorType &  eval_m,
EvaluatorType &  eval_p,
const unsigned int  q,
const number  cell_side_length,
const number  cell_side_length_pow_3,
const number  cell_side_length_pow_5 
) const
inline

Evaluates the face-based ghost penalty stabilization at quadrature point q.

Penalizes jumps of the solution and its normal derivatives across a ghost-penalty face.

Template Parameters
EvaluatorTypeFace evaluator type (e.g. FEFaceEvaluation) that provides values, normal derivatives and normal Hessians (for FE degree = 2).
Parameters
eval_mEvaluator on the interior ("minus") side of the face.
eval_pEvaluator on the exterior ("plus") side of the face.
qIndex of the face quadrature point.
cell_side_lengthCharacteristic cell size \(h\).
cell_side_length_pow_3Precomputed \(h^3\).
cell_side_length_pow_5Precomputed \(h^5\).

◆ internal_compute_diagonal_or_system_matrix()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::internal_compute_diagonal_or_system_matrix ( VectorType &  diagonal,
dealii::TrilinosWrappers::SparseMatrix &  system_matrix,
const bool  do_diagonal 
) const
private

Shared implementation of the matrix-free diagonal and system matrix assembly.

The setup for dealii::MatrixFreeTools::internal::compute_diagonal and dealii::MatrixFreeTools::internal::compute_matrix is identical. To avoid duplicate code this internal function can handle both operations. Choose which operation to perform using

Parameters
do_diagonaltrue for compute_diagonal and false for compute_matrix.
diagonalVector that receives the diagonal of the system matrix (not its inverse). Used only if do_diagonal is true.
system_matrixSparse matrix that receives the assembled system matrix. Used only if do_diagonal is false. It must already be initialized with a suitable sparsity pattern.
do_diagonaltrue computes the diagonal; false assembles the full system matrix.

◆ local_apply_boundary_face_lhs()

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::local_apply_boundary_face_lhs ( const dealii::MatrixFree< dim, number > &  matrix_free,
VectorType &  dst,
const VectorType &  src,
const std::pair< unsigned int, unsigned int > &  face_range 
) const

Local applier for the boundary face integrals in the left-hand side matrix-vector product evaluation.

Parameters
matrix_freeMatrix-free object which contains all relevant data for matrix free evaluation.
dstDestination vector, in which the result is written.
srcSource vector for the operator evaluation.
face_rangeConsidered face range.

◆ local_apply_boundary_face_rhs()

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::local_apply_boundary_face_rhs ( const dealii::MatrixFree< dim, number > &  matrix_free,
VectorType &  dst,
const VectorType &  src,
const std::pair< unsigned int, unsigned int > &  face_range 
) const

Local applier for the boundary face integral in the right-hand side evaluation.

Parameters
matrix_freeMatrix-free object which contains all relevant data for matrix free evaluation.
dstDestination vector, in which the result is written.
srcSource vector for the operator evaluation.
face_rangeConsidered face range.

◆ local_apply_cell_lhs()

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::local_apply_cell_lhs ( const dealii::MatrixFree< dim, number > &  matrix_free,
VectorType &  dst,
const VectorType &  src,
const std::pair< unsigned int, unsigned int > &  cell_range 
) const

Local applier for the cell integrals in the left-hand side matrix-vector product evaluation.

Parameters
matrix_freeMatrix-free object which contains all relevant data for matrix free evaluation.
dstDestination vector, in which the result is written.
srcSource vector for the operator evaluation.
cell_rangeConsidered cell range.

◆ local_apply_cell_rhs()

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::local_apply_cell_rhs ( const dealii::MatrixFree< dim, number > &  matrix_free,
VectorType &  dst,
const VectorType &  src,
const std::pair< unsigned int, unsigned int > &  cell_range 
) const

Local applier for the cell integrals in the right-hand side evaluation.

Parameters
matrix_freeMatrix-free object which contains all relevant data for matrix free evaluation.
dstDestination vector, in which the result is written.
srcSource vector for the operator evaluation.
cell_rangeConsidered cell range.

◆ local_apply_face_lhs()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::local_apply_face_lhs ( const dealii::MatrixFree< dim, number > &  matrix_free,
VectorType &  dst,
const VectorType &  src,
const std::pair< unsigned int, unsigned int > &  face_range 
) const

Local applier for the face integrals in the left-hand side matrix-vector product evaluation.

Parameters
matrix_freeMatrix-free object which contains all relevant data for matrix free evaluation.
dstDestination vector, in which the result is written.
srcSource vector for the operator evaluation.
face_rangeConsidered face range.

◆ local_apply_face_rhs()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::local_apply_face_rhs ( const dealii::MatrixFree< dim, number > &  matrix_free,
VectorType &  dst,
const VectorType &  src,
const std::pair< unsigned int, unsigned int > &  face_range 
) const

Local applier for the face integrals in the right-hand side evaluation.

Parameters
matrix_freeMatrix-free object which contains all relevant data for matrix free evaluation.
dstDestination vector, in which the result is written.
srcSource vector for the operator evaluation.
face_rangeConsidered face range.

◆ set_current_time()

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::set_current_time ( const number &  current_time_in)
inline

Set the current time.

Parameters
current_time_inCurrent time.

◆ vmult()

template<int dim, typename number , bool is_viscous_gas, bool is_viscous_liquid>
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::vmult ( VectorType &  dst,
const VectorType &  src 
) const

Function for the matrix-free matrix-vector product evaluation.

Parameters
dstVector where the computed evaluated vector-matrix product is stored.
srcThe solution vector at the current time.

Member Data Documentation

◆ current_time

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
number MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::current_time = 0.
mutableprivate

Current time.

◆ darcy_damping_model

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
Flow::DarcyDampingModel<number> MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::darcy_damping_model
private

Darcy damping model for the computation of the damping coefficient.

◆ evaporation_model_knight

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
std::unique_ptr<Evaporation::EvaporationModelKnight<number> > MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::evaporation_model_knight
private

Pointer to the object for the evaluation of the Knight evaporation model.

◆ external_forces

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
std::vector<std::shared_ptr<CompressibleFlow::ExternalFlowForce<dim, number> > > MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::external_forces
private

This pointer may hold an instance of an external fluid force contribution (e.g., gravity, body forces, or user - defined source terms)

◆ fe_point_temp

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
dealii::FESystem<dim> MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::fe_point_temp
private

FESystem object, required by FEPointEvaluation.

◆ first_component

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
constexpr std::array<unsigned int, 2> MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::first_component
staticconstexprprivate
Initial value:
= {{
0 ,
CompressibleFlow::n_conserved_variables<dim>
}}

Helper for the selection of the first component index of the liquid and gas phases in a FESystem. The ordering corresponds to the order of the Phase enum.

◆ inv_time_step

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
number MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::inv_time_step = 0.
mutableprivate

Inverse time step size.

◆ level_set_advection_operator

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
LevelSetAdvection<dim, number> MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::level_set_advection_operator
mutableprivate

Object for the analytical advection of the level set field for 1D simulations.

◆ mapping_info_cells

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
const MappingInfoVectorType& MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::mapping_info_cells
private

Mapping information for integration over cut cells.

◆ mapping_info_faces

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
const MappingInfoVectorType& MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::mapping_info_faces
private

Mapping information for integration over cut faces.

◆ mapping_info_interface

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
const MappingInfoType& MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::mapping_info_interface
private

Mapping information for integration over the phase interface.

◆ multiphase_scratch_data

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
CompressibleFlow::MultiphaseOperationScratchData<dim, number>& MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::multiphase_scratch_data
private

Scratch data for multiphase case.

◆ n_dofs_per_cell

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
const unsigned int MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::n_dofs_per_cell
private

Number of DoFs per cell.

◆ time_step

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
number MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::time_step = 0.
mutableprivate

Current time step size.

◆ visc_ave_weight_phase_gas

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
number MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::visc_ave_weight_phase_gas
private

◆ visc_ave_weight_phase_liquid

template<int dim, typename number , bool is_viscous_gas = true, bool is_viscous_liquid = true>
number MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::visc_ave_weight_phase_liquid
private

Weighting factors for Nitsche-type viscous interface flux.


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