28 char bin_bhns_shift_ana_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Bin_bhns/bin_bhns_shift_ana.C,v 1.3 2014/10/13 08:52:41 j_novak Exp $" ;
55 #include "utilitaires.h"
65 double massns =
star.mass_g_bhns() ;
66 double mass_bh = ggrav * massbh ;
67 double mass_ns = ggrav * massns ;
69 double mass_tot = mass_bh + mass_ns ;
71 double comb = mass_bh * mass_ns *
omega *
separ / mass_tot ;
115 x_bh_ex = 0.2 * comb * rad_bh * rad_bh
116 * st_bh * st_bh * cp_bh * sp_bh /
pow(rr_bh, 3.) ;
121 + reduce_shift_bh * x_bh_ex ;
125 y_bh_ex = 0.5 * comb * (7. + 0.2*rad_bh*rad_bh/rr_bh/rr_bh) / rr_bh
126 + 0.5 * comb *
pow(st_bh*sp_bh,2.)
127 * (1. - 0.6*rad_bh*rad_bh/rr_bh/rr_bh) / rr_bh ;
132 + reduce_shift_bh * y_bh_ex ;
136 z_bh_ex = 0.5 * comb * st_bh * sp_bh * ct_bh
137 * (1.-0.6*rad_bh*rad_bh/rr_bh/rr_bh) / rr_bh ;
142 + reduce_shift_bh * z_bh_ex ;
151 x_bh_ex = - 0.6 * mass_ns *
omega * rad_bh * rad_bh
152 * st_bh * sp_bh /
pow(rr_bh, 2.)
153 + 0.5 * comb * st_bh * st_bh * cp_bh * sp_bh
154 * (1. - 0.6*rad_bh*rad_bh/rr_bh/rr_bh) / rr_bh
155 - 0.6*mass_bh*
omega*rad_bh*rad_bh*
pow(st_bh,3.)*
pow(cp_bh,2.)*sp_bh
161 + reduce_shift_bh * x_bh_ex ;
165 y_bh_ex = 0.5 * comb * (7. + 0.2*rad_bh*rad_bh/rr_bh/rr_bh) / rr_bh
166 - 0.6 * mass_bh *
omega * rad_bh * rad_bh * st_bh * cp_bh
168 + 0.5 * comb *
pow(st_bh*sp_bh,2.)
169 * (1. - 0.6*rad_bh*rad_bh/rr_bh/rr_bh) / rr_bh
170 - 0.6*mass_bh*
omega*rad_bh*rad_bh*
pow(st_bh,3.)*cp_bh*
pow(sp_bh,2.)
176 + reduce_shift_bh * y_bh_ex ;
180 z_bh_ex = 0.5 * comb * st_bh * cp_bh * ct_bh
181 * (1. - 0.6*rad_bh*rad_bh/rr_bh/rr_bh) / rr_bh
182 - 0.6*mass_bh*
omega*rad_bh*rad_bh*st_bh*st_bh*cp_bh*sp_bh*ct_bh
188 + reduce_shift_bh * z_bh_ex ;
199 int nz_ns = (
star.
get_mp()).get_mg()->get_nzone() ;
240 x_ns_in = - 0.2 * comb * xx_ns * yy_ns /
pow(rad_ns, 3.) ;
241 x_ns_in.
annule(nzet, nz_ns-1) ;
244 x_ns_ex = - 0.2 * comb * rad_ns * rad_ns
245 * st_ns * st_ns * cp_ns * sp_ns /
pow(rr_ns, 3.) ;
246 x_ns_ex.
annule(0, nzet-1) ;
250 * (x_ns_in + x_ns_ex) ;
254 y_ns_in = - 0.5 * comb * (11. - 3.8*rr_ns*rr_ns/rad_ns/rad_ns) / rad_ns
255 - 0.2 * comb * yy_ns * yy_ns /
pow(rad_ns, 3.) ;
256 y_ns_in.annule(nzet, nz_ns-1) ;
257 y_ns_in.std_spectral_base() ;
259 y_ns_ex = - 0.5 * comb * (7. + 0.2*rad_ns*rad_ns/rr_ns/rr_ns) / rr_ns
260 - 0.5 * comb *
pow(st_ns*sp_ns,2.)
261 * (1. - 0.6*rad_ns*rad_ns/rr_ns/rr_ns) / rr_ns ;
262 y_ns_ex.
annule(0, nzet-1) ;
266 * (y_ns_in + y_ns_ex) ;
270 z_ns_in = - 0.2 * comb * yy_ns * zz_ns /
pow(rad_ns, 3.) ;
271 z_ns_in.annule(nzet, nz_ns-1) ;
272 z_ns_in.std_spectral_base() ;
274 z_ns_ex = - 0.5 * comb * st_ns * sp_ns * ct_ns
275 * (1.-0.6*rad_ns*rad_ns/rr_ns/rr_ns) / rr_ns ;
276 z_ns_ex.
annule(0, nzet-1) ;
280 * (z_ns_in + z_ns_ex) ;
287 x_ns_in = 1.5 * mass_ns *
omega * yy_ns
288 * (1. - 0.6*rr_ns*rr_ns/rad_ns/rad_ns) / rad_ns
289 - 0.2 * comb * xx_ns * yy_ns /
pow(rad_ns, 3.)
290 + 0.6 * mass_ns *
omega * xx_ns * xx_ns * yy_ns /
pow(rad_ns, 3.) ;
291 x_ns_in.
annule(nzet, nz_ns-1) ;
294 x_ns_ex = 0.6 * mass_ns *
omega * rad_ns * rad_ns
295 * st_ns * sp_ns /
pow(rr_ns, 2.)
296 - 0.5 * comb * st_ns * st_ns * cp_ns * sp_ns
297 * (1. - 0.6*rad_ns*rad_ns/rr_ns/rr_ns) / rr_ns
298 + 0.6*mass_ns*
omega*rad_ns*rad_ns*
pow(st_ns,3.)*
pow(cp_ns,2.)*sp_ns
300 x_ns_ex.
annule(0, nzet-1) ;
304 * (x_ns_in + x_ns_ex) ;
308 y_ns_in = - 0.5 * comb * (11. - 3.8*rr_ns*rr_ns/rad_ns/rad_ns) / rad_ns
309 + 1.5 * mass_ns *
omega * xx_ns
310 * (1. - 0.6*rr_ns*rr_ns/rad_ns/rad_ns) / rad_ns
311 - 0.2 * comb * yy_ns * yy_ns /
pow(rad_ns, 3.)
312 + 0.6 * mass_ns *
omega * xx_ns * yy_ns * yy_ns /
pow(rad_ns, 3.) ;
313 y_ns_in.annule(nzet, nz_ns-1) ;
314 y_ns_in.std_spectral_base() ;
316 y_ns_ex = - 0.5 * comb * (7. + 0.2*rad_ns*rad_ns/rr_ns/rr_ns) / rr_ns
317 + 0.6 * mass_ns *
omega * rad_ns * rad_ns * st_ns * cp_ns
319 - 0.5 * comb *
pow(st_ns*sp_ns,2.)
320 * (1. - 0.6*rad_ns*rad_ns/rr_ns/rr_ns) / rr_ns
321 + 0.6*mass_ns*
omega*rad_ns*rad_ns*
pow(st_ns,3.)*cp_ns*
pow(sp_ns,2.)
323 y_ns_ex.
annule(0, nzet-1) ;
327 * (y_ns_in + y_ns_ex) ;
331 z_ns_in = - 0.2 * comb * yy_ns * zz_ns /
pow(rad_ns, 3.)
332 + 0.6 * mass_ns *
omega * xx_ns * yy_ns * zz_ns /
pow(rad_ns, 3.) ;
333 z_ns_in.annule(nzet, nz_ns-1) ;
334 z_ns_in.std_spectral_base() ;
336 z_ns_ex = - 0.5 * comb * st_ns * cp_ns * ct_ns
337 * (1. - 0.6*rad_ns*rad_ns/rr_ns/rr_ns) / rr_ns
338 + 0.6*mass_ns*
omega*rad_ns*rad_ns*st_ns*st_ns*cp_ns*sp_ns*ct_ns
340 z_ns_ex.
annule(0, nzet-1) ;
344 * (z_ns_in + z_ns_ex) ;
Hole_bhns hole
Black hole.
void shift_analytic(double reduce_shift_bh, double reduce_shift_ns)
Sets some analytical template for the initial shift vector.
double omega
Angular velocity with respect to an asymptotically inertial observer.
double separ
Absolute orbital separation between two centers of BH and NS.
Star_bhns star
Neutron star.
const Map & get_mp() const
Returns the mapping.
double get_mass_bh() const
Returns the gravitational mass of BH [{\tt m_unit}].
Vector & set_shift_auto_rs()
Read/write of the shift vector generated by the black hole.
const Vector & get_shift_auto_rs() const
Returns the part of the shift vector from numerical computation.
bool is_irrotational() const
Returns true for an irrotational black hole, false for a corotating one.
Base class for coordinate mappings.
Coord y
y coordinate centered on the grid
Coord r
r coordinate centered on the grid
Coord z
z coordinate centered on the grid
Coord x
x coordinate centered on the grid
Tensor field of valence 0 (or component of a tensorial field).
virtual void std_spectral_base()
Sets the spectral bases of the Valeur va to the standard ones for a scalar field.
double val_grid_point(int l, int k, int j, int i) const
Returns the value of the field at a specified grid point.
virtual void annule(int l_min, int l_max)
Sets the Scalar to zero in several domains.
Vector & set_shift_auto()
Read/write of the shift vector generated by the neutron star.
bool is_irrotational() const
Returns true for an irrotational motion, false for a corotating one.
const Map & get_mp() const
Returns the mapping.
int get_nzet() const
Returns the number of domains occupied by the star.
Tensor field of valence 1.
Cmp pow(const Cmp &, int)
Power .
void annule_domain(int l)
Sets the Tensor to zero in a given domain.
Standard units of space, time and mass.