ECOGEN 4.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 virtual ~MixPTUEq();
52
53 virtual void allocateAndCopyMixture(Mixture** mixture);
54 virtual void copyMixture(Mixture &mixture);
55 virtual double computeDensity(const double* alphak, const double* rhok);
56 virtual double computePressure(const double* alphak, const double* pk);
57 virtual double computePressure(double* masses, const double& mixInternalEnerg, Phase** phases);
58 virtual double computeTemperature(double* masses, const double& pressure, Phase** phases);
59 virtual double computeInternalEnergy(const double* Yk, const double* ek);
60 virtual double computeFrozenSoundSpeed(const double* Yk, const double* ck);
61
62 //Specific thermodynamical evolutions
63 virtual double computeTemperatureIsentrope(const double* Yk, const double& p0, const double& T0, const double& p, double* dTdp = 0);
64 virtual double computeEnthalpyIsentrope(const double* Yk, const double& p0, const double& T0, const double& p, double* dhdp = 0);
65 virtual double computeVolumeIsentrope(const double* Yk, const double& p0, const double& T0, const double& p, double* dvdp = 0);
66
67 virtual void computeMixtureVariables(Phase** vecPhase);
68 virtual void computeTotalEnergy(std::vector<QuantitiesAddPhys*>& vecGPA);
69 virtual void totalEnergyToInternalEnergy(std::vector<QuantitiesAddPhys*>& vecGPA);
70
71 virtual void localProjection(const Coord& normal, const Coord& tangent, const Coord& binormal);
72 virtual void reverseProjection(const Coord& normal, const Coord& tangent, const Coord& binormal);
73
74 //Data printing
75 virtual int getNumberScalars() const { return 3; };
76 virtual int getNumberVectors() const { return 1; };
77 virtual double returnScalar(const int& numVar) const;
78 virtual Coord returnVector(const int& numVar) const;
79 virtual std::string returnNameScalar(const int& numVar) const;
80 virtual std::string returnNameVector(const int& numVar) const;
81
82 //Data reading
83 virtual void setScalar(const int& numVar, const double& value);
84 virtual void setVector(const int& numVar, const Coord& value);
85
86 //Parallel
87 virtual int numberOfTransmittedVariables() const;
88 virtual void fillBuffer(double* buffer, int& counter) const;
89 virtual void fillBuffer(std::vector<double>& dataToSend) const;
90 virtual void getBuffer(double* buffer, int& counter);
91 virtual void getBuffer(std::vector<double>& dataToReceive, int& counter);
92
93 //Second order
94 virtual void computeSlopesMixture(const Mixture &sLeft, const Mixture &sRight, const double& distance);
95 virtual void setToZero();
96 virtual void setToMax();
97 virtual void extrapolate(const Mixture &slope, const double& distance);
98 virtual void limitSlopes(const Mixture &slopeGauche, const Mixture &slopeDroite, Limiter& globalLimiter);
99 virtual void setMin(const Mixture& mixture1, const Mixture& mixture2);
100 virtual void setMax(const Mixture& mixture1, const Mixture& mixture2);
101 virtual void computeGradientLimiter(const Limiter& globalLimiter, const Mixture& mixture, const Mixture& mixtureMin, const Mixture& mixtureMax, const Mixture& slope);
102
103 //Parallel second order
104 virtual int numberOfTransmittedSlopes() const;
105 virtual void fillBufferSlopes(double* buffer, int& counter) const;
106 virtual void getBufferSlopes(double* buffer, int& counter);
107
108 //Accessors
109 virtual const double& getDensity() const { return m_density; };
110 virtual const double& getPressure() const { return m_pressure; };
111 virtual const double& getTemperature() const { return m_temperature; };
112 virtual const double& getU() const { return m_velocity.getX(); };
113 virtual const double& getV() const { return m_velocity.getY(); };
114 virtual const double& getW() const { return m_velocity.getZ(); };
115 virtual const Coord& getVelocity() const { return m_velocity; };
116 virtual Coord& getVelocity() { return m_velocity; };
117 virtual const double& getEnergy() const { return m_energy; };
118 virtual const double& getTotalEnergy() const { return m_totalEnergy; };
119 virtual const double& getMixSoundSpeed() const { return m_PTUEqSoundSpeed; };
120
121 virtual void setPressure(const double& p);
122 virtual void setVelocity(const double& u, const double& v, const double& w);
123 virtual void setVelocity(const Coord& vit);
124 virtual void setU(const double& u);
125 virtual void setV(const double& v);
126 virtual void setW(const double& w);
127 virtual void setTotalEnergy(double& totalEnergy);
128 virtual void setTemperature(const double& T);
129
130 //Operators
131 virtual void changeSign();
132 virtual void multiplyAndAdd(const Mixture &slopesMixtureTemp, const double& coeff);
133 virtual void divide(const double& coeff);
134
135 private:
136 double m_density;
137 double m_pressure;
140 double m_energy;
143};
144
145#endif // MIXPTUEQ_H
@ p
Definition Tools.h:60
Class for a coordinate system object such as coordinates of the vertex or a vector.
Definition Coord.h:43
const double & getX() const
Return the value in the x-direction of the Coord object.
Definition Coord.h:75
const double & getY() const
Return the value in the y-direction of the Coord object.
Definition Coord.h:77
const double & getZ() const
Return the value in the z-direction of the Coord object.
Definition Coord.h:79
Definition Limiter.h:38
Mixture variables for pressure-temperature-velocity (mechanical and thermal equilibrium) system of eq...
Definition MixPTUEq.h:39
virtual void computeMixtureVariables(Phase **vecPhase)
Fills some mixture attributes from a phase array.
Definition MixPTUEq.cpp:287
virtual int numberOfTransmittedSlopes() const
Definition MixPTUEq.cpp:583
virtual void computeSlopesMixture(const Mixture &sLeft, const Mixture &sRight, const double &distance)
Definition MixPTUEq.cpp:499
virtual double computeFrozenSoundSpeed(const double *Yk, const double *ck)
Compute mixture frozen speed of sound.
Definition MixPTUEq.cpp:201
virtual const double & getPressure() const
Definition MixPTUEq.h:110
virtual void allocateAndCopyMixture(Mixture **mixture)
Copy mixture attributes in mixture.
Definition MixPTUEq.cpp:77
virtual int getNumberVectors() const
Definition MixPTUEq.h:76
virtual void setV(const double &v)
Definition MixPTUEq.cpp:630
virtual double computeInternalEnergy(const double *Yk, const double *ek)
Compute mixture specific internal energy.
Definition MixPTUEq.cpp:189
virtual void getBuffer(double *buffer, int &counter)
Definition MixPTUEq.cpp:473
virtual void setW(const double &w)
Definition MixPTUEq.cpp:634
MixPTUEq()
Definition MixPTUEq.cpp:37
virtual const double & getEnergy() const
Definition MixPTUEq.h:117
virtual void setMax(const Mixture &mixture1, const Mixture &mixture2)
Definition MixPTUEq.cpp:559
virtual void fillBufferSlopes(double *buffer, int &counter) const
Definition MixPTUEq.cpp:590
virtual void multiplyAndAdd(const Mixture &slopesMixtureTemp, const double &coeff)
Definition MixPTUEq.cpp:663
virtual void setVelocity(const double &u, const double &v, const double &w)
Definition MixPTUEq.cpp:618
virtual void setToMax()
Definition MixPTUEq.cpp:518
virtual void localProjection(const Coord &normal, const Coord &tangent, const Coord &binormal)
velocity vector projection in a local Cartesian coordinate system
Definition MixPTUEq.cpp:331
virtual void computeTotalEnergy(std::vector< QuantitiesAddPhys * > &vecGPA)
Compute mixture total specific energy from internal one taking account for energies associated to ext...
Definition MixPTUEq.cpp:311
virtual void reverseProjection(const Coord &normal, const Coord &tangent, const Coord &binormal)
velocity vector reverse projection in the absolute Cartesian coordinate system
Definition MixPTUEq.cpp:338
virtual Coord returnVector(const int &numVar) const
Definition MixPTUEq.cpp:364
virtual void changeSign()
Definition MixPTUEq.cpp:654
virtual const Coord & getVelocity() const
Definition MixPTUEq.h:115
virtual double computeDensity(const double *alphak, const double *rhok)
Compute mixture density.
Definition MixPTUEq.cpp:97
virtual double returnScalar(const int &numVar) const
Definition MixPTUEq.cpp:347
virtual void setScalar(const int &numVar, const double &value)
Definition MixPTUEq.cpp:409
virtual void limitSlopes(const Mixture &slopeGauche, const Mixture &slopeDroite, Limiter &globalLimiter)
Definition MixPTUEq.cpp:537
virtual double computeTemperatureIsentrope(const double *Yk, const double &p0, const double &T0, const double &p, double *dTdp=0)
Compute temperature for a mixture evolving at thermal equilibrium along mixture isentropic path.
Definition MixPTUEq.cpp:213
virtual double computeEnthalpyIsentrope(const double *Yk, const double &p0, const double &T0, const double &p, double *dhdp=0)
Compute mixture enthalpy for a mixture evolving at thermal equilibrium along mixture isentropic path.
Definition MixPTUEq.cpp:241
double m_totalEnergy
mixture total specific energy
Definition MixPTUEq.h:141
virtual void totalEnergyToInternalEnergy(std::vector< QuantitiesAddPhys * > &vecGPA)
Compute mixture internal specific energy from total one taking account for energies associated to ext...
Definition MixPTUEq.cpp:321
virtual void setVector(const int &numVar, const Coord &value)
Definition MixPTUEq.cpp:426
double m_pressure
mixture pressure
Definition MixPTUEq.h:137
double m_energy
mixture internal specific energy
Definition MixPTUEq.h:140
virtual std::string returnNameScalar(const int &numVar) const
Definition MixPTUEq.cpp:377
virtual double computeTemperature(double *masses, const double &pressure, Phase **phases)
Definition MixPTUEq.cpp:160
virtual void setTemperature(const double &T)
Definition MixPTUEq.cpp:645
virtual const double & getTotalEnergy() const
Definition MixPTUEq.h:118
virtual void setU(const double &u)
Definition MixPTUEq.cpp:626
double m_density
mixture density
Definition MixPTUEq.h:136
virtual int getNumberScalars() const
Definition MixPTUEq.h:75
virtual const double & getTemperature() const
Definition MixPTUEq.h:111
virtual void computeGradientLimiter(const Limiter &globalLimiter, const Mixture &mixture, const Mixture &mixtureMin, const Mixture &mixtureMax, const Mixture &slope)
Definition MixPTUEq.cpp:570
virtual void extrapolate(const Mixture &slope, const double &distance)
Definition MixPTUEq.cpp:526
virtual double computePressure(const double *alphak, const double *pk)
Compute mixture pressure.
Definition MixPTUEq.cpp:109
virtual ~MixPTUEq()
Definition MixPTUEq.cpp:73
virtual const double & getU() const
Definition MixPTUEq.h:112
double m_temperature
mixture temperature
Definition MixPTUEq.h:139
virtual std::string returnNameVector(const int &numVar) const
Definition MixPTUEq.cpp:394
virtual const double & getW() const
Definition MixPTUEq.h:114
virtual Coord & getVelocity()
Definition MixPTUEq.h:116
virtual void setMin(const Mixture &mixture1, const Mixture &mixture2)
Definition MixPTUEq.cpp:548
virtual double computeVolumeIsentrope(const double *Yk, const double &p0, const double &T0, const double &p, double *dvdp=0)
Compute mixture specific volume for a mixture evolving at thermal equilibrium along mixture isentropi...
Definition MixPTUEq.cpp:263
Coord m_velocity
mixture velocity
Definition MixPTUEq.h:138
virtual void setPressure(const double &p)
Definition MixPTUEq.cpp:614
virtual void setToZero()
Definition MixPTUEq.cpp:510
virtual void getBufferSlopes(double *buffer, int &counter)
Definition MixPTUEq.cpp:601
virtual const double & getDensity() const
Definition MixPTUEq.h:109
virtual const double & getMixSoundSpeed() const
Definition MixPTUEq.h:119
virtual void fillBuffer(double *buffer, int &counter) const
Definition MixPTUEq.cpp:449
virtual const double & getV() const
Definition MixPTUEq.h:113
virtual void copyMixture(Mixture &mixture)
Copy mixture in mixture attributes.
Definition MixPTUEq.cpp:84
virtual void setTotalEnergy(double &totalEnergy)
Definition MixPTUEq.cpp:638
virtual int numberOfTransmittedVariables() const
Definition MixPTUEq.cpp:441
double m_PTUEqSoundSpeed
mixture thermal equilibrium sound speed
Definition MixPTUEq.h:142
virtual void divide(const double &coeff)
Definition MixPTUEq.cpp:672
Abstract class for mixture variables.
Definition Mixture.h:43
Abstract class for a phase.
Definition Phase.h:47
Definition tinyxml2.h:1149