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,
31 typename number,
32 int n_species = 1,
33 typename VectorizedArrayType = dealii::VectorizedArray<number>>
35 dealii::Tensor<1, n_conserved_variables<dim, n_species>, VectorizedArrayType>;
36
39 template <int dim,
40 typename number,
41 int n_species = 1,
42 typename VectorizedArrayType = dealii::VectorizedArray<number>>
44 Tensor<1, n_conserved_variables<dim, n_species>, dealii::Tensor<1, dim, VectorizedArrayType>>;
45
48 template <int dim, typename number, int n_species = 1>
49 using FluxType = dealii::Tensor<1,
50 n_conserved_variables<dim, n_species>,
51 dealii::Tensor<1, dim, dealii::VectorizedArray<number>>>;
52
56 template <int dim, typename number, int n_species = 1>
58 dealii::Tensor<1, n_conserved_variables<dim, n_species>, dealii::VectorizedArray<number>>;
59
60 template <int dim, typename number, int n_species = 1>
62 dealii::Tensor<1,
63 n_conserved_variables<dim, n_species>,
64 dealii::Tensor<1, dim, dealii::VectorizedArray<number>>>;
65
68 template <int dim, typename number, int n_species = 1>
69 using SourceType =
70 dealii::Tensor<1, n_conserved_variables<dim, n_species>, dealii::VectorizedArray<number>>;
71
78 template <typename T, int dim>
79 concept IsConservedStateCompatible = is_dealii_tensor<std::remove_cvref_t<T>>::value and
80 T::rank == 1 and T::dimension >= n_conserved_variables<dim>;
81
88 template <typename T, int dim>
90 is_dealii_tensor<std::remove_cvref_t<T>>::value and T::rank == 1 and
91 T::dimension >= n_conserved_variables<dim> and T::value_type::rank == 1 and
92 T::value_type::dimension == dim;
93
94 template <typename T>
95 concept IsConservedView = requires(const T &view) {
96 {
97 view.density()
98 };
99 {
100 view.momentum(std::declval<unsigned int>())
101 };
102 {
103 view.total_energy()
104 };
105 };
106
107 template <typename T>
108 concept IsPrimitiveView = requires(const T &view) {
109 {
110 view.velocity(std::declval<unsigned int>())
111 };
112 {
113 view.pressure()
114 };
115 {
116 view.temperature()
117 };
118 };
119
120 template <typename T>
121 concept IsMaterialView = requires(const T &view) {
122 {
123 view.dynamic_viscosity()
124 };
125 {
126 view.thermal_conductivity()
127 };
128 {
129 view.heat_capacity_ratio()
130 };
131 {
132 view.specific_gas_constant()
133 };
134 {
135 view.specific_isobaric_heat()
136 };
137 };
138
139 template <typename T>
140 concept IsValueView = requires(const T &view) {
141 {
142 view.density()
143 };
144
145 {
146 view.momentum(std::declval<unsigned int>())
147 };
148
149 {
150 view.momentum()
151 };
152
153 {
154 view.velocity(std::declval<unsigned int>())
155 };
156
157 {
158 view.velocity()
159 };
160
161 {
162 view.total_energy()
163 };
164 };
165
166 template <typename T>
167 concept IsGradientView = requires(const T &view) {
168 {
169 view.grad_density()
170 };
171
172 {
173 view.grad_momentum(std::declval<unsigned int>())
174 };
175
176 {
177 view.grad_momentum()
178 };
179
180 {
181 view.grad_velocity(std::declval<unsigned int>())
182 };
183
184 {
185 view.grad_velocity()
186 };
187
188 {
189 view.grad_total_energy()
190 };
191 };
192
195 template <typename T, typename StateType, typename FluxType>
196 concept IsFluxKernel = requires(const T &kernel, const StateType &u) {
197 {
198 kernel.flux(u)
199 } -> std::same_as<FluxType>;
200 } || requires(const T &kernel, const StateType &u, const StateType &grad_u) {
201 {
202 kernel.flux(u, grad_u)
203 } -> std::same_as<FluxType>;
204 };
205} // namespace MeltPoolDG::CompressibleFlow
Definition data_types.hpp:196
Definition data_types.hpp:140
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:70
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > > FluxType
Definition data_types.hpp:51
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:44
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, dealii::VectorizedArray< number > > FaceFluxType
Definition data_types.hpp:58
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, VectorizedArrayType > ConservedVariablesType
Definition data_types.hpp:35
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > > FaceGradientFluxType
Definition data_types.hpp:64
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