LORENE
bin_ns_bh.h
1/*
2 * Definition of Lorene class Bin_ns_bh
3 *
4 */
5
6/*
7 * Copyright (c) 2002 Philippe Grandclement, Keisuke Taniguchi,
8 * Eric Gourgoulhon
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 version 2
14 * as published by the Free Software Foundation.
15 *
16 * LORENE is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with LORENE; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 *
25 */
26
27#ifndef __BIN_NS_BH_H_
28#define __BIN_NS_BH_H_
29
30/*
31 * $Id: bin_ns_bh.h,v 1.20 2017/02/24 15:34:59 j_novak Exp $
32 * $Log: bin_ns_bh.h,v $
33 * Revision 1.20 2017/02/24 15:34:59 j_novak
34 * Removal of spurious comments
35 *
36 * Revision 1.19 2014/10/13 08:52:32 j_novak
37 * Lorene classes and functions now belong to the namespace Lorene.
38 *
39 * Revision 1.18 2007/04/26 14:14:59 f_limousin
40 * The function fait_tkij now have default values for bound_nn and lim_nn
41 *
42 * Revision 1.17 2007/04/24 20:15:30 f_limousin
43 * Implementation of Dirichlet and Neumann BC for the lapse
44 *
45 * Revision 1.16 2006/09/25 10:01:45 p_grandclement
46 * Addition of N-dimensional Tbl
47 *
48 * Revision 1.15 2006/06/23 07:09:22 p_grandclement
49 * Addition of spinning black hole
50 *
51 * Revision 1.14 2006/06/01 12:47:50 p_grandclement
52 * update of the Bin_ns_bh project
53 *
54 * Revision 1.13 2006/04/25 07:21:54 p_grandclement
55 * Various changes for the NS_BH project
56 *
57 * Revision 1.12 2005/12/01 12:59:08 p_grandclement
58 * Files for bin_ns_bh project
59 *
60 * Revision 1.11 2005/11/30 11:09:03 p_grandclement
61 * Changes for the Bin_ns_bh project
62 *
63 * Revision 1.10 2005/10/18 13:12:31 p_grandclement
64 * update of the mixted binary codes
65 *
66 * Revision 1.9 2005/08/29 15:10:12 p_grandclement
67 * Addition of things needed :
68 * 1) For BBH with different masses
69 * 2) Provisory files for the mixted binaries (Bh and NS) : THIS IS NOT
70 * WORKING YET !!!
71 *
72 * Revision 1.8 2004/06/09 06:23:50 k_taniguchi
73 * Introduce analytical_omega() and analytical_shift().
74 *
75 * Revision 1.7 2003/11/25 07:25:44 k_taniguchi
76 * Change the attribute of fait_decouple() from private to public.
77 *
78 * Revision 1.6 2003/10/24 16:56:30 k_taniguchi
79 * Add the method for the calculation of the orbital angular velocity
80 *
81 * Revision 1.5 2003/10/24 12:45:22 k_taniguchi
82 * Change the class for the star from Etoile_bin to Et_bin_nsbh
83 *
84 * Revision 1.4 2003/02/13 16:40:24 p_grandclement
85 * Addition of various things for the Bin_ns_bh project, non of them being
86 * completely tested
87 *
88 * Revision 1.3 2002/12/19 14:46:16 e_gourgoulhon
89 *
90 * Modified prototype of functions set_omega and set_x_axe
91 *
92 * Revision 1.2 2002/12/18 10:29:18 e_gourgoulhon
93 *
94 * Added set_omega() and set_x_axe()
95 *
96 * Revision 1.1 2002/12/17 13:10:49 e_gourgoulhon
97 * Definition of class Bin_ns_bh
98 *
99 *
100 *
101 *
102 * $Header: /cvsroot/Lorene/C++/Include/bin_ns_bh.h,v 1.20 2017/02/24 15:34:59 j_novak Exp $
103 *
104 */
105
106
107// Lorene headers
108#include "et_bin_nsbh.h"
109#include "bhole.h"
110
111namespace Lorene {
121
122 // Data :
123 // -----
124 private:
129
132
135
139 double omega ;
140
143 double x_axe ;
144
145 // Derived data :
146 // ------------
147 private:
149 mutable double* p_mass_adm ;
150
152 mutable double* p_mass_kom ;
153
155 mutable Tbl* p_angu_mom ;
156
158 mutable double* p_total_ener ;
159
161 mutable double* p_virial ;
162
164 mutable double* p_virial_gb ;
165
167 mutable double* p_virial_fus ;
168
170 mutable double* p_ham_constr ;
171
173 mutable Tbl* p_mom_constr ;
174
175
176 // Constructors - Destructor
177 // -------------------------
178 public:
189 Bin_ns_bh(Map& mp_ns, int nzet, const Eos& eos, bool irrot_ns,
190 Map_af& mp_bh) ;
191
192
193 Bin_ns_bh(const Bin_ns_bh& ) ;
194
203 Bin_ns_bh(Map& mp_ns, const Eos& eos, Map_af& mp_bh, FILE* fich, bool old = false) ;
204
205 virtual ~Bin_ns_bh() ;
206
207
208 // Memory management
209 // -----------------
210 private:
212 void del_deriv() const ;
213
215 void set_der_0x0() const ;
216
217
218 // Mutators / assignment
219 // ---------------------
220 public:
222 void operator=(const Bin_ns_bh& ) ;
223
226 { del_deriv() ;
227 return star ;} ;
228
231 { del_deriv() ;
232 return hole ;} ;
233
235 void set_omega(double ) ;
236
238 void set_x_axe(double ) ;
239
240 // Accessors
241 // ---------
242 public:
244 const Et_bin_nsbh& get_ns() const
245 { return star ;} ;
246
248 const Bhole& get_bh() const
249 { return hole ;} ;
250
252 double get_omega() const
253 { return omega ;} ;
254
256 double get_x_axe() const
257 { return x_axe ;} ;
258
260 double separation() const ;
261
262 // Outputs
263 // -------
264 public:
265 virtual void sauve(FILE *) const ;
266
267 // Display
268 friend ostream& operator<<(ostream& , const Bin_ns_bh& ) ;
269
270 private:
272 ostream& operator>>(ostream& ) const ;
273
274 public:
278 void fait_decouple() ;
279
283 void fait_tkij(int bound_nn = -1, double lim_nn = 0) ;
284
285 // Computational routines
286 // ----------------------
287 public:
307 void orbit_omega(double fact_omeg_min, double fact_omeg_max) ;
308
312 void analytical_omega() ;
313
317 void analytical_shift() ;
318
319 void init_auto () ;
320 void affecte (const Bin_ns_bh&) ;
321 void pseudo_misner (int&, int, double, double, int, double) ;
322 double adm_systeme() const ;
323 double adm_systeme_volume() const ;
324 double komar_systeme() const ;
325 double moment_systeme_inf() const ;
326 double moment_systeme_hor() const ;
327 double smarr() const ;
328 Tbl linear_momentum_systeme_inf() const ;
329 double viriel() const ;
330 void coal (double, double, int, int, double, double, double, double, double, double, double, const int, int, double) ;
331 double distance_propre_axe_bh (const int nr = 65) const ;
332 double distance_propre_axe_ns (const int nr = 65) const ;
333
334};
335ostream& operator<<(ostream& , const Bin_ns_bh& ) ;
336
337}
338#endif
Cartesian vectorial bases (triads).
Definition base_vect.h:201
Black hole.
Definition bhole.h:268
Neutron star - black hole binary system.
Definition bin_ns_bh.h:120
Bhole & set_bh()
Read/write of the black hole.
Definition bin_ns_bh.h:230
double get_omega() const
Returns the orbital velocity.
Definition bin_ns_bh.h:252
friend ostream & operator<<(ostream &, const Bin_ns_bh &)
Save in a file.
Definition bin_ns_bh.C:478
double * p_mass_kom
Total Komar mass of the system.
Definition bin_ns_bh.h:152
void fait_decouple()
Function used to compute the {\tt decouple} functions for both the NS and the BH.
const Bhole & get_bh() const
Returns a constant reference to the black hole.
Definition bin_ns_bh.h:248
double * p_virial
Virial theorem error.
Definition bin_ns_bh.h:161
void fait_tkij(int bound_nn=-1, double lim_nn=0)
Computation of the extrinsic curvature tensor for both {\tt star} and {\tt bhole}.
Et_bin_nsbh & set_ns()
Read/write of the neutron star.
Definition bin_ns_bh.h:225
void set_omega(double)
Sets the orbital angular velocity [{\tt f_unit}].
Definition bin_ns_bh.C:221
double * p_total_ener
Total energy of the system.
Definition bin_ns_bh.h:158
void operator=(const Bin_ns_bh &)
Assignment to another Bin_ns_bh.
Definition bin_ns_bh.C:205
ostream & operator>>(ostream &) const
Operator >> (function called by the operator <<).
Definition bin_ns_bh.C:484
double x_axe
Absolute X coordinate of the rotation axis.
Definition bin_ns_bh.h:143
void set_x_axe(double)
Sets the absolute coordinate X of the rotation axis [{\tt r_unit}].
Definition bin_ns_bh.C:230
Et_bin_nsbh star
The neutron star.
Definition bin_ns_bh.h:131
double * p_virial_gb
Virial theorem error by E.Gourgoulhon and S.Bonazzola.
Definition bin_ns_bh.h:164
Bhole hole
The black hole.
Definition bin_ns_bh.h:134
Tbl * p_mom_constr
Relative error on the momentum constraint.
Definition bin_ns_bh.h:173
double * p_mass_adm
Total ADM mass of the system.
Definition bin_ns_bh.h:149
void analytical_omega()
Sets the orbital angular velocity of the neutron star to some 2-PN analytical value.
double separation() const
Return the separation.
Definition bin_ns_bh.C:238
double * p_ham_constr
Relative error on the Hamiltonian constraint.
Definition bin_ns_bh.h:170
const Base_vect_cart ref_triad
Cartesian triad of the absolute reference frame.
Definition bin_ns_bh.h:128
void set_der_0x0() const
Sets to {\tt 0x0} all the pointers on derived quantities.
Definition bin_ns_bh.C:184
void del_deriv() const
Destructor.
Definition bin_ns_bh.C:166
double * p_virial_fus
Virial theorem error by J.L.Friedman, K.Uryu, and M.Shibata.
Definition bin_ns_bh.h:167
Tbl * p_angu_mom
Total angular momentum of the system.
Definition bin_ns_bh.h:155
const Et_bin_nsbh & get_ns() const
Returns a constant reference to the neutron star.
Definition bin_ns_bh.h:244
Bin_ns_bh(Map &mp_ns, int nzet, const Eos &eos, bool irrot_ns, Map_af &mp_bh)
Standard constructor.
Definition bin_ns_bh.C:110
void analytical_shift()
Sets some analytical template for the shift vector (via the members {\tt w_shift} and {\tt khi_shift}...
double omega
Angular velocity with respect to an asymptotically inertial observer.
Definition bin_ns_bh.h:139
double get_x_axe() const
Returns a constant reference to the black hole.
Definition bin_ns_bh.h:256
void orbit_omega(double fact_omeg_min, double fact_omeg_max)
Computes the orbital angular velocity {\tt omega}.
Equation of state base class.
Definition eos.h:206
Class for a star in a NS-BH binary system.
Definition et_bin_nsbh.h:79
Affine radial mapping.
Definition map.h:2042
Basic array class.
Definition tbl.h:161
Lorene prototypes.
Definition app_hor.h:67
virtual void sauve(FILE *) const
Save in a file.
Map(const Mg3d &)
Constructor from a multi-domain 3D grid.
Definition map.C:142