ECOGEN 6.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
MixPTUEq.h
Go to the documentation of this file.
1//
2// ,---. ,--, .---. ,--, ,---. .-. .-.
3// | .-' .' .') / .-. ) .' .' | .-' | \| |
4// | `-. | |(_) | | |(_) | | __ | `-. | | |
5// | .-' \ \ | | | | \ \ ( _) | .-' | |\ |
6// | `--. \ `-. \ `-' / \ `-) ) | `--. | | |)|
7// /( __.' \____\ )---' )\____/ /( __.' /( (_)
8// (__) (_) (__) (__) (__)
9// Official webSite: https://code-mphi.github.io/ECOGEN/
10//
11// This file is part of ECOGEN.
12//
13// ECOGEN is the legal property of its developers, whose names
14// are listed in the copyright file included with this source
15// distribution.
16//
17// ECOGEN is free software: you can redistribute it and/or modify
18// it under the terms of the GNU General Public License as published
19// by the Free Software Foundation, either version 3 of the License,
20// or (at your option) any later version.
21//
22// ECOGEN is distributed in the hope that it will be useful,
23// but WITHOUT ANY WARRANTY; without even the implied warranty of
24// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25// GNU General Public License for more details.
26//
27// You should have received a copy of the GNU General Public License
28// along with ECOGEN (file LICENSE).
29// If not, see <http://www.gnu.org/licenses/>.
30
31#ifndef MIXPTUEQ_H
32#define MIXPTUEQ_H
33
34#include "../Mixture.h"
35
38class MixPTUEq : public Mixture
39{
40 public:
41 MixPTUEq();
50 MixPTUEq(tinyxml2::XMLElement* state, std::string fileName);
51 ~MixPTUEq() override;
52
53 void allocateAndCopyMixture(Mixture** mixture) override;
54 void copyMixture(Mixture& mixture) override;
55 double computeDensity(const double* alphak, const double* rhok) override;
56 double computePressure(const double* alphak, const double* pk) override;
57 double computePressure(double* masses, const double& mixInternalEnerg, Phase** phases) override;
58 double computeTemperature(double* masses, const double& pressure, Phase** phases) override;
59 double computeInternalEnergy(const double* Yk, const double* ek) override;
60 double computeFrozenSoundSpeed(const double* Yk, const double* ck) override;
61
62 //Specific thermodynamical evolutions
63 double computeTemperatureIsentrope(const std::vector<double>& Yk, const double& p0, const double& T0, const double& p, double* dTdp = 0) override;
64 double computeEnthalpyIsentrope(const std::vector<double>& Yk, const double& p0, const double& T0, const double& p, double* dhdp = 0) override;
65 double computeVolumeIsentrope(const std::vector<double>& Yk, const double& p0, const double& T0, const double& p, double* dvdp = 0) override;
66
67 void computeMixtureVariables(Phase** vecPhase) override;
68 void computeTotalEnergy(std::vector<QuantitiesAddPhys*>& vecGPA) override;
69 void totalEnergyToInternalEnergy(std::vector<QuantitiesAddPhys*>& vecGPA) override;
70
71 void localProjection(const Coord& normal, const Coord& tangent, const Coord& binormal) override;
72 void reverseProjection(const Coord& normal, const Coord& tangent, const Coord& binormal) override;
73
74 //Data printing
75 int getNumberScalars() const override { return 3; };
76 int getNumberVectors() const override { return 1; };
77 double returnScalar(const int& numVar) const override;
78 Coord returnVector(const int& numVar) const override;
79 std::string returnNameScalar(const int& numVar) const override;
80 std::string returnNameVector(const int& numVar) const override;
81
82 //Data reading
83 void setScalar(const int& numVar, const double& value) override;
84 void setVector(const int& numVar, const Coord& value) override;
85
86 //Parallel
87 int numberOfTransmittedVariables() const override;
88 void fillBuffer(double* buffer, int& counter) const override;
89 void fillBuffer(std::vector<double>& dataToSend) const override;
90 void getBuffer(double* buffer, int& counter) override;
91 void getBuffer(std::vector<double>& dataToReceive, int& counter) override;
92
93 //Second order
94 void computeSlopesMixture(const Mixture& sLeft, const Mixture& sRight, const double& distance) override;
95 void setToZero() override;
96 void setToMax() override;
97 void extrapolate(const Mixture& slope, const double& distance) override;
98 void limitSlopes(const Mixture& slopeGauche, const Mixture& slopeDroite, Limiter& globalLimiter) override;
99 void setMin(const Mixture& mixture1, const Mixture& mixture2) override;
100 void setMax(const Mixture& mixture1, const Mixture& mixture2) override;
102 const Limiter& globalLimiter, const Mixture& mixture, const Mixture& mixtureMin, const Mixture& mixtureMax, const Mixture& slope) override;
103
104 //Parallel second order
105 int numberOfTransmittedSlopes() const override;
106 void fillBufferSlopes(double* buffer, int& counter) const override;
107 void getBufferSlopes(double* buffer, int& counter) override;
108
109 //Accessors
110 const double& getDensity() const override { return m_density; };
111 const double& getPressure() const override { return m_pressure; };
112 const double& getTemperature() const override { return m_temperature; };
113 const double& getU() const override { return m_velocity.getX(); };
114 const double& getV() const override { return m_velocity.getY(); };
115 const double& getW() const override { return m_velocity.getZ(); };
116 const Coord& getVelocity() const override { return m_velocity; };
117 Coord& getVelocity() override { return m_velocity; };
118 const double& getEnergy() const override { return m_energy; };
119 const double& getTotalEnergy() const override { return m_totalEnergy; };
120 const double& getMixSoundSpeed() const override { return m_PTUEqSoundSpeed; };
121
122 void setPressure(const double& p) override;
123 void setVelocity(const double& u, const double& v, const double& w) override;
124 void setVelocity(const Coord& vit) override;
125 void setU(const double& u) override;
126 void setV(const double& v) override;
127 void setW(const double& w) override;
128 void setTotalEnergy(double& totalEnergy) override;
129 void setTemperature(const double& T) override;
130
131 //Operators
132 void changeSign() override;
133 void multiplyAndAdd(const Mixture& slopesMixtureTemp, const double& coeff) override;
134 void divide(const double& coeff) override;
135
136 private:
137 double m_density;
138 double m_pressure;
141 double m_energy;
144};
145
146#endif // MIXPTUEQ_H
@ p
Definition Tools.h:107
@ pressure
Definition Tools.h:165
Class for a coordinate system object such as coordinates of the vertex or a vector.
Definition Coord.h:43
Definition Limiter.h:38
Coord returnVector(const int &numVar) const override
Definition MixPTUEq.cpp:370
const double & getPressure() const override
Definition MixPTUEq.h:111
void setU(const double &u) override
Definition MixPTUEq.cpp:660
void changeSign() override
Definition MixPTUEq.cpp:682
double computeDensity(const double *alphak, const double *rhok) override
Compute mixture density.
Definition MixPTUEq.cpp:93
double computeEnthalpyIsentrope(const std::vector< double > &Yk, const double &p0, const double &T0, const double &p, double *dhdp=0) override
Compute mixture enthalpy for a mixture evolving at thermal equilibrium along mixture isentropic path.
Definition MixPTUEq.cpp:240
void computeGradientLimiter(const Limiter &globalLimiter, const Mixture &mixture, const Mixture &mixtureMin, const Mixture &mixtureMax, const Mixture &slope) override
Definition MixPTUEq.cpp:591
void copyMixture(Mixture &mixture) override
Copy mixture in mixture attributes.
Definition MixPTUEq.cpp:80
void allocateAndCopyMixture(Mixture **mixture) override
Copy mixture attributes in mixture.
Definition MixPTUEq.cpp:76
void setTotalEnergy(double &totalEnergy) override
Definition MixPTUEq.cpp:672
int numberOfTransmittedVariables() const override
Definition MixPTUEq.cpp:456
MixPTUEq()
Definition MixPTUEq.cpp:37
std::string returnNameScalar(const int &numVar) const override
Definition MixPTUEq.cpp:384
void setTemperature(const double &T) override
Definition MixPTUEq.cpp:676
void extrapolate(const Mixture &slope, const double &distance) override
Definition MixPTUEq.cpp:547
double computeVolumeIsentrope(const std::vector< double > &Yk, const double &p0, const double &T0, const double &p, double *dvdp=0) override
Compute mixture specific volume for a mixture evolving at thermal equilibrium along mixture isentropi...
Definition MixPTUEq.cpp:264
void reverseProjection(const Coord &normal, const Coord &tangent, const Coord &binormal) override
velocity vector reverse projection in the absolute Cartesian coordinate system
Definition MixPTUEq.cpp:341
void setMin(const Mixture &mixture1, const Mixture &mixture2) override
Definition MixPTUEq.cpp:569
const double & getTemperature() const override
Definition MixPTUEq.h:112
void setVector(const int &numVar, const Coord &value) override
Definition MixPTUEq.cpp:440
double computePressure(const double *alphak, const double *pk) override
Compute mixture pressure.
Definition MixPTUEq.cpp:104
int getNumberVectors() const override
Definition MixPTUEq.h:76
void setScalar(const int &numVar, const double &value) override
Definition MixPTUEq.cpp:420
double computeTemperature(double *masses, const double &pressure, Phase **phases) override
Definition MixPTUEq.cpp:156
const double & getW() const override
Definition MixPTUEq.h:115
void fillBufferSlopes(double *buffer, int &counter) const override
Definition MixPTUEq.cpp:624
int getNumberScalars() const override
Definition MixPTUEq.h:75
const double & getTotalEnergy() const override
Definition MixPTUEq.h:119
void setMax(const Mixture &mixture1, const Mixture &mixture2) override
Definition MixPTUEq.cpp:580
void localProjection(const Coord &normal, const Coord &tangent, const Coord &binormal) override
velocity vector projection in a local Cartesian coordinate system
Definition MixPTUEq.cpp:334
void setV(const double &v) override
Definition MixPTUEq.cpp:664
double m_totalEnergy
mixture total specific energy
Definition MixPTUEq.h:142
~MixPTUEq() override
Definition MixPTUEq.cpp:72
const double & getMixSoundSpeed() const override
Definition MixPTUEq.h:120
void divide(const double &coeff) override
Definition MixPTUEq.cpp:700
void fillBuffer(double *buffer, int &counter) const override
Definition MixPTUEq.cpp:464
void computeSlopesMixture(const Mixture &sLeft, const Mixture &sRight, const double &distance) override
Definition MixPTUEq.cpp:514
double computeInternalEnergy(const double *Yk, const double *ek) override
Compute mixture specific internal energy.
Definition MixPTUEq.cpp:187
double m_pressure
mixture pressure
Definition MixPTUEq.h:138
double m_energy
mixture internal specific energy
Definition MixPTUEq.h:141
void totalEnergyToInternalEnergy(std::vector< QuantitiesAddPhys * > &vecGPA) override
Compute mixture internal specific energy from total one taking account for energies associated to ext...
Definition MixPTUEq.cpp:324
void limitSlopes(const Mixture &slopeGauche, const Mixture &slopeDroite, Limiter &globalLimiter) override
Definition MixPTUEq.cpp:558
int numberOfTransmittedSlopes() const override
Definition MixPTUEq.cpp:620
void computeMixtureVariables(Phase **vecPhase) override
Fills some mixture attributes from a phase array.
Definition MixPTUEq.cpp:290
void setToMax() override
Definition MixPTUEq.cpp:536
const double & getDensity() const override
Definition MixPTUEq.h:110
double m_density
mixture density
Definition MixPTUEq.h:137
void getBuffer(double *buffer, int &counter) override
Definition MixPTUEq.cpp:488
void setPressure(const double &p) override
Definition MixPTUEq.cpp:648
double returnScalar(const int &numVar) const override
Definition MixPTUEq.cpp:350
void getBufferSlopes(double *buffer, int &counter) override
Definition MixPTUEq.cpp:635
const Coord & getVelocity() const override
Definition MixPTUEq.h:116
double m_temperature
mixture temperature
Definition MixPTUEq.h:140
const double & getU() const override
Definition MixPTUEq.h:113
void setToZero() override
Definition MixPTUEq.cpp:525
void computeTotalEnergy(std::vector< QuantitiesAddPhys * > &vecGPA) override
Compute mixture total specific energy from internal one taking account for energies associated to ext...
Definition MixPTUEq.cpp:314
const double & getV() const override
Definition MixPTUEq.h:114
void setVelocity(const double &u, const double &v, const double &w) override
Definition MixPTUEq.cpp:652
void setW(const double &w) override
Definition MixPTUEq.cpp:668
Coord m_velocity
mixture velocity
Definition MixPTUEq.h:139
double computeFrozenSoundSpeed(const double *Yk, const double *ck) override
Compute mixture frozen speed of sound.
Definition MixPTUEq.cpp:198
Coord & getVelocity() override
Definition MixPTUEq.h:117
std::string returnNameVector(const int &numVar) const override
Definition MixPTUEq.cpp:404
double m_PTUEqSoundSpeed
mixture thermal equilibrium sound speed
Definition MixPTUEq.h:143
const double & getEnergy() const override
Definition MixPTUEq.h:118
void multiplyAndAdd(const Mixture &slopesMixtureTemp, const double &coeff) override
Definition MixPTUEq.cpp:691
double computeTemperatureIsentrope(const std::vector< double > &Yk, const double &p0, const double &T0, const double &p, double *dTdp=0) override
Compute temperature for a mixture evolving at thermal equilibrium along mixture isentropic path.
Definition MixPTUEq.cpp:209
Abstract class for mixture variables.
Definition Mixture.h:43
Mixture()
Definition Mixture.cpp:37
Abstract class for a phase.
Definition Phase.h:47
Definition tinyxml2.h:1148