https://mooseframework.inl.gov
Loading...
Searching...
No Matches
IdealGasMixtureFluidProperties.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
13#include "NaNInterface.h"
14
17
21#define override_property(want, prop1, prop2) \
22 template <typename CppType> \
23 CppType want##_from_##prop1##_##prop2##_templ( \
24 const CppType & prop1, const CppType & prop2, const std::vector<CppType> & x) const; \
25 virtual Real want##_from_##prop1##_##prop2(Real prop1, Real prop2, const std::vector<Real> & x) \
26 const override; \
27 virtual ADReal want##_from_##prop1##_##prop2( \
28 const ADReal & prop1, const ADReal & prop2, const std::vector<ADReal> & x) const override
29
34{
35public:
37
39
41
42 virtual unsigned int numberOfComponents() const override { return _n_components; }
43
44 virtual const SinglePhaseFluidProperties & getPrimaryFluidProperties() const override;
45 virtual const SinglePhaseFluidProperties &
46 getSecondaryFluidProperties(unsigned int i = 0) const override;
47
53 template <typename CppType>
54 std::vector<CppType>
55 secondaryToAllMassFractions_templ(const std::vector<CppType> & x_secondary) const;
56 std::vector<ADReal> secondaryToAllMassFractions(const std::vector<ADReal> & x_secondary) const;
57 std::vector<Real> secondaryToAllMassFractions(const std::vector<Real> & x_secondary) const;
58
64 template <typename CppType>
65 CppType mixtureSpecificHeatRatio_templ(const std::vector<CppType> & x) const;
66 ADReal mixtureSpecificHeatRatio(const std::vector<ADReal> & x) const;
67 Real mixtureSpecificHeatRatio(const std::vector<Real> & x) const;
68
74 template <typename CppType>
75 CppType mixtureMolarMass_templ(const std::vector<CppType> & x) const;
76 ADReal mixtureMolarMass(const std::vector<ADReal> & x) const;
77 Real mixtureMolarMass(const std::vector<Real> & x) const;
78
84 template <typename CppType>
85 std::vector<CppType> molarFractionsFromMassFractions_templ(const std::vector<CppType> & x) const;
86 std::vector<ADReal> molarFractionsFromMassFractions(const std::vector<ADReal> & x) const;
87 std::vector<Real> molarFractionsFromMassFractions(const std::vector<Real> & x) const;
88
101
102#undef override_property
103
104protected:
106 const std::vector<UserObjectName> _component_fp_names;
108 const unsigned int _n_components;
110 const unsigned int _n_secondary_components;
111
113 std::vector<const IdealGasFluidProperties *> _component_fps;
114};
DualNumber< Real, DNDerivativeType, true > ADReal
const std::vector< double > x
const double mu
const double rho
const double T
Ideal gas fluid properties Default parameters are for air at atmospheric pressure and temperature.
Class for fluid properties of an ideal gas mixture.
std::vector< ADReal > secondaryToAllMassFractions(const std::vector< ADReal > &x_secondary) const
std::vector< CppType > molarFractionsFromMassFractions_templ(const std::vector< CppType > &x) const
Computes molar fractions.
CppType mixtureMolarMass_templ(const std::vector< CppType > &x) const
Computes the mixture molar mass.
virtual const SinglePhaseFluidProperties & getPrimaryFluidProperties() const override
Gets the primary component single-phase fluid properties.
ADReal mixtureMolarMass(const std::vector< ADReal > &x) const
ADReal mixtureSpecificHeatRatio(const std::vector< ADReal > &x) const
std::vector< CppType > secondaryToAllMassFractions_templ(const std::vector< CppType > &x_secondary) const
Computes all mass fractions.
const unsigned int _n_secondary_components
Number of secondary components.
virtual unsigned int numberOfComponents() const override
Returns the number of components in the mixture.
std::vector< ADReal > molarFractionsFromMassFractions(const std::vector< ADReal > &x) const
const std::vector< UserObjectName > _component_fp_names
Names of component fluid properties.
static InputParameters validParams()
std::vector< const IdealGasFluidProperties * > _component_fps
Component fluid properties objects.
virtual const SinglePhaseFluidProperties & getSecondaryFluidProperties(unsigned int i=0) const override
Gets a secondary component single-phase fluid properties.
const unsigned int _n_components
Number of components.
CppType mixtureSpecificHeatRatio_templ(const std::vector< CppType > &x) const
Computes the mixture specific heat ratio.
const InputParameters & parameters() const
Interface class for producing errors, warnings, or just quiet NaNs.
Common class for single phase fluid properties.
Base class for fluid properties of vapor mixtures.