include/meltpooldg/utilities/characteristic_functions.hpp Source File

Developer Documentation: include/meltpooldg/utilities/characteristic_functions.hpp Source File
Developer Documentation
characteristic_functions.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/numbers.h>
4
5#include <cmath>
6
7
9{
10 template <typename number>
11 inline number
12 tanh_characteristic_function(const number &distance, const number &eps)
13 {
14 return std::tanh(distance / (2. * eps));
15 }
16
17 template <typename number>
18 inline number
19 smoothed_heaviside(const number &distance, const number &eps)
20 {
21 if (distance > eps)
22 return 1;
23 else if (distance <= -eps)
24 return 0;
25 else
26 return (distance + eps) / (2. * eps) +
27 1. / (2. * dealii::numbers::PI) * std::sin(dealii::numbers::PI * distance / eps);
28 }
29
35 template <typename number>
36 number
37 heaviside(const number in, const number limit = 0.0)
38 {
39 return in > limit ? 1.0 : 0.0;
40 }
41
42 template <typename number>
43 std::vector<number>
44 heaviside(const std::vector<number> in, const number limit = 0.0)
45 {
46 std::vector<number> out(in.size());
47 for (unsigned int i = 0; i < in.size(); ++i)
48 out[i] = heaviside(in[i], limit);
49
50 return out;
51 }
52
53 template <typename number>
54 dealii::VectorizedArray<number>
55 heaviside(const dealii::VectorizedArray<number> &in, const number limit = 0.0)
56 {
57 return compare_and_apply_mask<dealii::SIMDComparison::greater_than>(
58 in, dealii::VectorizedArray<number>(limit), 1.0, 0.0);
59 }
60
61 template <typename number>
62 inline int
63 sgn(const number &x)
64 {
65 return x < 0 ? -1 : 1;
66 }
67} // namespace MeltPoolDG::CharacteristicFunctions
Definition characteristic_functions.hpp:9
number heaviside(const number in, const number limit=0.0)
Definition characteristic_functions.hpp:37
number smoothed_heaviside(const number &distance, const number &eps)
Definition characteristic_functions.hpp:19
number tanh_characteristic_function(const number &distance, const number &eps)
Definition characteristic_functions.hpp:12
int sgn(const number &x)
Definition characteristic_functions.hpp:63