include/meltpooldg/level_set/reinitialization_data.hpp Source File

Developer Documentation: include/meltpooldg/level_set/reinitialization_data.hpp Source File
Developer Documentation
reinitialization_data.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/exceptions.h>
4#include <deal.II/base/parameter_handler.h>
5
12
13#include <limits>
14#include <string>
15
17{
18 BETTER_ENUM(InterfaceThicknessParameterType,
19 char,
20 // epsilon = value * cell size
21 // interface thickness = value * 6 * cell size
22 proportional_to_cell_size,
23 // epsilon = value
24 // interface thickness = value * 6
25 absolute_value,
26 // epsilon = value * cell size / 6
27 // interface thickness = value * cell size
28 number_of_cells_across_interface)
29
30 BETTER_ENUM(HyperbolicWeightingFunctionType, char, smoothed_signum, initial_levelset)
31
32 BETTER_ENUM(ModelType, char, olsson2007, elliptic, geometric)
33
34 template <typename number>
35 struct ReinitializationEllipticData
36 {
37 number penalty_parameter = 0.;
38 std::string nonlinear_solver_type = "fixed point";
39 number interior_penalty_scaling_factor = 10.;
40
43 .field_correction_tolerance = std::numeric_limits<number>::min(),
44 .residual_tolerance = std::numeric_limits<number>::min(),
45 .max_nonlinear_iterations_alt = 0,
46 .field_correction_tolerance_alt = std::numeric_limits<number>::min(),
47 .residual_tolerance_alt = std::numeric_limits<number>::min(),
48 .verbosity_level = 1,
49 };
50
51 void
52 add_parameters(dealii::ParameterHandler &prm);
53 };
54
55 template <typename number>
57 {
58 number max_distance = 0.9 * std::numeric_limits<number>::max();
59
60 bool transform_to_tanh = true;
61
62 unsigned int verbosity = 0;
63
64 void
65 add_parameters(dealii::ParameterHandler &prm);
66 };
67
68
69 template <typename number>
71 {
73 {
74 unsigned int max_n_steps = 5;
78 number tolerance = std::numeric_limits<number>::min();
80
81 struct CG
82 {
83 std::string implementation = "meltpooldg";
85 } cg;
86
87 struct DG
88 {
89 number factor_diffusivity = 0.25;
90 number IP_diffusion = 100.0;
91
94
95 TimeIntegration::TimeIntegratorData<number> time_integration_data =
96 TimeIntegration::TimeIntegratorData<number>(
97 TimeIntegration::TimeIntegratorSchemes::LSRK_stage_5_order_4);
98
99 TimeIntegration::TimeIntegratorData<number> IMEX_integration_data =
100 TimeIntegration::TimeIntegratorData<number>(
101 TimeIntegration::TimeIntegratorSchemes::not_initialized);
102
103 number CFL = 1.0;
106
108
109 HyperbolicWeightingFunctionType hyperbolic_weighting_function_type =
110 HyperbolicWeightingFunctionType::smoothed_signum;
111
114
116 } dg;
117
118 void
119 add_parameters(dealii::ParameterHandler &prm);
120
121 void
122 post();
123
124 void
126 const FiniteElementData &fe,
127 const LinearSolverData<number> &linear_solver,
128 const InterfaceThicknessParameterType &interface_thickness_parameter_type) const;
129 };
130
131 template <typename number>
133 {
135
136 bool enable = true;
137
139
140 ModelType modeltype = ModelType::olsson2007;
141
142 PredictorData predictor;
143
144 LinearSolverData<number> linear_solver;
145
146 ReinitializationEllipticData<number> elliptic;
147
149
151
153 {
154 InterfaceThicknessParameterType type =
155 InterfaceThicknessParameterType::proportional_to_cell_size;
156
157 number value = 0.5;
159
160 void
161 add_parameters(dealii::ParameterHandler &prm);
162
163 void
164 check_input_parameters(const bool normal_vec_do_matrix_free) const;
165
166 void
167 post(const FiniteElementData &base_fe_data);
168
169 template <typename number2>
170 number2
172 {
174 {
175 case InterfaceThicknessParameterType::proportional_to_cell_size:
176 return cell_size * interface_thickness_parameter.value;
177 case InterfaceThicknessParameterType::absolute_value:
179 case InterfaceThicknessParameterType::number_of_cells_across_interface:
180 return interface_thickness_parameter.value * cell_size / 6.;
181 default:
182 AssertThrow(false, dealii::ExcNotImplemented());
183 return 0.0;
184 }
185 }
186 };
187} // namespace MeltPoolDG::LevelSet
This operation solves the reinitialization problem for a CG-FEM-based discrete level-set field by sol...
Definition advection_DG_operation.hpp:20
BETTER_ENUM(ConvectionStabilizationType, char, none, SUPG) template< typename number > struct AdvectionDiffusionData
Definition advection_diffusion_data.hpp:15
Definition finite_element_data.hpp:12
InterfaceThicknessParameterType type
Definition reinitialization_data.hpp:154
number value
Definition reinitialization_data.hpp:157
Definition reinitialization_data.hpp:133
LinearSolverData< number > linear_solver
Definition reinitialization_data.hpp:144
ReinitializationGeometricData< number > geometric
Definition reinitialization_data.hpp:150
ReinitializationHyperbolicData< number > hyperbolic
Definition reinitialization_data.hpp:148
PredictorData predictor
Definition reinitialization_data.hpp:142
void post(const FiniteElementData &base_fe_data)
Definition reinitialization_data.cpp:264
FiniteElementData fe
Definition reinitialization_data.hpp:138
ModelType modeltype
Definition reinitialization_data.hpp:140
void check_input_parameters(const bool normal_vec_do_matrix_free) const
Definition reinitialization_data.cpp:274
struct MeltPoolDG::LevelSet::ReinitializationData::InterfaceThickness interface_thickness_parameter
number2 compute_interface_thickness_parameter_epsilon(const number2 cell_size) const
Definition reinitialization_data.hpp:171
ReinitializationEllipticData< number > elliptic
Definition reinitialization_data.hpp:146
ReinitializationData()
Definition reinitialization_data.cpp:221
void add_parameters(dealii::ParameterHandler &prm)
Definition reinitialization_data.cpp:229
bool enable
Definition reinitialization_data.hpp:136
Definition reinitialization_data.hpp:57
unsigned int verbosity
Definition reinitialization_data.hpp:62
number max_distance
Definition reinitialization_data.hpp:58
void add_parameters(dealii::ParameterHandler &prm)
Definition reinitialization_data.cpp:35
bool transform_to_tanh
Definition reinitialization_data.hpp:60
Definition reinitialization_data.hpp:82
number tangential_diffusion_factor
Definition reinitialization_data.hpp:84
std::string implementation
Definition reinitialization_data.hpp:83
Definition reinitialization_data.hpp:88
number factor_diffusivity
Definition reinitialization_data.hpp:89
bool use_const_gradient_in_RI
Definition reinitialization_data.hpp:92
TimeIntegration::TimeIntegratorData< number > IMEX_integration_data
Definition reinitialization_data.hpp:99
number signum_smoothness_paramater
Definition reinitialization_data.hpp:105
TimeIntegration::TimeIntegratorData< number > time_integration_data
Definition reinitialization_data.hpp:95
bool do_CFL_based_time_stepping
Definition reinitialization_data.hpp:93
number CFL
Definition reinitialization_data.hpp:103
bool use_directed_diffusion_stabilization
Definition reinitialization_data.hpp:107
HyperbolicWeightingFunctionType hyperbolic_weighting_function_type
Definition reinitialization_data.hpp:109
bool use_spatially_constant_diffusion
Definition reinitialization_data.hpp:112
number gradient_error_time_derivative_threshold
Definition reinitialization_data.hpp:115
bool use_interface_movement_penalization
Definition reinitialization_data.hpp:113
number IP_diffusion
Definition reinitialization_data.hpp:90
number avoid_zero_division_smoothed_signum
Definition reinitialization_data.hpp:104
unsigned int max_n_steps
Definition reinitialization_data.hpp:74
number pseudo_time_step_size
Definition reinitialization_data.hpp:75
number pseudo_time_step_factor
Definition reinitialization_data.hpp:76
Definition reinitialization_data.hpp:71
struct MeltPoolDG::LevelSet::ReinitializationHyperbolicData::PseudoTimeSteppingData pseudo_time_stepping
struct MeltPoolDG::LevelSet::ReinitializationHyperbolicData::CG cg
void post()
Definition reinitialization_data.cpp:188
void add_parameters(dealii::ParameterHandler &prm)
Definition reinitialization_data.cpp:53
void check_input_parameters(const FiniteElementData &fe, const LinearSolverData< number > &linear_solver, const InterfaceThicknessParameterType &interface_thickness_parameter_type) const
Definition reinitialization_data.cpp:198
struct MeltPoolDG::LevelSet::ReinitializationHyperbolicData::DG dg
Definition nonlinear_solver_data.hpp:12
int max_nonlinear_iterations
Definition nonlinear_solver_data.hpp:13