CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid > Class Template Reference
|
Developer Documentation
|
Operator for the matrix-free of a compressible multiphase flow cutDG formulation. More...
#include <multiphase_operator.hpp>
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 ¤t_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
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
-
dim Dimension of the considered simulation case. number Floating point format type. is_viscous_gas Indicates whether the gas phase is viscous. is_viscous_liquid Indicates whether the liquid phase is viscous.
Member Typedef Documentation
◆ ConservedVariablesGradType
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConservedVariablesGradType = CompressibleFlow::ConservedVariablesGradientType<dim, number> |
◆ ConservedVariablesType
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConservedVariablesType = CompressibleFlow::ConservedVariablesType<dim, number> |
◆ ConvectionDiffusionOperator
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConvectionDiffusionOperator = Utils::DGConvectionDiffusionOperator<dim, number, ConvectiveKernel, DiffusiveKernel> |
◆ ConvectionOperator
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConvectionOperator = Utils::DGConvectionOperator<dim, number, ConvectiveKernel> |
◆ ConvectiveKernel
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::ConvectiveKernel = CompressibleFlow:: ConvectiveFlux<dim, number, ConservedVariablesType, ConservedVariablesGradType> |
◆ DiffusiveKernel
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DiffusiveKernel = CompressibleFlow:: DiffusiveFlux<dim, number, ConservedVariablesType, ConservedVariablesGradType, FlowFluxType> |
◆ DofPrimitiveStateView
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofPrimitiveStateView = CompressibleFlow::DofPrimitiveStateView<dim, number, const ConservedVariablesType> |
◆ DofPrimitiveValueView
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofPrimitiveValueView = CompressibleFlow::DofPrimitiveValueView<dim, ConservedVariablesType> |
◆ DofStateView
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofStateView = CompressibleFlow::DofStateView<dim, number, const ConservedVariablesType> |
◆ DofValueAndGradientStateView
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofValueAndGradientStateView = CompressibleFlow::DofValueAndGradientStateView<dim, number, const ConservedVariablesType, const ConservedVariablesGradType> |
◆ DofValueView
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DofValueView = CompressibleFlow::DofValueView<dim, ConservedVariablesType> |
◆ DomainEval
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DomainEval = FECellIntegrator<dim, n_components, number> |
◆ DomainPointEval
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::DomainPointEval = dealii::FEPointEvaluation<n_components, dim, dim, dealii::VectorizedArray<number> > |
◆ FaceEval
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::FaceEval = FEFaceIntegrator<dim, n_components, number> |
◆ FacePointEval
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::FacePointEval = dealii::FEFacePointEvaluation<n_components, dim, dim, dealii::VectorizedArray<number> > |
◆ FlowFluxType
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::FlowFluxType = CompressibleFlow::FluxType<dim, number> |
◆ FlowSourceType
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::FlowSourceType = CompressibleFlow::SourceType<dim, number> |
◆ MappingInfoType
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::MappingInfoType = CutUtil::MappingInfoType<dim, number> |
◆ MappingInfoVectorType
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::MappingInfoVectorType = CutUtil::MappingInfoVectorType<dim, number> |
◆ VectorType
| using MeltPoolDG::Multiphase::CompressibleMultiphaseOperator< dim, number, is_viscous_gas, is_viscous_liquid >::VectorType = dealii::LinearAlgebra::distributed::Vector<number> |
Constructor & Destructor Documentation
◆ CompressibleMultiphaseOperator()
|
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_data Flow scratch data object holding all relevant compressible flow data required by the operator. mapping_info_interface_in dealii::NonMatching::MappingInfo object, provides the mapping information computation and mapping data storage of the interface. mapping_info_cells_in Vector 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_in Vector 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()
| 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_force A provided shared pointer to an external force definition.
◆ compute_inverse_diagonal_from_matrixfree()
| 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
-
diagonal Output vector containing the diagonal inverse values.
◆ compute_system_matrix_from_matrixfree()
| 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_matrix Output sparse matrix holding the assembled system matrix.
◆ create_cell_integrator()
|
inlineprivate |
Wrapper for the generation of a FECellIntegrator object.
- Parameters
-
category Category of the considered cell range (liquid/intersected/gas). offset Offset for the first selected component in a FESystem.
- Returns
- Generated FECellIntegrator object.
◆ create_face_integrator()
|
inlineprivate |
Wrapper for the generation of a FEFaceIntegrator object.
- Parameters
-
is_inner_face This 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. category Category of the considered cell adjacent to the face (liquid/intersected/gas). offset Offset for the first selected component in a FESystem.
- Returns
- Generated FEFaceIntegrator object.
◆ create_face_integrators()
|
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
-
category Category of the considered cell adjacent to the face (liquid/intersected/gas). offset Offset 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()
| 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
-
time Current simulation time. time_step_in Current time step size. dst Vector where the computed right-hand side rhs(src) is stored. src The solution vector at the current time.
◆ ghost_penalty_face_integral()
|
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
-
EvaluatorType Face evaluator type (e.g. FEFaceEvaluation) that provides values, normal derivatives and normal Hessians (for FE degree = 2).
- Parameters
-
eval_m Evaluator on the interior ("minus") side of the face. eval_p Evaluator on the exterior ("plus") side of the face. q Index of the face quadrature point. cell_side_length Characteristic cell size \(h\). cell_side_length_pow_3 Precomputed \(h^3\). cell_side_length_pow_5 Precomputed \(h^5\).
◆ internal_compute_diagonal_or_system_matrix()
|
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_diagonal truefor compute_diagonal andfalsefor compute_matrix.diagonal Vector that receives the diagonal of the system matrix (not its inverse). Used only if do_diagonalistrue.system_matrix Sparse matrix that receives the assembled system matrix. Used only if do_diagonalisfalse. It must already be initialized with a suitable sparsity pattern.do_diagonal truecomputes the diagonal;falseassembles the full system matrix.
◆ local_apply_boundary_face_lhs()
| 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_free Matrix-free object which contains all relevant data for matrix free evaluation. dst Destination vector, in which the result is written. src Source vector for the operator evaluation. face_range Considered face range.
◆ local_apply_boundary_face_rhs()
| 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_free Matrix-free object which contains all relevant data for matrix free evaluation. dst Destination vector, in which the result is written. src Source vector for the operator evaluation. face_range Considered face range.
◆ local_apply_cell_lhs()
| 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_free Matrix-free object which contains all relevant data for matrix free evaluation. dst Destination vector, in which the result is written. src Source vector for the operator evaluation. cell_range Considered cell range.
◆ local_apply_cell_rhs()
| 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_free Matrix-free object which contains all relevant data for matrix free evaluation. dst Destination vector, in which the result is written. src Source vector for the operator evaluation. cell_range Considered cell range.
◆ local_apply_face_lhs()
| 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_free Matrix-free object which contains all relevant data for matrix free evaluation. dst Destination vector, in which the result is written. src Source vector for the operator evaluation. face_range Considered face range.
◆ local_apply_face_rhs()
| 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_free Matrix-free object which contains all relevant data for matrix free evaluation. dst Destination vector, in which the result is written. src Source vector for the operator evaluation. face_range Considered face range.
◆ set_current_time()
|
inline |
Set the current time.
- Parameters
-
current_time_in Current time.
◆ vmult()
| 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
-
dst Vector where the computed evaluated vector-matrix product is stored. src The solution vector at the current time.
Member Data Documentation
◆ current_time
|
mutableprivate |
Current time.
◆ darcy_damping_model
|
private |
Darcy damping model for the computation of the damping coefficient.
◆ evaporation_model_knight
|
private |
Pointer to the object for the evaluation of the Knight evaporation model.
◆ 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
|
private |
FESystem object, required by FEPointEvaluation.
◆ first_component
|
staticconstexprprivate |
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
|
mutableprivate |
Inverse time step size.
◆ level_set_advection_operator
|
mutableprivate |
Object for the analytical advection of the level set field for 1D simulations.
◆ mapping_info_cells
|
private |
Mapping information for integration over cut cells.
◆ mapping_info_faces
|
private |
Mapping information for integration over cut faces.
◆ mapping_info_interface
|
private |
Mapping information for integration over the phase interface.
◆ multiphase_scratch_data
|
private |
Scratch data for multiphase case.
◆ n_dofs_per_cell
|
private |
Number of DoFs per cell.
◆ time_step
|
mutableprivate |
Current time step size.
◆ visc_ave_weight_phase_gas
|
private |
◆ 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:
- include/meltpooldg/compressible_flow/multiphase_operator.hpp
- source/compressible_flow/multiphase_operator.cpp
Generated by