include/meltpooldg/phase_change/evaporation_data.hpp Source File

Developer Documentation: include/meltpooldg/phase_change/evaporation_data.hpp Source File
Developer Documentation
evaporation_data.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/parameter_handler.h>
4
10
11#include <string>
12
13
15{
16 // evaporation specific
18 EvaporationModelType,
19 char,
20 // prescribe a (time-dependent) function for an evaporative mass flux being constant
21 // over the domain
22 analytical,
23 // calculate the evaporative mass flux from the recoil pressure
24 recoil_pressure,
25 // calculate the evaporative mass flux from the saturated vapor pressure
26 saturated_vapor_pressure,
27 // calculate the evaporative mass flux according to the model proposed by Hardt & Wondra
28 hardt_wondra,
29 // calculate the evaporative mass flux according to the model with pressure-aware boundary
30 // conditions
31 pressure_aware)
32
33 BETTER_ENUM(EvaporationLevelSetSourceTermType,
34 char,
35 // calculate the interface velocity from the velocity at the interface
36 // TODO: this only makes sense without evaporation --> remove for
37 // evaporation
39 // calculate the interface velocity by using the liquid velocity (H(phi)=1)
41 // calculate a divergence-free interface velocity and use it to advect the level set
43 // use the source term due to evaporation as right hand-side term
44 rhs)
45
46 BETTER_ENUM(InterfaceFluxType,
47 char,
48 // Regularized representation of the interface flux via a smoothed Dirac
49 // delta function.
50 regularized,
51 // Sharp representation of the interface flux by performing a surface
52 // integral over the interface.
53 sharp)
54
55 BETTER_ENUM(EvaporativeMassFluxTemperatureEvaluationType,
56 char,
57 // The evaporative mass flux distributed in the interfacial zone is computed based on
58 // local values evaluated at the quadrature points.
60 // The flux distributed in the interfacial zone is computed based on values evaluated
61 // at the projected quadrature points to the level set = 0 isosurface.
62 interface_value)
63
64 BETTER_ENUM(EvaporCoolingInterfaceFluxType,
65 char,
66 none,
67 // Regularized representation of the interface flux via a smoothed Dirac
68 // delta function.
69 regularized,
70 // Sharp representation of the interface flux by performing a surface
71 // integral over the interface.
72 sharp,
73 // Sharp representation of the interface flux by performing a surface
74 // integral over the element edges that represent the interface. The usage
75 // is only recommended for interfaces that are aligned with element
76 // edges.
77 sharp_conforming)
78
79 template <typename number>
80 struct EvaporationData
81 {
82 EvaporationModelType evaporative_mass_flux_model = EvaporationModelType::analytical;
83 EvaporativeMassFluxTemperatureEvaluationType interface_temperature_evaluation_type =
84 EvaporativeMassFluxTemperatureEvaluationType::local_value;
85
86 // source terms
87 struct EvaporativeDilationRate
88 {
89 bool enable = false;
90 InterfaceFluxType model = InterfaceFluxType::regularized;
91 } evaporative_dilation_rate;
92
94 {
95 bool enable = false;
96
97 std::string consider_enthalpy_transport_vapor_mass_flux = "default";
98
100
101 bool enable_linear_activation_ramp = true;
102
103 // only for the diffuse operator
104 EvaporCoolingInterfaceFluxType model = EvaporCoolingInterfaceFluxType::regularized;
105 LevelSet::DeltaApproximationPhaseWeightedData<number> delta_approximation_phase_weighted;
106
107 } evaporative_cooling;
108
110
111 EvaporationLevelSetSourceTermType formulation_source_term_level_set =
112 EvaporationLevelSetSourceTermType::interface_velocity_local;
113
114 struct HardtWondraData
115 {
116 number coefficient = 0.0;
117 } hardt_wondra;
118
119 struct PressureAwareData
120 {
121 std::vector<number> Km;
122 number ambient_gas_pressure = 0.0;
123 } pressure_aware;
124
125 struct AnalyticalModelData
126 {
127 std::string function = "not_initialized";
128 } analytical;
129
130 bool do_level_set_pressure_gradient_interpolation = false;
131
140 void
141 add_parameters(dealii::ParameterHandler &prm);
142
143 void
144 check_input_parameters(const MaterialData<number> &material) const;
145
156 void
157 post(const MaterialData<number> &material,
158 const bool use_volume_specific_thermal_capacity_for_phase_interpolation);
159 };
160} // namespace MeltPoolDG::Evaporation
Definition evaporative_cooling.hpp:64
number activation_temperature
Definition evaporative_cooling.hpp:137
Definition evaporation_data.hpp:15
interface_velocity_local
Definition evaporation_data.hpp:42
rhs local_value
Definition evaporation_data.hpp:59
BETTER_ENUM(EvaporationModelType, char, analytical, recoil_pressure, saturated_vapor_pressure, hardt_wondra, pressure_aware) BETTER_ENUM(EvaporationLevelSetSourceTermType
interface_velocity_sharp_heavy
Definition evaporation_data.hpp:40
interface_velocity_sharp
Definition evaporation_data.hpp:38
constexpr double invalid_double
Definition numbers.hpp:11
Definition recoil_pressure_data.hpp:37
Definition delta_approximation_phase_weighted_data.hpp:31
Definition material_data.hpp:84