1 //============================================================================
3 * \file TransportEquation.hxx
4 * \author Michael NDJINGA
7 * \brief Fluid enthalpy transport equation
9 //============================================================================
11 /*! \class TransportEquation TransportEquation.hxx "TransportEquation.hxx"
12 * \brief Scalar advection equation for a fluid enthalpy
13 * \details see \ref TransportEqPage for more details
15 #ifndef TransportEquation_HXX_
16 #define TransportEquation_HXX_
18 #include "ProblemCoreFlows.hxx"
22 class TransportEquation: public ProblemCoreFlows
26 /** \fn TransportEquation
27 * \brief Constructor for the enthalpy transport in a fluid
28 * \param [in] phaseType : \ref Liquid or \ref Gas
29 * \param [in] pressureEstimate : \ref around1bar or \ref around155bars
30 * \param [in] vector<double> : fluid velocity (assumed constant)
32 TransportEquation(phaseType fluid, pressureEstimate pEstimate,vector<double> vitesseTransport);
35 virtual void initialize();
36 virtual void terminate();//vide la mémoire et enregistre le résultat final
37 bool initTimeStep(double dt);
38 double computeTimeStep(bool & stop);//propose un pas de temps pour le calcul. Celà nécessite de discrétiser les opérateur (convection, diffusion, sources) et pour chacun d'employer la condition cfl. En cas de problème durant ce calcul (exemple t=tmax), renvoie stop=true
39 void abortTimeStep();//efface les inconnues calculées par solveTimeStep() et reinitialise dt à 0
40 bool iterateTimeStep(bool &ok);
42 virtual void validateTimeStep();
44 /** \fn setIntletBoundaryCondition
45 * \brief adds a new boundary condition of type Inlet
47 * \param [in] string : the name of the boundary
48 * \param [in] double : the value of the temperature at the boundary
51 void setInletBoundaryCondition(string groupName,double enthalpy){
52 _limitField[groupName]=LimitField(Inlet,-1,vector<double>(_Ndim,0),vector<double>(_Ndim,0),vector<double>(_Ndim,0),-1,enthalpy,-1,-1);
55 /*Physical parameters*/
56 Field& getFluidTemperatureField(){
60 void setLiqSatEnthalpy(double hsatl){
63 void setVapSatEnthalpy(double hsatv){
66 void setLiqSatDensity(double rhosatl){
69 void setVapSatDensity(double rhosatv){
72 void setTransportVelocity(Vector v){
76 double computeTransportMatrix();
78 void updatePrimitives();
79 double temperature(double h){
80 return _Tref+(h-_href)/_cpref;
82 double voidFraction(double h){
83 double titre=(h-_href)/(_hsatv-_hsatl);
88 else return titre*_rhosatl/(titre*_rhosatl+(1-titre)*_rhosatv);
90 double density(double alpha){
91 return alpha*_rhosatv+(1-alpha)*_rhosatl;
94 Field _TT, _Alpha, _Rho;//Fields of temperature and coupled temperature
95 double _rhosatv, _rhosatl;
96 double _Tref, _href, _cpref;
97 Vector _vitesseTransport, _normale;
98 bool _transportMatrixSet;
99 Vec _Hn, _deltaH, _Hk, _Hkm1, _b0;
100 double _dt_transport, _dt_src;
103 #endif /* TransportEquation_HXX_ */