CompressibleMultiphaseOperation< dim, number > Class Template Reference

Developer Documentation: MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number > Class Template Reference
Developer Documentation
MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number > Class Template Reference

Operation that performs a full time step for the compressible two-phase Navier-Stokes equations in a cutDG context. More...

#include <multiphase_operation.hpp>

Collaboration diagram for MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >:
[legend]

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 DofStateView = CompressibleFlow::DofStateView< dim, number, const ConservedVariablesType >
 
using CompMultiphaseOperatorVariant = std::variant< CompressibleMultiphaseOperator< dim, number, true, true >, CompressibleMultiphaseOperator< dim, number, true, false >, CompressibleMultiphaseOperator< dim, number, false, true >, CompressibleMultiphaseOperator< dim, number, false, false > >
 

Public Member Functions

 CompressibleMultiphaseOperation (const ScratchData< dim, dim, number > &scratch_data_in, const CompressibleFlow::OperationData< number > &comp_flow_data_in, const CompressibleFlow::MaterialPhaseData< number > &material_data_gas_in, const CompressibleFlow::MaterialPhaseData< number > &material_data_liquid_in, const PhaseChangeData< number > &phase_change_data_in, const CompressibleFlow::CutSolverData< number > &cut_data_in, const CompressibleFlowPhaseCouplingData< number > &phase_coupling_data_in, const Flow::DarcyDampingData< number > &darcy_damping_data_in, const TimeIntegration::TimeIterator< number > &time_iterator_in, const std::function< void()> &setup_dof_system_in, const VectorType &level_set_in, unsigned int comp_flow_dof_idx_in=dealii::numbers::invalid_unsigned_int, unsigned int level_set_dof_idx_in=dealii::numbers::invalid_unsigned_int, unsigned int comp_flow_quad_idx_in=dealii::numbers::invalid_unsigned_int)
 Constructor.
 
void reinit ()
 Set up the required internal data structures.
 
void set_body_force (std::unique_ptr< dealii::Function< dim > > body_force_in)
 Set a body force, e.g. gravity, specified by the passed function.
 
void add_external_force (std::shared_ptr< CompressibleFlow::ExternalFlowForce< dim, number > > external_force)
 Add external fluid forces (e.g. gravity, ...).
 
number compute_time_step_size (bool do_print=false) const
 Compute the maximum time step size.
 
std::vector< std::complex< number > > estimate_jacobian_eigenvalues (const number) const
 
void distribute_dofs (dealii::DoFHandler< dim > &dof_handler) const
 Distribute dofs needed for a finite element type given in CompressibleFlowData.
 
void solve (number current_time, number time_step)
 Solves the compressible two-phase Navier-Stokes equations for a single time step.
 
void set_initial_condition (const dealii::Function< dim > &function)
 Set the initial condition of the solution dof vector.
 
bool repartition (VectorType &level_set_in, const std::function< void()> &distribute_level_set_dofs)
 Repartition the triangulation among the MPI processes with cell weights according to the location of the cells with respect to the level set.
 
void set_boundary_conditions (const std::shared_ptr< SimulationCaseBase< dim, number > > &simulation_case, const std::string &operation_name)
 Set the boundary conditions.
 
void attach_output_vectors (GenericDataOut< dim, number > &data_out) const
 Attach the solution to the passed data out object.
 
const VectorType & get_solution () const
 Constant getter function for the current solution vector.
 
VectorType & get_solution ()
 Getter function for the current solution vector.
 
VectorType & get_solution_in_primitive_variables () const
 Getter function for the current solution vector in primitive variables (pressure, velocity, temperature).
 
const dealii::DoFHandler< dim > & get_dof_handler () const
 Constant getter function for the DoFHandler.
 

Static Public Member Functions

static CompMultiphaseOperatorVariant create_cut_flow_operator_variant (bool is_viscous_gas, bool is_viscous_liquid, CompressibleFlow::MultiphaseOperationScratchData< dim, number > &multiphase_scratch_data, const MappingInfoType &mapping_info_surface_in, const MappingInfoVectorType &mapping_info_cells_in, const MappingInfoVectorType &mapping_info_faces_in)
 Create and return the appropriate compressible multiphase operator variant.
 

Private Member Functions

void adapt_to_new_interface_position ()
 Adapt the dof layout, solution vector, and discretization to a new interface position, which is defined by the zero-level-set-isosurface.
 
void classify_cells () const
 Classify cells according to the current state of the level-set field.
 
number compute_convective_time_step_limit () const
 Compute the convective time step limit for the current mesh and flow field.
 
number compute_viscous_time_step_limit (const std::pair< number, number > &min_density) const
 Compute the viscous time step limit for the current mesh and flow field.
 
std::pair< number, number > compute_minimum_density () const
 Compute the minimum density currently occurring in the flow field.
 
void compute_intersected_quadrature ()
 Compute the quadrature rules for intersected elements, intersected faces and phase surfaces.
 

Private Attributes

CompressibleFlow::MultiphaseOperationScratchData< dim, number > multiphase_scratch_data
 Scratch data for multiphase case.
 
const TimeIntegration::TimeIterator< number > & time_iterator
 Time iterator.
 
const unsigned int level_set_dof_idx
 DoF index associated to the level set field.
 
const VectorType & level_set
 Reference to the level-set field used to represent the interface between phases.
 
VectorType rhs
 Right-hand side vector.
 
VectorType solution_primitive_variables
 Solution vector in primitive variable formulation (pressure, velocity, temperature)
 
std::shared_ptr< dealii::NonMatching::MeshClassifier< dim > > mesh_classifier
 
std::shared_ptr< dealii::NonMatching::MeshClassifier< dim > > mesh_classifier_old
 
CutUtil::SolutionTransferOperator< dim, number > cut_solution_transfer
 
std::function< void()> setup_dof_system
 Function to set up the DoF system.
 
std::function< void(VectorType &)> reinit_vector
 Function for DoF vector reinitialization.
 
dealii::FESystem< dim > fe_point_temp
 FESystem object, required by FEPointEvaluation.
 
const unsigned int n_dofs_per_cell
 Number of DoFs per cell.
 
MappingInfoType mapping_info_surface
 Mapping information for integration over phase interfaces.
 
MappingInfoVectorType mapping_info_cells
 Mapping information for integration over cut cells.
 
MappingInfoVectorType mapping_info_faces
 Mapping information for integration over cut faces.
 
CompMultiphaseOperatorVariant cmp_operator
 Compressible multiphase operator object.
 
Preconditioner< dim, VectorType, number > preconditioner
 Preconditioner for the linear solver.
 
bool preconditioner_update_flag = false
 Boolean indicator whether the preconditioner needs to be updated before the next solve.
 
unsigned int n_steps_performed = 0
 
std::unique_ptr< CutUtil::PartitionWeights< dim > > partition_weights
 

Detailed Description

template<int dim, typename number>
class MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >

Operation that performs a full time step for the compressible two-phase Navier-Stokes equations in a cutDG context.

Member Typedef Documentation

◆ CompMultiphaseOperatorVariant

template<int dim, typename number >
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::CompMultiphaseOperatorVariant = std::variant<CompressibleMultiphaseOperator<dim, number, true, true>, CompressibleMultiphaseOperator<dim, number, true, false>, CompressibleMultiphaseOperator<dim, number, false, true>, CompressibleMultiphaseOperator<dim, number, false, false> >

◆ ConservedVariablesType

template<int dim, typename number >
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::ConservedVariablesType = CompressibleFlow::ConservedVariablesType<dim, number>

◆ DofStateView

template<int dim, typename number >
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::DofStateView = CompressibleFlow::DofStateView<dim, number, const ConservedVariablesType>

◆ MappingInfoType

template<int dim, typename number >
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::MappingInfoType = CutUtil::MappingInfoType<dim, number>

◆ MappingInfoVectorType

template<int dim, typename number >
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::MappingInfoVectorType = CutUtil::MappingInfoVectorType<dim, number>

◆ VectorType

template<int dim, typename number >
using MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::VectorType = dealii::LinearAlgebra::distributed::Vector<number>

Constructor & Destructor Documentation

◆ CompressibleMultiphaseOperation()

template<int dim, typename number >
MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::CompressibleMultiphaseOperation ( const ScratchData< dim, dim, number > &  scratch_data_in,
const CompressibleFlow::OperationData< number > &  comp_flow_data_in,
const CompressibleFlow::MaterialPhaseData< number > &  material_data_gas_in,
const CompressibleFlow::MaterialPhaseData< number > &  material_data_liquid_in,
const PhaseChangeData< number > &  phase_change_data_in,
const CompressibleFlow::CutSolverData< number > &  cut_data_in,
const CompressibleFlowPhaseCouplingData< number > &  phase_coupling_data_in,
const Flow::DarcyDampingData< number > &  darcy_damping_data_in,
const TimeIntegration::TimeIterator< number > &  time_iterator_in,
const std::function< void()> &  setup_dof_system_in,
const VectorType &  level_set_in,
unsigned int  comp_flow_dof_idx_in = dealii::numbers::invalid_unsigned_int,
unsigned int  level_set_dof_idx_in = dealii::numbers::invalid_unsigned_int,
unsigned int  comp_flow_quad_idx_in = dealii::numbers::invalid_unsigned_int 
)
explicit

Constructor.

Initializes all internal data structures required to simulate compressible multiphase Navier-Stokes flows using a cutDG approach.

Parameters
scratch_data_inReference to the used ScratchData object.
comp_flow_data_inReference to the compressible flow data struct used.
material_data_gas_inReference to the material data struct for the gas phase.
material_data_liquid_inReference to the material data struct for the liquid phase.
phase_change_data_inReference to the phase change data struct for liquid-gas and solid-liquid phase transitions.
cut_data_inReference to the data object with cut-related parameters.
phase_coupling_data_inReference to the struct for phase coupling parameters.
darcy_damping_data_inReference to the struct for darcy damping parameters.
time_iterator_inReference to the used time stepping.
setup_dof_system_inReinit_matrix_free function, which is registered.
level_set_inlevel-set dof vector.
comp_flow_dof_idx_inIndex of the used dof handler for solution in scratch_data_in.
level_set_dof_idx_inIndex of the used dof handler for level-set in scratch_data_in.
comp_flow_quad_idx_inIndex of the used quadrature object in scratch_data_in.
Note
This constructor assumes that explicit time stepping is used. Only one solution is stored in the history, and ghost-penalty stabilization is enabled.

Member Function Documentation

◆ adapt_to_new_interface_position()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::adapt_to_new_interface_position ( )
private

Adapt the dof layout, solution vector, and discretization to a new interface position, which is defined by the zero-level-set-isosurface.

The function first classifies the cells according to the current interface position and checks whether any cell changed its location with respect to the level set. The new non-matching quadrature rules for intersected cells, intersected faces and the phase interface are computed in all cases.

If the DoF layout is unchanged, i.e. no cell changed its location with respect to the level set, the existing DoF numbering and partitioning, MatrixFree object, solution vector and preconditioner data structures remain valid and are reused. Only the cut geometry-dependent quadrature rules are recomputed.

If the DoF layout changed, the following additional steps are performed:

  • adapt DoFHandler and solution vectors according to new interface position, extrapolate new DoF values via ghost-penalty extrapolation
  • reinit matrix-free object, rhs and solution vectors
  • reinitialize the preconditioner's data structures

◆ add_external_force()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::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.

◆ attach_output_vectors()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::attach_output_vectors ( GenericDataOut< dim, number > &  data_out) const

Attach the solution to the passed data out object.

The solution is added in conservative variable formulation (density, momentum, energy density) and primitive variable formulation (pressure, velocity, temperature).

Parameters
data_outObject to which the solution vector is attached.

◆ classify_cells()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::classify_cells ( ) const
private

Classify cells according to the current state of the level-set field.

◆ compute_convective_time_step_limit()

template<int dim, typename number >
number MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::compute_convective_time_step_limit ( ) const
private

Compute the convective time step limit for the current mesh and flow field.

Returns
Maximum convective time step size.

◆ compute_intersected_quadrature()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::compute_intersected_quadrature ( )
private

Compute the quadrature rules for intersected elements, intersected faces and phase surfaces.

◆ compute_minimum_density()

template<int dim, typename number >
std::pair< number, number > MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::compute_minimum_density ( ) const
private

Compute the minimum density currently occurring in the flow field.

Returns
A pair of minimum densities in the liquid and gas phase.

◆ compute_time_step_size()

template<int dim, typename number >
number MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::compute_time_step_size ( bool  do_print = false) const

Compute the maximum time step size.

The maximum time step size arises from the convective and viscous time step limits. Optionally, it is printed to the console.

Parameters
do_printIf true, the time step limit is printed to the console.
Returns
The computed maximum time step size.

◆ compute_viscous_time_step_limit()

template<int dim, typename number >
number MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::compute_viscous_time_step_limit ( const std::pair< number, number > &  min_density) const
private

Compute the viscous time step limit for the current mesh and flow field.

Parameters
min_densityA pair of minimum densities in the liquid and gas phase.
Returns
Maximum viscous time step size.

◆ create_cut_flow_operator_variant()

template<int dim, typename number >
static CompMultiphaseOperatorVariant MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::create_cut_flow_operator_variant ( bool  is_viscous_gas,
bool  is_viscous_liquid,
CompressibleFlow::MultiphaseOperationScratchData< dim, number > &  multiphase_scratch_data,
const MappingInfoType &  mapping_info_surface_in,
const MappingInfoVectorType &  mapping_info_cells_in,
const MappingInfoVectorType &  mapping_info_faces_in 
)
inlinestatic

Create and return the appropriate compressible multiphase operator variant.

This static factory method instantiates and returns the correct variant of the CompressibleMultiphaseOperator based on whether the gas and liquid phases are viscous. The returned operator is used for applying the cut-cell method for compressible multiphase Navier-Stokes equations.

Parameters
is_viscous_gasBoolean indicating if the gas phase has viscosity.
is_viscous_liquidBoolean indicating if the liquid phase has viscosity.
multiphase_scratch_dataReference to the scratch data used for the operator.
mapping_info_surface_inMapping information for integration over phase interfaces.
mapping_info_cells_inMapping information for integration over cut cells.
mapping_info_faces_inMapping information for integration over cut faces.
Returns
A variant of the CompressibleMultiphaseOperator with the appropriate template specialization selected based on the viscosity configuration.

◆ distribute_dofs()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::distribute_dofs ( dealii::DoFHandler< dim > &  dof_handler) const

Distribute dofs needed for a finite element type given in CompressibleFlowData.

A FECollection is created to distinguish between liquid phase, gas phase and intersected elements.

Parameters
dof_handlerReference to the used DoFHandler object.

◆ estimate_jacobian_eigenvalues()

template<int dim, typename number >
std::vector< std::complex< number > > MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::estimate_jacobian_eigenvalues ( const number  ) const
inline

Estimate the eigenvalues of the Jacobian matrix.

Parameters
time_stepThe current time step size.
Returns
A vector of complex eigenvalues.
Exceptions
Eigenvaluecomputation is currently not implemented and is only there for compatibility with the type-erased interface in CompressibleFlowOperation.

◆ get_dof_handler()

template<int dim, typename number >
const dealii::DoFHandler< dim > & MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::get_dof_handler ( ) const

Constant getter function for the DoFHandler.

◆ get_solution() [1/2]

template<int dim, typename number >
dealii::LinearAlgebra::distributed::Vector< number > & MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::get_solution ( )

Getter function for the current solution vector.

◆ get_solution() [2/2]

template<int dim, typename number >
const dealii::LinearAlgebra::distributed::Vector< number > & MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::get_solution ( ) const

Constant getter function for the current solution vector.

◆ get_solution_in_primitive_variables()

template<int dim, typename number >
dealii::LinearAlgebra::distributed::Vector< number > & MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::get_solution_in_primitive_variables ( ) const

Getter function for the current solution vector in primitive variables (pressure, velocity, temperature).

◆ reinit()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::reinit ( )

Set up the required internal data structures.

After a call to this function the solve() function of the class can be utilized.

◆ repartition()

template<int dim, typename number >
bool MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::repartition ( VectorType &  level_set_in,
const std::function< void()> &  distribute_level_set_dofs 
)

Repartition the triangulation among the MPI processes with cell weights according to the location of the cells with respect to the level set.

The weight of each cell (liquid, gas or intersected) is evaluated with the current cell classification, which corresponds to the current DoF layout. After the repartitioning, the level set and the solution vector are transferred to the new partitioning and all DoF-dependent data structures are rebuilt:

  • the DoFs of the level-set field are redistributed (distribute_level_set_dofs) and the level set is transferred,
  • the cells are reclassified, the DoFs of the flow field are redistributed and the partitioning and the MatrixFree object are recreated (setup_dof_system),
  • the solution, rhs and primitive-variable vectors, the penalty parameters, the non-matching quadrature rules (MappingInfo objects) and the preconditioner are reinitialized (reinit()),
  • the solution vector is transferred,
  • both mesh classifiers are updated.

The cached cell weights stay connected to the triangulation afterwards and are transferred in every change of the triangulation, so that the implicit repartitioning in Triangulation::execute_coarsening_and_refinement(), which is triggered by the solution transfer for a moved interface, reproduces the current partitioning, also after adaptive mesh refinement (see CutUtil::PartitionWeights).

Parameters
level_set_inLevel-set vector.
distribute_level_set_dofsFunction that distributes the DoFs of the level-set DoFHandler and reinitializes level_set_in according to the new partitioning.
Note
Repartitioning is skipped when only a single MPI process is used.

◆ set_body_force()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::set_body_force ( std::unique_ptr< dealii::Function< dim > >  body_force_in)

Set a body force, e.g. gravity, specified by the passed function.

Parameters
body_force_inFunction specifying the body force.
Note
The function simply passes the parameters to the corresponding operator function.

◆ set_boundary_conditions()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::set_boundary_conditions ( const std::shared_ptr< SimulationCaseBase< dim, number > > &  simulation_case,
const std::string &  operation_name 
)

Set the boundary conditions.

Parameters
simulation_casePointer to the considered simulation case class.
operation_nameString for the name of the considered operation.
Note
The function simply passes the parameters to the set_boundary_conditions function in the CompressibleFlowBoundaryConditions class.

◆ set_initial_condition()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::set_initial_condition ( const dealii::Function< dim > &  function)

Set the initial condition of the solution dof vector.

Parameters
functionGiven function for initial condition.

◆ solve()

template<int dim, typename number >
void MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::solve ( number  current_time,
number  time_step 
)

Solves the compressible two-phase Navier-Stokes equations for a single time step.

Parameters
current_timeCurrent time at t^n.
time_stepCurrent time step size.

Member Data Documentation

◆ cmp_operator

template<int dim, typename number >
CompMultiphaseOperatorVariant MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::cmp_operator
private

Compressible multiphase operator object.

◆ cut_solution_transfer

template<int dim, typename number >
CutUtil::SolutionTransferOperator<dim, number> MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::cut_solution_transfer
private

Solution transfer object for the interpolation between function spaces at two subsequent time steps with moving phase interfaces.

◆ fe_point_temp

template<int dim, typename number >
dealii::FESystem<dim> MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::fe_point_temp
private

FESystem object, required by FEPointEvaluation.

◆ level_set

template<int dim, typename number >
const VectorType& MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::level_set
private

Reference to the level-set field used to represent the interface between phases.

◆ level_set_dof_idx

template<int dim, typename number >
const unsigned int MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::level_set_dof_idx
private

DoF index associated to the level set field.

◆ mapping_info_cells

template<int dim, typename number >
MappingInfoVectorType MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::mapping_info_cells
private

Mapping information for integration over cut cells.

◆ mapping_info_faces

template<int dim, typename number >
MappingInfoVectorType MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::mapping_info_faces
private

Mapping information for integration over cut faces.

◆ mapping_info_surface

template<int dim, typename number >
MappingInfoType MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::mapping_info_surface
private

Mapping information for integration over phase interfaces.

◆ mesh_classifier

template<int dim, typename number >
std::shared_ptr<dealii::NonMatching::MeshClassifier<dim> > MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::mesh_classifier
private

Mesh classifier, which contains information if a cell is in the gas phase, liquid phase or cut. It corresponds to the current level set position.

◆ mesh_classifier_old

template<int dim, typename number >
std::shared_ptr<dealii::NonMatching::MeshClassifier<dim> > MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::mesh_classifier_old
private

Mesh classifier, which contains information if a cell is in the gas phase, liquid phase or cut. It corresponds to the level set position at the previous time step.

◆ multiphase_scratch_data

template<int dim, typename number >
CompressibleFlow::MultiphaseOperationScratchData<dim, number> MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::multiphase_scratch_data
private

Scratch data for multiphase case.

◆ n_dofs_per_cell

template<int dim, typename number >
const unsigned int MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::n_dofs_per_cell
private

Number of DoFs per cell.

◆ n_steps_performed

template<int dim, typename number >
unsigned int MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::n_steps_performed = 0
private

Counter variable for the number of performed time steps, used to determine when to update the preconditioner

◆ partition_weights

template<int dim, typename number >
std::unique_ptr<CutUtil::PartitionWeights<dim> > MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::partition_weights
private

Cached cell weights for the repartitioning of the triangulation; created at the first call of repartition()

◆ preconditioner

template<int dim, typename number >
Preconditioner<dim, VectorType, number> MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::preconditioner
private

Preconditioner for the linear solver.

◆ preconditioner_update_flag

template<int dim, typename number >
bool MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::preconditioner_update_flag = false
private

Boolean indicator whether the preconditioner needs to be updated before the next solve.

◆ reinit_vector

template<int dim, typename number >
std::function<void(VectorType &)> MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::reinit_vector
private

Function for DoF vector reinitialization.

◆ rhs

template<int dim, typename number >
VectorType MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::rhs
private

Right-hand side vector.

◆ setup_dof_system

template<int dim, typename number >
std::function<void()> MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::setup_dof_system
private

Function to set up the DoF system.

◆ solution_primitive_variables

template<int dim, typename number >
VectorType MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::solution_primitive_variables
mutableprivate

Solution vector in primitive variable formulation (pressure, velocity, temperature)

◆ time_iterator

template<int dim, typename number >
const TimeIntegration::TimeIterator<number>& MeltPoolDG::Multiphase::CompressibleMultiphaseOperation< dim, number >::time_iterator
private

Time iterator.


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