ECOGEN 4.0
Evolutive, Compressible, Open, Genuine, Easy, N-phase
Loading...
Searching...
No Matches
CellO2.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 CELLO2_H
32#define CELLO2_H
33
34#include "../Order1/Cell.h"
35#include "CellInterfaceO2.h"
36
37class CellO2 : public Cell
38{
39 public:
40 CellO2();
41 CellO2(int lvl); //Pour AMR
42 virtual ~CellO2();
43 virtual void allocate(const std::vector<AddPhys*>& addPhys);
44 virtual void copyPhase(const int& phaseNumber, Phase* phase);
45 virtual void saveCons();
46 virtual void getBackCons();
47 virtual void predictionOrdre2(const double& dt, Symmetry* symmetry);
48 virtual void fulfillState(Prim type = vecPhases);
49
50 //Set/Get
51 virtual Phase* getPhase(const int& phaseNumber, Prim type = vecPhases) const;
52 virtual Phase** getPhases(Prim type = vecPhases) const;
53 virtual Mixture* getMixture(Prim type = vecPhases) const;
54 virtual Transport& getTransport(const int& numTransport, Prim type = vecPhases) const;
55 virtual Transport* getTransports(Prim type = vecPhases) const;
56 virtual void setTransport(double value, int& numTransport, Prim type = vecPhases);
57
58 // For 2nd order with parallel
59 virtual void getBufferSlopes(double* /*buffer*/, int& /*counter*/, const int& /*lvl*/) { Errors::errorMessage("getBufferSlopes not available for CellO2"); };
60 virtual void fillBufferSlopes(double* /*buffer*/, int& /*counter*/, const int& /*lvl*/, const int& /*neighbour*/) const { Errors::errorMessage("fillBufferSlopes not available for CellO2"); };
61
62 // -- Cartesian --
63 virtual void computeLocalSlopes(CellInterface& /*cellInterfaceRef*/, Limiter& /*globalLimiter*/, Limiter& /*interfaceLimiter*/,
64 Limiter& /*globalVolumeFractionLimiter*/, Limiter& /*interfaceVolumeFractionLimiter*/,
65 double& /*alphaCellAfterOppositeSide*/, double& /*alphaCell*/, double& /*alphaCellOtherInterfaceSide*/, double& /*epsInterface*/) {};
66
67 virtual void computeLocalSlopesLimite(CellInterface& /*cellInterfaceRef*/, Limiter& /*globalLimiter*/,
68 Limiter& /*interfaceLimiter*/, Limiter& /*globalVolumeFractionLimiter*/, Limiter& /*interfaceVolumeFractionLimiter*/,
69 double& /*epsInterface*/) {};
70
71 //Pour methode AMR
72 virtual void createChildCell(const int& /*lvl*/) {};
74 // -- NS --
75 virtual GradPhase* getGradPhase(const int& /*phaseNumber*/) const { Errors::errorMessage("getGradPhase not available for Cell"); return nullptr; };
76 virtual GradMixture* getGradMixture() const { Errors::errorMessage("getGradMixture not available for Cell"); return nullptr; };
77 virtual GradTransport* getGradTransport(const int& /*transportNumber*/) const { Errors::errorMessage("getGradTransport not available for Cell"); return nullptr; };
78 virtual void allocateSecondOrderBuffersAndGradientVectors(Phase** /*phases*/, Mixture* /*mixture*/) {};
79 virtual void computeGradientsO2() {};
80 virtual void limitGradientsO2(Limiter& /*globalLimiter*/) {};
81
82 virtual void computeLocalSlopes(CellInterface& /*cellInterfaceRef*/) {};
83
84 protected:
91 private:
92};
93
94#endif // CELLO2_H
Prim
Enumeration for the primitive-variable type (usefull for second order, slopes, etc....
Definition Tools.h:39
@ vecPhases
Definition Tools.h:39
Definition CellInterface.h:52
Definition CellO2.h:38
virtual void predictionOrdre2(const double &dt, Symmetry *symmetry)
Definition CellO2.cpp:111
virtual void computeLocalSlopesLimite(CellInterface &, Limiter &, Limiter &, Limiter &, Limiter &, double &)
Definition CellO2.h:67
virtual Mixture * getMixture(Prim type=vecPhases) const
Definition CellO2.cpp:182
virtual Phase * getPhase(const int &phaseNumber, Prim type=vecPhases) const
Definition CellO2.cpp:160
virtual GradTransport * getGradTransport(const int &) const
Definition CellO2.h:77
Mixture * m_mixtureO2
Definition CellO2.h:86
Transport * m_consTransportsSauvegarde
Definition CellO2.h:89
virtual Transport * getTransports(Prim type=vecPhases) const
Definition CellO2.cpp:204
virtual void computeLocalSlopes(CellInterface &, Limiter &, Limiter &, Limiter &, Limiter &, double &, double &, double &, double &)
Definition CellO2.h:63
virtual Transport & getTransport(const int &numTransport, Prim type=vecPhases) const
Definition CellO2.cpp:193
virtual void fillBufferSlopes(double *, int &, const int &, const int &) const
Definition CellO2.h:60
virtual void getBufferSlopes(double *, int &, const int &)
Definition CellO2.h:59
CellO2()
Definition CellO2.cpp:36
virtual void setTransport(double value, int &numTransport, Prim type=vecPhases)
Definition CellO2.cpp:215
virtual GradMixture * getGradMixture() const
Definition CellO2.h:76
virtual void computeGradientsO2()
Compute gradients for 2nd-order scheme on unstructured mesh.
Definition CellO2.h:79
virtual void limitGradientsO2(Limiter &)
Definition CellO2.h:80
Flux * m_consSauvegarde
Definition CellO2.h:88
virtual void saveCons()
Definition CellO2.cpp:95
Transport * m_vecTransportsO2
Definition CellO2.h:87
virtual void allocate(const std::vector< AddPhys * > &addPhys)
Memory allocation of cell attributes.
Definition CellO2.cpp:58
virtual void createChildCell(const int &)
Definition CellO2.h:72
virtual void getBackCons()
Definition CellO2.cpp:103
virtual ~CellO2()
Definition CellO2.cpp:44
virtual void fulfillState(Prim type=vecPhases)
Definition CellO2.cpp:137
virtual void allocateSecondOrderBuffersAndGradientVectors(Phase **, Mixture *)
Compute global variable buffers (min, max, etc.) and initialize speficic gradient vectors for 2nd-ord...
Definition CellO2.h:78
virtual void computeLocalSlopes(CellInterface &)
Compute slopes for 2nd-order scheme on unstructured mesh.
Definition CellO2.h:82
Phase ** m_vecPhasesO2
Definition CellO2.h:85
virtual Phase ** getPhases(Prim type=vecPhases) const
Definition CellO2.cpp:171
virtual GradPhase * getGradPhase(const int &) const
Definition CellO2.h:75
virtual void copyPhase(const int &phaseNumber, Phase *phase)
Definition CellO2.cpp:87
Base class for a mesh cell.
Definition Cell.h:59
static void errorMessage(const std::string &message)
Definition Errors.cpp:56
Abstract class for conservative variables and fluxes.
Definition Flux.h:43
Mixture variable gradients. Stored for 2nd-order computation on unstructured mesh (O2 NS)
Definition GradMixture.h:45
Phase variable gradients. Stored for 2nd-order computation on unstructured mesh (O2 NS)
Definition GradPhase.h:44
Transport variable gradients. Stored for 2nd-order computation on unstructured mesh (O2 NS)
Definition GradTransport.h:43
Definition Limiter.h:38
Abstract class for mixture variables.
Definition Mixture.h:43
Abstract class for a phase.
Definition Phase.h:47
General class for axial symmetries.
Definition Symmetry.h:45
Class for additional transport equations.
Definition Transport.h:41