ECOGEN 4.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
MixUEq.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 MIXUEQ_H
32#define MIXUEQ_H
33
34#include "../Mixture.h"
35
38class MixUEq : public Mixture
39{
40 public:
41 MixUEq();
49 MixUEq(tinyxml2::XMLElement* state, std::string fileName);
50 virtual ~MixUEq();
51
52 virtual void allocateAndCopyMixture(Mixture** mixture);
53 virtual void copyMixture(Mixture &mixture);
54 virtual double computeDensity(const double* alphak, const double* rhok);
55 virtual double computePressure(const double* alphak, const double* pk);
56 virtual double computeInternalEnergy(const double* Yk, const double* ek);
57 virtual double computeFrozenSoundSpeed(const double* Yk, const double* ck);
58
59 virtual void computeMixtureVariables(Phase** vecPhase);
60 virtual void computeTotalEnergy(std::vector<QuantitiesAddPhys*>& vecGPA);
61 virtual void totalEnergyToInternalEnergy(std::vector<QuantitiesAddPhys*>& vecGPA);
62
63 virtual void localProjection(const Coord& normal, const Coord& tangent, const Coord& binormal);
64 virtual void reverseProjection(const Coord& normal, const Coord& tangent, const Coord& binormal);
65
66 //Data printing
67 virtual int getNumberScalars() const { return numberScalarsMixture; };
68 virtual int getNumberVectors() const { return 1; };
69 virtual double returnScalar(const int& numVar) const;
70 virtual Coord returnVector(const int& numVar) const;
71 virtual std::string returnNameScalar(const int& numVar) const;
72 virtual std::string returnNameVector(const int& numVar) const;
73
74 //Data reading
75 virtual void setScalar(const int& numVar, const double& value);
76 virtual void setVector(const int& numVar, const Coord& value);
77
78 //Parallel
79 virtual int numberOfTransmittedVariables() const;
80 virtual void fillBuffer(double* buffer, int& counter) const;
81 virtual void fillBuffer(std::vector<double>& dataToSend) const;
82 virtual void getBuffer(double* buffer, int& counter);
83 virtual void getBuffer(std::vector<double>& dataToReceive, int& counter);
84
85 //Second order
86 virtual void computeSlopesMixture(const Mixture &sLeft, const Mixture &sRight, const double& distance);
87 virtual void setToZero();
88 virtual void setToMax();
89 virtual void extrapolate(const Mixture &slope, const double& distance);
90 virtual void limitSlopes(const Mixture &slopeGauche, const Mixture &slopeDroite, Limiter& globalLimiter);
91 virtual void setMin(const Mixture& mixture1, const Mixture& mixture2);
92 virtual void setMax(const Mixture& mixture1, const Mixture& mixture2);
93 virtual void computeGradientLimiter(const Limiter& globalLimiter, const Mixture& mixture, const Mixture& mixtureMin, const Mixture& mixtureMax, const Mixture& slope);
94
95 //Parallel second order
96 virtual int numberOfTransmittedSlopes() const;
97 virtual void fillBufferSlopes(double* buffer, int& counter) const;
98 virtual void getBufferSlopes(double* buffer, int& counter);
99
100 //Accessors
101 virtual const double& getDensity() const { return m_density; };
102 virtual const double& getPressure() const { return m_pressure; };
103 virtual const double& getU() const { return m_velocity.getX(); };
104 virtual const double& getV() const { return m_velocity.getY(); };
105 virtual const double& getW() const { return m_velocity.getZ(); };
106 virtual const Coord& getVelocity() const { return m_velocity; };
107 virtual Coord& getVelocity() { return m_velocity; };
108 virtual const double& getEnergy() const { return m_energy; };
109 virtual const double& getTotalEnergy() const { return m_totalEnergy; };
110 virtual const double& getFrozenSoundSpeed() const { return m_frozenSoundSpeed; };
111 virtual const double& getWoodSoundSpeed() const { return m_woodSoundSpeed; };
112
113 virtual void setPressure(const double& p);
114 virtual void setVelocity(const double& u, const double& v, const double& w);
115 virtual void setVelocity(const Coord& vit);
116 virtual void setU(const double& u);
117 virtual void setV(const double& v);
118 virtual void setW(const double& w);
119 virtual void setTotalEnergy(double& totalEnergy);
120
121 //Operators
122 virtual void changeSign();
123 virtual void multiplyAndAdd(const Mixture &slopesMixtureTemp, const double& coeff);
124 virtual void divide(const double& coeff);
125
126 protected:
127 double m_density;
128 double m_pressure;
130 double m_energy;
134};
135
136#endif // MIXUEQ_H
int numberScalarsMixture
Definition Mixture.cpp:33
@ 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 the velocity-equilibrium system of equations.
Definition MixUEq.h:39
virtual void computeSlopesMixture(const Mixture &sLeft, const Mixture &sRight, const double &distance)
Definition MixUEq.cpp:345
virtual void totalEnergyToInternalEnergy(std::vector< QuantitiesAddPhys * > &vecGPA)
Compute mixture internal specific energy from total one taking account for energies associated to ext...
Definition MixUEq.cpp:175
virtual void setW(const double &w)
Definition MixUEq.cpp:462
virtual const double & getPressure() const
Definition MixUEq.h:102
virtual const double & getU() const
Definition MixUEq.h:103
virtual void setVelocity(const double &u, const double &v, const double &w)
Definition MixUEq.cpp:446
double m_frozenSoundSpeed
frozen sound speed
Definition MixUEq.h:132
double m_density
mixture density
Definition MixUEq.h:127
virtual void setToMax()
Definition MixUEq.cpp:361
virtual const double & getWoodSoundSpeed() const
Definition MixUEq.h:111
virtual double returnScalar(const int &numVar) const
Definition MixUEq.cpp:201
virtual void copyMixture(Mixture &mixture)
Copy mixture in mixture attributes.
Definition MixUEq.cpp:75
virtual int numberOfTransmittedVariables() const
Definition MixUEq.cpp:295
virtual void fillBuffer(double *buffer, int &counter) const
Definition MixUEq.cpp:303
virtual void setPressure(const double &p)
Definition MixUEq.cpp:442
virtual void setMin(const Mixture &mixture1, const Mixture &mixture2)
Definition MixUEq.cpp:386
virtual void allocateAndCopyMixture(Mixture **mixture)
Copy mixture attributes in mixture.
Definition MixUEq.cpp:68
virtual void reverseProjection(const Coord &normal, const Coord &tangent, const Coord &binormal)
velocity vector reverse projection in the absolute Cartesian coordinate system
Definition MixUEq.cpp:192
double m_pressure
mixture pressure
Definition MixUEq.h:128
virtual std::string returnNameVector(const int &numVar) const
Definition MixUEq.cpp:248
virtual const Coord & getVelocity() const
Definition MixUEq.h:106
virtual const double & getFrozenSoundSpeed() const
Definition MixUEq.h:110
virtual void fillBufferSlopes(double *buffer, int &counter) const
Definition MixUEq.cpp:422
virtual void extrapolate(const Mixture &slope, const double &distance)
Definition MixUEq.cpp:368
virtual void setVector(const int &numVar, const Coord &value)
Definition MixUEq.cpp:280
virtual void changeSign()
Definition MixUEq.cpp:475
double m_woodSoundSpeed
wood sound speed
Definition MixUEq.h:133
virtual double computeInternalEnergy(const double *Yk, const double *ek)
Compute mixture specific internal energy.
Definition MixUEq.cpp:112
virtual void multiplyAndAdd(const Mixture &slopesMixtureTemp, const double &coeff)
Definition MixUEq.cpp:484
virtual int getNumberScalars() const
Definition MixUEq.h:67
virtual void computeTotalEnergy(std::vector< QuantitiesAddPhys * > &vecGPA)
Compute mixture total specific energy from internal one taking account for energies associated to ext...
Definition MixUEq.cpp:165
virtual const double & getW() const
Definition MixUEq.h:105
virtual void setTotalEnergy(double &totalEnergy)
Definition MixUEq.cpp:466
virtual double computePressure(const double *alphak, const double *pk)
Compute mixture pressure.
Definition MixUEq.cpp:100
virtual Coord returnVector(const int &numVar) const
Definition MixUEq.cpp:218
virtual void limitSlopes(const Mixture &slopeGauche, const Mixture &slopeDroite, Limiter &globalLimiter)
Definition MixUEq.cpp:377
double m_energy
mixture internal specific energy
Definition MixUEq.h:130
virtual const double & getDensity() const
Definition MixUEq.h:101
virtual void computeMixtureVariables(Phase **vecPhase)
Fills some mixture attributes from a phase array.
Definition MixUEq.cpp:136
MixUEq()
Definition MixUEq.cpp:37
virtual void setToZero()
Definition MixUEq.cpp:354
virtual double computeDensity(const double *alphak, const double *rhok)
Compute mixture density.
Definition MixUEq.cpp:88
virtual void getBufferSlopes(double *buffer, int &counter)
Definition MixUEq.cpp:431
virtual void localProjection(const Coord &normal, const Coord &tangent, const Coord &binormal)
velocity vector projection in a local Cartesian coordinate system
Definition MixUEq.cpp:185
virtual void divide(const double &coeff)
Definition MixUEq.cpp:493
virtual void computeGradientLimiter(const Limiter &globalLimiter, const Mixture &mixture, const Mixture &mixtureMin, const Mixture &mixtureMax, const Mixture &slope)
Definition MixUEq.cpp:404
virtual int numberOfTransmittedSlopes() const
Definition MixUEq.cpp:415
virtual void getBuffer(double *buffer, int &counter)
Definition MixUEq.cpp:323
virtual void setScalar(const int &numVar, const double &value)
Definition MixUEq.cpp:263
virtual ~MixUEq()
Definition MixUEq.cpp:64
virtual void setU(const double &u)
Definition MixUEq.cpp:454
virtual std::string returnNameScalar(const int &numVar) const
Definition MixUEq.cpp:231
virtual const double & getTotalEnergy() const
Definition MixUEq.h:109
virtual const double & getV() const
Definition MixUEq.h:104
virtual void setV(const double &v)
Definition MixUEq.cpp:458
virtual int getNumberVectors() const
Definition MixUEq.h:68
virtual double computeFrozenSoundSpeed(const double *Yk, const double *ck)
Compute mixture frozen speed of sound.
Definition MixUEq.cpp:124
virtual void setMax(const Mixture &mixture1, const Mixture &mixture2)
Definition MixUEq.cpp:395
double m_totalEnergy
mixture total specific energy
Definition MixUEq.h:131
virtual Coord & getVelocity()
Definition MixUEq.h:107
Coord m_velocity
mixture velocity
Definition MixUEq.h:129
virtual const double & getEnergy() const
Definition MixUEq.h:108
Abstract class for mixture variables.
Definition Mixture.h:43
Abstract class for a phase.
Definition Phase.h:47
Definition tinyxml2.h:1149