DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number > Class Template Reference

Developer Documentation: MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number > Class Template Reference
Developer Documentation
MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number > Class Template Reference

#include <delta_approximation_phase_weighted.hpp>

Inheritance diagram for MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >:
[legend]
Collaboration diagram for MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >:
[legend]

Public Member Functions

 DeltaApproximationReciprocalTimesHeavisidePhaseWeighted (const DeltaApproximationPhaseWeightedData< number > &data)
 
number compute_weight (const number level_set_heaviside) const override
 
dealii::VectorizedArray< number > compute_weight (const dealii::VectorizedArray< number > &level_set_heaviside) const override
 
- Public Member Functions inherited from MeltPoolDG::LevelSet::DeltaApproximationBase< number >
virtual ~DeltaApproximationBase ()=default
 

Private Member Functions

template<typename value_type >
value_type compute_weight_internal (const value_type &level_set_heaviside) const
 

Private Attributes

const number w_1g
 
const number w_1h
 
const number w_2g
 
const number w_2h
 
const number correction_factor
 

Detailed Description

template<typename number>
class MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >

Asymmetric, Dirac delta approximation function, phase weighted with the density distribution consistent with the mass flux due to evaporation time an additional weight

This function can be used to approximate the Dirac delta function for diffuse interfaces. The approximation is asymmetric and you can weigh the two phases individually. The function is defined as

δ_w(φ) = δ(φ) * W(φ).

The function is dependent only on the heaviside representation of the level set φ (=indicator) The symmetric delta function δ(φ) is defined as the norm of the indicator gradient ∇φ:

δ = ||∇φ||

The weight function W(φ) is defined as

      (1 - φ) w_2g + φ w_2h

W(φ) = ------------------------— * c_corr, φ / w_1h + (1 - φ) / w_1g

with the correction factor

      /      w_1g w_1h ln( w_1g / w_1h )

c_corr = | w_2g --------------------------— \ w_1g - w_1h

               1 / w_1g ( ln( w_1h / w_1g ) - 1 ) + 1 / w_1h  \-1
  • (w_2h - w_2g) * --------------------------------------------— | ( 1/w_1h - 1/w_1g )² /

where w_1g and w_2g are the weights of the gaseous phase (at level set = -1) and w_1h and w_2h are the weights of the heavy phase (at level set = 1). The weights can be chosen arbitrarily, as long as

w_1g > 0 w_1h > 0 w_1g != w_1h w_2g > 0 or w_2h != w_2g

Note
If the density is determined consistent with mass flux due to evaporation, this Dirac delta approximation can be used to scale interface quantities with the density distribution by choosing the first set of weights (w_1g and w_1h) equal to their densities. The second set of weights (w_2g and w_2h) can be chosen independently.

Constructor & Destructor Documentation

◆ DeltaApproximationReciprocalTimesHeavisidePhaseWeighted()

template<typename number >
MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted ( const DeltaApproximationPhaseWeightedData< number > &  data)
inline

Member Function Documentation

◆ compute_weight() [1/2]

template<typename number >
dealii::VectorizedArray< number > MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >::compute_weight ( const dealii::VectorizedArray< number > &  level_set_heaviside) const
inlineoverridevirtual

◆ compute_weight() [2/2]

template<typename number >
number MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >::compute_weight ( const number  level_set_heaviside) const
inlineoverridevirtual

◆ compute_weight_internal()

template<typename number >
template<typename value_type >
value_type MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >::compute_weight_internal ( const value_type &  level_set_heaviside) const
inlineprivate

This function calculates the asymmetric

      (1 - φ) w_2g + φ w_2h

W(φ) = ------------------------— * c_corr φ / w_1h + (1 - φ) / w_1g

Member Data Documentation

◆ correction_factor

template<typename number >
const number MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >::correction_factor
private

◆ w_1g

template<typename number >
const number MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >::w_1g
private

◆ w_1h

template<typename number >
const number MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >::w_1h
private

◆ w_2g

template<typename number >
const number MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >::w_2g
private

◆ w_2h

template<typename number >
const number MeltPoolDG::LevelSet::DeltaApproximationReciprocalTimesHeavisidePhaseWeighted< number >::w_2h
private

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