include/meltpooldg/phase_change/recoil_pressure_operation.hpp Source File

Developer Documentation: include/meltpooldg/phase_change/recoil_pressure_operation.hpp Source File
Developer Documentation
recoil_pressure_operation.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/exceptions.h>
4#include <deal.II/base/vectorization.h>
5
6#include <deal.II/lac/full_matrix.h>
7#include <deal.II/lac/la_parallel_block_vector.h>
8#include <deal.II/lac/la_parallel_vector.h>
9
14
15#include <memory>
16
17
19{
23 template <typename number>
25 {
26 public:
27 virtual ~RecoilPressureModelBase() = default;
28
29 virtual number
30 compute_recoil_pressure_coefficient(const number /*T*/) const
31 {
32 AssertThrow(false, dealii::ExcNotImplemented());
33 };
34
35 virtual dealii::VectorizedArray<number>
36 compute_recoil_pressure_coefficient(const dealii::VectorizedArray<number> & /*T*/) const
37 {
38 AssertThrow(false, dealii::ExcNotImplemented());
39 };
40
41 virtual number
43 const number /*m_dot*/,
44 const number /*delta_coefficient*/) const
45 {
46 AssertThrow(false, dealii::ExcNotImplemented());
47 };
48
49 virtual dealii::VectorizedArray<number>
51 const dealii::VectorizedArray<number> & /*T*/,
52 const dealii::VectorizedArray<number> & /*m_dot*/,
53 const dealii::VectorizedArray<number> & /*delta_coefficient*/) const
54 {
55 AssertThrow(false, dealii::ExcNotImplemented());
56 };
57 };
58
65 template <typename number>
67 {
68 //@todo: to avoid compiler warnings regarding hidden overriden functions
70
71 private:
73 const number boiling_temperature;
74 const number molar_mass;
77
78 public:
80 const number boiling_temperature,
81 const number molar_mass,
82 const number latent_heat_evaporation);
83
110 number
111 compute_recoil_pressure_coefficient(const number T) const final;
112
113 dealii::VectorizedArray<number>
114 compute_recoil_pressure_coefficient(const dealii::VectorizedArray<number> &T) const final;
115 };
116
117 template <typename number>
119 {
120 //@todo: to avoid compiler warnings regarding hidden overriden functions
122
123 private:
126 const number density_coeff;
128
129 public:
131 const MaterialData<number> &material_data);
132
150 number
152 const number m_dot,
153 const number delta_coefficient) const final;
154
155 dealii::VectorizedArray<number>
157 const dealii::VectorizedArray<number> &T,
158 const dealii::VectorizedArray<number> &m_dot,
159 const dealii::VectorizedArray<number> &delta_coefficient) const final;
160 };
161
162
170 template <typename number>
172 {
173 //@todo: to avoid compiler warnings regarding hidden overriden functions
175
176 public:
187 const number boiling_temperature,
188 const number molar_mass,
189 const number latent_heat_evaporation);
190
201 number
202 compute_recoil_pressure_coefficient(const number T) const final;
203
209 dealii::VectorizedArray<number>
210 compute_recoil_pressure_coefficient(const dealii::VectorizedArray<number> &T) const final;
211
212 private:
215
218
220 const number molar_mass;
221
224
226 std::vector<number> Kp;
227
230 };
231
232
239 template <int dim, typename number>
241 {
242 private:
243 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
244 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
245
247 /*
248 * indices for getting DoFHandler<dim> and Quadrature<dim> of relevant subproblems
249 */
250 const unsigned int flow_vel_dof_idx;
251 const unsigned int flow_vel_quad_idx;
252 const unsigned int flow_pressure_dof_idx;
253 const unsigned int ls_dof_idx;
254 const unsigned int heat_dof_idx;
255
258
259 const RecoilPressureModelType model_type;
260
261 std::unique_ptr<const RecoilPressureModelBase<number>> recoil_pressure_model;
262
263 std::unique_ptr<const LevelSet::DeltaApproximationBase<number>> delta_phase_weighted;
264
265 // For the one phase cut temperature, we need a dummy temperature value for the gas domain -
266 // which doesn't have any temperature information. We use the value that is just below the
267 // recoil pressure activation temperature, so the recoil pressure will reliably be zero in that
268 // domain.
269 const number dummy_temperature;
270
271 public:
273 const RecoilPressureData<number> &recoil,
274 const MaterialData<number> &material,
275 const unsigned int flow_vel_dof_idx_in,
276 const unsigned int flow_vel_quad_idx_in,
277 const unsigned int flow_pressure_dof_idx_in,
278 const unsigned int ls_dof_idx_in,
279 const unsigned int heat_dof_idx_in);
280
286 void
288 const VectorType &level_set_as_heaviside,
289 const VectorType &temperature,
290 const VectorType &evaporative_mass_flux,
291 const unsigned int evapor_dof_idx,
292 bool zero_out = true) const;
293 };
294
295} // namespace MeltPoolDG::Evaporation
Definition recoil_pressure_operation.hpp:119
const number boiling_temperature
Definition recoil_pressure_operation.hpp:125
const RecoilPressurePhenomenologicalModel< number > recoil_phenomenological
Definition recoil_pressure_operation.hpp:127
number compute_recoil_pressure_coefficient(const number T, const number m_dot, const number delta_coefficient) const final
Definition recoil_pressure_operation.templates.hpp:17
const number density_coeff
Definition recoil_pressure_operation.hpp:126
const RecoilPressureData< number > & recoil_data
Definition recoil_pressure_operation.hpp:124
Definition recoil_pressure_operation.hpp:25
virtual dealii::VectorizedArray< number > compute_recoil_pressure_coefficient(const dealii::VectorizedArray< number > &) const
Definition recoil_pressure_operation.hpp:36
virtual dealii::VectorizedArray< number > compute_recoil_pressure_coefficient(const dealii::VectorizedArray< number > &, const dealii::VectorizedArray< number > &, const dealii::VectorizedArray< number > &) const
Definition recoil_pressure_operation.hpp:50
virtual number compute_recoil_pressure_coefficient(const number) const
Definition recoil_pressure_operation.hpp:30
virtual number compute_recoil_pressure_coefficient(const number, const number, const number) const
Definition recoil_pressure_operation.hpp:42
This class implements the recoil pressure model computed with pressure-aware boundary conditions,...
Definition recoil_pressure_operation.hpp:172
const RecoilPressureData< number >::PressureAwareData pressure_aware_data
Data structure holding fitting parameters (Kp) and ambient gas pressure.
Definition recoil_pressure_operation.hpp:214
std::vector< number > Kp
Fitting parameters for empirical correlations in the free-surface model.
Definition recoil_pressure_operation.hpp:226
const number latent_heat_evaporation
Latent heat of evaporation.
Definition recoil_pressure_operation.hpp:223
const number boiling_temperature
Boiling temperature at given build chamber pressure level.
Definition recoil_pressure_operation.hpp:217
number compute_recoil_pressure_coefficient(const number T) const final
Compute recoil pressure coefficient as.
Definition recoil_pressure_operation.templates.hpp:114
const number ambient_gas_pressure
Ambient gas pressure (build chamber pressure)
Definition recoil_pressure_operation.hpp:229
const number molar_mass
Molar mass.
Definition recoil_pressure_operation.hpp:220
Definition recoil_pressure_operation.hpp:241
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition recoil_pressure_operation.hpp:244
const ScratchData< dim, dim, number > & scratch_data
Definition recoil_pressure_operation.hpp:246
const bool do_level_set_pressure_gradient_interpolation
Definition recoil_pressure_operation.hpp:256
std::unique_ptr< const RecoilPressureModelBase< number > > recoil_pressure_model
Definition recoil_pressure_operation.hpp:261
std::unique_ptr< const LevelSet::DeltaApproximationBase< number > > delta_phase_weighted
Definition recoil_pressure_operation.hpp:263
const unsigned int ls_dof_idx
Definition recoil_pressure_operation.hpp:253
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition recoil_pressure_operation.hpp:243
void compute_recoil_pressure_force(VectorType &force_rhs, const VectorType &level_set_as_heaviside, const VectorType &temperature, const VectorType &evaporative_mass_flux, const unsigned int evapor_dof_idx, bool zero_out=true) const
Definition recoil_pressure_operation.cpp:144
const unsigned int flow_vel_dof_idx
Definition recoil_pressure_operation.hpp:250
const unsigned int flow_vel_quad_idx
Definition recoil_pressure_operation.hpp:251
const RecoilPressureModelType model_type
Definition recoil_pressure_operation.hpp:259
dealii::FullMatrix< number > ls_to_pressure_grad_interpolation_matrix
Definition recoil_pressure_operation.hpp:257
const unsigned int flow_pressure_dof_idx
Definition recoil_pressure_operation.hpp:252
const unsigned int heat_dof_idx
Definition recoil_pressure_operation.hpp:254
const number dummy_temperature
Definition recoil_pressure_operation.hpp:269
Definition recoil_pressure_operation.hpp:67
const number boiling_temperature
Definition recoil_pressure_operation.hpp:73
const number latent_heat_evaporation
Definition recoil_pressure_operation.hpp:75
number compute_recoil_pressure_coefficient(const number T) const final
Definition recoil_pressure_operation.templates.hpp:74
number activation_ramp_derivative
Definition recoil_pressure_operation.hpp:76
const number molar_mass
Definition recoil_pressure_operation.hpp:74
const RecoilPressureData< number > & recoil_data
Definition recoil_pressure_operation.hpp:72
Container for shared scratch data between operations/operators.
Definition scratch_data.hpp:61
Definition evaporation_data.hpp:15
Data structure holding fitting parameters (Kp) and ambient gas pressure for the pressure-aware recoil...
Definition recoil_pressure_data.hpp:89
Definition recoil_pressure_data.hpp:37
Definition material_data.hpp:84