00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __EOS_MULTI_POLY_H_
00028 #define __EOS_MULTI_POLY_H_
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 #include "headcpp.h"
00053
00054
00055 #include <stdio.h>
00056 #include <assert.h>
00057
00058
00059 #include "eos.h"
00060 #include "param.h"
00061 class Tbl ;
00062 class Cmp ;
00063 class Param ;
00064 class Eos ;
00065
00066
00067
00068
00069
00077 class Eos_multi_poly : public Eos {
00078
00079
00080
00081
00082 protected:
00084 int npeos ;
00085
00087 double* gamma ;
00088
00092 double kappa0 ;
00093
00095 double logP1 ;
00096
00098 double* logRho ;
00099
00106 double* kappa ;
00107
00111 double* nbCrit ;
00112
00116 double* entCrit ;
00117
00122 double* decInc ;
00123
00127 double m0 ;
00128
00135 double* mu0 ;
00136
00137
00138
00139
00140 public:
00153 Eos_multi_poly(int npoly, double* gamma_i, double kappa0_i,
00154 double logP1_i, double* logRho_i, double* decInc_i) ;
00155
00156 Eos_multi_poly(const Eos_multi_poly& ) ;
00157
00158 protected:
00165 Eos_multi_poly(FILE* ) ;
00166
00172 Eos_multi_poly(ifstream& ) ;
00173
00175 friend Eos* Eos::eos_from_file(FILE* ) ;
00176 friend Eos* Eos::eos_from_file(ifstream& ) ;
00177
00178 public:
00179 virtual ~Eos_multi_poly() ;
00180
00181
00182
00183
00184 public:
00186 void operator=(const Eos_multi_poly&) ;
00187
00189
00190
00191
00192
00193
00194 public:
00196 virtual bool operator==(const Eos& ) const ;
00197
00199 virtual bool operator!=(const Eos& ) const ;
00200
00204 virtual int identify() const ;
00205
00207 const int& get_npeos() const { return npeos ; } ;
00208
00210 const double& get_gamma(int n) const {
00211 assert(n>=0 && n<npeos) ;
00212 return gamma[n] ;
00213 } ;
00214
00216 const double& get_kappa0() const { return kappa0 ; } ;
00217
00219 const double& get_logP1() const { return logP1 ; } ;
00220
00222 const double& get_logRho(int n) const {
00223 assert(n>=0 && n<npeos-1) ;
00224 return logRho[n] ;
00225 } ;
00226
00233 const double& get_kappa(int n) const {
00234 assert(n>=0 && n<npeos) ;
00235 return kappa[n] ;
00236 } ;
00237
00239 const double& get_nbCrit(int n) const {
00240 assert(n>=0 && n<npeos-1) ;
00241 return nbCrit[n] ;
00242 } ;
00243
00245 const double& get_entCrit(int n) const {
00246 assert(n>=0 && n<npeos-1) ;
00247 return entCrit[n] ;
00248 } ;
00249
00250 protected:
00252 void set_auxiliary() ;
00253
00254
00255
00256
00257 public:
00258 virtual void sauve(FILE *) const ;
00259
00260 protected:
00261 virtual ostream& operator>>(ostream &) const ;
00262
00263
00264
00265
00266 public:
00276 virtual double nbar_ent_p(double ent, const Param* par=0x0) const ;
00277
00286 virtual double ener_ent_p(double ent, const Param* par=0x0) const ;
00287
00296 virtual double press_ent_p(double ent, const Param* par=0x0) const ;
00297
00306 virtual double der_nbar_ent_p(double ent, const Param* par=0x0) const ;
00307
00316 virtual double der_ener_ent_p(double ent, const Param* par=0x0) const ;
00317
00326 virtual double der_press_ent_p(double ent, const Param* par=0x0) const ;
00327
00336 virtual double der_press_nbar_p(double ent, const Param* par=0x0) const ;
00337 };
00338
00339 #endif