include/meltpooldg/compressible_flow/state_views_multi_species.hpp Source File

Developer Documentation: include/meltpooldg/compressible_flow/state_views_multi_species.hpp Source File
Developer Documentation
state_views_multi_species.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
13
43{
57 template <int dim, int n_species, IsConservedStateCompatible<dim> StateType>
59 : public DofValueMixin<dim,
60 typename StateType::value_type,
61 MultiSpeciesDofValueView<dim, n_species, StateType>>,
62 public SpeciesTransport::DofValueMixin<n_conserved_variables<dim>,
63 n_species,
64 StateType,
65 MultiSpeciesDofValueView<dim, n_species, StateType>>
66 {
67 using state_type = std::remove_cvref_t<StateType>;
68
69 MultiSpeciesDofValueView(StateType &state)
70 : flow_state(&state)
71 {}
72
77
78 StateType &
79 value() const
80 {
81 return *flow_state;
82 }
83
84 private:
85 mutable StateType *flow_state;
86 };
87
101 template <int dim, int n_species, typename number, IsConservedStateCompatible<dim> Value>
103 : public Flow::EOSValueMixin<dim,
104 typename Value::value_type,
105 MultiSpeciesDofStateView<dim, n_species, number, Value>>,
106 public DofValueMixin<dim,
107 typename Value::value_type,
108 MultiSpeciesDofStateView<dim, n_species, number, Value>>,
110 n_conserved_variables<dim>,
111 n_species,
112 Value,
113 MultiSpeciesDofStateView<dim, n_species, number, Value>>,
114 public MultiSpeciesMaterialMixin<n_species,
115 number,
116 typename Value::value_type,
117 MultiSpeciesDofStateView<dim, n_species, number, Value>>,
119 n_species,
120 Value,
121 MultiSpeciesDofStateView<dim, n_species, number, Value>>
122 {
123 using state_type = std::remove_cvref_t<Value>;
124
125 // Only ideal gas is supported for multi-species flow
126 static constexpr std::array<EquationOfState, 1> supported_eos = {{EquationOfState::ideal_gas}};
127
129 : flow_state(&value_state)
131 {}
132
138
139 EquationOfState
140 eos_type() const
141 {
142 return material_data.eos_type;
143 }
144
145 Value &
146 value() const
147 {
148 return *flow_state;
149 }
150
152 material() const
153 {
154 return material_data;
155 }
156
157 private:
158 mutable Value *flow_state;
160 };
161
177 template <int dim,
178 int n_species,
179 typename number,
183 : public DofValueMixin<
184 dim,
185 typename Value::value_type,
186 MultiSpeciesDofValueAndGradientStateView<dim, n_species, number, Value, Gradient>>,
187 public DofGradientMixin<
188 dim,
189 typename Gradient::value_type::value_type,
190 MultiSpeciesDofValueAndGradientStateView<dim, n_species, number, Value, Gradient>>,
192 n_conserved_variables<dim>,
193 n_species,
194 Value,
195 MultiSpeciesDofValueAndGradientStateView<dim, n_species, number, Value, Gradient>>,
197 n_conserved_variables<dim>,
198 n_species,
199 Value,
200 Gradient,
201 MultiSpeciesDofValueAndGradientStateView<dim, n_species, number, Value, Gradient>>,
202 public Flow::EOSValueMixin<
203 dim,
204 typename Value::value_type,
205 MultiSpeciesDofValueAndGradientStateView<dim, n_species, number, Value, Gradient>>,
207 dim,
208 MultiSpeciesDofValueAndGradientStateView<dim, n_species, number, Value, Gradient>>,
210 n_species,
211 number,
212 typename Value::value_type,
213 MultiSpeciesDofValueAndGradientStateView<dim, n_species, number, Value, Gradient>>,
215 n_species,
216 Value,
217 MultiSpeciesDofValueAndGradientStateView<dim, n_species, number, Value, Gradient>>
218 {
219 using state_type = std::remove_cvref_t<Value>;
220 using gradient_type = std::remove_cvref_t<Gradient>;
221
222 // Only ideal gas is supported for multi-species flow
223 static constexpr std::array<EquationOfState, 1> supported_eos = {{EquationOfState::ideal_gas}};
224
226 Gradient &gradient_state,
228 : flow_state(&value_state)
229 , flow_gradient_state(&gradient_state)
231 {}
232
233 Value &
234 value() const
235 {
236 return *flow_state;
237 }
238
239 Gradient &
241 {
242 return *flow_gradient_state;
243 }
244
245 EquationOfState
246 eos_type() const
247 {
248 return material_data.eos_type;
249 }
250
252 material() const
253 {
254 return material_data;
255 }
256
257 private:
261 };
262
272 template <int dim, int n_species, typename FluxTypeIn>
274 : public FluxMixin<dim, MultiSpeciesFluxView<dim, n_species, FluxTypeIn>>,
275 public SpeciesTransport::FluxMixin<n_conserved_variables<dim>,
276 n_species,
277 MultiSpeciesFluxView<dim, n_species, FluxTypeIn>>
278 {
279 using FluxType = FluxTypeIn;
280
282 : flux(&flux_in)
283 {}
284
289
290 FluxType &
291 value() const
292 {
293 return *flux;
294 }
295
296 private:
297 mutable FluxType *flux;
298 };
299} // namespace MeltPoolDG::CompressibleFlow
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::Tensor< 1, dim, dealii::VectorizedArray< number > > > FluxType
Definition data_types.hpp:51
Definition state_views_mixins.hpp:127
Definition state_views_mixins.hpp:34
Definition state_views_mixins.hpp:226
Collection of material parameters for a specific fluid phase.
Definition material.hpp:119
Definition state_views_multi_species.hpp:122
EquationOfState eos_type() const
Definition state_views_multi_species.hpp:140
const MaterialPhaseData< number > & material_data
Definition state_views_multi_species.hpp:159
std::remove_cvref_t< Value > state_type
Definition state_views_multi_species.hpp:123
static constexpr std::array< EquationOfState, 1 > supported_eos
Definition state_views_multi_species.hpp:126
Value & value() const
Definition state_views_multi_species.hpp:146
MultiSpeciesDofStateView(Value &value_state, const MaterialPhaseData< number > &material_data)
Definition state_views_multi_species.hpp:128
const MaterialPhaseData< number > & material() const
Definition state_views_multi_species.hpp:152
Value * flow_state
Definition state_views_multi_species.hpp:158
Gradient * flow_gradient_state
Definition state_views_multi_species.hpp:259
static constexpr std::array< EquationOfState, 1 > supported_eos
Definition state_views_multi_species.hpp:223
Value * flow_state
Definition state_views_multi_species.hpp:258
std::remove_cvref_t< Gradient > gradient_type
Definition state_views_multi_species.hpp:220
std::remove_cvref_t< Value > state_type
Definition state_views_multi_species.hpp:219
Gradient & gradient_value() const
Definition state_views_multi_species.hpp:240
const MaterialPhaseData< number > & material() const
Definition state_views_multi_species.hpp:252
MultiSpeciesDofValueAndGradientStateView(Value &value_state, Gradient &gradient_state, const MaterialPhaseData< number > &material_data)
Definition state_views_multi_species.hpp:225
const MaterialPhaseData< number > & material_data
Definition state_views_multi_species.hpp:260
EquationOfState eos_type() const
Definition state_views_multi_species.hpp:246
Value & value() const
Definition state_views_multi_species.hpp:234
Definition state_views_multi_species.hpp:66
MultiSpeciesDofValueView(StateType &state)
Definition state_views_multi_species.hpp:69
StateType & value() const
Definition state_views_multi_species.hpp:79
std::remove_cvref_t< StateType > state_type
Definition state_views_multi_species.hpp:67
StateType * flow_state
Definition state_views_multi_species.hpp:85
Definition state_views_multi_species.hpp:278
FluxType & value() const
Definition state_views_multi_species.hpp:291
MultiSpeciesFluxView(FluxType &flux_in)
Definition state_views_multi_species.hpp:281
FluxType * flux
Definition state_views_multi_species.hpp:297
FluxTypeIn FluxType
Definition state_views_multi_species.hpp:279
Definition material_views_mixins.hpp:73
Definition equation_of_state.hpp:665
Definition equation_of_state.hpp:600
Definition state_views_mixins.hpp:132
Definition state_views_mixins.hpp:31
Definition state_views_mixins.hpp:318
Definition state_views_mixins.hpp:195