bin_ns_bh.h

00001 /*
00002  *  Definition of Lorene class Bin_ns_bh
00003  *
00004  */
00005 
00006 /*
00007  *   Copyright (c) 2002  Philippe Grandclement, Keisuke Taniguchi,
00008  *              Eric Gourgoulhon
00009  *
00010  *   This file is part of LORENE.
00011  *
00012  *   LORENE is free software; you can redistribute it and/or modify
00013  *   it under the terms of the GNU General Public License version 2
00014  *   as published by the Free Software Foundation.
00015  *
00016  *   LORENE is distributed in the hope that it will be useful,
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  *   GNU General Public License for more details.
00020  *
00021  *   You should have received a copy of the GNU General Public License
00022  *   along with LORENE; if not, write to the Free Software
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00024  *
00025  */
00026 
00027 #ifndef __BIN_NS_BH_H_
00028 #define __BIN_NS_BH_H_
00029 
00030 /*
00031  * $Id: bin_ns_bh.h,v 1.18 2007/04/26 14:14:59 f_limousin Exp $
00032  * $Log: bin_ns_bh.h,v $
00033  * Revision 1.18  2007/04/26 14:14:59  f_limousin
00034  * The function fait_tkij now have default values for bound_nn and lim_nn
00035  *
00036  * Revision 1.17  2007/04/24 20:15:30  f_limousin
00037  * Implementation of Dirichlet and Neumann BC for the lapse
00038  *
00039  * Revision 1.16  2006/09/25 10:01:45  p_grandclement
00040  * Addition of N-dimensional Tbl
00041  *
00042  * Revision 1.15  2006/06/23 07:09:22  p_grandclement
00043  * Addition of spinning black hole
00044  *
00045  * Revision 1.14  2006/06/01 12:47:50  p_grandclement
00046  * update of the Bin_ns_bh project
00047  *
00048  * Revision 1.13  2006/04/25 07:21:54  p_grandclement
00049  * Various changes for the NS_BH project
00050  *
00051  * Revision 1.12  2005/12/01 12:59:08  p_grandclement
00052  * Files for bin_ns_bh project
00053  *
00054  * Revision 1.11  2005/11/30 11:09:03  p_grandclement
00055  * Changes for the Bin_ns_bh project
00056  *
00057  * Revision 1.10  2005/10/18 13:12:31  p_grandclement
00058  * update of the mixted binary codes
00059  *
00060  * Revision 1.9  2005/08/29 15:10:12  p_grandclement
00061  * Addition of things needed :
00062  *   1) For BBH with different masses
00063  *   2) Provisory files for the mixted binaries (Bh and NS) : THIS IS NOT
00064  *   WORKING YET !!!
00065  *
00066  * Revision 1.8  2004/06/09 06:23:50  k_taniguchi
00067  * Introduce analytical_omega() and analytical_shift().
00068  *
00069  * Revision 1.7  2003/11/25 07:25:44  k_taniguchi
00070  * Change the attribute of fait_decouple() from private to public.
00071  *
00072  * Revision 1.6  2003/10/24 16:56:30  k_taniguchi
00073  * Add the method for the calculation of the orbital angular velocity
00074  *
00075  * Revision 1.5  2003/10/24 12:45:22  k_taniguchi
00076  * Change the class for the star from Etoile_bin to Et_bin_nsbh
00077  *
00078  * Revision 1.4  2003/02/13 16:40:24  p_grandclement
00079  * Addition of various things for the Bin_ns_bh project, non of them being
00080  * completely tested
00081  *
00082  * Revision 1.3  2002/12/19 14:46:16  e_gourgoulhon
00083  *
00084  * Modified prototype of functions set_omega and set_x_axe
00085  *
00086  * Revision 1.2  2002/12/18 10:29:18  e_gourgoulhon
00087  *
00088  * Added set_omega() and set_x_axe()
00089  *
00090  * Revision 1.1  2002/12/17 13:10:49  e_gourgoulhon
00091  * Definition of class Bin_ns_bh
00092  *
00093  *
00094  *
00095  *
00096  * $Header: /cvsroot/Lorene/C++/Include/bin_ns_bh.h,v 1.18 2007/04/26 14:14:59 f_limousin Exp $
00097  *
00098  */
00099 
00100 
00101 // Lorene headers
00102 #include "et_bin_nsbh.h"
00103 #include "bhole.h"
00104 
00113 class Bin_ns_bh {
00114 
00115     // Data :
00116     // -----
00117     private:
00121     const Base_vect_cart ref_triad ;
00122 
00124     Et_bin_nsbh star ;
00125 
00127     Bhole hole ;
00128 
00132     double omega ;
00133 
00136     double x_axe ;
00137 
00138     // Derived data :
00139     // ------------
00140     private:
00142     mutable double* p_mass_adm ;
00143 
00145     mutable double* p_mass_kom ;
00146 
00148     mutable Tbl* p_angu_mom ;
00149 
00151     mutable double* p_total_ener ;
00152 
00154     mutable double* p_virial ;
00155 
00157     mutable double* p_virial_gb ;
00158 
00160     mutable double* p_virial_fus ;
00161 
00163     mutable double* p_ham_constr ;
00164 
00166     mutable Tbl* p_mom_constr ;
00167 
00168 
00169     // Constructors - Destructor
00170     // -------------------------
00171     public:
00182     Bin_ns_bh(Map& mp_ns, int nzet, const Eos& eos, bool irrot_ns,
00183             Map_af& mp_bh) ;
00184 
00185 
00186     Bin_ns_bh(const Bin_ns_bh& ) ;      
00187 
00196     Bin_ns_bh(Map& mp_ns, const Eos& eos, Map_af& mp_bh, FILE* fich, bool old = false) ;
00197 
00198     virtual ~Bin_ns_bh() ;          
00199 
00200 
00201     // Memory management
00202     // -----------------
00203     private:
00205     void del_deriv() const ;
00206 
00208     void set_der_0x0() const ;
00209 
00210 
00211     // Mutators / assignment
00212     // ---------------------
00213     public:
00215     void operator=(const Bin_ns_bh& ) ;
00216 
00218     Et_bin_nsbh& set_ns()
00219         { del_deriv() ;
00220                return star ;} ;
00221 
00223     Bhole& set_bh()
00224         { del_deriv() ;
00225            return hole ;} ;
00226 
00228     void set_omega(double ) ;
00229 
00231     void set_x_axe(double ) ;
00232 
00233     // Accessors
00234     // ---------
00235     public:
00237     const Et_bin_nsbh& get_ns() const
00238         { return star ;} ;
00239 
00241     const Bhole& get_bh() const
00242         { return hole ;} ;
00243 
00245     double get_omega() const
00246         { return omega ;} ;
00247 
00249     double get_x_axe() const
00250         { return x_axe ;} ;
00251 
00253     double separation() const  ;
00254 
00255     // Outputs
00256     // -------
00257     public:
00258     virtual void sauve(FILE *) const ;      
00259 
00261     friend ostream& operator<<(ostream& , const Bin_ns_bh& ) ;
00262 
00263     private:
00265     ostream& operator>>(ostream& ) const ;
00266 
00267     public:
00271     void fait_decouple() ;
00272 
00276     void fait_tkij(int bound_nn = -1, double lim_nn = 0) ;
00277 
00278     // Computational routines
00279     // ----------------------
00280     public:
00300     void orbit_omega(double fact_omeg_min, double fact_omeg_max) ;
00301 
00305     void analytical_omega() ;
00306 
00310     void analytical_shift() ;
00311 
00312     void init_auto () ;
00313     void affecte (const Bin_ns_bh&) ;
00314     void pseudo_misner (int&, int, double, double, int, double) ;
00315     double adm_systeme() const ;
00316     double adm_systeme_volume() const ;
00317     double komar_systeme() const ;
00318     double moment_systeme_inf() const ;
00319     double moment_systeme_hor() const ; 
00320     double smarr() const ;
00321     Tbl linear_momentum_systeme_inf() const ;
00322     double viriel() const ;
00323     void coal (double, double, int, int,  double, double, double, double, double, double,  double, const int, int, double) ;
00324     double distance_propre_axe_bh (const int nr  = 65) const ;
00325     double distance_propre_axe_ns (const int nr  = 65) const ;
00326     
00327 };
00328 ostream& operator<<(ostream& , const Bin_ns_bh& ) ;
00329 
00330 #endif

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