include/meltpooldg/heat/laser_data.hpp Source File

Developer Documentation: include/meltpooldg/heat/laser_data.hpp Source File
Developer Documentation
laser_data.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/parameter_handler.h>
4#include <deal.II/base/point.h>
5#include <deal.II/base/tensor.h>
6#include <deal.II/base/types.h>
7
11
12#include <limits>
13#include <string>
14#include <vector>
15
16namespace MeltPoolDG::Heat
17{
19 LaserModelType,
20 char,
21 // must be specified by user
22 not_initialized,
23 // analytical laser model, see MeltPoolDG::Heat::LaserAnalyticalTemperatureField
24 analytical_temperature,
25 // volumetric heat source
26 volumetric,
27 // interfacial heat source; use continuum surface force modeling within the interface region
28 interface_projection_regularized,
29 // interfacial heat source; evaluate integral as surface integral over the sharp interface,
30 // determined by the margin cube algorithm
31 interface_projection_sharp,
32 // ONLY FOR MESH CONFORMING INTERFACES: evaluate integral as surface integral over the element
33 // faces that represent the interface
34 interface_projection_sharp_conforming,
35 // use radiative transport equation, see MeltPoolDG::RadiativeTransportOperation
36 RTE)
37
38 BETTER_ENUM(LaserIntensityProfileType,
39 char,
40 // uniform laser model, see MeltPoolDG::Heat::LaserHeatSourceUniform
42 // Gauss heat source distribution, see MeltPoolDG::Heat::LaserHeatSourceGauss
44 // Gusarov laser model, see MeltPoolDG::Heat::LaserHeatSourceGusarov
45 Gusarov)
46
47 template <typename number = double>
48 struct LaserData
49 {
50 LaserModelType model = LaserModelType::not_initialized;
51 LaserIntensityProfileType intensity_profile = LaserIntensityProfileType::Gauss;
52
53 number power = 0.0;
54 std::string power_over_time = "constant";
55 number power_start_time = 0.0;
56 number power_end_time = std::numeric_limits<number>::max();
57
58 // TODO these can be unified
59 number absorptivity_liquid = 1.0;
60 number absorptivity_gas = 1.0;
61
62 number scan_speed = 0.0;
63
64 template <int dim>
65 dealii::Point<dim, number>
67
68 // return unit beam direction vector
69 template <int dim>
70 dealii::Tensor<1, dim, number>
72
73 // return unit scan direction vector
74 template <int dim>
75 dealii::Tensor<1, dim, number>
77
78 number radius = 0.0;
79
80 // if model = RTE, this value must be set by the simulation
81 dealii::types::boundary_id rte_boundary_id = dealii::numbers::invalid_boundary_id;
82
84
86 {
87 number reflectivity = 0.0; // rho
88 number extinction_coefficient = 0.0; // beta
89 number layer_thickness = 0.0; // L
91
98
99 void
100 add_parameters(dealii::ParameterHandler &prm);
101
107 void
108 post(const unsigned int dim);
109
113 void
114 post(const unsigned int dim,
115 const bool heat_use_volume_specific_thermal_capacity_for_phase_interpolation,
116 const MaterialData<number> &material,
117 const bool heat_is_cut_operator);
118
119 void
121
122 private:
123 std::vector<number> starting_position; // default value will be set in post()
124 std::vector<number> beam_direction; // default value will be set in post()
125 std::vector<number> scan_direction; // default value will be set in post()
126 std::vector<number> beam_rotation_axis; // default value will be set in post()
128 };
129} // namespace MeltPoolDG::Heat
Definition apparent_capacity.hpp:9
uniform
Definition laser_data.hpp:41
Gauss
Definition laser_data.hpp:43
BETTER_ENUM(LaserModelType, char, not_initialized, analytical_temperature, volumetric, interface_projection_regularized, interface_projection_sharp, interface_projection_sharp_conforming, RTE) BETTER_ENUM(LaserIntensityProfileType
number ambient_temperature
Definition laser_data.hpp:96
number max_temperature
Definition laser_data.hpp:95
number temperature_x_to_y_ratio
Definition laser_data.hpp:94
Definition laser_data.hpp:86
number layer_thickness
Definition laser_data.hpp:89
number extinction_coefficient
Definition laser_data.hpp:88
number reflectivity
Definition laser_data.hpp:87
Definition laser_data.hpp:49
std::vector< number > starting_position
Definition laser_data.hpp:123
number beam_rotation_angle
Definition laser_data.hpp:127
number absorptivity_liquid
Definition laser_data.hpp:59
std::vector< number > beam_direction
Definition laser_data.hpp:124
std::vector< number > scan_direction
Definition laser_data.hpp:125
void check_input_parameters() const
Definition laser_data.cpp:233
struct MeltPoolDG::Heat::LaserData::GusarovData gusarov
void add_parameters(dealii::ParameterHandler &prm)
Definition laser_data.cpp:19
struct MeltPoolDG::Heat::LaserData::AnalyticalData analytical
dealii::Point< dim, number > get_starting_position() const
std::vector< number > beam_rotation_axis
Definition laser_data.hpp:126
std::string power_over_time
Definition laser_data.hpp:54
LevelSet::DeltaApproximationPhaseWeightedData< number > delta_approximation_phase_weighted
Definition laser_data.hpp:83
LaserModelType model
Definition laser_data.hpp:50
number power_end_time
Definition laser_data.hpp:56
number radius
Definition laser_data.hpp:78
void post(const unsigned int dim)
Definition laser_data.cpp:115
dealii::Tensor< 1, dim, number > get_scan_direction() const
number scan_speed
Definition laser_data.hpp:62
number power_start_time
Definition laser_data.hpp:55
dealii::Tensor< 1, dim, number > get_beam_direction() const
LaserIntensityProfileType intensity_profile
Definition laser_data.hpp:51
number absorptivity_gas
Definition laser_data.hpp:60
dealii::types::boundary_id rte_boundary_id
Definition laser_data.hpp:81
number power
Definition laser_data.hpp:53
Definition delta_approximation_phase_weighted_data.hpp:31
Definition material_data.hpp:84