include/meltpooldg/compressible_flow/data_types.hpp Source File

Developer Documentation: include/meltpooldg/compressible_flow/data_types.hpp Source File
Developer Documentation
data_types.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/tensor.h>
4#include <deal.II/base/vectorization.h>
5
8
9#include <type_traits>
10
12{
15 template <int dim, int n_species = 1>
16 constexpr unsigned int n_conserved_variables = dim + 2 + (n_species - 1);
17
20 template <int dim>
22 {
23 constexpr static unsigned int density = 0;
24 constexpr static unsigned int momentum = 1;
25 constexpr static unsigned int energy = dim + 1;
26 };
27
30 template <int dim>
32 {
33 static constexpr unsigned int pressure = 0;
34 static constexpr unsigned int velocity = 1;
35 static constexpr unsigned int temperature = dim + 1;
36 };
37
40 template <int dim,
41 typename number,
42 int n_species = 1,
43 typename VectorizedArrayType = dealii::VectorizedArray<number>>
45 dealii::Tensor<1, n_conserved_variables<dim, n_species>, VectorizedArrayType>;
46
49 template <int dim,
50 typename number,
51 int n_species = 1,
52 typename VectorizedArrayType = dealii::VectorizedArray<number>>
54 Tensor<1, n_conserved_variables<dim, n_species>, dealii::Tensor<1, dim, VectorizedArrayType>>;
55
58 template <int dim, typename number, int n_species = 1>
59 using FluxType = dealii::Tensor<1,
60 n_conserved_variables<dim, n_species>,
61 dealii::Tensor<1, dim, dealii::VectorizedArray<number>>>;
62
66 template <int dim, typename number, int n_species = 1>
68 dealii::Tensor<1, n_conserved_variables<dim, n_species>, dealii::VectorizedArray<number>>;
69
70 template <int dim, typename number, int n_species = 1>
72 dealii::Tensor<1,
73 n_conserved_variables<dim, n_species>,
74 dealii::Tensor<1, dim, dealii::VectorizedArray<number>>>;
75
78 template <int dim, typename number, int n_species = 1>
79 using SourceType =
80 dealii::Tensor<1, n_conserved_variables<dim, n_species>, dealii::VectorizedArray<number>>;
81
88 template <typename T, int dim>
89 concept IsConservedStateCompatible = is_dealii_tensor<std::remove_cvref_t<T>>::value and
90 T::rank == 1 and T::dimension >= n_conserved_variables<dim>;
91
101 template <typename T, int dim>
102 concept IsPrimitiveStateCompatible = is_dealii_tensor<std::remove_cvref_t<T>>::value and
103 T::rank == 1 and T::dimension >= n_conserved_variables<dim>;
104
111 template <typename T, int dim>
113 is_dealii_tensor<std::remove_cvref_t<T>>::value and T::rank == 1 and
114 T::dimension >= n_conserved_variables<dim> and T::value_type::rank == 1 and
115 T::value_type::dimension == dim;
116
117 template <typename T>
118 concept IsConservedView = requires(const T &view) {
119 {
120 view.density()
121 };
122 {
123 view.momentum(std::declval<unsigned int>())
124 };
125 {
126 view.total_energy()
127 };
128 };
129
130 template <typename T>
131 concept IsPrimitiveView = requires(const T &view) {
132 {
133 view.velocity(std::declval<unsigned int>())
134 };
135 {
136 view.pressure()
137 };
138 {
139 view.temperature()
140 };
141 };
142
143 template <typename T>
144 concept IsMaterialView = requires(const T &view) {
145 {
146 view.dynamic_viscosity()
147 };
148 {
149 view.thermal_conductivity()
150 };
151 {
152 view.heat_capacity_ratio()
153 };
154 {
155 view.specific_gas_constant()
156 };
157 {
158 view.specific_isobaric_heat()
159 };
160 };
161
162 template <typename T>
163 concept IsValueView = requires(const T &view) {
164 {
165 view.density()
166 };
167
168 {
169 view.momentum(std::declval<unsigned int>())
170 };
171
172 {
173 view.momentum()
174 };
175
176 {
177 view.velocity(std::declval<unsigned int>())
178 };
179
180 {
181 view.velocity()
182 };
183
184 {
185 view.total_energy()
186 };
187 };
188
189 template <typename T>
190 concept IsGradientView = requires(const T &view) {
191 {
192 view.grad_density()
193 };
194
195 {
196 view.grad_momentum(std::declval<unsigned int>())
197 };
198
199 {
200 view.grad_momentum()
201 };
202
203 {
204 view.grad_velocity(std::declval<unsigned int>())
205 };
206
207 {
208 view.grad_velocity()
209 };
210
211 {
212 view.grad_total_energy()
213 };
214 };
215
218 template <typename T, typename StateType, typename FluxType>
219 concept IsFluxKernel = requires(const T &kernel, const StateType &u) {
220 {
221 kernel.flux(u)
222 } -> std::same_as<FluxType>;
223 } || requires(const T &kernel, const StateType &u, const StateType &grad_u) {
224 {
225 kernel.flux(u, grad_u)
226 } -> std::same_as<FluxType>;
227 };
228} // namespace MeltPoolDG::CompressibleFlow
Definition data_types.hpp:219
Definition data_types.hpp:163
This file contains various functions that can be used to set and evaluate boundary conditions for the...
Definition boundary_condition_functions.hpp:17
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, dealii::VectorizedArray< number > > SourceType
Definition data_types.hpp:80
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > > FluxType
Definition data_types.hpp:61
constexpr unsigned int n_conserved_variables
Definition data_types.hpp:16
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, dealii::Tensor< 1, dim, VectorizedArrayType > > ConservedVariablesGradientType
Definition data_types.hpp:54
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, dealii::VectorizedArray< number > > FaceFluxType
Definition data_types.hpp:68
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, VectorizedArrayType > ConservedVariablesType
Definition data_types.hpp:45
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > > FaceGradientFluxType
Definition data_types.hpp:74
static constexpr unsigned int energy
Definition data_types.hpp:25
static constexpr unsigned int momentum
Definition data_types.hpp:24
static constexpr unsigned int density
Definition data_types.hpp:23
static constexpr unsigned int velocity
Definition data_types.hpp:34
static constexpr unsigned int pressure
Definition data_types.hpp:33
static constexpr unsigned int temperature
Definition data_types.hpp:35