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 #ifndef __HOLE_BHNS_H_
00027 #define __HOLE_BHNS_H_
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 class Star_bhns ;
00046
00047
00048 #include "blackhole.h"
00049 #include "metric.h"
00050
00051
00052
00053
00054
00060 class Hole_bhns : public Black_hole {
00061
00062
00063
00064 protected:
00068 bool bc_lapconf_nd ;
00069
00073 bool bc_lapconf_fs ;
00074
00078 bool irrotational ;
00079
00081 double omega_spin ;
00082
00084 Scalar lapconf_auto_rs ;
00085
00087 Scalar lapconf_auto_bh ;
00088
00090 Scalar lapconf_auto ;
00091
00093 Scalar lapconf_comp ;
00094
00096 Scalar lapconf_tot ;
00097
00099 Scalar lapse_auto ;
00100
00102 Scalar lapse_tot ;
00103
00107 Vector d_lapconf_auto_rs ;
00108
00112 Vector d_lapconf_auto_bh ;
00113
00115 Vector d_lapconf_auto ;
00116
00118 Vector d_lapconf_comp ;
00119
00121 Vector shift_auto_rs ;
00122
00124 Vector shift_auto_bh ;
00125
00127 Vector shift_auto ;
00128
00130 Vector shift_comp ;
00131
00133 Vector shift_tot ;
00134
00138 Tensor d_shift_auto_rs ;
00139
00143 Tensor d_shift_auto_bh ;
00144
00146 Tensor d_shift_auto ;
00147
00149 Tensor d_shift_comp ;
00150
00152 Scalar confo_auto_rs ;
00153
00155 Scalar confo_auto_bh ;
00156
00158 Scalar confo_auto ;
00159
00161 Scalar confo_comp ;
00162
00164 Scalar confo_tot ;
00165
00169 Vector d_confo_auto_rs ;
00170
00174 Vector d_confo_auto_bh ;
00175
00177 Vector d_confo_auto ;
00178
00180 Vector d_confo_comp ;
00181
00185 Sym_tensor taij_tot_rs ;
00186
00190 Sym_tensor taij_tot_rot ;
00191
00195 Sym_tensor taij_tot_bh ;
00196
00201 Sym_tensor taij_tot ;
00202
00206 Sym_tensor taij_auto_rs ;
00207
00211 Sym_tensor taij_auto ;
00212
00216 Sym_tensor taij_comp ;
00217
00219 Scalar taij_quad_tot_rs ;
00220
00222 Scalar taij_quad_tot_rot ;
00223
00225 Scalar taij_quad_tot_bh ;
00226
00230 Scalar taij_quad_tot ;
00231
00233 Scalar taij_quad_auto ;
00234
00236 Scalar taij_quad_comp ;
00237
00238
00239
00240 protected:
00241 mutable double* p_mass_irr_bhns ;
00242
00243 mutable double* p_spin_am_bhns ;
00244
00245
00246
00247 public:
00248
00253 Hole_bhns(Map& mp_i, bool kerrschild_i, bool bc_lapconf_nd,
00254 bool bc_lapconf_fs, bool irrotational, double massbh) ;
00255
00256 Hole_bhns(const Hole_bhns& ) ;
00257
00264 Hole_bhns(Map& mp_i, FILE* fich) ;
00265
00266 virtual ~Hole_bhns() ;
00267
00268
00269
00270 protected:
00272 virtual void del_deriv() const ;
00273
00275 void set_der_0x0() const ;
00276
00277
00278
00279
00280 public:
00282 void operator=(const Hole_bhns&) ;
00283
00285 double& set_omega_spin() { return omega_spin ; } ;
00286
00288 Scalar& set_lapconf_auto_rs() ;
00289
00291 Scalar& set_lapconf_auto_bh() ;
00292
00294 Scalar& set_lapconf_auto() ;
00295
00297 Scalar& set_lapconf_comp() ;
00298
00300 Scalar& set_lapconf_tot() ;
00301
00303 Scalar& set_lapse_auto() ;
00304
00306 Scalar& set_lapse_tot() ;
00307
00309 Vector& set_shift_auto_rs() ;
00310
00312 Vector& set_shift_auto_bh() ;
00313
00315 Vector& set_shift_auto() ;
00316
00318 Vector& set_shift_comp() ;
00319
00321 Vector& set_shift_tot() ;
00322
00324 Scalar& set_confo_auto_rs() ;
00325
00327 Scalar& set_confo_auto_bh() ;
00328
00330 Scalar& set_confo_auto() ;
00331
00333 Scalar& set_confo_comp() ;
00334
00336 Scalar& set_confo_tot() ;
00337
00338
00339
00340 public:
00344 bool has_bc_lapconf_nd() const {return bc_lapconf_nd; } ;
00345
00349 bool has_bc_lapconf_fs() const {return bc_lapconf_fs; } ;
00350
00354 bool is_irrotational() const {return irrotational; } ;
00355
00357 double get_omega_spin() const {return omega_spin; } ;
00358
00360 const Scalar& get_lapconf_auto_rs() const {return lapconf_auto_rs; } ;
00361
00365 const Scalar& get_lapconf_auto() const {return lapconf_auto; } ;
00366
00370 const Scalar& get_lapconf_comp() const {return lapconf_comp; } ;
00371
00373 const Scalar& get_lapconf_tot() const {return lapconf_tot; } ;
00374
00378 const Scalar& get_lapse_auto() const {return lapse_auto; } ;
00379
00381 const Scalar& get_lapse_tot() const {return lapse_tot; } ;
00382
00386 const Vector& get_d_lapconf_auto_rs() const
00387 {return d_lapconf_auto_rs; } ;
00388
00392 const Vector& get_d_lapconf_auto() const {return d_lapconf_auto; } ;
00393
00397 const Vector& get_d_lapconf_comp() const {return d_lapconf_comp; } ;
00398
00400 const Vector& get_shift_auto_rs() const {return shift_auto_rs; } ;
00401
00403 const Vector& get_shift_auto() const {return shift_auto; } ;
00404
00408 const Vector& get_shift_comp() const {return shift_comp; } ;
00409
00411 const Vector& get_shift_tot() const {return shift_tot; } ;
00412
00416 const Tensor& get_d_shift_auto_rs() const {return d_shift_auto_rs; } ;
00417
00421 const Tensor& get_d_shift_auto() const {return d_shift_auto; } ;
00422
00426 const Tensor& get_d_shift_comp() const {return d_shift_comp; } ;
00427
00429 const Scalar& get_confo_auto_rs() const {return confo_auto_rs; } ;
00430
00434 const Scalar& get_confo_auto() const {return confo_auto; } ;
00435
00439 const Scalar& get_confo_comp() const {return confo_comp; } ;
00440
00442 const Scalar& get_confo_tot() const {return confo_tot; } ;
00443
00447 const Vector& get_d_confo_auto_rs() const {return d_confo_auto_rs; } ;
00448
00452 const Vector& get_d_confo_auto() const {return d_confo_auto; } ;
00453
00457 const Vector& get_d_confo_comp() const {return d_confo_comp; } ;
00458
00460 const Sym_tensor& get_taij_tot_rs() const {return taij_tot_rs; } ;
00461
00463 const Sym_tensor& get_taij_tot() const {return taij_tot; } ;
00464
00468 const Sym_tensor& get_taij_auto_rs() const {return taij_auto_rs; } ;
00469
00473 const Sym_tensor& get_taij_auto() const {return taij_auto; } ;
00474
00478 const Sym_tensor& get_taij_comp() const {return taij_comp; } ;
00479
00481 const Scalar& get_taij_quad_tot_rs() const {return taij_quad_tot_rs; } ;
00483 const Scalar& get_taij_quad_tot_rot() const {return taij_quad_tot_rot; } ;
00484
00486 const Scalar& get_taij_quad_tot() const {return taij_quad_tot; } ;
00487
00489 const Scalar& get_taij_quad_auto() const {return taij_quad_auto; } ;
00490
00492 const Scalar& get_taij_quad_comp() const {return taij_quad_comp; } ;
00493
00494
00495
00496 public:
00497 virtual void sauve(FILE *) const ;
00498
00499 protected:
00501 virtual ostream& operator>>(ostream& ) const ;
00502
00503
00504
00505 public:
00507 virtual double mass_irr_bhns() const ;
00508
00510 double spin_am_bhns(const Tbl& xi_i, const double& phi_i,
00511 const double& theta_i, const int& nrk_phi,
00512 const int& nrk_theta) const ;
00513
00514
00515
00516 public:
00520 const Valeur bc_lapconf() const ;
00521
00525 const Valeur bc_shift_x(double ome_orb, double y_rot) const ;
00526
00530 const Valeur bc_shift_y(double ome_orb, double x_rot) const ;
00531
00535 const Valeur bc_shift_z() const ;
00536
00543 const Valeur bc_confo(double ome_orb, double x_rot,
00544 double y_rot) const ;
00545
00562 void update_metric_bhns(const Star_bhns& star,
00563 const Hole_bhns& hole_prev,
00564 double relax) ;
00565
00572 void update_met_der_comp_bhns(const Star_bhns& star) ;
00573
00580 void extr_curv_bhns(double omega_orb, double x_rot, double y_rot) ;
00581
00604 void equilibrium_bhns(int mer, int mermax_bh,
00605 int filter_r, int filter_r_s, int filter_p_s,
00606 double x_rot, double y_rot, double precis,
00607 double omega_orb, double resize_bh,
00608 const Tbl& fact_resize, Tbl& diff) ;
00609
00620 void relax_bhns(const Hole_bhns& hole_prev,
00621 double relax_met, int mer, int fmer_met) ;
00622
00634 Tbl runge_kutta_phi(const Tbl& xi_i, const double& phi_i,
00635 const int& nrk) const ;
00636
00650 Tbl runge_kutta_theta(const Tbl& xi_i, const double& theta_i,
00651 const double& phi, const int& nrk) const ;
00652
00669 Vector killing_vect(const Tbl& xi_i, const double& phi_i,
00670 const double& theta_i, const int& nrk_phi,
00671 const int& nrk_theta) const ;
00672
00673 friend class Bin_bhns ;
00674
00675 };
00676
00677 #endif