include/meltpooldg/utilities/limiters.hpp Source File

Developer Documentation: include/meltpooldg/utilities/limiters.hpp Source File
Developer Documentation
limiters.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/tensor.h>
5#include <deal.II/base/vectorization.h>
6
7#include <deal.II/matrix_free/matrix_free.h>
8
9#include <meltpooldg/utilities/better_enum.hpp>
12
13#include <array>
14#include <vector>
15
17{
25 BETTER_ENUM(LimiterType, char, tvd_minmod, tvb_minmod)
26
27
30 template <typename number>
32 {
34 bool apply_limiter = false;
35
37 std::vector<number> tvb_constant;
38
40 LimiterType type = LimiterType::tvd_minmod;
41
47 void
48 add_parameters(dealii::ParameterHandler &prm);
49 };
50
67 template <int n_components, typename TensorType, typename Container>
68 TensorType
69 tvd_minmod(const Container &values);
70
96 template <typename number, int n_components, typename TensorType, typename Container>
97 TensorType
98 tvb_minmod(const Container &values,
99 const std::vector<number> &tvb_constant,
100 const number cell_size);
101
120 template <int dim, int n_components, typename number>
121 std::array<dealii::Tensor<1, n_components, number>, dim>
123 const std::vector<std::pair<dealii::Tensor<1, n_components, number>,
124 dealii::Tensor<1, n_components, dealii::Tensor<1, dim, number>>>>
125 &cell_average_values,
126 const typename dealii::Triangulation<dim>::active_cell_iterator &cell,
127 const LimiterData<number> &limiter_data);
128
143 template <int dim,
144 int n_components,
145 typename number,
146 typename VectorizedArrayType = dealii::VectorizedArray<number>,
147 typename VectorType = dealii::LinearAlgebra::distributed::Vector<number>>
148 void
150 VectorType &dst,
151 const VectorType &src,
152 const LimiterData<number> &limiter_data);
153
154} // namespace MeltPoolDG::Utilities
Definition utilities_matrixfree.hpp:13
std::array< dealii::Tensor< 1, n_components, number >, dim > compute_minmod_type_limited_slopes(const std::vector< std::pair< dealii::Tensor< 1, n_components, number >, dealii::Tensor< 1, n_components, dealii::Tensor< 1, dim, number > > > > &cell_average_values, const typename dealii::Triangulation< dim >::active_cell_iterator &cell, const LimiterData< number > &limiter_data)
Definition limiters.templates.hpp:126
TensorType tvb_minmod(const Container &values, const std::vector< number > &tvb_constant, const number cell_size)
Definition limiters.templates.hpp:79
void apply_minmod_type_limiter(const MatrixFreeContext< dim, number > &mf_context, VectorType &dst, const VectorType &src, const LimiterData< number > &limiter_data)
Definition limiters.templates.hpp:255
TensorType tvd_minmod(const Container &values)
Definition limiters.templates.hpp:44
BETTER_ENUM(MaterialTemplate, char, none, stainless_steel, Ti64, Ti64Benchmark) BETTER_ENUM(SolidLiquidPropertiesTransitionType
Definition matrix_free_util.hpp:21
Definition limiters.hpp:32
bool apply_limiter
Boolean flag indicating whether to apply the limiter or not.
Definition limiters.hpp:34
std::vector< number > tvb_constant
The TVB constant used in the TVB minmod limiter.
Definition limiters.hpp:37
LimiterType type
The type of limiter to apply.
Definition limiters.hpp:40
void add_parameters(dealii::ParameterHandler &prm)
Definition limiters.templates.hpp:28