21 #ifndef FUB_EQUATIONS_IDEAL_GAS_MIX_HPP 
   22 #define FUB_EQUATIONS_IDEAL_GAS_MIX_HPP 
   55   static constexpr 
auto names =
 
   56       std::make_tuple(
"Density", 
"Momentum", 
"Energy", 
"Species");
 
   58   static constexpr 
auto pointers_to_member =
 
   69           typename Temperature, 
typename HeatCapacityAtConstantPressure,
 
   70           typename HeatCapacityRatio>
 
   76   HeatCapacityAtConstantPressure 
c_p;
 
   90   static constexpr 
auto names = std::make_tuple(
 
   91       "Density", 
"Momentum", 
"Energy", 
"Species", 
"Pressure", 
"SpeedOfSound",
 
   92       "Temperature", 
"HeatCapacityAtConstantPressure", 
"HeatCapacityRatio");
 
   93   static constexpr 
auto pointers_to_member = std::make_tuple(
 
  121   static constexpr 
int Rank() noexcept { 
return N; }
 
  151                            const Eigen::Array<double, N, 1>& velocity =
 
  152                                Eigen::Array<double, N, 1>::Zero()) 
const;
 
  166   template <
typename State>
 
  170     depths.species = equation.reactor_.GetNSpecies();
 
  177 extern template class IdealGasMix<1>;
 
  178 extern template class IdealGasMix<2>;
 
  179 extern template class IdealGasMix<3>;
 
  183                      const Eigen::Array<double, Dim, 1>& momentum) noexcept {
 
  184   return 0.5 * momentum.matrix().squaredNorm() / density;
 
  190                                          Eigen::RowMajor>& momentum) noexcept {
 
  191   Array1d square = Array1d::Zero();
 
  192   for (
int i = 0; i < Dim; ++i) {
 
  193     square += momentum.row(i) * momentum.row(i);
 
  195   return Array1d::Constant(0.5) * square / density;
 
  201                                          Eigen::RowMajor>& momentum,
 
  203   Array1d square = Array1d::Zero();
 
  204   for (
int i = 0; i < Dim; ++i) {
 
  205     Array1d rhou = mask.select(momentum.row(i), 0.0);
 
  206     square += rhou * rhou;
 
  208   Array1d density_s = mask.select(density, 1.0);
 
  209   return Array1d::Constant(0.5) * square / density_s;
 
  219             const Eigen::Matrix<double, 2, 2>& rotation, 
const IdealGasMix<2>&);
 
  223             const Eigen::Matrix<double, 2, 2>& rotation, 
const IdealGasMix<2>&);
 
  227             const Eigen::Matrix<double, 3, 3>& rotation, 
const IdealGasMix<3>&);
 
  231             const Eigen::Matrix<double, 3, 3>& rotation, 
const IdealGasMix<3>&);
 
  236              const Eigen::Matrix<double, 1, 1>& normal,
 
A class mimicking the IdealGasMix / Reactor / ReactorNet interface of Cantera, but with FlameMaster c...
Definition: FlameMasterReactor.hpp:159
 
int GetNSpecies() const
Return the number of species in the mechanism.
Definition: FlameMasterReactor.hpp:345
 
Definition: IdealGasMix.hpp:105
 
void Flux(Conservative &flux, const Complete &state, Direction dir=Direction::X) const noexcept
 
IdealGasMix(const FlameMasterReactor &reactor)
Definition: IdealGasMix.hpp:118
 
const FlameMasterReactor & GetReactor() const noexcept
Definition: IdealGasMix.hpp:141
 
static Array< double, N > Velocity(const ConservativeArrayBase &cons, MaskArray mask) noexcept
 
::fub::ConservativeArrayBase< IdealGasMix< N > > ConservativeArrayBase
Definition: IdealGasMix.hpp:115
 
FlameMasterReactor reactor_
Definition: IdealGasMix.hpp:163
 
void CompleteFromReactor(CompleteArray &state, const Array< double, N > &velocit, MaskArray mask) const
 
Array< double, Eigen::Dynamic, 1 > species_buffer_
Definition: IdealGasMix.hpp:164
 
::fub::ConservativeBase< IdealGasMix< N > > ConservativeBase
Definition: IdealGasMix.hpp:111
 
FlameMasterReactor & GetReactor() noexcept
Definition: IdealGasMix.hpp:140
 
void CompleteFromReactor(Complete &state, const Eigen::Array< double, N, 1 > &velocity=Eigen::Array< double, N, 1 >::Zero()) const
 
static Array< double, N, 1 > Velocity(const ConservativeBase &cons) noexcept
 
static Array< double, N > Velocity(const ConservativeArrayBase &cons) noexcept
 
static constexpr int Rank() noexcept
Definition: IdealGasMix.hpp:121
 
constexpr friend auto tag_invoke(tag_t< Depths >, const IdealGasMix &equation, Type< State >) noexcept
Definition: IdealGasMix.hpp:167
 
void Flux(ConservativeArray &flux, const CompleteArray &state, MaskArray mask, Direction dir) const noexcept
 
void CompleteFromCons(Complete &state, const ConservativeBase &cons)
 
void CompleteFromReactor(CompleteArray &state, const Array< double, N > &velocity=Array< double, N >::Zero()) const
 
void SetReactorStateFromComplete(const Complete &state)
 
void Flux(ConservativeArray &flux, const CompleteArray &state, Direction dir=Direction::X) const noexcept
 
void CompleteFromCons(CompleteArray &state, const ConservativeArrayBase &cons, MaskArray mask)
 
void CompleteFromCons(CompleteArray &state, const ConservativeArrayBase &cons)
 
constexpr struct fub::euler::SpeedOfSoundFn SpeedOfSound
 
constexpr struct fub::euler::EnergyFn Energy
 
constexpr struct fub::euler::SpeciesFn Species
 
constexpr struct fub::euler::PressureFn Pressure
 
constexpr struct fub::euler::MomentumFn Momentum
 
constexpr struct fub::euler::DensityFn Density
 
constexpr struct fub::euler::TemperatureFn Temperature
 
The fub namespace.
Definition: AnyBoundaryCondition.hpp:31
 
std::conditional_t< N==1||M==1, Eigen::Array< T, N, M >, Eigen::Array< T, N, M, Eigen::RowMajor > > Array
Definition: Eigen.hpp:50
 
double KineticEnergy(double density, const Eigen::Array< double, Dim, 1 > &momentum) noexcept
Definition: IdealGasMix.hpp:182
 
Array< double, 1 > Array1d
Definition: Eigen.hpp:53
 
constexpr const int kDefaultChunkSize
Definition: Eigen.hpp:39
 
std::decay_t< decltype(T)> tag_t
Definition: type_traits.hpp:350
 
void Rotate(Conservative< IdealGasMix< 2 >> &rotated, const Conservative< IdealGasMix< 2 >> &state, const Eigen::Matrix< double, 2, 2 > &rotation, const IdealGasMix< 2 > &)
Defines how to rotate a given state of the euler equations.
 
Direction
This is a type safe type to denote a dimensional split direction.
Definition: Direction.hpp:30
 
boost::mp11::mp_transform< ToConcreteDepth, Depths > ToConcreteDepths
Definition: State.hpp:122
 
void Reflect(Complete< IdealGasMix< 1 >> &reflected, const Complete< IdealGasMix< 1 >> &state, const Eigen::Matrix< double, 1, 1 > &normal, const IdealGasMix< 1 > &gas)
 
Array< bool, 1 > MaskArray
Definition: Eigen.hpp:59
 
typename detail::ConservativeArrayBaseImpl< Eq, Width >::type ConservativeArrayBase
Definition: StateArray.hpp:132
 
boost::mp11::mp_transform< detail::DepthToStateValueType, typename Equation::ConservativeDepths > ConservativeBase
This type alias transforms state depths into a conservative state associated with a specified equatio...
Definition: State.hpp:247
 
Definition: StateArray.hpp:178
 
This type has a constructor which takes an equation and might allocate any dynamically sized member v...
Definition: State.hpp:335
 
Definition: StateArray.hpp:135
 
This type has a constructor which takes an equation and might allocate any dynamically sized member v...
Definition: State.hpp:251
 
Definition: IdealGasMix.hpp:72
 
HeatCapacityRatio gamma
Definition: IdealGasMix.hpp:77
 
SpeedOfSound speed_of_sound
Definition: IdealGasMix.hpp:74
 
HeatCapacityAtConstantPressure c_p
Definition: IdealGasMix.hpp:76
 
Pressure pressure
Definition: IdealGasMix.hpp:73
 
Temperature temperature
Definition: IdealGasMix.hpp:75
 
This is a template class for constructing conservative states for the perfect gas equations.
Definition: IdealGasMix.hpp:39
 
Momentum momentum
Definition: IdealGasMix.hpp:41
 
Energy energy
Definition: IdealGasMix.hpp:42
 
Density density
Definition: IdealGasMix.hpp:40
 
Species species
Definition: IdealGasMix.hpp:43
 
This type is used to tag scalar quantities.
Definition: State.hpp:109
 
Definition: State.hpp:162
 
This type is used to tag quantities with a depth known at compile time.
Definition: State.hpp:112