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) ;
void annule_domain(int l)
Sets the Tensor to zero in a given domain.
double get_mass_bh() const
Returns the gravitational mass of BH [{ m_unit}].
Hole_bhns hole
Black hole.
virtual void annule(int l_min, int l_max)
Sets the Scalar to zero in several domains.
Standard units of space, time and mass.
Tensor field of valence 0 (or component of a tensorial field).
Base class for coordinate mappings.
Vector & set_shift_auto_rs()
Read/write of the shift vector generated by the black hole.
virtual void std_spectral_base()
Sets the spectral bases of the Valeur va to the standard ones for a scalar field. ...
const Map & get_mp() const
Returns the mapping.
void shift_analytic(double reduce_shift_bh, double reduce_shift_ns)
Sets some analytical template for the initial shift vector.
Tensor field of valence 1.
double separ
Absolute orbital separation between two centers of BH and NS.
double val_grid_point(int l, int k, int j, int i) const
Returns the value of the field at a specified grid point.
double omega
Angular velocity with respect to an asymptotically inertial observer.
const Vector & get_shift_auto_rs() const
Returns the part of the shift vector from numerical computation.
Star_bhns star
Neutron star.
bool is_irrotational() const
Returns true for an irrotational black hole, false for a corotating one.
const Map & get_mp() const
Returns the mapping.
Vector & set_shift_auto()
Read/write of the shift vector generated by the neutron star.
Cmp pow(const Cmp &, int)
Power .
int get_nzet() const
Returns the number of domains occupied by the star.
Coord y
y coordinate centered on the grid
Coord x
x coordinate centered on the grid
bool is_irrotational() const
Returns true for an irrotational motion, false for a corotating one.
Coord z
z coordinate centered on the grid
Coord r
r coordinate centered on the grid