63#include "utilitaires.h"
81 const Map& mp_bh =
hole.get_mp() ;
82 const Map& mp_ns =
star.get_mp() ;
91 double mass = ggrav *
hole.get_mass_bh() ;
93 if (
hole.is_kerrschild()) {
95 cout <<
"!!!!! WARNING: Not yet available !!!!!" << endl ;
109 if (
hole.has_bc_lapconf_nd()) {
110 if (
hole.has_bc_lapconf_fs()) {
113 cc = 2. * (
sqrt(13.) - 1.) / 3. ;
122 if (
hole.has_bc_lapconf_fs()) {
125 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
131 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
138 r_are =
hole.r_coord(
hole.has_bc_lapconf_nd(),
139 hole.has_bc_lapconf_fs()) ;
144 const Scalar& confo_bh_auto_rs =
hole.get_confo_auto_rs() ;
146 Scalar lldconf_iso = confo_bh_auto_rs.
dsdr() ;
150 anoth = 0.5 *
sqrt(r_are)
151 * (
sqrt(1. -2.*mass/r_are/rr + cc*cc*
pow(mass/r_are/rr,4.))
158 const Scalar& confo_ns_auto =
star.get_confo_auto() ;
167 cout <<
"ADM mass (surface) : " << madm / msol <<
" [Mo]"
185double Bin_bhns::mass_adm_bhns_vol()
const {
201 double radius_ah = mp_bh.val_r(1,-1.,M_PI/2.,0.) ;
206 Scalar source_bh_surf(mp_bh) ;
207 source_bh_surf.set_etat_qcq() ;
209 Scalar source_bh_volm(mp_bh) ;
210 source_bh_volm.set_etat_qcq() ;
212 Scalar source_ns_volm(mp_ns) ;
213 source_ns_volm.set_etat_qcq() ;
217 rr.std_spectral_base() ;
220 st.std_spectral_base() ;
223 ct.std_spectral_base() ;
226 sp.std_spectral_base() ;
229 cp.std_spectral_base() ;
231 Vector ll(mp_bh, CON, mp_bh.get_bvect_cart()) ;
233 ll.set(1) = st % cp ;
234 ll.set(2) = st % sp ;
236 ll.std_spectral_base() ;
243 divshift = shift_auto_rs(1).deriv(1) + shift_auto_rs(2).deriv(2)
244 + shift_auto_rs(3).deriv(3) + dshift_comp(1,1)
245 + dshift_comp(2,2) + dshift_comp(3,3) ;
246 divshift.std_spectral_base() ;
249 llshift = ll(1) % (shift_auto_rs(1) + shift_comp(1))
250 + ll(2) % (shift_auto_rs(2) + shift_comp(2))
251 + ll(3) % (shift_auto_rs(3) + shift_comp(3)) ;
252 llshift.std_spectral_base() ;
254 Scalar llshift_auto(mp_bh) ;
255 llshift_auto = ll(1)%shift_auto_rs(1) + ll(2)%shift_auto_rs(2)
256 + ll(3)%shift_auto_rs(3) ;
257 llshift_auto.std_spectral_base() ;
260 + ll(1) * (ll(1) % dshift_comp(1,1) + ll(2) % dshift_comp(1,2)
261 + ll(3) % dshift_comp(1,3))
262 + ll(2) * (ll(1) % dshift_comp(2,1) + ll(2) % dshift_comp(2,2)
263 + ll(3) % dshift_comp(2,3))
264 + ll(3) * (ll(1) % dshift_comp(3,1) + ll(2) % dshift_comp(3,2)
265 + ll(3) % dshift_comp(3,3)) ;
287 Scalar lldconf = confo_bh_auto.
dsdr() + ll(1)%dconfo_bh_comp(1)
288 + ll(2)%dconfo_bh_comp(2) + ll(3)%dconfo_bh_comp(3) ;
295 cout <<
"!!!!! WARNING: Not yet available !!!!!" << endl ;
422 cc = 2. * (
sqrt(13.) - 1.) / 3. ;
431 if (
hole.has_bc_lapconf_fs()) {
434 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
440 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
446 Scalar r_are(mp_bh) ;
447 r_are =
hole.r_coord(
hole.has_bc_lapconf_nd(),
448 hole.has_bc_lapconf_fs()) ;
449 r_are.std_spectral_base() ;
453 Scalar divshift_zero(divshift) ;
454 divshift_zero.dec_dzpuis(2) ;
456 Scalar lldllsh_zero(lldllsh) ;
457 lldllsh_zero.dec_dzpuis(2) ;
459 source_bh_surf = confo_bh / rr
460 -
pow(confo_bh, 4.) * (divshift_zero - 3.*lldllsh_zero)
462 -
pow(confo_bh, 4.) * mass * mass * cc
463 *
sqrt(1. -2.*mass/r_are/rr + cc*cc*
pow(mass/r_are/rr,4.))
464 / lapconf_bh /
pow(r_are*rr,3.) ;
466 source_bh_surf.std_spectral_base() ;
467 source_bh_surf.annule_domain(0) ;
468 source_bh_surf.raccord(1) ;
470 integ_bh_s = mp_aff.integrale_surface(source_bh_surf, radius_ah) ;
474 Scalar sou_bh1(mp_bh) ;
475 sou_bh1 = 1.5 *
pow(confo_bh,7.) *
pow(mass*mass*cc,2.)
476 * (1. - 2.*mass/r_are/rr + cc*cc*
pow(mass/r_are/rr,4.))
477 / lapconf_bh / lapconf_bh /
pow(r_are*rr,6.) ;
478 sou_bh1.std_spectral_base() ;
481 source_bh_volm = 0.25 * taij_quad_auto_bh /
pow(confo_bh,7.)
482 + 0.25 * taij_quad_comp_bh
483 * (
pow(confo_bh/(confo_bh_comp+0.5),7.)
484 *
pow((lapconf_bh_comp+0.5)/lapconf_bh,2.)
485 - 1.) /
pow(confo_bh_comp+0.5,7.)
488 source_bh_volm.std_spectral_base() ;
489 source_bh_volm.annule_domain(0) ;
491 integ_bh_v = source_bh_volm.
integrale() ;
499 Scalar sou_ns1(mp_ns) ;
500 sou_ns1 =
pow(confo_ns, 5.) * ener_euler ;
502 sou_ns1.inc_dzpuis(4) ;
504 source_ns_volm = 0.25 * taij_quad_auto_ns
505 /
pow(confo_ns_auto+0.5, 7.) / qpig + sou_ns1 ;
507 source_ns_volm.std_spectral_base() ;
509 integ_ns_v = source_ns_volm.integrale() ;
511 cout <<
"integ_bh_s : " << integ_bh_s/ qpig / msol
513 << integ_bh_v/ qpig / msol
514 <<
" integ_ns_v : " << integ_ns_v/ msol << endl ;
519 madm = (integ_bh_s + integ_bh_v) / qpig + integ_ns_v ;
521 cout <<
"ADM mass (volume) : " << madm / msol <<
" [Mo]"
550 const Map& mp_bh =
hole.get_mp() ;
551 const Map& mp_ns =
star.get_mp() ;
560 double mass = ggrav *
hole.get_mass_bh() ;
562 if (
hole.is_kerrschild()) {
564 cout <<
"!!!!! WARNING: Not yet available !!!!!" << endl ;
578 if (
hole.has_bc_lapconf_nd()) {
579 if (
hole.has_bc_lapconf_fs()) {
582 cc = 2. * (
sqrt(13.) - 1.) / 3. ;
591 if (
hole.has_bc_lapconf_fs()) {
594 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
600 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
607 r_are =
hole.r_coord(
hole.has_bc_lapconf_nd(),
608 hole.has_bc_lapconf_fs()) ;
613 const Scalar& lapconf_bh_auto_rs =
hole.get_lapconf_auto_rs() ;
614 const Scalar& confo_bh_auto_rs =
hole.get_confo_auto_rs() ;
617 lldlap_bh = lapconf_bh_auto_rs.
dsdr()
618 - confo_bh_auto_rs.
dsdr() ;
622 anoth =
sqrt(r_are) * (1. - 1.5 *cc*cc*
pow(mass/r_are/rr,4.)
623 -
sqrt(1. - 2.*mass/r_are/rr
624 + cc*cc*
pow(mass/r_are/rr,4.))) / rr ;
630 const Scalar& lapconf_ns_auto =
star.get_lapconf_auto() ;
631 const Scalar& confo_ns_auto =
star.get_confo_auto() ;
634 lldlap_ns = lapconf_ns_auto.
dsdr() - confo_ns_auto.
dsdr() ;
641 cout <<
"Komar mass (surface) : " << mkom / msol <<
" [Mo]"
660double Bin_bhns::mass_kom_bhns_vol()
const {
676 double radius_ah = mp_bh.val_r(1,-1.,M_PI/2.,0.) ;
681 Scalar source_bh_surf(mp_bh) ;
682 source_bh_surf.set_etat_qcq() ;
684 Scalar source_bh_volm(mp_bh) ;
685 source_bh_volm.set_etat_qcq() ;
687 Scalar source_ns_volm(mp_ns) ;
688 source_ns_volm.set_etat_qcq() ;
692 rr.std_spectral_base() ;
695 st.std_spectral_base() ;
698 ct.std_spectral_base() ;
701 sp.std_spectral_base() ;
704 cp.std_spectral_base() ;
706 Vector ll(mp_bh, CON, mp_bh.get_bvect_cart()) ;
708 ll.set(1) = st % cp ;
709 ll.set(2) = st % sp ;
711 ll.std_spectral_base() ;
732 divshift = shift_auto_rs(1).deriv(1) + shift_auto_rs(2).deriv(2)
733 + shift_auto_rs(3).deriv(3) + dshift_comp(1,1)
734 + dshift_comp(2,2) + dshift_comp(3,3) ;
735 divshift.std_spectral_base() ;
737 Scalar llshift_auto(mp_bh) ;
738 llshift_auto = ll(1)%shift_auto_rs(1) + ll(2)%shift_auto_rs(2)
739 + ll(3)%shift_auto_rs(3) ;
740 llshift_auto.std_spectral_base() ;
743 + ll(1) * (ll(1) % dshift_comp(1,1) + ll(2) % dshift_comp(1,2)
744 + ll(3) % dshift_comp(1,3))
745 + ll(2) * (ll(1) % dshift_comp(2,1) + ll(2) % dshift_comp(2,2)
746 + ll(3) % dshift_comp(2,3))
747 + ll(3) * (ll(1) % dshift_comp(3,1) + ll(2) % dshift_comp(3,2)
748 + ll(3) % dshift_comp(3,3)) ;
804 cout <<
"!!!!! WARNING: Not yet available !!!!!" << endl ;
941 cc = 2. * (
sqrt(13.) - 1.) / 3. ;
950 if (
hole.has_bc_lapconf_fs()) {
953 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
959 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
965 Scalar r_are(mp_bh) ;
966 r_are =
hole.r_coord(
hole.has_bc_lapconf_nd(),
967 hole.has_bc_lapconf_fs()) ;
968 r_are.std_spectral_base() ;
970 Scalar lldlapconf_is(mp_bh) ;
971 lldlapconf_is = ll(1)%dlapconf_bh_auto_rs(1)
972 + ll(2)%dlapconf_bh_auto_rs(2) + ll(3)%dlapconf_bh_auto_rs(3)
973 + ll(1)%dlapconf_bh_comp(1) + ll(2)%dlapconf_bh_comp(2)
974 + ll(3)%dlapconf_bh_comp(3) ;
976 lldlapconf_is.std_spectral_base() ;
980 Scalar divshift_zero(divshift) ;
981 divshift_zero.dec_dzpuis(2) ;
983 Scalar lldllsh_zero(lldllsh) ;
984 lldllsh_zero.dec_dzpuis(2) ;
986 Scalar sou_bh_s_psi(mp_bh) ;
987 sou_bh_s_psi = 0.5 * confo_bh / rr
988 -
pow(confo_bh, 4.) * (divshift_zero - 3.*lldllsh_zero)
990 - 0.5 *
pow(confo_bh, 4.) * mass * mass * cc
991 *
sqrt(1. -2.*mass/r_are/rr + cc*cc*
pow(mass/r_are/rr,4.))
992 / lapconf_bh /
pow(r_are*rr,3.) ;
994 sou_bh_s_psi.std_spectral_base() ;
995 sou_bh_s_psi.annule_domain(0) ;
996 sou_bh_s_psi.raccord(1) ;
998 if (
hole.has_bc_lapconf_nd()) {
999 if (
hole.has_bc_lapconf_fs()) {
1001 source_bh_surf = sou_bh_s_psi ;
1003 source_bh_surf.std_spectral_base() ;
1004 source_bh_surf.annule_domain(0) ;
1005 source_bh_surf.raccord(1) ;
1010 Scalar sou_bh_s1(mp_bh) ;
1011 sou_bh_s1 = 0.5 * lapconf_bh / rr ;
1013 sou_bh_s1.annule_domain(0) ;
1014 sou_bh_s1.raccord(1) ;
1016 source_bh_surf = sou_bh_s1 + sou_bh_s_psi ;
1018 source_bh_surf.std_spectral_base() ;
1019 source_bh_surf.annule_domain(0) ;
1020 source_bh_surf.raccord(1) ;
1026 Scalar sou_bh_s1(mp_bh) ;
1027 sou_bh_s1 = lldlapconf_is ;
1028 sou_bh_s1.std_spectral_base() ;
1029 sou_bh_s1.dec_dzpuis(2) ;
1031 Scalar sou_bh_s2(mp_bh) ;
1032 sou_bh_s2 = 0.5 *
sqrt(r_are)
1033 * (1. - 3.*cc*cc*
pow(mass/r_are/rr,4.)
1034 -
sqrt(1. - 2.*mass/r_are/rr
1035 + cc*cc*
pow(mass/r_are/rr,4.))) / rr ;
1037 sou_bh_s2.std_spectral_base() ;
1039 source_bh_surf = sou_bh_s1 + sou_bh_s2 + sou_bh_s_psi ;
1041 source_bh_surf.std_spectral_base() ;
1042 source_bh_surf.annule_domain(0) ;
1047 integ_bh_s = mp_aff.integrale_surface(source_bh_surf, radius_ah) ;
1051 Scalar sou_bh1(mp_bh) ;
1052 sou_bh1 = 0.75 *
pow(mass*mass*cc,2.)
1053 * (1. - 2.*mass/r_are/rr + cc*cc*
pow(mass/r_are/rr,4.))
1054 * (7.*
pow(confo_bh,6.)/lapconf_bh
1055 +
pow(confo_bh,7.)/lapconf_bh/lapconf_bh)
1056 /
pow(r_are*rr,6.) ;
1058 sou_bh1.std_spectral_base() ;
1059 sou_bh1.inc_dzpuis(4) ;
1061 Scalar sou_bh2(mp_bh) ;
1062 sou_bh2 = 0.125 * (7.*lapconf_bh/
pow(confo_bh,8.)
1063 + 1./
pow(confo_bh,7.)) * taij_quad_auto_bh ;
1065 sou_bh2.std_spectral_base() ;
1067 Scalar sou_bh3(mp_bh) ;
1068 sou_bh3 = 0.125 * (7.*((lapconf_bh_comp+0.5)/lapconf_bh
1069 *
pow(confo_bh/(confo_bh_comp+0.5),6.) - 1.)
1070 * (lapconf_bh_comp+0.5)
1071 /
pow(confo_bh_comp+0.5,8.)
1072 + (
pow(confo_bh/(confo_bh_comp+0.5),7.)
1073 *
pow((lapconf_bh_comp+0.5)/lapconf_bh,2.)
1074 - 1.) /
pow(confo_bh_comp+0.5,7))
1075 * taij_quad_comp_bh ;
1077 sou_bh3.std_spectral_base() ;
1079 source_bh_volm = sou_bh1 + sou_bh2 + sou_bh3 ;
1080 source_bh_volm.std_spectral_base() ;
1081 source_bh_volm.annule_domain(0) ;
1083 integ_bh_v = source_bh_volm.integrale() ;
1091 Scalar sou_ns1(mp_ns) ;
1092 sou_ns1 = 0.5 *
pow(confo_ns,4.) * (lapconf_ns + confo_ns)
1093 * ener_euler + lapconf_ns *
pow(confo_ns,4.) * s_euler ;
1095 sou_ns1.inc_dzpuis(4) ;
1097 Scalar sou_ns2(mp_ns) ;
1098 sou_ns2 = 0.125 * (7.*(lapconf_ns_auto+0.5)/(confo_ns_auto+0.5)
1099 + 1.) * taij_quad_auto_ns
1100 /
pow(confo_ns_auto+0.5, 7.) / qpig ;
1101 sou_ns2.std_spectral_base() ;
1103 source_ns_volm = sou_ns1 + sou_ns2 ;
1104 source_ns_volm.std_spectral_base() ;
1106 integ_ns_v = source_ns_volm.integrale() ;
1108 cout <<
"integ_bh_s : " << integ_bh_s/ qpig / msol
1110 << integ_bh_v/ qpig / msol
1111 <<
" integ_ns_v : " << integ_ns_v/ msol << endl ;
1116 mkom = (integ_bh_s + integ_bh_v) / qpig + integ_ns_v ;
1118 cout <<
"Komar mass (volume) : " << mkom / msol <<
" [Mo]"
1147 if (
hole.is_kerrschild()) {
1151 int nz = (
hole.get_mp()).get_mg()->get_nzone() ;
1152 double* bornes =
new double[nz+1] ;
1153 double radius =
separ + 2. ;
1155 for (
int i=nz-1; i>0; i--) {
1156 bornes[i] = radius ;
1160 bornes[nz] = __infinity ;
1162 Map_af mp_aff(*((
hole.get_mp()).get_mg()), bornes) ;
1163 mp_aff.set_ori(0.,0.,0.) ;
1169 Vector shift_bh(mp_aff, CON, mp_aff.get_bvect_cart()) ;
1172 Vector shift_ns(mp_aff, CON, mp_aff.get_bvect_cart()) ;
1183 Vector shift_tot = shift_bh + shift_ns ;
1185 shift_tot.
annule(0, nz-2) ;
1200 Vector lc(mp_aff, CON, mp_aff.get_bvect_cart()) ;
1202 lc.
set(1) = stc * cpc ;
1203 lc.
set(2) = stc * spc ;
1207 Vector kijlj(mp_aff, CON, mp_aff.get_bvect_cart()) ;
1215 xbhsr = (
hole.get_mp()).get_ori_x() / rr ;
1219 ybhsr = (
hole.get_mp()).get_ori_y() / rr ;
1223 rl =
sqrt(1. - 2.*xbhsr*lc(1) - 2.*ybhsr*lc(2)
1224 + xbhsr*xbhsr + ybhsr*ybhsr) ;
1227 Vector ll(mp_aff, CON, mp_aff.get_bvect_cart()) ;
1229 ll.
set(1) = (lc(1) - xbhsr) / rl ;
1230 ll.
set(2) = (lc(2) - ybhsr)/ rl ;
1231 ll.
set(3) = lc(3) / rl ;
1235 lcll = lc(1)*ll(1) + lc(2)*ll(2) + lc(3)*ll(3) ;
1238 Scalar divshift(mp_aff) ;
1239 divshift = shift_tot(1).deriv(1) + shift_tot(2).deriv(2)
1240 + shift_tot(3).deriv(3) ;
1244 llshift = ll(1)*shift_tot(1) + ll(2)*shift_tot(2)
1245 + ll(3)*shift_tot(3) ;
1249 lcshift = lc(1)*shift_tot(1) + lc(2)*shift_tot(2)
1250 + lc(3)*shift_tot(3) ;
1253 Vector lcdshft(mp_aff, CON, mp_aff.get_bvect_cart()) ;
1254 for (
int i=1; i<=3; i++) {
1255 lcdshft.
set(i) = lc(1)*(shift_tot(1).deriv(i))
1256 + lc(2)*(shift_tot(2).deriv(i))
1257 + lc(3)*(shift_tot(3).deriv(i)) ;
1261 Vector dshift(mp_aff, CON, mp_aff.get_bvect_cart()) ;
1262 for (
int i=1; i<=3; i++) {
1263 dshift.
set(i) = shift_tot(i).dsdr() ;
1267 Vector lldshft(mp_aff, CON, mp_aff.get_bvect_cart()) ;
1268 for (
int i=1; i<=3; i++) {
1269 lldshft.
set(i) = ll(1)*(shift_tot(i).deriv(1))
1270 + ll(2)*(shift_tot(i).deriv(2))
1271 + ll(3)*(shift_tot(i).deriv(3)) ;
1275 double mass = ggrav *
hole.get_mass_bh() ;
1278 lap_bh2 = 1./(1.+2.*mass/rl/rr) ;
1282 lap2hbh = lap_bh2 * mass / rl / rr ;
1296 kk = 4.*
sqrt(lap_bh2)*lap2hbh*(1.+3.*mass/rl/rr)/3./rl/rr ;
1306 kij_x1 = omexsr*ll(1)*lc(2) - omeysr*(ll(1)*lc(1)+lcll)
1307 + lcll*shift_tot(1)/rl/rr
1308 + ll(1)*lcshift/rl/rr
1309 + (lc(1)-lap_bh2*(9.+14.*mass/rl/rr)*ll(1)*lcll)
1310 *(llshift/rl/rr + omexsr*ll(2) - omeysr*ll(1))/3. ;
1315 kij_x2 = kk * (lc(1) - 2.*lap2hbh*ll(1)*lcll) ;
1319 kijlj.
set(1) = lcdshft(1) + dshift(1) - 2.*lc(1)*divshift/3.
1320 + 2.*lap2hbh * (-ll(1)*(ll(1)*lcdshft(1) + ll(2)*lcdshft(2)
1323 + 2.*ll(1)*lcll*divshift/3.
1330 kij_y1 = omexsr*(ll(2)*lc(2)+lcll) - omeysr*ll(2)*lc(1)
1331 + lcll*shift_tot(2)/rl/rr
1332 + ll(2)*lcshift/rl/rr
1333 + (lc(2)-lap_bh2*(9.+14.*mass/rl/rr)*ll(2)*lcll)
1334 *(llshift/rl/rr + omexsr*ll(2) - omeysr*ll(1))/3. ;
1336 kij_y1.inc_dzpuis(2) ;
1339 kij_y2 = kk * (lc(2) - 2.*lap2hbh*ll(2)*lcll) ;
1343 kijlj.
set(2) = lcdshft(2) + dshift(2) - 2.*lc(2)*divshift/3.
1344 + 2.*lap2hbh * (-ll(2)*(ll(1)*lcdshft(1) + ll(2)*lcdshft(2)
1347 + 2.*ll(2)*lcll*divshift/3.
1354 kij_z1 = omexsr*ll(3)*lc(2) - omeysr*ll(3)*lc(1)
1355 + lcll*shift_tot(3)/rl/rr
1356 + ll(3)*lcshift/rl/rr
1357 + (lc(3)-lap_bh2*(9.+14.*mass/rl/rr)*ll(3)*lcll)
1358 *(llshift/rl/rr + omexsr*ll(2) - omeysr*ll(1))/3. ;
1360 kij_z1.inc_dzpuis(2) ;
1363 kij_z2 = kk * (lc(3) - 2.*lap2hbh*ll(3)*lcll) ;
1367 kijlj.
set(3) = lcdshft(3) + dshift(3) - 2.*lc(3)*divshift/3.
1368 + 2.*lap2hbh * (-ll(3)*(ll(1)*lcdshft(1) + ll(2)*lcdshft(2)
1371 + 2.*ll(3)*lcll*divshift/3.
1456 const Map& mp_bh =
hole.get_mp() ;
1458 const Map& mp_ns =
star.get_mp() ;
1461 const Scalar& confo_ns =
star.get_confo_tot() ;
1466 double radius_ah = mp_bh.val_r(1,-1.,M_PI/2.,0.) ;
1481 Vector ll(mp_bh, CON, mp_bh.get_bvect_cart()) ;
1483 ll.
set(1) = st % cp ;
1484 ll.
set(2) = st % sp ;
1497 Scalar sou_bh_sx(mp_bh) ;
1498 sou_bh_sx = taij(1,1) * ll(1) + taij(1,2) * ll(2)
1499 + taij(1,3) * ll(3) ;
1515 Scalar sou_ns_vx(mp_ns) ;
1517 sou_ns_vx =
pow(confo_ns, 10.) * (ee + pp) * uu(1) ;
1522 double integ_ns_v_x = sou_ns_vx.
integrale() ;
1535 Scalar sou_bh_sy(mp_bh) ;
1536 sou_bh_sy = taij(2,1) * ll(1) + taij(2,2) * ll(2)
1537 + taij(2,3) * ll(3) ;
1553 Scalar sou_ns_vy(mp_ns) ;
1555 sou_ns_vy =
pow(confo_ns, 10.) * (ee + pp) * uu(2) ;
1560 double integ_ns_v_y = sou_ns_vy.
integrale() ;
1574 Scalar sou_bh_sz(mp_bh) ;
1575 sou_bh_sz = taij(3,1) * ll(1) + taij(3,2) * ll(2)
1576 + taij(3,3) * ll(3) ;
1592 Scalar sou_ns_vz(mp_ns) ;
1594 sou_ns_vz =
pow(confo_ns, 10.) * (ee + pp) * uu(3) ;
1599 double integ_ns_v_z = sou_ns_vz.
integrale() ;
1627 double integ_bh_s_x ;
1628 double integ_bh_s_y ;
1629 double integ_bh_s_z ;
1630 double integ_bh_v_x ;
1631 double integ_bh_v_y ;
1632 double integ_bh_v_z ;
1633 double integ_ns_v_x ;
1634 double integ_ns_v_y ;
1635 double integ_ns_v_z ;
1637 const Map& mp_bh =
hole.get_mp() ;
1638 const Map& mp_ns =
star.get_mp() ;
1640 double radius_ah = mp_bh.val_r(1,-1.,M_PI/2.,0.) ;
1643 Scalar source_bh_surf(mp_bh) ;
1646 Scalar source_bh_volm(mp_bh) ;
1649 Scalar source_ns_volm(mp_ns) ;
1669 Vector ll(mp_bh, CON, mp_bh.get_bvect_cart()) ;
1671 ll.
set(1) = st % cp ;
1672 ll.
set(2) = st % sp ;
1696 const Scalar& confo_bh =
hole.get_confo_tot() ;
1698 const Scalar& confo_ns =
star.get_confo_tot() ;
1703 Vector jbh_x(mp_bh, CON, mp_bh.get_bvect_cart()) ;
1705 for (
int i=1; i<=3; i++)
1706 jbh_x.
set(i) = yy_bh * taij(3,i) - zz_bh * taij(2,i) ;
1710 Vector jbh_y(mp_bh, CON, mp_bh.get_bvect_cart()) ;
1712 for (
int i=1; i<=3; i++)
1713 jbh_y.
set(i) = zz_bh * taij(1,i) - xx_bh * taij(3,i) ;
1717 Vector jbh_z(mp_bh, CON, mp_bh.get_bvect_cart()) ;
1719 for (
int i=1; i<=3; i++)
1720 jbh_z.
set(i) = xx_bh * taij(2,i) - yy_bh * taij(1,i) ;
1724 double mass = ggrav *
hole.get_mass_bh() ;
1726 if (
hole.is_kerrschild()) {
1728 double ori_bh = mp_bh.get_ori_x() ;
1731 lap_bh2 = 1./(1.+2.*mass/rr) ;
1735 lcnf =
log(confo_bh) ;
1738 Vector jbhsr_x(mp_bh, CON, mp_bh.get_bvect_cart()) ;
1740 for (
int i=1; i<=3; i++)
1741 jbhsr_x.
set(i) = ll(2)*taij(3,i) - ll(3)*taij(2,i) ;
1745 Vector jbhsr_y(mp_bh, CON, mp_bh.get_bvect_cart()) ;
1747 for (
int i=1; i<=3; i++)
1748 jbhsr_y.
set(i) = ll(3)*taij(1,i) - (ll(1)+ori_bh/rr)*taij(3,i) ;
1752 Vector jbhsr_z(mp_bh, CON, mp_bh.get_bvect_cart()) ;
1754 for (
int i=1; i<=3; i++)
1755 jbhsr_z.
set(i) = (ll(1)+ori_bh/rr)*taij(2,i) - ll(2)*taij(1,i) ;
1760 tmp1 = 2. *
pow(lap_bh2,2.5) * mass * (1.+3.*mass/rr)
1761 *
pow(confo_bh,6.) * ori_bh / 3. / rr / rr ;
1766 tmp2 = 4. *
sqrt(lap_bh2) * (1.+3.*mass/rr) *
pow(confo_bh,6.) ;
1771 lltaij = ll(1)*(ll(1)*taij(1,1)+ll(2)*taij(1,2)+ll(3)*taij(1,3))
1772 + ll(2)*(ll(1)*taij(2,1)+ll(2)*taij(2,2)+ll(3)*taij(2,3))
1773 + ll(3)*(ll(1)*taij(3,1)+ll(2)*taij(3,2)+ll(3)*taij(3,3)) ;
1778 dlcnf = - 2. * lap_bh2 * tmp2 * mass * lcnf.
dsdr() / rr ;
1784 tmp3 = -2.*
pow(lap_bh2,2.5)
1785 *(6.+32.*mass/rr+41.*mass*mass/rr/rr+24.*
pow(mass,3.)/
pow(rr,3.))
1786 *
pow(confo_bh,6.)/3./rr
1787 + 3.* lltaij + dlcnf ;
1792 tmp4 = lap_bh2 * mass / rr ;
1805 source_bh_surf = jbh_x(1)*ll(1) + jbh_x(2)*ll(2) + jbh_x(3)*ll(3) ;
1816 source_bh_volm = tmp4
1817 * ( jbhsr_x(1)*ll(1) + jbhsr_x(2)*ll(2) + jbhsr_x(3)*ll(3)
1818 + tmp2 * ( ll(2)*lcnf.
dsdz() - ll(3)*lcnf.
dsdy() ) ) ;
1824 integ_bh_v_x = source_bh_volm.
integrale() ;
1832 source_ns_volm =
pow(confo_ns, 10.) * (ee + pp)
1833 * (yy_ns*uu(3) - zz_ns*uu(2)) ;
1838 integ_ns_v_x = source_ns_volm.
integrale() ;
1841 + 0.5 * (integ_bh_s_x + integ_bh_v_x) / qpig ;
1854 jbh_y_ll = jbh_y(1)*ll(1) + jbh_y(2)*ll(2) + jbh_y(3)*ll(3) ;
1855 jbh_y_ll.std_spectral_base() ;
1856 jbh_y_ll.dec_dzpuis(2) ;
1858 source_bh_surf = jbh_y_ll - tmp1 * ll(3) ;
1868 tmp3_llz = tmp3 * ll(3) * ori_bh / rr ;
1872 source_bh_volm = tmp4
1873 * ( jbhsr_y(1)*ll(1) + jbhsr_y(2)*ll(2) + jbhsr_y(3)*ll(3)
1874 + tmp2 * ( ll(3)*lcnf.
dsdx() - (ll(1)+ori_bh/rr)*lcnf.
dsdz() )
1881 integ_bh_v_y = source_bh_volm.
integrale() ;
1889 source_ns_volm =
pow(confo_ns, 10.) * (ee + pp)
1890 * (zz_ns*uu(1) - xx_ns*uu(3)) ;
1895 integ_ns_v_y = source_ns_volm.
integrale() ;
1898 + 0.5 * (integ_bh_s_y + integ_bh_v_y) / qpig ;
1911 jbh_z_ll = jbh_z(1)*ll(1) + jbh_z(2)*ll(2) + jbh_z(3)*ll(3) ;
1912 jbh_z_ll.std_spectral_base() ;
1913 jbh_z_ll.dec_dzpuis(2) ;
1914 source_bh_surf = jbh_z_ll + tmp1 * ll(2) ;
1925 tmp3_lly = tmp3 * ll(2) * ori_bh / rr ;
1929 source_bh_volm = tmp4
1930 * ( jbhsr_z(1)*ll(1) + jbhsr_z(2)*ll(2) + jbhsr_z(3)*ll(3)
1931 + tmp2 * ( (ll(1)+ori_bh/rr)*lcnf.
dsdy() - ll(2)*lcnf.
dsdx() )
1938 integ_bh_v_z = source_bh_volm.
integrale() ;
1946 source_ns_volm =
pow(confo_ns, 10.) * (ee + pp)
1947 * (xx_ns*uu(2) - yy_ns*uu(1)) ;
1952 integ_ns_v_z = source_ns_volm.
integrale() ;
1955 + 0.5 * (integ_bh_s_z + integ_bh_v_z) / qpig ;
1964 if (
hole.has_bc_lapconf_nd()) {
1965 if (
hole.has_bc_lapconf_fs()) {
1968 cc = 2. * (
sqrt(13.) - 1.) / 3. ;
1977 if (
hole.has_bc_lapconf_fs()) {
1980 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
1986 cout <<
"!!!!! WARNING: Not yet prepared !!!!!" << endl ;
1993 r_are =
hole.r_coord(
hole.has_bc_lapconf_nd(),
1994 hole.has_bc_lapconf_fs()) ;
1997 const Scalar& lapconf_bh =
hole.get_lapconf_tot() ;
1998 const Scalar& confo_bh =
hole.get_confo_tot() ;
2001 Vector jbh_rs_x(mp_bh, CON, mp_bh.get_bvect_cart()) ;
2003 for (
int i=1; i<=3; i++)
2004 jbh_rs_x.
set(i) = yy_bh * taij_rs(3,i) - zz_bh * taij_rs(2,i) ;
2008 Vector jbh_rs_y(mp_bh, CON, mp_bh.get_bvect_cart()) ;
2010 for (
int i=1; i<=3; i++)
2011 jbh_rs_y.
set(i) = zz_bh * taij_rs(1,i) - xx_bh * taij_rs(3,i) ;
2015 Vector jbh_rs_z(mp_bh, CON, mp_bh.get_bvect_cart()) ;
2017 for (
int i=1; i<=3; i++)
2018 jbh_rs_z.
set(i) = xx_bh * taij_rs(2,i) - yy_bh * taij_rs(1,i) ;
2023 tmp = - 2. * mass * mass * cc *
pow(confo_bh,7.)
2024 *
sqrt(1. - 2.*mass/r_are/rr + cc*cc*
pow(mass/r_are/rr,4.))
2025 / lapconf_bh /
pow(r_are*rr,3.) ;
2038 Scalar sou_bh_sx1(mp_bh) ;
2039 sou_bh_sx1 = jbh_rs_x(1)%ll(1) + jbh_rs_x(2)%ll(2)
2040 + jbh_rs_x(3)%ll(3) ;
2044 Scalar sou_bh_sx2(mp_bh) ;
2045 sou_bh_sx2 = tmp * (yy_bh % ll(3) - zz_bh % ll(2)) ;
2048 source_bh_surf = sou_bh_sx1 + sou_bh_sx2 ;
2062 source_ns_volm =
pow(confo_ns, 10.) * (ee + pp)
2063 * (yy_ns*uu(3) - zz_ns*uu(2)) ;
2068 integ_ns_v_x = source_ns_volm.
integrale() ;
2083 Scalar sou_bh_sy1(mp_bh) ;
2084 sou_bh_sy1 = jbh_rs_y(1)%ll(1) + jbh_rs_y(2)%ll(2)
2085 + jbh_rs_y(3)%ll(3) ;
2089 Scalar sou_bh_sy2(mp_bh) ;
2090 sou_bh_sy2 = tmp * (zz_bh % ll(1) - xx_bh % ll(3)) ;
2093 source_bh_surf = sou_bh_sy1 + sou_bh_sy2 ;
2107 source_ns_volm =
pow(confo_ns, 10.) * (ee + pp)
2108 * (zz_ns*uu(1) - xx_ns*uu(3)) ;
2113 integ_ns_v_y = source_ns_volm.
integrale() ;
2128 Scalar sou_bh_sz1(mp_bh) ;
2129 sou_bh_sz1 = jbh_rs_z(1)%ll(1) + jbh_rs_z(2)%ll(2)
2130 + jbh_rs_z(3)%ll(3) ;
2134 Scalar sou_bh_sz2(mp_bh) ;
2135 sou_bh_sz2 = tmp * (xx_bh % ll(2) - yy_bh % ll(1)) ;
2138 source_bh_surf = sou_bh_sz1 + sou_bh_sz2 ;
2152 source_ns_volm =
pow(confo_ns, 10.) * (ee + pp)
2153 * (xx_ns*uu(2) - yy_ns*uu(1)) ;
2158 integ_ns_v_z = source_ns_volm.
integrale() ;
2194 double virial = 1. - mass_kom_bhns_vol() / mass_adm_bhns_vol() ;
2214 double mass_b =
star.mass_b_bhns(
hole.is_kerrschild(),
2217 const Map& mp =
star.get_mp() ;
2224 if (
hole.is_kerrschild()) {
2236 double yns = (
star.get_mp()).get_ori_y() ;
2239 rbh =
sqrt( (xx+
separ)*(xx+
separ) + (yy+yns)*(yy+yns) + zz*zz ) ;
2242 double mass = ggrav *
hole.get_mass_bh() ;
2244 tmp =
sqrt( 1.+2.*mass/rbh ) ;
2264 Scalar dens =
pow(confo, 6.) * g_euler * nbary * tmp * xxa ;
2269 double xa_bary = dens.
integrale() / mass_b ;
2290 double mass_b =
star.mass_b_bhns(
hole.is_kerrschild(),
2293 const Map& mp =
star.get_mp() ;
2300 if (
hole.is_kerrschild()) {
2312 double yns = (
star.get_mp()).get_ori_y() ;
2315 rbh =
sqrt( (xx+
separ)*(xx+
separ) + (yy+yns)*(yy+yns) + zz*zz ) ;
2318 double mass = ggrav *
hole.get_mass_bh() ;
2320 tmp =
sqrt( 1.+2.*mass/rbh ) ;
2340 Scalar dens =
pow(confo, 6.) * g_euler * nbary * tmp * yya ;
2345 double ya_bary = dens.
integrale() / mass_b ;
double * p_mass_adm_bhns_surf
Total ADM mass of the system calculated by the surface integral at infinity.
double y_rot
Absolute Y coordinate of the rotation axis.
double * p_mass_kom_bhns_surf
Total Komar mass of the system calculated by the surface integral at infinity.
Hole_bhns hole
Black hole.
double mass_kom_bhns_surf() const
Total Komar mass.
double ya_barycenter() const
Absolute coordinate Y of the barycenter of the baryon density.
double omega
Angular velocity with respect to an asymptotically inertial observer.
double * p_mass_adm_bhns_vol
Total ADM mass of the system calculated by the volume integral and the surface integral at the appare...
double * p_virial_bhns_vol
Virial theorem error calculated by the ADM mass and the Komar mass of the volume integral.
const Tbl & line_mom_bhns() const
Total linear momentum.
double xa_barycenter() const
Absolute coordinate X of the barycenter of the baryon density.
double separ
Absolute orbital separation between two centers of BH and NS.
Tbl * p_angu_mom_bhns
Total angular momentum of the system.
double virial_bhns_surf() const
Estimates the relative error on the virial theorem $|1 - M_{\rm Komar} / M_{\rm ADM}...
const Tbl & angu_mom_bhns() const
Total angular momentum.
double virial_bhns_vol() const
Estimates the relative error on the virial theorem $|1 - M_{\rm Komar} / M_{\rm ADM}...
double * p_ya_barycenter
Absolute coordinate Y of the barycenter of the baryon density.
double x_rot
Absolute X coordinate of the rotation axis.
double * p_virial_bhns_surf
Virial theorem error calculated by the ADM mass and the Komar mass of the surface integral at infinit...
double * p_mass_kom_bhns_vol
Total Komar mass of the system calculated by the volume integral and the surface integral at the appa...
Star_bhns star
Neutron star.
double * p_xa_barycenter
Absolute coordinate X of the barycenter of the baryon density.
Tbl * p_line_mom_bhns
Total linear momentum of the system.
double mass_adm_bhns_surf() const
Total ADM mass.
bool is_kerrschild() const
Returns true for a Kerr-Schild background, false for a Conformally flat one.
const Map & get_mp() const
Returns the mapping.
double get_mass_bh() const
Returns the gravitational mass of BH [{\tt m_unit}].
double integrale() const
Computes the integral over all space of *this .
void raccord(int n)
Performs the matching of the nucleus with respect to the first shell.
void inc_dzpuis()
Increases by the value of dzpuis and changes accordingly the values of the Cmp in the external compac...
bool has_bc_lapconf_nd() const
Returns true for the Neumann type BC for the lapconf function, false for the Dirichlet type BH.
const Scalar & get_taij_quad_tot_rot() const
Returns the part of rot.
const Vector & get_d_confo_auto_rs() const
Returns the derivative of the conformal factor generated by the black hole.
const Scalar & get_taij_quad_comp() const
Returns the part of rs generated by the companion star.
const Vector & get_d_lapconf_auto_rs() const
Returns the derivative of the lapconf function generated by the black hole.
const Scalar & get_lapconf_comp() const
Returns the part of the lapconf function generated by the companion star.
const Tensor & get_d_shift_comp() const
Returns the derivative of the shift vector generated by the companion star.
const Scalar & get_confo_auto_rs() const
Returns the part of the conformal factor from numerical computation.
const Scalar & get_lapconf_auto_rs() const
Returns the part of the lapconf function from numerical computation.
const Scalar & get_taij_quad_tot_rs() const
Returns the part of rs.
const Vector & get_shift_auto_rs() const
Returns the part of the shift vector from numerical computation.
const Vector & get_d_lapconf_comp() const
Returns the derivative of the lapconf function generated by the companion star.
bool has_bc_lapconf_fs() const
Returns true for the first type BC for the lapconf function, false for the second type BH.
const Scalar & get_confo_auto() const
Returns the part of the conformal factor generated by the black hole.
const Scalar & get_confo_tot() const
Returns the total conformal factor.
const Scalar & get_confo_comp() const
Returns the part of the conformal factor generated by the companion star.
const Scalar & get_taij_quad_auto() const
Returns the part of rs generated by the black hole.
const Vector & get_shift_comp() const
Returns the part of the shift vector generated by the companion star.
const Scalar & get_lapconf_tot() const
Returns the total lapconf function.
const Vector & get_d_confo_comp() const
Returns the derivative of the conformal factor generated by the companion star.
double integrale_surface_infini(const Cmp &ci) const
Performs the surface integration of ci at infinity.
double integrale_surface(const Cmp &ci, double rayon) const
Performs the surface integration of ci on the sphere of radius rayon .
Tensor field of valence 0 (or component of a tensorial field).
void raccord(int n)
Performs the matching of the nucleus with respect to the first shell.
const Scalar & dsdz() const
Returns of *this , where .
int get_dzpuis() const
Returns dzpuis.
const Scalar & dsdy() const
Returns of *this , where .
virtual void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
double integrale() const
Computes the integral over all space of *this .
virtual void std_spectral_base()
Sets the spectral bases of the Valeur va to the standard ones for a scalar field.
virtual void inc_dzpuis(int inc=1)
Increases by inc units the value of dzpuis and changes accordingly the values of the Scalar in the co...
const Scalar & dsdx() const
Returns of *this , where .
const Scalar & dsdr() const
Returns of *this .
virtual void dec_dzpuis(int dec=1)
Decreases by dec units the value of dzpuis and changes accordingly the values of the Scalar in the co...
void import(const Scalar &ci)
Assignment to another Scalar defined on a different mapping.
const Scalar & get_lapconf_tot() const
Returns the total lapconf function.
const Vector & get_d_lapconf_auto() const
Returns the derivative of the lapse function generated by the star.
const Scalar & get_confo_tot() const
Returns the total conformal factor.
const Scalar & get_confo_auto() const
Returns the part of the conformal factor generated by the star.
const Vector & get_d_confo_comp() const
Returns the derivative of the conformal factor generated by the companion black hole.
const Scalar & get_lapconf_auto() const
Returns the part of the lapconf function generated by the star.
const Scalar & get_taij_quad_auto() const
Returns the part of the scalar generated by .
const Vector & get_d_confo_auto() const
Returns the derivative of the conformal factor generated by the star.
const Map & get_mp() const
Returns the mapping.
const Scalar & get_ener_euler() const
Returns the total energy density with respect to the Eulerian observer.
const Scalar & get_s_euler() const
Returns the trace of the stress tensor in the Eulerian frame.
Class intended to describe valence-2 symmetric tensors.
Tensor field of valence 1.
virtual void std_spectral_base()
Sets the standard spectal bases of decomposition for each component.
Scalar & set(int)
Read/write access to a component.
Cmp sqrt(const Cmp &)
Square root.
Cmp pow(const Cmp &, int)
Power .
Cmp log(const Cmp &)
Neperian logarithm.
virtual void annule(int l_min, int l_max)
Sets the Tensor to zero in several domains.
void annule_domain(int l)
Sets the Tensor to zero in a given domain.
virtual void set_etat_qcq()
Sets the logical state of all components to ETATQCQ (ordinary state).
double get_ori_y() const
Returns the y coordinate of the origin.
Map(const Mg3d &)
Constructor from a multi-domain 3D grid.
double get_ori_x() const
Returns the x coordinate of the origin.
Standard units of space, time and mass.