LORENE
eos_bifluid.h
1 /*
2  * Definition of Lorene classes Eos_bifluid
3  * Eos_bf_poly
4  * Eos_bf_tabul
5  */
6 
7 /*
8  * Copyright (c) 2001-2002 Jerome Novak
9  *
10  * This file is part of LORENE.
11  *
12  * LORENE is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License as published by
14  * the Free Software Foundation; either version 2 of the License, or
15  * (at your option) any later version.
16  *
17  * LORENE is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with LORENE; if not, write to the Free Software
24  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25  *
26  */
27 
28 
29 #ifndef __EOS_BIFLUID_H_
30 #define __EOS_BIFLUID_H_
31 
32 /*
33  * $Id: eos_bifluid.h,v 1.22 2015/06/26 14:10:08 j_novak Exp $
34  * $Log: eos_bifluid.h,v $
35  * Revision 1.22 2015/06/26 14:10:08 j_novak
36  * Modified comments.
37  *
38  * Revision 1.21 2015/06/11 13:50:18 j_novak
39  * Minor corrections
40  *
41  * Revision 1.20 2015/06/10 14:39:17 a_sourie
42  * New class Eos_bf_tabul for tabulated 2-fluid EoSs and associated functions for the computation of rotating stars with such EoSs.
43  *
44  * Revision 1.19 2014/10/13 08:52:33 j_novak
45  * Lorene classes and functions now belong to the namespace Lorene.
46  *
47  * Revision 1.18 2014/04/25 10:43:50 j_novak
48  * The member 'name' is of type string now. Correction of a few const-related issues.
49  *
50  * Revision 1.17 2004/09/01 09:49:46 r_prix
51  * adapted to change in read_variable() for strings
52  *
53  * Revision 1.16 2004/03/22 13:12:41 j_novak
54  * Modification of comments to use doxygen instead of doc++
55  *
56  * Revision 1.15 2004/01/30 13:21:29 r_prix
57  * add documentation about 'special' 2-fluid typeos=5: == type0 + slow-rot style inversion
58  *
59  * Revision 1.14 2003/12/17 23:12:30 r_prix
60  * replaced use of C++ <string> by standard ANSI char* to be backwards compatible
61  * with broken compilers like MIPSpro Compiler 7.2 on SGI Origin200. ;-)
62  *
63  * Revision 1.13 2003/12/05 15:08:38 r_prix
64  * - use read_variable() to read eos_bifluid from file
65  * - changed 'contructor from file' to take filename as an argument instead of ifstream
66  * - changed 'name' member of Eos_bifluid to C++-type string (for convenience&safety)
67  *
68  * Revision 1.12 2003/12/04 14:13:32 r_prix
69  * added method get_typeos {return typeos}; and fixed some comments.
70  *
71  * Revision 1.11 2003/11/18 18:25:15 r_prix
72  * moved particle-masses m_1, m_2 of the two fluids into class eos_bifluid (from eos_bf_poly)
73  *
74  * Revision 1.10 2002/10/16 14:36:29 j_novak
75  * Reorganization of #include instructions of standard C++, in order to
76  * use experimental version 3 of gcc.
77  *
78  * Revision 1.9 2002/09/13 09:17:31 j_novak
79  * Modif. commentaires
80  *
81  * Revision 1.8 2002/06/17 14:05:16 j_novak
82  * friend functions are now also declared outside the class definition
83  *
84  * Revision 1.7 2002/06/03 13:23:16 j_novak
85  * The case when the mapping is not adapted is now treated
86  *
87  * Revision 1.6 2002/05/31 16:13:36 j_novak
88  * better inversion for eos_bifluid
89  *
90  * Revision 1.5 2002/05/02 15:16:22 j_novak
91  * Added functions for more general bi-fluid EOS
92  *
93  * Revision 1.4 2002/01/16 15:03:27 j_novak
94  * *** empty log message ***
95  *
96  * Revision 1.3 2002/01/11 14:09:34 j_novak
97  * Added newtonian version for 2-fluid stars
98  *
99  * Revision 1.2 2001/11/29 15:05:26 j_novak
100  * The entrainment term in 2-fluid eos is modified
101  *
102  * Revision 1.1.1.1 2001/11/20 15:19:27 e_gourgoulhon
103  * LORENE
104  *
105  * Revision 1.6 2001/08/31 15:47:35 novak
106  * The flag tronc has been added to nbar_ent.. functions
107  *
108  * Revision 1.5 2001/08/27 12:21:11 novak
109  * The delta2 Cmp argument put to const
110  *
111  * Revision 1.4 2001/08/27 09:50:15 novak
112  * New formula for "polytrope"
113  *
114  * Revision 1.3 2001/06/22 15:36:11 novak
115  * Modification de Eos_bifluid::trans2Eos
116  *
117  * Revision 1.2 2001/06/22 11:52:44 novak
118  * *** empty log message ***
119  *
120  * Revision 1.1 2001/06/21 15:21:22 novak
121  * Initial revision
122  *
123  *
124  * $Header: /cvsroot/Lorene/C++/Include/eos_bifluid.h,v 1.22 2015/06/26 14:10:08 j_novak Exp $
125  *
126  */
127 
128 // Standard C++
129 #include "headcpp.h"
130 #include <string>
131 
132 // Headers C
133 #include <cstdio>
134 
135 // Lorene classes
136 #include "param.h"
137 namespace Lorene {
138 class Tbl ;
139 class Param ;
140 class Cmp ;
141 class Eos ;
142 class Eos_poly ;
143 
144  //------------------------------------//
145  // base class Eos for two fluids //
146  //------------------------------------//
147 #define MAX_EOSNAME 100
148 
173 class Eos_bifluid {
174 
175  // Data :
176  // -----
177 
178  protected:
179  string name;
180 
184  double m_1 ;
185 
189  double m_2 ;
190 
191 
192  // Constructors - Destructor
193  // -------------------------
194  protected:
195  Eos_bifluid() ;
196 
198  explicit Eos_bifluid(const char* name_i, double mass1, double mass2) ;
199 
200  Eos_bifluid(const Eos_bifluid& ) ;
201 
202  protected:
209  Eos_bifluid(FILE* ) ;
210 
221  Eos_bifluid (const char *fname ) ;
222 
230  Eos_bifluid (ifstream& fich) ;
231 
232 
233  public:
234  virtual ~Eos_bifluid() ;
235 
236  // Assignment
237  // ----------
239  void operator=(const Eos_bifluid& ) ;
240 
241 
242  // Name manipulation
243  // -----------------
244  public:
246  string get_name() const {return name;} ;
247 
248  // Miscellaneous
249  // -------------
250  public:
251 
256  double get_m1() const {return m_1 ;};
257 
262  double get_m2() const {return m_2 ;};
263 
268  static Eos_bifluid* eos_from_file (FILE* ) ;
269 
277  static Eos_bifluid* eos_from_file ( const char *fname ) ;
278 
290  static Eos_bifluid* eos_from_file(ifstream& ) ;
291 
292 
294  virtual bool operator==(const Eos_bifluid& ) const = 0 ;
295 
297  virtual bool operator!=(const Eos_bifluid& ) const = 0 ;
298 
302  virtual int identify() const = 0 ;
303 
304  // Outputs
305  // -------
306 
307  public:
308  virtual void sauve(FILE* ) const ;
309 
311  friend ostream& operator<<(ostream& , const Eos_bifluid& ) ;
312 
313  protected:
314  virtual ostream& operator>>(ostream &) const = 0 ;
315 
316 
317  // Computational functions
318  // -----------------------
319  public:
340  virtual void calcule_tout(const Cmp& ent1, const Cmp& ent2, const Cmp& delta2,
341  Cmp& nbar1, Cmp& nbar2, Cmp& ener, Cmp& press,
342  int nzet, int l_min = 0) const ;
343 
356  virtual bool nbar_ent_p(const double ent1, const double ent2,
357  const double delta2, double& nbar1,
358  double& nbar2) const = 0 ;
359 
366  virtual double nbar_ent_p1(const double ent1) const = 0 ;
367 
374  virtual double nbar_ent_p2(const double ent2) const = 0 ;
375 
396  void nbar_ent(const Cmp& ent1, const Cmp& ent2, const Cmp& delta2,
397  Cmp& nbar1, Cmp& nbar2, int nzet, int l_min = 0)
398  const ;
399 
412  virtual double ener_nbar_p(const double nbar1, const double nbar2,
413  const double delta2) const = 0 ;
414 
434  Cmp ener_ent(const Cmp& ent1, const Cmp& ent2, const Cmp& delta2,
435  int nzet, int l_min = 0) const ;
436 
449  virtual double press_nbar_p(const double nbar1, const double nbar2,
450  const double delta2) const = 0 ;
451 
470  Cmp press_ent(const Cmp& ent1, const Cmp& ent2, const Cmp& delta2,
471  int nzet, int l_min = 0) const ;
472 
489  virtual double get_K11(const double n1, const double n2, const
490  double x) const = 0 ;
491 
508  virtual double get_K12(const double n1, const double n2,const
509  double x) const = 0 ;
510 
526  virtual double get_K22(const double n1, const double n2, const
527  double x) const = 0 ;
528 
551  Cmp get_Knn(const Cmp& nbar1, const Cmp& nbar2, const Cmp& x2,
552  int nzet, int l_min = 0) const ;
553 
576  Cmp get_Kpp(const Cmp& nbar1, const Cmp& nbar2, const Cmp&
577  x2, int nzet, int l_min = 0) const ;
578 
602  Cmp get_Knp(const Cmp& nbar1, const Cmp& nbar2, const Cmp& x2,
603  int nzet, int l_min = 0) const ;
604 
605 
628  void calcule(const Cmp& nbar1, const Cmp& nbar2, const Cmp&
629  x2, int nzet, int l_min, double
630  (Eos_bifluid::*fait)(double, double, double) const,
631  Cmp& resu)
632  const ;
633 
656  Cmp get_Knn_ent(const Cmp& ent1, const Cmp& ent2, const Cmp& x2,
657  int nzet, int l_min = 0) const ;
658 
681  Cmp get_Kpp_ent(const Cmp& ent1, const Cmp& ent2, const Cmp&
682  x2, int nzet, int l_min = 0) const ;
683 
707  Cmp get_Knp_ent(const Cmp& ent1, const Cmp& ent2, const Cmp& x2,
708  int nzet, int l_min = 0) const ;
709 
732  void calcule_ent(const Cmp& ent1, const Cmp& ent2, const Cmp&
733  x2, int nzet, int l_min, double
734  (Eos_bifluid::*fait)(double, double, double) const,
735  Cmp& resu)
736  const ;
737 
738  // Conversion functions
739  // ---------------------
740 
749  virtual Eos* trans2Eos() const = 0 ;
750 
751 };
752 ostream& operator<<(ostream& , const Eos_bifluid& ) ;
753 
754 
755  //------------------------------------//
756  // class Eos_bf_poly //
757  //------------------------------------//
758 
814 class Eos_bf_poly : public Eos_bifluid {
815 
816  // Data :
817  // -----
818 
819  protected:
821  double gam1 ;
822 
824  double gam2 ;
825 
827  double gam3 ;
828 
830  double gam4 ;
831 
833  double gam5 ;
834 
836  double gam6 ;
837 
843  double kap1 ;
844 
850  double kap2 ;
851 
857  double kap3 ;
858 
864  double beta ;
865 
866  double gam1m1 ;
867  double gam2m1 ;
868  double gam34m1 ;
869  double gam56m1 ;
870 
871  protected:
893  int typeos ;
894 
899  double relax ;
900 
901  double precis ;
902 
904  double ecart ;
905 
906 
907  // Constructors - Destructor
908  // -------------------------
909  public:
910 
929  Eos_bf_poly(double kappa1, double kappa2, double kappa3, double beta) ;
930 
957  Eos_bf_poly(double gamma1, double gamma2, double gamma3,
958  double gamma4, double gamma5, double gamma6,
959  double kappa1, double kappa2, double kappa3,
960  double beta, double mass1=1, double mass2=1,
961  double relax=0.5, double precis = 1.e-9,
962  double ecart = 1.e-8) ;
963 
964  Eos_bf_poly(const Eos_bf_poly& ) ;
965 
966  protected:
973  Eos_bf_poly(FILE* ) ;
974 
981  Eos_bf_poly (const char *fname) ;
982 
985  friend Eos_bifluid* Eos_bifluid::eos_from_file(const char *fname ) ;
986 
987  public:
988  virtual ~Eos_bf_poly() ;
989 
990  // Assignment
991  // ----------
993  void operator=(const Eos_bf_poly& ) ;
994 
995 
996  // Miscellaneous
997  // -------------
998  public :
1000  virtual bool operator==(const Eos_bifluid& ) const ;
1001 
1003  virtual bool operator!=(const Eos_bifluid& ) const ;
1004 
1008  virtual int identify() const ;
1009 
1011  double get_gam1() const {return gam1 ;};
1012 
1014  double get_gam2() const {return gam2 ;};
1015 
1017  double get_gam3() const {return gam3 ;};
1018 
1020  double get_gam4() const {return gam4 ;};
1021 
1023  double get_gam5() const {return gam5 ;};
1024 
1026  double get_gam6() const {return gam6 ;};
1027 
1032  double get_kap1() const {return kap1 ;};
1033 
1038  double get_kap2() const {return kap2 ;};
1039 
1044  double get_kap3() const {return kap3 ;};
1045 
1050  double get_beta() const {return beta ;};
1051 
1052  // Returns (sub)type of bifluid-eos (member \c typeos})
1053  int get_typeos() const {return typeos;};
1054 
1055  protected:
1059  void set_auxiliary() ;
1060 
1062  void determine_type() ;
1063 
1064  // Outputs
1065  // -------
1066 
1067  public:
1068  virtual void sauve(FILE* ) const ;
1069 
1070  protected:
1071  virtual ostream& operator>>(ostream &) const ;
1072 
1073 
1074  // Computational functions
1075  // -----------------------
1076 
1077  public:
1078 
1090  virtual bool nbar_ent_p(const double ent1, const double ent2,
1091  const double delta2, double& nbar1,
1092  double& nbar2) const ;
1093 
1099  virtual double nbar_ent_p1(const double ent1) const ;
1100 
1106  virtual double nbar_ent_p2(const double ent2) const ;
1107 
1119  virtual double ener_nbar_p(const double nbar1, const double nbar2,
1120  const double delta2) const ;
1121 
1133  virtual double press_nbar_p(const double nbar1, const double nbar2,
1134  const double delta2) const ;
1135  // Conversion functions
1136  // ---------------------
1137 
1144  virtual Eos* trans2Eos() const ;
1145 
1161  virtual double get_K11(const double n1, const double n2, const
1162  double delta2) const ;
1163 
1179  virtual double get_K12(const double n1, const double n2,const
1180  double delta2) const ;
1181 
1196  virtual double get_K22(const double n1, const double n2, const
1197  double delta2) const ;
1198 
1199 };
1200 
1201  //------------------------------------//
1202  // class Eos_bf_poly_newt //
1203  //------------------------------------//
1204 
1259 
1260  // Data :
1261  // -----
1262 
1263  // no new data with respect to Eos_bf_poly
1264 
1265  // Constructors - Destructor
1266  // -------------------------
1267  public:
1268 
1287  Eos_bf_poly_newt(double kappa1, double kappa2, double kappa3,
1288  double beta) ;
1289 
1316  Eos_bf_poly_newt(double gamma1, double gamma2, double gamma3,
1317  double gamma4, double gamma5, double gamma6,
1318  double kappa1, double kappa2, double kappa3,
1319  double beta, double mass1, double mass2,
1320  double relax=0.5, double precis = 1.e-9,
1321  double ecart = 1.e-8) ;
1322 
1323 
1325 
1326  protected:
1333  Eos_bf_poly_newt(FILE* ) ;
1334 
1340  Eos_bf_poly_newt(const char *fname ) ;
1341 
1344  friend Eos_bifluid* Eos_bifluid::eos_from_file(const char *fname) ;
1345 
1346  public:
1347  virtual ~Eos_bf_poly_newt() ;
1348 
1349  // Assignment
1350  // ----------
1352  void operator=(const Eos_bf_poly_newt& ) ;
1353 
1354 
1355  // Miscellaneous
1356  // -------------
1357 
1358  public :
1360  virtual bool operator==(const Eos_bifluid& ) const ;
1361 
1363  virtual bool operator!=(const Eos_bifluid& ) const ;
1364 
1368  virtual int identify() const ;
1369 
1370  // Outputs
1371  // -------
1372 
1373  public:
1374  virtual void sauve(FILE* ) const ;
1375 
1376  protected:
1377  virtual ostream& operator>>(ostream &) const ;
1378 
1379 
1380  // Computational functions
1381  // -----------------------
1382 
1383  public:
1384 
1396  virtual bool nbar_ent_p(const double ent1, const double ent2,
1397  const double delta2, double& nbar1,
1398  double& nbar2) const ;
1399 
1406  virtual double nbar_ent_p1(const double ent1) const ;
1407 
1413  virtual double nbar_ent_p2(const double ent2) const ;
1414 
1426  virtual double ener_nbar_p(const double nbar1, const double nbar2,
1427  const double delta2) const ;
1428 
1440  virtual double press_nbar_p(const double nbar1, const double nbar2,
1441  const double delta2) const ;
1442  // Conversion functions
1443  // ---------------------
1444 
1451  virtual Eos* trans2Eos() const ;
1452 
1468  virtual double get_K11(const double n1, const double n2, const
1469  double delta2) const ;
1470 
1486  virtual double get_K12(const double n1, const double n2,const
1487  double delta2) const ;
1488 
1503  virtual double get_K22(const double n1, const double n2, const
1504  double delta2) const ;
1505 
1506 };
1507 
1508 
1509 /* Declaration of the new class Eos_bf_tabul derived from Eos_bifluid */
1510 
1511  //------------------------------------//
1512  // class Eos_bf_tabul //
1513  //------------------------------------//
1514 
1534 class Eos_bf_tabul : public Eos_bifluid {
1535 
1536  // Data :
1537  // -----
1538 
1539  protected:
1541  string tablename ;
1542 
1544  string authors ;
1545 
1547  double delta_car_min ;
1548 
1551  double delta_car_max ;
1552 
1553 
1555  double ent1_min ;
1556 
1558  double ent1_max ;
1559 
1561  double ent2_min ;
1562 
1564  double ent2_max ;
1565 
1571 
1577 
1580 
1583 
1586 
1589 
1592 
1597 
1598 
1601 
1604 
1607 
1612 
1613 
1614  // to save the limit curve of nn = 0
1615  Tbl* delta_car_n0 ;
1616  Tbl* mu1_n0 ;
1617  Tbl* mu2_n0 ;
1618  // to save the limit curve of np = 0
1619  Tbl* delta_car_p0 ;
1620  Tbl* mu1_p0 ;
1621  Tbl* mu2_p0 ;
1622 
1623  // to save the 1 fluid table //
1624  Tbl* mu1_N ;
1625  Tbl* n_n_N ;
1626  Tbl* press_N ;
1627  Tbl* mu2_P ;
1628  Tbl* n_p_P ;
1629  Tbl* press_P ;
1630 
1631 
1632  // Constructors - Destructor
1633  // -------------------------
1634  protected:
1635 
1644  Eos_bf_tabul(const char* name_i, const char* table, const char* path, double mass1, double mass2) ;
1645 
1654  Eos_bf_tabul(const char* name_i, const char* file_name, double mass1, double mass2) ;
1655 
1656  private:
1658 
1659  protected:
1660 
1667  Eos_bf_tabul(FILE* ) ;
1668 
1679  Eos_bf_tabul(ifstream& ist, const char* table) ;
1680 
1690  Eos_bf_tabul(ifstream& ist) ;
1691 
1694  friend Eos_bifluid* Eos_bifluid::eos_from_file(ifstream& ) ;
1695 
1696  public:
1697  virtual ~Eos_bf_tabul() ;
1698 
1699  // Assignment
1700  // ----------
1701  private :
1703  void operator=(const Eos_bf_tabul& ) ;
1704 
1705 
1706  // Miscellaneous
1707  // -------------
1708 
1709  protected:
1715  void read_table() ;
1716 
1717  public :
1719  virtual bool operator==(const Eos_bifluid& ) const ;
1720 
1722  virtual bool operator!=(const Eos_bifluid& ) const ;
1723 
1727  virtual int identify() const ;
1728 
1729 
1730  // Outputs
1731  // -------
1732 
1733  public:
1734  virtual void sauve(FILE* ) const ;
1735 
1736 
1737  protected:
1738  virtual ostream& operator>>(ostream &) const ;
1739 
1740 
1741  // Computational functions
1742  // -----------------------
1743 
1744  public:
1768  void calcule_interpol(const Cmp& ent1, const Cmp& ent2, const Cmp& delta2,
1769  Cmp& nbar1, Cmp& nbar2, Cmp& ener, Cmp& press,
1770  Cmp& K_nn, Cmp& K_np, Cmp& K_pp,
1771  int nzet, int l_min = 0) const ;
1772 
1784  virtual bool nbar_ent_p(const double ent1, const double ent2,
1785  const double delta2, double& nbar1,
1786  double& nbar2) const ;
1787 
1793  virtual double nbar_ent_p1(const double ent1) const ;
1794 
1800  virtual double nbar_ent_p2(const double ent2) const ;
1801 
1813  virtual double ener_nbar_p(const double nbar1, const double nbar2,
1814  const double delta2) const ;
1815 
1827  virtual double press_nbar_p(const double nbar1, const double nbar2,
1828  const double delta2) const ;
1829 
1842  virtual double get_K11(const double delta2, const double ent1,
1843  const double ent2) const ;
1844 
1857  virtual double get_K12(const double delta2, const double ent1 ,
1858  const double ent2) const ;
1859 
1871  virtual double get_K22(const double delta2, const double ent1,
1872  const double ent2) const ;
1873 
1884  virtual double ener_ent_p(const double ent1, const double ent2,
1885  const double delta_car) const ;
1886 
1897  virtual double press_ent_p(const double ent1, const double ent2,
1898  const double delta_car) const ;
1899 
1900 
1901 
1907  virtual double press_ent_p1(const double ent1) const ;
1908 
1914  virtual double press_ent_p2(const double ent2) const ;
1915 
1916 
1917 
1928  virtual double alpha_ent_p(const double ent1, const double ent2,
1929  const double delta_car) const ;
1930 
1931 
1932  // Conversion function
1933  // ---------------------
1934 
1940  virtual Eos* trans2Eos() const ;
1941 
1942 };
1943 
1944 
1945 }
1946 #endif
Component of a tensorial field *** DEPRECATED : use class Scalar instead ***.
Definition: cmp.h:446
Analytic equation of state for two fluids (Newtonian case).
Definition: eos_bifluid.h:1258
virtual Eos * trans2Eos() const
Makes a translation from Eos_bifluid to Eos .
virtual bool operator!=(const Eos_bifluid &) const
Comparison operator (difference)
void operator=(const Eos_bf_poly_newt &)
Assignment to another Eos_bf_poly_newt.
virtual double get_K22(const double n1, const double n2, const double delta2) const
Computes the derivative of the energy/(baryonic density 2) .
virtual int identify() const
Returns a number to identify the sub-classe of Eos_bifluid the object belongs to.
Definition: eos_bf_file.C:97
virtual double nbar_ent_p1(const double ent1) const
Computes baryon density out of the log-enthalpy asuming that only fluid 1 is present (virtual functio...
virtual double get_K11(const double n1, const double n2, const double delta2) const
Computes the derivative of the energy with respect to (baryonic density 1) .
virtual ostream & operator>>(ostream &) const
Operator >>
virtual bool operator==(const Eos_bifluid &) const
Comparison operator (egality)
virtual bool nbar_ent_p(const double ent1, const double ent2, const double delta2, double &nbar1, double &nbar2) const
Computes both baryon densities from the log-enthalpies.
Eos_bf_poly_newt(double kappa1, double kappa2, double kappa3, double beta)
Standard constructor.
virtual void sauve(FILE *) const
Save in a file.
virtual double nbar_ent_p2(const double ent2) const
Computes baryon density out of the log-enthalpy assuming that only fluid 2 is present.
virtual ~Eos_bf_poly_newt()
Destructor.
virtual double get_K12(const double n1, const double n2, const double delta2) const
Computes the derivative of the energy with respect to .
virtual double ener_nbar_p(const double nbar1, const double nbar2, const double delta2) const
Computes the total energy density from the baryonic densities and the relative velocity.
virtual double press_nbar_p(const double nbar1, const double nbar2, const double delta2) const
Computes the pressure from the baryonic densities and the relative velocity.
Analytic equation of state for two fluids (relativistic case).
Definition: eos_bifluid.h:814
double gam5
Adiabatic indexes , see Eq.~eeosbfpolye}.
Definition: eos_bifluid.h:833
virtual bool operator!=(const Eos_bifluid &) const
Comparison operator (difference)
Definition: eos_bf_poly.C:441
double kap1
Pressure coefficient , see Eq.
Definition: eos_bifluid.h:843
double get_kap1() const
Returns the pressure coefficient [unit: ], where .
Definition: eos_bifluid.h:1032
void determine_type()
Determines the type of the analytical EOS (see typeos )
Definition: eos_bf_poly.C:334
double gam1
Adiabatic indexes , see Eq.~eeosbfpolye}.
Definition: eos_bifluid.h:821
double kap2
Pressure coefficient , see Eq.
Definition: eos_bifluid.h:850
void operator=(const Eos_bf_poly &)
Assignment to another Eos_bf_poly.
Definition: eos_bf_poly.C:294
double gam4
Adiabatic indexes , see Eq.~eeosbfpolye}.
Definition: eos_bifluid.h:830
double get_gam6() const
Returns the adiabatic index .
Definition: eos_bifluid.h:1026
double gam3
Adiabatic indexes , see Eq.~eeosbfpolye}.
Definition: eos_bifluid.h:827
virtual double get_K11(const double n1, const double n2, const double delta2) const
Computes the derivative of the energy with respect to (baryonic density 1) .
Definition: eos_bf_poly.C:930
virtual double get_K12(const double n1, const double n2, const double delta2) const
Computes the derivative of the energy with respect to .
Definition: eos_bf_poly.C:960
double get_gam4() const
Returns the adiabatic index .
Definition: eos_bifluid.h:1020
double get_gam1() const
Returns the adiabatic index .
Definition: eos_bifluid.h:1011
double get_gam5() const
Returns the adiabatic index .
Definition: eos_bifluid.h:1023
virtual bool operator==(const Eos_bifluid &) const
Comparison operator (egality)
Definition: eos_bf_poly.C:386
virtual ostream & operator>>(ostream &) const
Operator >>
Definition: eos_bf_poly.C:472
virtual Eos * trans2Eos() const
Makes a translation from Eos_bifluid to Eos .
Definition: eos_bf_poly.C:975
virtual double get_K22(const double n1, const double n2, const double delta2) const
Computes the derivative of the energy/(baryonic density 2) .
Definition: eos_bf_poly.C:945
double gam6
Adiabatic indexes , see Eq.~eeosbfpolye}.
Definition: eos_bifluid.h:836
double gam2
Adiabatic indexes , see Eq.~eeosbfpolye}.
Definition: eos_bifluid.h:824
double precis
contains the precision required in zerosec_b
Definition: eos_bifluid.h:901
virtual int identify() const
Returns a number to identify the sub-classe of Eos_bifluid the object belongs to.
Definition: eos_bf_file.C:95
virtual double press_nbar_p(const double nbar1, const double nbar2, const double delta2) const
Computes the pressure from the baryonic densities and the relative velocity.
Definition: eos_bf_poly.C:909
double get_gam2() const
Returns the adiabatic index .
Definition: eos_bifluid.h:1014
double get_gam3() const
Returns the adiabatic index .
Definition: eos_bifluid.h:1017
double get_kap3() const
Returns the pressure coefficient [unit: ], where .
Definition: eos_bifluid.h:1044
double get_beta() const
Returns the coefficient [unit: ], where .
Definition: eos_bifluid.h:1050
virtual void sauve(FILE *) const
Save in a file.
Definition: eos_bf_poly.C:452
void set_auxiliary()
Computes the auxiliary quantities gam1m1 , gam2m1 and gam3m1.
Definition: eos_bf_poly.C:320
double get_kap2() const
Returns the pressure coefficient [unit: ], where .
Definition: eos_bifluid.h:1038
virtual double ener_nbar_p(const double nbar1, const double nbar2, const double delta2) const
Computes the total energy density from the baryonic densities and the relative velocity.
Definition: eos_bf_poly.C:889
virtual bool nbar_ent_p(const double ent1, const double ent2, const double delta2, double &nbar1, double &nbar2) const
Computes both baryon densities from the log-enthalpies.
Definition: eos_bf_poly.C:507
int typeos
The bi-fluid analytical EOS type:
Definition: eos_bifluid.h:893
double beta
Coefficient , see Eq.
Definition: eos_bifluid.h:864
double kap3
Pressure coefficient , see Eq.
Definition: eos_bifluid.h:857
virtual double nbar_ent_p2(const double ent2) const
Computes baryon density out of the log-enthalpy assuming that only fluid 2 is present.
Definition: eos_bf_poly.C:882
virtual double nbar_ent_p1(const double ent1) const
Computes baryon density out of the log-enthalpy asuming that only fluid 1 is present.
Definition: eos_bf_poly.C:878
double ecart
contains the precision required in the relaxation nbar_ent_p
Definition: eos_bifluid.h:904
Eos_bf_poly(double kappa1, double kappa2, double kappa3, double beta)
Standard constructor.
Definition: eos_bf_poly.C:157
double relax
Parameters needed for some inversions of the EOS.
Definition: eos_bifluid.h:899
virtual ~Eos_bf_poly()
Destructor.
Definition: eos_bf_poly.C:285
Class for a two-fluid (tabulated) equation of state.
Definition: eos_bifluid.h:1534
Tbl * d3lpsdlent1dlent2ddelta_car
if necessary for the interpolation to find alpha (derivee seconde croisee) ie, if it's possible to ca...
Definition: eos_bifluid.h:1611
virtual double press_ent_p(const double ent1, const double ent2, const double delta_car) const
Computes the pressure from the baryonic log-enthalpies and the relative velocity.
double ent1_max
Upper boundary of the log-enthalpy interval (fluid 1 = n)
Definition: eos_bifluid.h:1558
virtual int identify() const
Returns a number to identify the sub-classe of Eos the object belongs to.
Definition: eos_bf_file.C:99
void operator=(const Eos_bf_tabul &)
Assignment to another Eos_bf_tabul.
Definition: eos_bf_tabul.C:219
Tbl * logp
Table of .
Definition: eos_bifluid.h:1582
double ent2_max
Upper boundary of the log-enthalpy interval (fluid 2 = p)
Definition: eos_bifluid.h:1564
double ent2_min
Lower boundary of the log-enthalpy interval (fluid 2 = p)
Definition: eos_bifluid.h:1561
virtual bool nbar_ent_p(const double ent1, const double ent2, const double delta2, double &nbar1, double &nbar2) const
Computes both baryon densities from the log-enthalpies.
Tbl * d2lpsdlent2ddelta_car
Table of .
Definition: eos_bifluid.h:1606
double delta_car_max
Upper boundary of the relative velocity interval --> 1 ?
Definition: eos_bifluid.h:1551
Tbl * logent1
Table of where .
Definition: eos_bifluid.h:1570
string authors
Authors.
Definition: eos_bifluid.h:1544
virtual bool operator!=(const Eos_bifluid &) const
Comparison operator (difference)
Definition: eos_bf_tabul.C:312
void calcule_interpol(const Cmp &ent1, const Cmp &ent2, const Cmp &delta2, Cmp &nbar1, Cmp &nbar2, Cmp &ener, Cmp &press, Cmp &K_nn, Cmp &K_np, Cmp &K_pp, int nzet, int l_min=0) const
General computational method for Cmp 's, it computes both baryon densities, energy and pressure profi...
Definition: eos_bf_tabul.C:876
Tbl * dlpsdlent2
Table of .
Definition: eos_bifluid.h:1588
virtual ~Eos_bf_tabul()
Destructor.
Definition: eos_bf_tabul.C:185
string tablename
Name of the file containing the tabulated data (be careful, Eos_bifluid uses char*)
Definition: eos_bifluid.h:1541
virtual double alpha_ent_p(const double ent1, const double ent2, const double delta_car) const
Computes alpha, the derivative of the total energy density with respect to from the baryonic log-ent...
Eos_bf_tabul(const Eos_bf_tabul &)
Copy constructor
virtual bool operator==(const Eos_bifluid &) const
Comparison operator (egality)
Definition: eos_bf_tabul.C:288
Tbl * delta_car
Table of .
Definition: eos_bifluid.h:1579
double delta_car_min
Lower boundary of the relative velocity interval --> 0 ?
Definition: eos_bifluid.h:1547
virtual Eos * trans2Eos() const
Makes a translation from Eos_bifluid to Eos .
Tbl * dlpsdlent1
Table of .
Definition: eos_bifluid.h:1585
virtual double nbar_ent_p2(const double ent2) const
Computes baryon density out of the log-enthalpy assuming that only fluid 2 is present.
virtual double ener_nbar_p(const double nbar1, const double nbar2, const double delta2) const
Computes the total energy density from the baryonic densities and the relative velocity.
virtual double press_nbar_p(const double nbar1, const double nbar2, const double delta2) const
Computes the pressure from the baryonic densities and the relative velocity.
virtual double get_K22(const double delta2, const double ent1, const double ent2) const
Computes the derivative of the energy/(baryonic density 2) .
double ent1_min
Lower boundary of the log-enthalpy interval (fluid 1 = n)
Definition: eos_bifluid.h:1555
void read_table()
Reads the file containing the table and initializes the arrays logent1, logent2, delta_car,...
Definition: eos_bf_tabul.C:323
virtual ostream & operator>>(ostream &) const
Operator >>
Definition: eos_bf_tabul.C:273
Tbl * d2lpsdlent2dlent2
Table of .
Definition: eos_bifluid.h:1596
Tbl * logent2
Table of where .
Definition: eos_bifluid.h:1576
Tbl * d2lpsdlent1dlent1
Table of .
Definition: eos_bifluid.h:1594
Tbl * d2lpsdlent1ddelta_car
Table of .
Definition: eos_bifluid.h:1603
virtual double press_ent_p1(const double ent1) const
Computes the pressure from the baryonic log-enthalpies asuming that only fluid 1 is present.
virtual double get_K12(const double delta2, const double ent1, const double ent2) const
Computes the derivative of the energy with respect to .
virtual double get_K11(const double delta2, const double ent1, const double ent2) const
Computes the derivative of the energy with respect to (baryonic density 1) .
virtual void sauve(FILE *) const
Save in a file.
Definition: eos_bf_tabul.C:262
virtual double ener_ent_p(const double ent1, const double ent2, const double delta_car) const
Computes the total energy density from the baryonic log-enthalpies and the relative velocity.
virtual double nbar_ent_p1(const double ent1) const
Computes baryon density out of the log-enthalpy asuming that only fluid 1 is present.
Tbl * d2lpsdlent1dlent2
Table of .
Definition: eos_bifluid.h:1591
Eos_bf_tabul(const char *name_i, const char *table, const char *path, double mass1, double mass2)
Standard constructor.
Definition: eos_bf_tabul.C:128
Tbl * dlpsddelta_car
Table of
Definition: eos_bifluid.h:1600
virtual double press_ent_p2(const double ent2) const
Computes the pressure from the baryonic log-enthalpies assuming that only fluid 2 is present.
2-fluids equation of state base class.
Definition: eos_bifluid.h:173
void calcule(const Cmp &nbar1, const Cmp &nbar2, const Cmp &x2, int nzet, int l_min, double(Eos_bifluid::*fait)(double, double, double) const, Cmp &resu) const
General computational method for Cmp 's ( 's).
Definition: eos_bifluid.C:656
virtual void calcule_tout(const Cmp &ent1, const Cmp &ent2, const Cmp &delta2, Cmp &nbar1, Cmp &nbar2, Cmp &ener, Cmp &press, int nzet, int l_min=0) const
General computational method for Cmp 's, it computes both baryon densities, energy and pressure profi...
Definition: eos_bifluid.C:281
virtual double nbar_ent_p2(const double ent2) const =0
Computes baryon density out of the log-enthalpy assuming that only fluid 2 is present (virtual functi...
Cmp get_Kpp_ent(const Cmp &ent1, const Cmp &ent2, const Cmp &x2, int nzet, int l_min=0) const
Computes the derivatives of the energy/(baryonic density 2) .
Definition: eos_bifluid.C:895
double get_m1() const
Return the individual particule mass
Definition: eos_bifluid.h:256
virtual void sauve(FILE *) const
Save in a file.
Definition: eos_bifluid.C:245
static Eos_bifluid * eos_from_file(FILE *)
Construction of an EOS from a binary file.
Definition: eos_bf_file.C:105
virtual ~Eos_bifluid()
Destructor.
Definition: eos_bifluid.C:226
void nbar_ent(const Cmp &ent1, const Cmp &ent2, const Cmp &delta2, Cmp &nbar1, Cmp &nbar2, int nzet, int l_min=0) const
Computes both baryon density fields from the log-enthalpy fields and the relative velocity.
Definition: eos_bifluid.C:411
virtual bool operator==(const Eos_bifluid &) const =0
Comparison operator (egality)
friend ostream & operator<<(ostream &, const Eos_bifluid &)
Display.
Definition: eos_bifluid.C:264
virtual ostream & operator>>(ostream &) const =0
Operator >>
double m_1
Individual particle mass [unit: ].
Definition: eos_bifluid.h:184
virtual Eos * trans2Eos() const =0
Makes a translation from Eos_bifluid to Eos .
virtual double nbar_ent_p1(const double ent1) const =0
Computes baryon density out of the log-enthalpy asuming that only fluid 1 is present (virtual functio...
string name
EOS name.
Definition: eos_bifluid.h:179
double get_m2() const
Return the individual particule mass
Definition: eos_bifluid.h:262
virtual bool operator!=(const Eos_bifluid &) const =0
Comparison operator (difference)
void calcule_ent(const Cmp &ent1, const Cmp &ent2, const Cmp &x2, int nzet, int l_min, double(Eos_bifluid::*fait)(double, double, double) const, Cmp &resu) const
General computational method for Cmp 's ( 's).
Definition: eos_bifluid.C:783
Cmp get_Knn(const Cmp &nbar1, const Cmp &nbar2, const Cmp &x2, int nzet, int l_min=0) const
Computes the derivatives of the energy/(baryonic density 1) .
Definition: eos_bifluid.C:745
virtual int identify() const =0
Returns a number to identify the sub-classe of Eos_bifluid the object belongs to.
virtual double get_K22(const double n1, const double n2, const double x) const =0
Computes the derivative of the energy/(baryonic density 2) .
virtual double get_K11(const double n1, const double n2, const double x) const =0
Computes the derivative of the energy with respect to (baryonic density 1) .
Cmp get_Kpp(const Cmp &nbar1, const Cmp &nbar2, const Cmp &x2, int nzet, int l_min=0) const
Computes the derivatives of the energy/(baryonic density 2) .
Definition: eos_bifluid.C:767
Cmp get_Knp_ent(const Cmp &ent1, const Cmp &ent2, const Cmp &x2, int nzet, int l_min=0) const
Computes the derivatives of the energy with respect to .
Definition: eos_bifluid.C:884
virtual double ener_nbar_p(const double nbar1, const double nbar2, const double delta2) const =0
Computes the total energy density from the baryonic densities and the relative velocity.
string get_name() const
Returns the EOS name.
Definition: eos_bifluid.h:246
virtual double press_nbar_p(const double nbar1, const double nbar2, const double delta2) const =0
Computes the pressure from the baryonic densities and the relative velocity.
virtual double get_K12(const double n1, const double n2, const double x) const =0
Computes the derivative of the energy with respect to .
Cmp press_ent(const Cmp &ent1, const Cmp &ent2, const Cmp &delta2, int nzet, int l_min=0) const
Computes the pressure from the log-enthalpy fields and the relative velocity.
Definition: eos_bifluid.C:579
Cmp ener_ent(const Cmp &ent1, const Cmp &ent2, const Cmp &delta2, int nzet, int l_min=0) const
Computes the total energy density from the log-enthalpy fields and the relative velocity.
Definition: eos_bifluid.C:499
Cmp get_Knp(const Cmp &nbar1, const Cmp &nbar2, const Cmp &x2, int nzet, int l_min=0) const
Computes the derivatives of the energy with respect to .
Definition: eos_bifluid.C:756
virtual bool nbar_ent_p(const double ent1, const double ent2, const double delta2, double &nbar1, double &nbar2) const =0
Computes both baryon densities from the log-enthalpies (virtual function implemented in the derived c...
void operator=(const Eos_bifluid &)
Assignment to another Eos_bifluid.
Definition: eos_bifluid.C:232
Cmp get_Knn_ent(const Cmp &ent1, const Cmp &ent2, const Cmp &x2, int nzet, int l_min=0) const
Computes the derivatives of the energy/(baryonic density 1) .
Definition: eos_bifluid.C:873
double m_2
Individual particle mass [unit: ].
Definition: eos_bifluid.h:189
Eos_bifluid()
Standard constructor.
Definition: eos_bifluid.C:148
Equation of state base class.
Definition: eos.h:190
Basic array class.
Definition: tbl.h:161
Lorene prototypes.
Definition: app_hor.h:64