include/meltpooldg/compressible_flow/boundary_condition_functions.hpp Source File

Developer Documentation: include/meltpooldg/compressible_flow/boundary_condition_functions.hpp Source File
Developer Documentation
boundary_condition_functions.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <deal.II/base/exception_macros.h>
8#include <deal.II/base/function.h>
9
12#include <meltpooldg/utilities/better_enum.hpp>
13
14#include <memory>
15
17{
19 BETTER_ENUM(RampUpType, char, none, linear, exponential, cosine);
20
28 template <int dim, typename number>
29 class ConservativeVariablesFunction : public dealii::Function<dim, number>
30 {
31 public:
42 const number initial_time,
43 const std::shared_ptr<dealii::Function<dim, number>> density,
44 const std::shared_ptr<dealii::Function<dim, number>> velocity,
45 const std::shared_ptr<dealii::Function<dim, number>> inner_energy,
46 const std::shared_ptr<dealii::Function<dim, number>> mass_fractions);
47
57 const number initial_time,
58 const std::shared_ptr<dealii::Function<dim, number>> density,
59 const std::shared_ptr<dealii::Function<dim, number>> velocity,
60 const std::shared_ptr<dealii::Function<dim, number>> inner_energy);
61
74 ConservativeVariablesFunction(const number initial_time,
75 const std::string &density_function_string,
76 const std::string &velocity_function_string,
77 const std::string &inner_energy_function_string,
78 const std::string &mass_fraction_functions_string,
79 const unsigned n_mass_fractions);
80
81
92 ConservativeVariablesFunction(const number initial_time,
93 const std::string &density_function_string,
94 const std::string &velocity_function_string,
95 const std::string &inner_energy_function_string);
96
105 void
106 set_velocity_ramp_up(const number duration, const RampUpType type)
107 {
108 velocity_ramp_up.duration = duration;
109 velocity_ramp_up.type = type;
110 }
111
117 void
118 set_time(const number new_time) override;
119
138 number
139 value(const dealii::Point<dim, number> &loc, const unsigned int component) const override;
140
141 private:
143 const std::shared_ptr<dealii::Function<dim, number>> density;
144
146 const std::shared_ptr<dealii::Function<dim, number>> velocity;
147
149 const std::shared_ptr<dealii::Function<dim, number>> inner_energy;
150
152 const std::shared_ptr<dealii::Function<dim, number>> mass_fractions;
153
155 {
157 number duration{0.};
158
160 RampUpType type{RampUpType::none};
161 };
162
165 };
166
167
169 BETTER_ENUM(FreeJetProfile, char, cosine, constant)
170
171
177 template <int dim, typename number>
178 class FreeJetVelocityFunction : public dealii::Function<dim, number>
179 {
180 public:
190 const FreeJetProfile free_jet_profile,
191 const dealii::Point<dim, number> free_jet_center,
192 const number free_jet_diameter);
193
203 number
204 value(const dealii::Point<dim, number> &location, const unsigned int component) const final;
205
206 private:
208 const FreeJetProfile free_jet_profile;
209
211 const dealii::Point<dim, number> free_jet_center;
212
214 const number free_jet_radius;
215
218 };
219
220 template <int dim, typename number>
221 class FreeJetInflow : public dealii::Function<dim, number>
222 {
223 public:
235 FreeJetInflow(const number initial_time,
236 const number density,
237 const number inner_energy,
238 const number peak_inflow_velocity,
239 const FreeJetProfile free_jet_profile,
240 const dealii::Point<dim, number> free_jet_center,
241 const number free_jet_diameter);
242
255 FreeJetInflow(const number initial_time,
256 const number density,
257 const number inner_energy,
258 const std::vector<number> &species_mass_fractions,
259 const number peak_inflow_velocity,
260 const FreeJetProfile free_jet_profile,
261 const dealii::Point<dim, number> free_jet_center,
262 const number free_jet_diameter);
263
272 void
273 set_velocity_ramp_up(const number duration, const RampUpType type);
274
280 void
281 set_time(const number new_time) override;
282
292 number
293 value(const dealii::Point<dim, number> &location, const unsigned int component) const final;
294
295 private:
298
301 unsigned n_mass_fractions = 1;
302
303 struct
304 {
307
309 dealii::Point<dim, number> jet_hole_center;
311
319 bool
320 point_inside_jet_hole(const dealii::Point<dim, number> &location) const;
321 };
322
323} // namespace MeltPoolDG::CompressibleFlow
Definition boundary_condition_functions.hpp:30
void set_time(const number new_time) override
Definition boundary_condition_functions.cpp:79
number value(const dealii::Point< dim, number > &loc, const unsigned int component) const override
Evaluates the conservative variable value for a given component at a specified location.
Definition boundary_condition_functions.cpp:94
void set_velocity_ramp_up(const number duration, const RampUpType type)
Definition boundary_condition_functions.hpp:106
RampUpParameters velocity_ramp_up
Ramp-up parameters for the velocity function.
Definition boundary_condition_functions.hpp:164
const std::shared_ptr< dealii::Function< dim, number > > velocity
Vectorial function describing the velocity field.
Definition boundary_condition_functions.hpp:146
const std::shared_ptr< dealii::Function< dim, number > > mass_fractions
Function describing the mass fractions for multi-component flow cases.
Definition boundary_condition_functions.hpp:152
const std::shared_ptr< dealii::Function< dim, number > > inner_energy
Function describing the field of the specific total energy.
Definition boundary_condition_functions.hpp:149
const std::shared_ptr< dealii::Function< dim, number > > density
Function describing the density field.
Definition boundary_condition_functions.hpp:143
Definition boundary_condition_functions.hpp:222
ConservativeVariablesFunction< dim, number > conservative_variables
The function used to compute the conservative variable values.
Definition boundary_condition_functions.hpp:297
number value(const dealii::Point< dim, number > &location, const unsigned int component) const final
Definition boundary_condition_functions.cpp:271
void set_velocity_ramp_up(const number duration, const RampUpType type)
Definition boundary_condition_functions.cpp:245
dealii::Point< dim, number > jet_hole_center
The center of the circular area where the free jet inflow is applied.
Definition boundary_condition_functions.hpp:309
number jet_hole_radius
The radius of the circular area where the free jet inflow is applied.
Definition boundary_condition_functions.hpp:306
void set_time(const number new_time) override
Definition boundary_condition_functions.cpp:252
struct MeltPoolDG::CompressibleFlow::FreeJetInflow::@0 free_jet_parameters
unsigned n_mass_fractions
Definition boundary_condition_functions.hpp:301
bool point_inside_jet_hole(const dealii::Point< dim, number > &location) const
Definition boundary_condition_functions.cpp:259
Enum for the type of velocity profile of a free jet inflow.
Definition boundary_condition_functions.hpp:179
number value(const dealii::Point< dim, number > &location, const unsigned int component) const final
Definition boundary_condition_functions.cpp:157
const dealii::Point< dim, number > free_jet_center
The center of the circular area where the free jet inflow is applied.
Definition boundary_condition_functions.hpp:211
const number peak_inflow_velocity
The maximum velocity at the center of the free jet.
Definition boundary_condition_functions.hpp:217
const number free_jet_radius
The radius of the circular area where the free jet inflow is applied.
Definition boundary_condition_functions.hpp:214
const FreeJetProfile free_jet_profile
The type of velocity profile within the free jet.
Definition boundary_condition_functions.hpp:208
This file contains various functions that can be used to set and evaluate boundary conditions for the...
Definition boundary_condition_functions.hpp:17
BETTER_ENUM(RampUpType, char, none, linear, exponential, cosine)
Enum for the type of ramp up function used for the velocity at an inflow boundary.
constant
Definition material_data.hpp:55
number duration
Ramp-up duration.
Definition boundary_condition_functions.hpp:157
RampUpType type
Ramp-up function type.
Definition boundary_condition_functions.hpp:160