Documentation 6b54b78464
Loading...
Searching...
No Matches
CFluidScalar.hpp
Go to the documentation of this file.
1/*!
2 * \file CFluidScalar.hpp
3 * \brief Defines the multicomponent incompressible Ideal Gas model for mixtures.
4 * \author T. Economon, Mark Heimgartner, Cristopher Morales Ubal
5 * \version 8.5.0 "Harrier"
6 *
7 * SU2 Project Website: https://su2code.github.io
8 *
9 * The SU2 Project is maintained by the SU2 Foundation
10 * (http://su2foundation.org)
11 *
12 * Copyright 2012-2026, SU2 Contributors (cf. AUTHORS.md)
13 *
14 * SU2 is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2.1 of the License, or (at your option) any later version.
18 *
19 * SU2 is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with SU2. If not, see <http://www.gnu.org/licenses/>.
26 */
27
28#pragma once
29
30#include <memory>
31#include <array>
32
33#include "CFluidModel.hpp"
34
35/*!
36 * \class CFluidScalar
37 * \brief Child class for defining an incompressible ideal gas model.
38 * \author: T. Economon
39 */
40class CFluidScalar final : public CFluidModel {
41 private:
42 const int n_species_mixture; /*!< \brief Number of species in mixture. */
43 su2double Gas_Constant; /*!< \brief Specific gas constant. */
44 const su2double GasConstant_Ref; /*!< \brief Gas constant reference needed for Nondimensional problems. */
45 const su2double Std_Ref_Temp_ND; /*!< \brief Nondimensional standard reference temperature for enthalpy. */
46 const su2double Prandtl_Turb_Number; /*!< \brief Prandlt turbulent number.*/
47 const su2double Schmidt_Turb_Number; /*!< \brief Schmidt turbulent number.*/
48
49 const bool wilke;
50 const bool davidson;
51
52 static constexpr int ARRAYSIZE = 16;
53
54 std::array<su2double, ARRAYSIZE> massFractions; /*!< \brief Mass fractions of all species. */
55 std::array<su2double, ARRAYSIZE> moleFractions; /*!< \brief Mole fractions of all species. */
56 std::array<su2double, ARRAYSIZE> molarMasses; /*!< \brief Molar masses of all species. */
57 std::array<su2double, ARRAYSIZE> specificHeat; /*!< \brief Specific Heat capacities of all species. */
58 std::array<su2double, ARRAYSIZE> laminarViscosity; /*!< \brief Laminar viscosity of all species. */
59 std::array<su2double, ARRAYSIZE> laminarThermalConductivity; /*!< \brief Laminar thermal conductivity of all species. */
60 std::array<su2double, ARRAYSIZE> massDiffusivity; /*!< \brief mass diffusivity of all species. */
61
62 std::unique_ptr<CViscosityModel> LaminarViscosityPointers[ARRAYSIZE];
63 std::unique_ptr<CConductivityModel> ThermalConductivityPointers[ARRAYSIZE];
64 std::unique_ptr<CDiffusivityModel> MassDiffusivityPointers[ARRAYSIZE];
65
66 /*!
67 * \brief Convert mass fractions to mole fractions.
68 * \param[in] val_scalars - Scalar mass fraction.
69 */
70 void MassToMoleFractions(const su2double* val_scalars);
71
72 /*!
73 * \brief Wilke mixing law for mixture viscosity.
74 * \param[in] val_scalars - Scalar mass fraction.
75 */
76 su2double WilkeViscosity(const su2double* val_scalars);
77
78 /*!
79 * \brief Davidson mixing law for mixture viscosity.
80 * \param[in] val_scalars - Scalar mass fraction.
81 */
82 su2double DavidsonViscosity(const su2double* val_scalars);
83
84 /*!
85 * \brief Wilke mixing law for mixture thermal conductivity.
86 * \param[in] val_scalars - Scalar mass fraction.
87 */
88 su2double WilkeConductivity(const su2double* val_scalars);
89
90 /*!
91 * \brief Get fluid mean specific heat capacity at constant pressure.
92 */
93 su2double ComputeMeanSpecificHeatCp(const su2double* val_scalars);
94
95 /*!
96 * \brief Compute Enthalpy given the temperature and scalars.
97 */
98 su2double ComputeEnthalpyFromT(const su2double val_temperature, const su2double* val_scalars);
99
100 /*!
101 * \brief Compute gas constant for mixture.
102 */
103 su2double ComputeGasConstant();
104
105 /*!
106 * \brief Compute mass diffusivity for species.
107 */
108 void ComputeMassDiffusivity();
109
110 public:
111 /*!
112 * \brief Constructor of the class.
113 */
114 CFluidScalar(su2double val_operating_pressure, const CConfig* config);
115
116 /*!
117 * \brief Set viscosity model.
118 */
119 void SetLaminarViscosityModel(const CConfig* config) override;
120
121 /*!
122 * \brief Set thermal conductivity model.
123 */
124 void SetThermalConductivityModel(const CConfig* config) override;
125
126 /*!
127 * \brief Set mass diffusivity model.
128 */
129 void SetMassDiffusivityModel(const CConfig* config) override;
130
131 /*!
132 * \brief Get fluid laminar viscosity.
133 */
134 inline su2double GetLaminarViscosity() override { return Mu; }
135
136 /*!
137 * \brief Get fluid thermal conductivity.
138 */
139 inline su2double GetThermalConductivity() override { return Kt + Mu_Turb * Cp / Prandtl_Turb_Number; }
140
141 /*!
142 * \brief Get fluid mass diffusivity.
143 */
144 inline su2double GetMassDiffusivity(int ivar) override { return massDiffusivity[ivar]; }
145
146 /*!
147 * \brief Get the enthalpy diffusivity terms for all species being solved.
148 *
149 * This function computes and retrieves the enthalpy diffusion terms required in the energy equation
150 * for multicomponent flows.
151 *
152 * \param[in,out] enthalpy_diffusions - Array containing the enthalpy diffusion terms for all
153 * species to be solved. The size of \p enthalpy_diffusions must be at least (n_species_mixture - 1),
154 * corresponding to the number of species transport equations in the system.
155 */
156 void GetEnthalpyDiffusivity(su2double* enthalpy_diffusions) const override;
157
158 /*!
159 * \brief Get the gradient of enthalpy diffusivity terms for all species being solved.
160 *
161 * This function computes and retrieves the gradient of the enthalpy diffusion terms with respect to temperature.
162 * These terms are required for implicit computations when solving the energy equation for multicomponent flows.
163 *
164 * \param[in,out] grad_enthalpy_diffusions - Array containing the gradient of enthalpy diffusion terms for all
165 * species to be solved. The size of \p grad_enthalpy_diffusions must be at least (n_species_mixture - 1),
166 * corresponding to the number of species transport equations in the system.
167 */
168 void GetGradEnthalpyDiffusivity(su2double* grad_enthalpy_diffusions) const override;
169
170 /*!
171 * \brief Set the Dimensionless State using Temperature.
172 * \param[in] t - Temperature value at the point.
173 */
174 void SetTDState_T(su2double val_temperature, const su2double* val_scalars) override;
175
176 /*!
177 * \brief Virtual member.
178 * \param[in] val_enthalpy - Enthalpy value at the point.
179 * \param[in] val_scalars - Scalar mass fractions.
180 */
181 void SetTDState_h(su2double val_enthalpy, const su2double* val_scalars = nullptr) override;
182};
Defines the main fluid model class for thermophysical properties.
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Main class for defining the Thermo-Physical Model.
Definition CFluidModel.hpp:47
su2double Mu_Turb
Eddy viscosity provided by a turbulence model.
Definition CFluidModel.hpp:67
su2double Cp
Specific Heat Capacity at constant pressure.
Definition CFluidModel.hpp:64
su2double Mu
Laminar viscosity.
Definition CFluidModel.hpp:66
su2double Kt
Thermal conductivity.
Definition CFluidModel.hpp:70
Child class for defining an incompressible ideal gas model.
Definition CFluidScalar.hpp:40
void SetTDState_h(su2double val_enthalpy, const su2double *val_scalars=nullptr) override
Virtual member.
Definition CFluidScalar.cpp:266
su2double GetLaminarViscosity() override
Get fluid laminar viscosity.
Definition CFluidScalar.hpp:134
void SetThermalConductivityModel(const CConfig *config) override
Set thermal conductivity model.
Definition CFluidScalar.cpp:75
void SetTDState_T(su2double val_temperature, const su2double *val_scalars) override
Set the Dimensionless State using Temperature.
Definition CFluidScalar.cpp:247
void GetEnthalpyDiffusivity(su2double *enthalpy_diffusions) const override
Get the enthalpy diffusivity terms for all species being solved.
Definition CFluidScalar.cpp:227
su2double GetMassDiffusivity(int ivar) override
Get fluid mass diffusivity.
Definition CFluidScalar.hpp:144
void SetMassDiffusivityModel(const CConfig *config) override
Set mass diffusivity model.
Definition CFluidScalar.cpp:81
su2double GetThermalConductivity() override
Get fluid thermal conductivity.
Definition CFluidScalar.hpp:139
void GetGradEnthalpyDiffusivity(su2double *grad_enthalpy_diffusions) const override
Get the gradient of enthalpy diffusivity terms for all species being solved.
Definition CFluidScalar.cpp:237
void SetLaminarViscosityModel(const CConfig *config) override
Set viscosity model.
Definition CFluidScalar.cpp:69
passivedouble su2double
Definition code_config.hpp:181