ECOGEN 6.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
MixEuler.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 MIXEULER_H
32#define MIXEULER_H
33
34#include "../Mixture.h"
35
38class MixEuler : public Mixture
39{
40 public:
41 MixEuler();
42 ~MixEuler() override;
43
44 void allocateAndCopyMixture(Mixture** mixture) override;
45 void copyMixture(Mixture& /*mixture*/) override {};
46 double computeDensity(const double* /*alphak*/, const double* /*rhok*/) override { return 0.; };
47 double computePressure(const double* /*alphak*/, const double* /*pk*/) override { return 0.; };
48 double computeInternalEnergy(const double* /*Yk*/, const double* /*ek*/) override { return 0.; };
49 double computeFrozenSoundSpeed(const double* /*Yk*/, const double* /*ck*/) override { return 0.; };
50
51 void computeMixtureVariables(Phase** /*vecPhase*/) override {};
52 void computeTotalEnergy(std::vector<QuantitiesAddPhys*>& /*vecGPA*/) override {};
53
54 void localProjection(const Coord& /*normal*/, const Coord& /*tangent*/, const Coord& /*binormal*/) override {};
55 void reverseProjection(const Coord& /*normal*/, const Coord& /*tangent*/, const Coord& /*binormal*/) override {};
56
57 //Specific methods for data printing
58 //----------------------------------
59 int getNumberScalars() const override { return 0; };
60 int getNumberVectors() const override { return 0; };
61 double returnScalar(const int& /*numVar*/) const override { return 0.; };
62 Coord returnVector(const int& /*numVar*/) const override { return 0; };
63 std::string returnNameScalar(const int& /*numVar*/) const override { return Errors::defaultString; };
64 std::string returnNameVector(const int& /*numVar*/) const override { return Errors::defaultString; };
65
66 //Specific methods for parallel computing
67 //---------------------------------------
68 int numberOfTransmittedVariables() const override { return 0; };
69 void fillBuffer(double* /*buffer*/, int& /*counter*/) const override {};
70 void fillBuffer(std::vector<double>& /*dataToSend*/) const override {};
71 void getBuffer(double* /*buffer*/, int& /*counter*/) override {};
72 void getBuffer(std::vector<double>& /*dataToReceive*/, int& /*counter*/) override {};
73
74 //Specific methods for second order
75 //---------------------------------
76 void computeSlopesMixture(const Mixture& /*sLeft*/, const Mixture& /*sRight*/, const double& /*distance*/) override {};
77 void setToZero() override {};
78 void setToMax() override {};
79 void extrapolate(const Mixture& /*slope*/, const double& /*distance*/) override {};
80 void limitSlopes(const Mixture& /*slopeGauche*/, const Mixture& /*slopeDroite*/, Limiter& /*globalLimiter*/) override {};
81 void setMin(const Mixture& /*mixture1*/, const Mixture& /*mixture2*/) override {};
82 void setMax(const Mixture& /*mixture1*/, const Mixture& /*mixture2*/) override {};
83 void computeGradientLimiter(const Limiter& /*globalLimiter*/,
84 const Mixture& /*mixture*/,
85 const Mixture& /*mixtureMin*/,
86 const Mixture& /*mixtureMax*/,
87 const Mixture& /*slope*/) override {};
88
89 //Specific methods for parallele computing at second order
90 //--------------------------------------------------------
91 int numberOfTransmittedSlopes() const override { return 0; };
92 void fillBufferSlopes(double* /*buffer*/, int& /*counter*/) const override {};
93 void getBufferSlopes(double* /*buffer*/, int& /*counter*/) override {};
94
95 //Accessors
96 //---------
97 const double& getDensity() const override { return Errors::defaultDouble; };
98 const double& getPressure() const override { return Errors::defaultDouble; };
99 const double& getU() const override { return Errors::defaultDouble; };
100 const double& getV() const override { return Errors::defaultDouble; };
101 const double& getW() const override { return Errors::defaultDouble; };
102 const Coord& getVelocity() const override { return Coord::defaultCoord; };
104 const double& getEnergy() const override { return Errors::defaultDouble; };
105 const double& getTotalEnergy() const override { return Errors::defaultDouble; };
106 const double& getFrozenSoundSpeed() const override { return Errors::defaultDouble; };
107 const double& getWoodSoundSpeed() const override { return Errors::defaultDouble; };
108
109 void setPressure(const double& /*p*/) override {};
110 void setVelocity(const double& /*u*/, const double& /*v*/, const double& /*w*/) override {};
111 void setVelocity(const Coord& /*vit*/) override {};
112 void setU(const double& /*u*/) override {};
113 void setV(const double& /*v*/) override {};
114 void setW(const double& /*w*/) override {};
115 void setTotalEnergy(double& /*totalEnergy*/) override {};
116
117 //Operators
118 //---------
119 void changeSign() override {};
120 void multiplyAndAdd(const Mixture& /*slopesMixtureTemp*/, const double& /*coeff*/) override {};
121 void divide(const double& /*coeff*/) override {};
122
123 protected:
124 private:
125};
126
127#endif // MIXEULER_H
Class for a coordinate system object such as coordinates of the vertex or a vector.
Definition Coord.h:43
static Coord defaultCoordNonConst
Default Coord object (non-const version).
Definition Coord.h:58
static const Coord defaultCoord
Default Coord object (const version).
Definition Coord.h:55
static const std::string defaultString
Definition Errors.h:100
static constexpr double defaultDouble
Definition Errors.h:99
Definition Limiter.h:38
double computePressure(const double *, const double *) override
Compute mixture pressure.
Definition MixEuler.h:47
int numberOfTransmittedSlopes() const override
Definition MixEuler.h:91
int getNumberVectors() const override
Definition MixEuler.h:60
void copyMixture(Mixture &) override
Copy mixture in mixture attributes.
Definition MixEuler.h:45
void setTotalEnergy(double &) override
Definition MixEuler.h:115
const double & getWoodSoundSpeed() const override
Definition MixEuler.h:107
const double & getW() const override
Definition MixEuler.h:101
void setV(const double &) override
Definition MixEuler.h:113
void allocateAndCopyMixture(Mixture **mixture) override
Copy mixture attributes in mixture.
Definition MixEuler.cpp:45
double computeDensity(const double *, const double *) override
Compute mixture density.
Definition MixEuler.h:46
void setW(const double &) override
Definition MixEuler.h:114
const double & getEnergy() const override
Definition MixEuler.h:104
void setVelocity(const double &, const double &, const double &) override
Definition MixEuler.h:110
Coord & getVelocity() override
Definition MixEuler.h:103
void setToZero() override
Definition MixEuler.h:77
int numberOfTransmittedVariables() const override
Definition MixEuler.h:68
const double & getV() const override
Definition MixEuler.h:100
void reverseProjection(const Coord &, const Coord &, const Coord &) override
velocity vector reverse projection in the absolute Cartesian coordinate system
Definition MixEuler.h:55
void setU(const double &) override
Definition MixEuler.h:112
void computeMixtureVariables(Phase **) override
Fills some mixture attributes from a phase array.
Definition MixEuler.h:51
void setPressure(const double &) override
Definition MixEuler.h:109
int getNumberScalars() const override
Definition MixEuler.h:59
std::string returnNameVector(const int &) const override
Definition MixEuler.h:64
void localProjection(const Coord &, const Coord &, const Coord &) override
velocity vector projection in a local Cartesian coordinate system
Definition MixEuler.h:54
void setVelocity(const Coord &) override
Definition MixEuler.h:111
double computeFrozenSoundSpeed(const double *, const double *) override
Compute mixture frozen speed of sound.
Definition MixEuler.h:49
const double & getU() const override
Definition MixEuler.h:99
double computeInternalEnergy(const double *, const double *) override
Compute mixture specific internal energy.
Definition MixEuler.h:48
void fillBuffer(std::vector< double > &) const override
Definition MixEuler.h:70
Coord returnVector(const int &) const override
Definition MixEuler.h:62
void fillBufferSlopes(double *, int &) const override
Definition MixEuler.h:92
void computeGradientLimiter(const Limiter &, const Mixture &, const Mixture &, const Mixture &, const Mixture &) override
Definition MixEuler.h:83
std::string returnNameScalar(const int &) const override
Definition MixEuler.h:63
double returnScalar(const int &) const override
Definition MixEuler.h:61
void computeTotalEnergy(std::vector< QuantitiesAddPhys * > &) override
Compute mixture total specific energy from internal one taking account for energies associated to ext...
Definition MixEuler.h:52
void setMin(const Mixture &, const Mixture &) override
Definition MixEuler.h:81
void extrapolate(const Mixture &, const double &) override
Definition MixEuler.h:79
void fillBuffer(double *, int &) const override
Definition MixEuler.h:69
void getBufferSlopes(double *, int &) override
Definition MixEuler.h:93
MixEuler()
Definition MixEuler.cpp:37
void getBuffer(std::vector< double > &, int &) override
Definition MixEuler.h:72
const double & getDensity() const override
Definition MixEuler.h:97
void setToMax() override
Definition MixEuler.h:78
const double & getPressure() const override
Definition MixEuler.h:98
void limitSlopes(const Mixture &, const Mixture &, Limiter &) override
Definition MixEuler.h:80
void divide(const double &) override
Definition MixEuler.h:121
void multiplyAndAdd(const Mixture &, const double &) override
Definition MixEuler.h:120
void setMax(const Mixture &, const Mixture &) override
Definition MixEuler.h:82
const Coord & getVelocity() const override
Definition MixEuler.h:102
void changeSign() override
Definition MixEuler.h:119
void getBuffer(double *, int &) override
Definition MixEuler.h:71
~MixEuler() override
Definition MixEuler.cpp:41
const double & getFrozenSoundSpeed() const override
Definition MixEuler.h:106
void computeSlopesMixture(const Mixture &, const Mixture &, const double &) override
Definition MixEuler.h:76
const double & getTotalEnergy() const override
Definition MixEuler.h:105
Mixture()
Definition Mixture.cpp:37
Abstract class for a phase.
Definition Phase.h:47