ECOGEN 4.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
MixEulerHomogeneous.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 MIXEULERHOMOGENEOUSOUS_H
32#define MIXEULERHOMOGENEOUSOUS_H
33
34#include "../Mixture.h"
35
39{
40public:
50 MixEulerHomogeneous(tinyxml2::XMLElement* state, std::string fileName);
51 virtual ~MixEulerHomogeneous();
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 computeInternalEnergy(const double* Yk, const double* ek);
58 virtual double computeFrozenSoundSpeed(const double* Yk, const double* ck);
59
60 virtual double computePressure(double mass, const double& internalEnergy, Phase** phases, Mixture* mixture, const int& liq, const int& vap);
61
62 virtual void computeMixtureVariables(Phase** vecPhase);
63 virtual void computeTotalEnergy(std::vector<QuantitiesAddPhys*>& vecGPA);
64 virtual void totalEnergyToInternalEnergy(std::vector<QuantitiesAddPhys*>& vecGPA);
65
66 virtual void localProjection(const Coord& normal, const Coord& tangent, const Coord& binormal);
67 virtual void reverseProjection(const Coord& normal, const Coord& tangent, const Coord& binormal);
68
69 //Specific methods for data printing
70 //----------------------------------
71 virtual int getNumberScalars() const { return 3; };
72 virtual int getNumberVectors() const { return 1; };
73 virtual double returnScalar(const int& numVar) const;
74 virtual Coord returnVector(const int& numVar) const;
75 virtual std::string returnNameScalar(const int& numVar) const;
76 virtual std::string returnNameVector(const int& numVar) const;
77
78 //Data reading
79 virtual void setScalar(const int& numVar, const double& value);
80 virtual void setVector(const int& numVar, const Coord& value);
81
82 //Specific methods for parallel computing
83 //---------------------------------------
84 virtual int numberOfTransmittedVariables() const;
85 virtual void fillBuffer(double* buffer, int& counter) const;
86 virtual void fillBuffer(std::vector<double>& dataToSend) const;
87 virtual void getBuffer(double* buffer, int& counter);
88 virtual void getBuffer(std::vector<double>& dataToReceive, int& counter);
89
90 //Specific methods for second order
91 //---------------------------------
92 virtual void computeSlopesMixture(const Mixture &sLeft, const Mixture &sRight, const double& distance);
93 virtual void setToZero();
94 virtual void setToMax();
95 virtual void extrapolate(const Mixture &slope, const double& distance);
96 virtual void limitSlopes(const Mixture &slopeGauche, const Mixture &slopeDroite, Limiter& globalLimiter);
97 virtual void setMin(const Mixture& mixture1, const Mixture& mixture2);
98 virtual void setMax(const Mixture& mixture1, const Mixture& mixture2);
99 virtual void computeGradientLimiter(const Limiter& globalLimiter, const Mixture& mixture, const Mixture& mixtureMin, const Mixture& mixtureMax, const Mixture& slope);
100
101 //Specific methods for parallele computing at second order
102 //--------------------------------------------------------
103 virtual int numberOfTransmittedSlopes() const;
104 virtual void fillBufferSlopes(double* buffer, int& counter) const;
105 virtual void getBufferSlopes(double* buffer, int& counter);
106
107 //Accessors
108 //---------
109 virtual const double& getDensity() const { return m_density; };
110 virtual const double& getPressure() const { return m_pressure; };
111 virtual const double& getU() const { return m_velocity.getX(); };
112 virtual const double& getV() const { return m_velocity.getY(); };
113 virtual const double& getW() const { return m_velocity.getZ(); };
114 virtual const Coord& getVelocity() const { return m_velocity; };
115 virtual Coord& getVelocity() { return m_velocity; };
116 virtual const double& getEnergy() const { return m_energy; };
117 virtual const double& getTotalEnergy() const { return m_totalEnergy; };
118 virtual const double& getMixSoundSpeed() const { return m_EqSoundSpeed; };
119
120 virtual void setPressure(const double& p);
121 virtual void setTemperature(const double& T);
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
129 //Operators
130 //---------
131 virtual void changeSign();
132 virtual void multiplyAndAdd(const Mixture &slopesMixtureTemp, const double& coeff);
133 virtual void divide(const double& coeff);
134
135protected:
136private:
137 double m_density;
138 double m_pressure;
141 double m_energy;
144};
145
146#endif // MIXEULERHOMOGENEOUSOUS_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 Euler Homogeneous equations (velocity and thermodynamical equilibrium)
Definition MixEulerHomogeneous.h:39
virtual void divide(const double &coeff)
Definition MixEulerHomogeneous.cpp:550
virtual void setTemperature(const double &T)
Definition MixEulerHomogeneous.cpp:501
virtual double computePressure(const double *alphak, const double *pk)
Compute mixture pressure.
Definition MixEulerHomogeneous.cpp:111
virtual const double & getV() const
Definition MixEulerHomogeneous.h:112
virtual void setPressure(const double &p)
Definition MixEulerHomogeneous.cpp:497
virtual void setV(const double &v)
Definition MixEulerHomogeneous.cpp:517
virtual const double & getEnergy() const
Definition MixEulerHomogeneous.h:116
virtual void fillBufferSlopes(double *buffer, int &counter) const
Definition MixEulerHomogeneous.cpp:475
virtual void computeGradientLimiter(const Limiter &globalLimiter, const Mixture &mixture, const Mixture &mixtureMin, const Mixture &mixtureMax, const Mixture &slope)
Definition MixEulerHomogeneous.cpp:456
double m_energy
mixture internal specific energy
Definition MixEulerHomogeneous.h:141
double m_totalEnergy
mixture total specific energy
Definition MixEulerHomogeneous.h:142
virtual void multiplyAndAdd(const Mixture &slopesMixtureTemp, const double &coeff)
Definition MixEulerHomogeneous.cpp:542
virtual const double & getDensity() const
Definition MixEulerHomogeneous.h:109
virtual double computeDensity(const double *alphak, const double *rhok)
Compute mixture density.
Definition MixEulerHomogeneous.cpp:99
virtual void computeMixtureVariables(Phase **vecPhase)
Fills some mixture attributes from a phase array.
Definition MixEulerHomogeneous.cpp:182
double m_temperature
mixture temperature
Definition MixEulerHomogeneous.h:139
virtual const double & getW() const
Definition MixEulerHomogeneous.h:113
virtual void setTotalEnergy(double &totalEnergy)
Definition MixEulerHomogeneous.cpp:525
virtual void setMin(const Mixture &mixture1, const Mixture &mixture2)
Definition MixEulerHomogeneous.cpp:436
double m_density
mixture density
Definition MixEulerHomogeneous.h:137
virtual void totalEnergyToInternalEnergy(std::vector< QuantitiesAddPhys * > &vecGPA)
Compute mixture internal specific energy from total one taking account for energies associated to ext...
Definition MixEulerHomogeneous.cpp:216
virtual const Coord & getVelocity() const
Definition MixEulerHomogeneous.h:114
virtual void setToMax()
Definition MixEulerHomogeneous.cpp:408
double m_pressure
mixture pressure
Definition MixEulerHomogeneous.h:138
virtual void reverseProjection(const Coord &normal, const Coord &tangent, const Coord &binormal)
velocity vector reverse projection in the absolute Cartesian coordinate system
Definition MixEulerHomogeneous.cpp:233
virtual void getBuffer(double *buffer, int &counter)
Definition MixEulerHomogeneous.cpp:366
Coord m_velocity
mixture velocity
Definition MixEulerHomogeneous.h:140
virtual void setToZero()
Definition MixEulerHomogeneous.cpp:400
virtual double computeFrozenSoundSpeed(const double *Yk, const double *ck)
Compute mixture frozen speed of sound.
Definition MixEulerHomogeneous.cpp:170
virtual void setVelocity(const double &u, const double &v, const double &w)
Definition MixEulerHomogeneous.cpp:505
virtual const double & getU() const
Definition MixEulerHomogeneous.h:111
virtual void extrapolate(const Mixture &slope, const double &distance)
Definition MixEulerHomogeneous.cpp:416
virtual Coord returnVector(const int &numVar) const
Definition MixEulerHomogeneous.cpp:259
virtual void computeTotalEnergy(std::vector< QuantitiesAddPhys * > &vecGPA)
Compute mixture total specific energy from internal one taking account for energies associated to ext...
Definition MixEulerHomogeneous.cpp:206
virtual double returnScalar(const int &numVar) const
Definition MixEulerHomogeneous.cpp:242
virtual void setW(const double &w)
Definition MixEulerHomogeneous.cpp:521
virtual std::string returnNameScalar(const int &numVar) const
Definition MixEulerHomogeneous.cpp:272
virtual const double & getPressure() const
Definition MixEulerHomogeneous.h:110
MixEulerHomogeneous()
Definition MixEulerHomogeneous.cpp:37
double m_EqSoundSpeed
thermodynamical equilibrium sound speed
Definition MixEulerHomogeneous.h:143
virtual void limitSlopes(const Mixture &slopeGauche, const Mixture &slopeDroite, Limiter &globalLimiter)
Definition MixEulerHomogeneous.cpp:426
virtual int numberOfTransmittedSlopes() const
Definition MixEulerHomogeneous.cpp:468
virtual int numberOfTransmittedVariables() const
Definition MixEulerHomogeneous.cpp:336
virtual void setMax(const Mixture &mixture1, const Mixture &mixture2)
Definition MixEulerHomogeneous.cpp:446
virtual void allocateAndCopyMixture(Mixture **mixture)
Copy mixture attributes in mixture.
Definition MixEulerHomogeneous.cpp:80
virtual const double & getMixSoundSpeed() const
Definition MixEulerHomogeneous.h:118
virtual ~MixEulerHomogeneous()
Definition MixEulerHomogeneous.cpp:76
virtual std::string returnNameVector(const int &numVar) const
Definition MixEulerHomogeneous.cpp:289
virtual void getBufferSlopes(double *buffer, int &counter)
Definition MixEulerHomogeneous.cpp:485
virtual void setU(const double &u)
Definition MixEulerHomogeneous.cpp:513
virtual void computeSlopesMixture(const Mixture &sLeft, const Mixture &sRight, const double &distance)
Definition MixEulerHomogeneous.cpp:390
virtual int getNumberVectors() const
Definition MixEulerHomogeneous.h:72
virtual void copyMixture(Mixture &mixture)
Copy mixture in mixture attributes.
Definition MixEulerHomogeneous.cpp:87
virtual void setVector(const int &numVar, const Coord &value)
Definition MixEulerHomogeneous.cpp:321
virtual void fillBuffer(double *buffer, int &counter) const
Definition MixEulerHomogeneous.cpp:344
virtual void setScalar(const int &numVar, const double &value)
Definition MixEulerHomogeneous.cpp:304
virtual double computeInternalEnergy(const double *Yk, const double *ek)
Compute mixture specific internal energy.
Definition MixEulerHomogeneous.cpp:158
virtual const double & getTotalEnergy() const
Definition MixEulerHomogeneous.h:117
virtual void changeSign()
Definition MixEulerHomogeneous.cpp:534
virtual int getNumberScalars() const
Definition MixEulerHomogeneous.h:71
virtual void localProjection(const Coord &normal, const Coord &tangent, const Coord &binormal)
velocity vector projection in a local Cartesian coordinate system
Definition MixEulerHomogeneous.cpp:226
virtual Coord & getVelocity()
Definition MixEulerHomogeneous.h:115
Abstract class for mixture variables.
Definition Mixture.h:43
Abstract class for a phase.
Definition Phase.h:47
Definition tinyxml2.h:1149