LORENE
hoteos_from_file.C
1 /*
2  * Methods for Hot_eos and file manipulation
3  *
4  * (see file hoteos.h for documentation)
5  */
6 
7 /*
8  * Copyright (c) 2015 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 char hoteos_from_file_C[] = "$Header: /cvsroot/Lorene/C++/Source/Eos/hoteos_from_file.C,v 1.2 2015/12/08 10:52:18 j_novak Exp $" ;
30 
31 /*
32  * $Id: hoteos_from_file.C,v 1.2 2015/12/08 10:52:18 j_novak Exp $
33  * $Log: hoteos_from_file.C,v $
34  * Revision 1.2 2015/12/08 10:52:18 j_novak
35  * New class Hoteos_tabul for tabulated temperature-dependent EoSs.
36  *
37  * Revision 1.1 2015/03/17 14:20:00 j_novak
38  * New class Hot_eos to deal with temperature-dependent EOSs.
39  *
40  * $Header: /cvsroot/Lorene/C++/Source/Eos/hoteos_from_file.C,v 1.2 2015/12/08 10:52:18 j_novak Exp $
41  *
42  */
43 
44 // Headers C
45 #include <cstdlib>
46 
47 // Header Lorene
48 #include "headcpp.h"
49 #include "hoteos.h"
50 #include "utilitaires.h"
51 
52 namespace Lorene {
53 
54  //--------------------------------------//
55  // Identification virtual functions //
56  //--------------------------------------//
57 
58  int Ideal_gas::identify() const { return 1; }
59 
60  int Hoteos_tabul::identify() const { return 2; }
61 
62 
63  //-------------------------------------------------//
64  // Hot EOS construction from a binary file //
65  //-------------------------------------------------//
66 
68 
69  Hot_eos* p_eos ;
70 
71  // Type (class) of EOS :
72  int identificator ;
73  fread_be(&identificator, sizeof(int), 1, fich) ;
74 
75  switch(identificator) {
76 
77  case 1 : {
78  p_eos = new Ideal_gas(fich) ;
79  break ;
80  }
81 
82  case 2 : {
83  p_eos = new Hoteos_tabul(fich) ;
84  break ;
85  }
86 
87  default : {
88  cout << "Hot_eos::hoteos_from_file : unknown type of EOS !" << endl ;
89  cout << " identificator = " << identificator << endl ;
90  abort() ;
91  break ;
92  }
93 
94  }
95 
96  return p_eos ;
97 
98  }
99 
100  //--------------------------------------------------//
101  // Hot EOS construction from a formatted file //
102  //--------------------------------------------------//
103 
105 
106  int identificator ;
107  if (!fich) {
108  cerr << "Hot_eos::hoteos_from_file: file cannot be opened!" << endl ;
109  abort() ;
110  }
111 
112  // EOS identificator :
113  fich >> identificator ; fich.ignore(1000, '\n') ;
114 
115  Hot_eos* p_eos ;
116 
117  switch(identificator) {
118 
119  case 1 : {
120  p_eos = new Ideal_gas(fich) ;
121  break ;
122  }
123 
124  case 2 : {
125  p_eos = new Hoteos_tabul(fich) ;
126  break ;
127  }
128 
129  default : {
130  cout << "Hot_eos::hoteos_from_file : unknown type of EOS !" << endl ;
131  cout << " identificator = " << identificator << endl ;
132  abort() ;
133  break ;
134  }
135 
136  }
137 
138  return p_eos ;
139 
140  }
141 
142 
143 }
Base class for temperature-dependent equations of state (abstract class).
Definition: hoteos.h:67
static Hot_eos * hoteos_from_file(FILE *)
Construction of an EOS from a binary file.
Hot (temperature-dependent) tabulated equation of state, read from a file.
Definition: hoteos.h:549
virtual int identify() const
Returns a number to identify the sub-classe of Hot_eos the object belongs to.
Ideal-gas (temperature-dependent) equation of state, with mass-term in the energy density.
Definition: hoteos.h:362
virtual int identify() const
Returns a number to identify the sub-classe of Hot_eos the object belongs to.
int fread_be(int *aa, int size, int nb, FILE *fich)
Reads integer(s) from a binary file according to the big endian convention.
Definition: fread_be.C:69
Lorene prototypes.
Definition: app_hor.h:64