ECOGEN 4.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
MixUEqTotEnergy.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 MIXUEQTOTENERGY_H
32#define MIXUEQTOTENERGY_H
33
34#include <vector>
35#include "../Mixture.h"
36
40{
41 public:
50 MixUEqTotEnergy(tinyxml2::XMLElement* state, std::string fileName);
51 virtual ~MixUEqTotEnergy();
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 void computeMixtureVariables(Phase** vecPhase);
61 virtual void computeTotalEnergy(std::vector<QuantitiesAddPhys*>& /*vecGPA*/) {};
62 virtual void totalEnergyToInternalEnergy(std::vector<QuantitiesAddPhys*>& /*vecGPA*/) {};
63
64 virtual void localProjection(const Coord& normal, const Coord& tangent, const Coord& binormal);
65 virtual void reverseProjection(const Coord& normal, const Coord& tangent, const Coord& binormal);
66
67 //Data printing
68 virtual int getNumberScalars() const { return numberScalarsMixture; };
69 virtual int getNumberVectors() const { return 1; };
70 virtual double returnScalar(const int& numVar) const;
71 virtual Coord returnVector(const int& numVar) const;
72 virtual std::string returnNameScalar(const int& numVar) const;
73 virtual std::string returnNameVector(const int& numVar) const;
74
75 //Data reading
76 virtual void setScalar(const int& numVar, const double& value);
77 virtual void setVector(const int& numVar, const Coord& value);
78
79 //Parallel
80 virtual int numberOfTransmittedVariables() const;
81 virtual void fillBuffer(double* buffer, int& counter) const;
82 virtual void fillBuffer(std::vector<double>& dataToSend) const;
83 virtual void getBuffer(double* buffer, int& counter);
84 virtual void getBuffer(std::vector<double>& dataToReceive, int& counter);
85
86 //Second order
87 virtual void computeSlopesMixture(const Mixture &sLeft, const Mixture &sRight, const double& distance);
88 virtual void setToZero();
89 virtual void extrapolate(const Mixture &slope, const double& distance);
90 virtual void limitSlopes(const Mixture &slopeGauche, const Mixture &slopeDroite, Limiter& globalLimiter);
91
92 //Parallel second order
93 virtual int numberOfTransmittedSlopes() const;
94 virtual void fillBufferSlopes(double* buffer, int& counter) const;
95 virtual void getBufferSlopes(double* buffer, int& counter);
96
97 //Accessors
98 virtual const double& getDensity() const { return m_density; };
99 virtual const double& getPressure() const { return m_pressure; };
100 virtual const double& getU() const { return m_velocity.getX(); };
101 virtual const double& getV() const { return m_velocity.getY(); };
102 virtual const double& getW() const { return m_velocity.getZ(); };
103 virtual const Coord& getVelocity() const { return m_velocity; };
104 virtual Coord& getVelocity() { return m_velocity; };
105 virtual const double& getFrozenSoundSpeed() const { return m_frozenSoundSpeed; };
106 virtual const double& getWoodSoundSpeed() const { return m_woodSoundSpeed; };
107
108 virtual void setPressure(const double& p);
109 virtual void setVelocity(const double& u, const double& v, const double& w);
110 virtual void setVelocity(const Coord& vit);
111 virtual void setU(const double& u);
112 virtual void setV(const double& v);
113 virtual void setW(const double& w);
114
115 //Operators
116 virtual void changeSign();
117 virtual void multiplyAndAdd(const Mixture &slopesMixtureTemp, const double& coeff);
118 virtual void divide(const double& coeff);
119
120 protected:
121 double m_density;
122 double m_pressure;
126};
127
128#endif // MIXUEQTOTENERGY_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 MixUEqTotEnergy.h:40
virtual const Coord & getVelocity() const
Definition MixUEqTotEnergy.h:103
virtual void setPressure(const double &p)
Definition MixUEqTotEnergy.cpp:374
virtual int numberOfTransmittedVariables() const
Definition MixUEqTotEnergy.cpp:265
virtual std::string returnNameVector(const int &numVar) const
Definition MixUEqTotEnergy.cpp:220
virtual int getNumberScalars() const
Definition MixUEqTotEnergy.h:68
virtual double computeInternalEnergy(const double *Yk, const double *ek)
Compute mixture specific internal energy.
Definition MixUEqTotEnergy.cpp:111
double m_density
mixture density
Definition MixUEqTotEnergy.h:121
virtual const double & getDensity() const
Definition MixUEqTotEnergy.h:98
virtual void setScalar(const int &numVar, const double &value)
Definition MixUEqTotEnergy.cpp:235
double m_frozenSoundSpeed
frozen sound speed
Definition MixUEqTotEnergy.h:124
virtual Coord & getVelocity()
Definition MixUEqTotEnergy.h:104
virtual void setV(const double &v)
Definition MixUEqTotEnergy.cpp:390
virtual void fillBufferSlopes(double *buffer, int &counter) const
Definition MixUEqTotEnergy.cpp:354
virtual std::string returnNameScalar(const int &numVar) const
Definition MixUEqTotEnergy.cpp:205
virtual const double & getPressure() const
Definition MixUEqTotEnergy.h:99
virtual const double & getU() const
Definition MixUEqTotEnergy.h:100
virtual void setVelocity(const double &u, const double &v, const double &w)
Definition MixUEqTotEnergy.cpp:378
virtual const double & getFrozenSoundSpeed() const
Definition MixUEqTotEnergy.h:105
virtual void multiplyAndAdd(const Mixture &slopesMixtureTemp, const double &coeff)
Definition MixUEqTotEnergy.cpp:409
virtual void localProjection(const Coord &normal, const Coord &tangent, const Coord &binormal)
velocity vector projection in a local Cartesian coordinate system
Definition MixUEqTotEnergy.cpp:161
virtual void setToZero()
Definition MixUEqTotEnergy.cpp:320
double m_pressure
mixture pressure
Definition MixUEqTotEnergy.h:122
virtual int getNumberVectors() const
Definition MixUEqTotEnergy.h:69
virtual void getBufferSlopes(double *buffer, int &counter)
Definition MixUEqTotEnergy.cpp:363
virtual void computeMixtureVariables(Phase **vecPhase)
Fills some mixture attributes from a phase array.
Definition MixUEqTotEnergy.cpp:135
virtual double computeDensity(const double *alphak, const double *rhok)
Compute mixture density.
Definition MixUEqTotEnergy.cpp:87
virtual void getBuffer(double *buffer, int &counter)
Definition MixUEqTotEnergy.cpp:291
virtual void totalEnergyToInternalEnergy(std::vector< QuantitiesAddPhys * > &)
Compute mixture internal specific energy from total one taking account for energies associated to ext...
Definition MixUEqTotEnergy.h:62
virtual void limitSlopes(const Mixture &slopeGauche, const Mixture &slopeDroite, Limiter &globalLimiter)
Definition MixUEqTotEnergy.cpp:336
Coord m_velocity
mixture velocity
Definition MixUEqTotEnergy.h:123
virtual double computeFrozenSoundSpeed(const double *Yk, const double *ck)
Compute mixture frozen speed of sound.
Definition MixUEqTotEnergy.cpp:123
virtual void divide(const double &coeff)
Definition MixUEqTotEnergy.cpp:418
virtual void allocateAndCopyMixture(Mixture **mixture)
Copy mixture attributes in mixture.
Definition MixUEqTotEnergy.cpp:69
virtual void changeSign()
Definition MixUEqTotEnergy.cpp:400
virtual double returnScalar(const int &numVar) const
Definition MixUEqTotEnergy.cpp:177
virtual int numberOfTransmittedSlopes() const
Definition MixUEqTotEnergy.cpp:347
virtual void setVector(const int &numVar, const Coord &value)
Definition MixUEqTotEnergy.cpp:250
virtual void copyMixture(Mixture &mixture)
Copy mixture in mixture attributes.
Definition MixUEqTotEnergy.cpp:76
MixUEqTotEnergy()
Definition MixUEqTotEnergy.cpp:38
virtual const double & getV() const
Definition MixUEqTotEnergy.h:101
virtual ~MixUEqTotEnergy()
Definition MixUEqTotEnergy.cpp:65
virtual const double & getWoodSoundSpeed() const
Definition MixUEqTotEnergy.h:106
virtual double computePressure(const double *alphak, const double *pk)
Compute mixture pressure.
Definition MixUEqTotEnergy.cpp:99
virtual void computeSlopesMixture(const Mixture &sLeft, const Mixture &sRight, const double &distance)
Definition MixUEqTotEnergy.cpp:311
virtual void computeTotalEnergy(std::vector< QuantitiesAddPhys * > &)
Compute mixture total specific energy from internal one taking account for energies associated to ext...
Definition MixUEqTotEnergy.h:61
virtual void reverseProjection(const Coord &normal, const Coord &tangent, const Coord &binormal)
velocity vector reverse projection in the absolute Cartesian coordinate system
Definition MixUEqTotEnergy.cpp:168
virtual void fillBuffer(double *buffer, int &counter) const
Definition MixUEqTotEnergy.cpp:273
double m_woodSoundSpeed
wood sound speed
Definition MixUEqTotEnergy.h:125
virtual Coord returnVector(const int &numVar) const
Definition MixUEqTotEnergy.cpp:192
virtual void setU(const double &u)
Definition MixUEqTotEnergy.cpp:386
virtual const double & getW() const
Definition MixUEqTotEnergy.h:102
virtual void setW(const double &w)
Definition MixUEqTotEnergy.cpp:394
virtual void extrapolate(const Mixture &slope, const double &distance)
Definition MixUEqTotEnergy.cpp:327
Abstract class for mixture variables.
Definition Mixture.h:43
Abstract class for a phase.
Definition Phase.h:47
Definition tinyxml2.h:1149