hole_bhns.h

00001 /*
00002  *  Definition of Lorene class Hole_bhns
00003  *
00004  */
00005 
00006 /*
00007  *   Copyright (c) 2005-2007 Keisuke Taniguchi
00008  *
00009  *   This file is part of LORENE.
00010  *
00011  *   LORENE is free software; you can redistribute it and/or modify
00012  *   it under the terms of the GNU General Public License version 2
00013  *   as published by the Free Software Foundation.
00014  *
00015  *   LORENE is distributed in the hope that it will be useful,
00016  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  *   GNU General Public License for more details.
00019  *
00020  *   You should have received a copy of the GNU General Public License
00021  *   along with LORENE; if not, write to the Free Software
00022  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023  *
00024  */
00025 
00026 #ifndef __HOLE_BHNS_H_ 
00027 #define __HOLE_BHNS_H_ 
00028 
00029 /*
00030  * $Id: hole_bhns.h,v 1.2 2008/05/15 18:55:04 k_taniguchi Exp $
00031  * $Log: hole_bhns.h,v $
00032  * Revision 1.2  2008/05/15 18:55:04  k_taniguchi
00033  * Change of some parameters and introduction of some
00034  * computational routines.
00035  *
00036  * Revision 1.1  2007/06/22 01:04:14  k_taniguchi
00037  * *** empty log message ***
00038  *
00039  *
00040  * $Header: /cvsroot/Lorene/C++/Include/hole_bhns.h,v 1.2 2008/05/15 18:55:04 k_taniguchi Exp $
00041  *
00042  */
00043 
00044 // External classes which appear in the declaration of class Hole_bhns:
00045 class Star_bhns ; 
00046 
00047 // Headers Lorene
00048 #include "blackhole.h"
00049 #include "metric.h"
00050 
00051                     //-------------------------//
00052                     //     Class Hole_bhns     //
00053                     //-------------------------//
00054 
00060 class Hole_bhns : public Black_hole {
00061 
00062     // Data :
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 ;  // = lapconf_auto_rs + lapconf_auto_bh
00091 
00093     Scalar lapconf_comp ;
00094 
00096     Scalar lapconf_tot ;  // = lapconf_auto + lapconf_comp
00097 
00099     Scalar lapse_auto ;  // = lapconf_auto / confo_tot
00100 
00102     Scalar lapse_tot ;  // = lapconf_tot / confo_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     // Derived data : 
00239     // ------------
00240     protected:
00241     mutable double* p_mass_irr_bhns ; 
00242 
00243     mutable double* p_spin_am_bhns ;
00244 
00245     // Constructors - Destructor
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     // Memory management
00269     // -----------------
00270     protected:
00272     virtual void del_deriv() const ;
00273 
00275     void set_der_0x0() const ;
00276 
00277 
00278     // Mutators / assignment
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     // Accessors
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     // Outputs
00495     // -------
00496     public:
00497     virtual void sauve(FILE *) const ;      
00498     
00499     protected:
00501     virtual ostream& operator>>(ostream& ) const ;
00502 
00503     // Global quantities
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     // Computational routines
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

Generated on Tue Feb 7 01:35:17 2012 for LORENE by  doxygen 1.4.6