00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __ISOLHOLE_H_
00012 #define __ISOLHOLE_H_
00013
00014
00015
00016 #include "tensor.h"
00017 #include "metric.h"
00018 #include "spheroid.h"
00019 #include "excision_surf.h"
00020 #include "excision_hor.h"
00021
00022 class Eos ;
00023
00024
00025
00026
00027
00049 class Isol_hole {
00050
00051
00052
00053 protected:
00054 const Map& mp ;
00055
00056 double Omega ;
00060 bool NorKappa ;
00064 Scalar boundNoK ;
00068 bool isCF ;
00069
00070
00071
00072
00073
00075 Scalar lapse ;
00076
00077
00078 Scalar conf_fact;
00079
00081 Vector shift ;
00082
00086 Sym_tensor hij ;
00087
00091 Sym_tensor hatA ;
00092
00093
00094
00095 protected:
00096
00097
00099
00100 mutable Spheroid* p_hor ;
00102 mutable double* p_adm_mass ;
00103
00107 mutable double* p_komar_angmom ;
00108
00112 mutable double* p_virial_residue ;
00113
00114
00115
00116
00117
00118
00119
00120 public:
00121
00134 Isol_hole(const Map& mp_i, double Omega_i, bool NorKappa_i, Scalar NoK_i, bool isCF_i = false) ;
00135
00136
00137 Isol_hole(const Isol_hole& ) ;
00138
00153 Isol_hole(const Map& mp_i, double Omega_i, bool NorKappa_i, Scalar NoK_i, bool isCF_i, FILE* fich) ;
00154
00155 virtual ~Isol_hole() ;
00156
00157
00158
00159
00160 protected:
00162 virtual void del_deriv() const ;
00163
00165 virtual void set_der_0x0() const ;
00166
00167
00168
00169
00170 public:
00172 void operator=(const Isol_hole&) ;
00173
00180 void compute_stat_metric(double precis, double relax, int mer_max, int mer_max2, bool isvoid = true) ;
00181
00187 void secmembre_kerr(Sym_tensor& source_hh);
00188
00189
00190
00191
00192
00193 public:
00195 const Map& get_mp() const {return mp; } ;
00196
00198 double get_Omega() const {return Omega ;} ;
00199
00201 const Scalar& get_boundN() const{
00202 if (NorKappa == false){
00203 return boundNoK;
00204 }
00205 else cout << "The boundary condition is imposed on the surface gravity!" << endl;
00206 }
00208
00209 const Scalar& get_Kappa() const{
00210 if(NorKappa == true){
00211 return boundNoK;
00212 }
00213 else cout << "The boundary condition is imposed on the lapse!" <<endl;
00214 }
00215
00216
00218 const Scalar& get_lapse() const {return lapse;} ;
00219
00221 const Scalar& get_conf_fact() const {return conf_fact;};
00222
00224 const Vector& get_shift() const {return shift;} ;
00225
00227 const Sym_tensor& get_hij() const {return hij;} ;
00228
00230 const Sym_tensor& get_hatA() const {return hatA;} ;
00231
00232
00233
00234
00235
00236
00237 public:
00238 virtual void sauve(FILE* ) const ;
00239
00240 void Einstein_errors();
00241
00242
00243
00244
00245 public:
00246
00247
00252 Spheroid hor() ;
00253
00255 double adm_mass() ;
00256
00260 double komar_angmom() ;
00261
00265 double virial_residue() ;
00266
00267
00268
00269 };
00270
00271 #endif