124 int nz_bh =
hole.mp.get_mg()->get_nzone() ;
125 int nz_ns =
star.mp.get_mg()->get_nzone() ;
128 double distance =
star.mp.get_ori_x()-
hole.mp.get_ori_x() ;
129 double lim_ns = distance/2. ;
130 double lim_bh = distance/2. ;
131 double int_ns = lim_ns/3. ;
132 double int_bh = lim_bh/3. ;
148 double xabs, yabs, zabs, air_ns, air_bh, theta,
phi ;
151 for (
int l=0 ; l<nz_ns ; l++) {
152 int nr =
star.mp.get_mg()->get_nr (l) ;
157 int np =
star.mp.get_mg()->get_np (l) ;
158 int nt =
star.mp.get_mg()->get_nt (l) ;
160 for (
int k=0 ; k<np ; k++)
161 for (
int j=0 ; j<nt ; j++)
162 for (
int i=0 ; i<nr ; i++) {
164 xabs = xabs_ns (l, k, j, i) ;
165 yabs = yabs_ns (l, k, j, i) ;
166 zabs = zabs_ns (l, k, j, i) ;
169 star.mp.convert_absolute
170 (xabs, yabs, zabs, air_ns, theta,
phi) ;
171 hole.mp.convert_absolute
172 (xabs, yabs, zabs, air_bh, theta,
phi) ;
174 if (air_ns <= lim_ns)
176 decouple_ns.
set(l, k, j, i) = 1 ;
178 decouple_ns.
set(l, k, j, i) =
179 0.5*
pow(
cos((air_ns-int_ns)*M_PI/2./(lim_ns-int_ns)), 2.)+0.5
182 if (air_bh <= lim_bh)
184 decouple_ns.
set(l, k, j, i) = 0 ;
186 decouple_ns.
set(l, k, j, i) = 0.5*
187 pow(
sin((air_bh-int_bh)*M_PI/2./(lim_bh-int_bh)), 2.)
191 decouple_ns.
set(l, k, j, i) = 0.5 ;
196 for (
int k=0 ; k<np ; k++)
197 for (
int j=0 ; j<nt ; j++)
198 decouple_ns.
set(nz_ns-1, k, j, nr) = 0.5 ;
201 for (
int l=0 ; l<nz_bh ; l++) {
202 int nr =
hole.mp.get_mg()->get_nr (l) ;
207 int np =
hole.mp.get_mg()->get_np (l) ;
208 int nt =
hole.mp.get_mg()->get_nt (l) ;
210 for (
int k=0 ; k<np ; k++)
211 for (
int j=0 ; j<nt ; j++)
212 for (
int i=0 ; i<nr ; i++) {
214 xabs = xabs_bh (l, k, j, i) ;
215 yabs = yabs_bh (l, k, j, i) ;
216 zabs = zabs_bh (l, k, j, i) ;
219 star.mp.convert_absolute
220 (xabs, yabs, zabs, air_ns, theta,
phi) ;
221 hole.mp.convert_absolute
222 (xabs, yabs, zabs, air_bh, theta,
phi) ;
224 if (air_bh <= lim_bh)
226 decouple_bh.
set(l, k, j, i) = 1 ;
228 decouple_bh.
set(l, k, j, i) = 0.5*
229 pow(
cos((air_bh-int_bh)*M_PI/2./(lim_bh-int_bh)), 2.)+0.5 ;
231 if (air_ns <= lim_ns)
233 decouple_bh.
set(l, k, j, i) = 0 ;
235 decouple_bh.
set(l, k, j, i) = 0.5*
236 pow(
sin((air_ns-int_ns)*M_PI/2./(lim_ns-int_ns)), 2.) ;
240 decouple_bh.
set(l, k, j, i) = 0.5 ;
245 for (
int k=0 ; k<np ; k++)
246 for (
int j=0 ; j<nt ; j++)
247 decouple_bh.
set(nz_bh-1, k, j, nr) = 0.5 ;
253 star.decouple = decouple_ns ;
254 hole.decouple = decouple_bh ;
264 double norme_hole = 0 ;
265 double norme_star = 0 ;
267 for (
int i=0 ; i<3 ; i++) {
273 bool zero_shift_hole = (norme_hole <1e-14) ?
true : false ;
275 bool zero_shift_star = (norme_star <1e-14) ?
true : false ;
277 assert (zero_shift_hole == zero_shift_star) ;
279 if (zero_shift_star ==
true) {
280 hole.tkij_tot.set_etat_zero() ;
281 hole.tkij_auto.set_etat_zero() ;
283 hole.taij_tot.set_etat_zero() ;
284 hole.taij_auto.set_etat_zero() ;
285 hole.taij_comp.set_etat_zero() ;
287 star.tkij_auto.set_etat_zero() ;
288 star.tkij_comp.set_etat_zero() ;
289 star.akcar_comp.set_etat_zero() ;
290 star.akcar_auto.set_etat_zero() ;
295 int nnt =
hole.mp.get_mg()->get_nt(1) ;
296 int nnp =
hole.mp.get_mg()->get_np(1) ;
298 for (
int k=0; k<nnp; k++)
299 for (
int j=0; j<nnt; j++){
300 if (fabs((
hole.n_auto+
hole.n_comp)()(1, k, j , 0)) < 1e-2){
308 if (bound_nn != 0 || lim_nn != 0){
310 hole.fait_taij_auto () ;
311 star.fait_taij_auto() ;
314 hole.taij_comp.set_etat_qcq() ;
325 if (
hole.taij_auto.get_etat() == ETATZERO)
328 ns_taij_comp.
set(0, 0).
import(copie_bh(0, 0)) ;
329 ns_taij_comp.
set(0, 1).
import(copie_bh(0, 1)) ;
330 ns_taij_comp.
set(0, 2).
import(copie_bh(0, 2)) ;
331 ns_taij_comp.
set(1, 1).
import(copie_bh(1, 1)) ;
332 ns_taij_comp.
set(1, 2).
import(copie_bh(1, 2)) ;
333 ns_taij_comp.
set(2, 2).
import(copie_bh(2, 2)) ;
338 if (
star.taij_auto.get_etat() == ETATZERO)
339 hole.taij_comp.set_etat_zero() ;
341 hole.taij_comp.set(0, 0).import(copie_ns(0, 0)) ;
342 hole.taij_comp.set(0, 1).import(copie_ns(0, 1)) ;
343 hole.taij_comp.set(0, 2).import(copie_ns(0, 2)) ;
344 hole.taij_comp.set(1, 1).import(copie_ns(1, 1)) ;
345 hole.taij_comp.set(1, 2).import(copie_ns(1, 2)) ;
346 hole.taij_comp.set(2, 2).import(copie_ns(2, 2)) ;
348 hole.taij_comp.change_triad (
hole.mp.get_bvect_cart()) ;
351 hole.taij_comp.set_std_base() ;
353 hole.taij_comp.inc2_dzpuis() ;
359 star.taij_tot = ns_taij_tot ;
362 star.tkij_tot.set_etat_qcq() ;
363 star.tkij_auto.set_etat_qcq() ;
364 star.tkij_comp.set_etat_qcq() ;
365 hole.tkij_tot.set_etat_qcq() ;
366 hole.tkij_auto.set_etat_qcq() ;
368 for (
int i = 0 ; i<3 ; i++)
369 for (
int j = i ; j<3 ; j++) {
370 star.tkij_tot.set(i,j) = 0.5*
star.taij_tot(i,j)/
star.nnn() ;
373 hole.tkij_tot.set(i,j) = 0.5*
hole.taij_tot(i,j)/
hole.n_tot() ;
377 for (
int lig=0 ; lig<3 ; lig++)
378 for (
int col=lig ; col<3 ; col++) {
379 star.tkij_auto.set(lig, col) =
star.tkij_tot(lig, col)*
381 star.tkij_comp.set(lig, col) =
star.tkij_tot(lig, col)*
383 hole.tkij_auto.set(lig, col) =
hole.tkij_tot(lig, col)*
386 star.tkij_auto.set_std_base() ;
387 star.tkij_comp.set_std_base() ;
388 hole.tkij_auto.set_std_base() ;
392 hole.tkij_tot.set_etat_qcq() ;
393 star.tkij_tot.set_etat_qcq() ;
397 hole.fait_taij_auto () ;
398 star.fait_taij_auto() ;
401 hole.taij_comp.set_etat_qcq() ;
412 if (
hole.taij_auto.get_etat() == ETATZERO)
425 if (
star.taij_auto.get_etat() == ETATZERO)
426 hole.taij_comp.set_etat_zero() ;
428 hole.taij_comp.set(0, 0).import_asymy(copie_ns(0, 0)) ;
429 hole.taij_comp.set(0, 1).import_symy(copie_ns(0, 1)) ;
430 hole.taij_comp.set(0, 2).import_asymy(copie_ns(0, 2)) ;
431 hole.taij_comp.set(1, 1).import_asymy(copie_ns(1, 1)) ;
432 hole.taij_comp.set(1, 2).import_symy(copie_ns(1, 2)) ;
433 hole.taij_comp.set(2, 2).import_asymy(copie_ns(2, 2)) ;
435 hole.taij_comp.change_triad (
hole.mp.get_bvect_cart()) ;
438 hole.taij_comp.set_std_base() ;
440 hole.taij_comp.inc2_dzpuis() ;
446 star.taij_tot = ns_taij_tot ;
448 int nz_ns =
star.mp.get_mg()->get_nzone() ;
449 Cmp ntot_ns (
star.get_nnn()()) ;
453 ntot_bh = division_xpun (ntot_bh, 0) ;
459 for (
int lig = 0 ; lig<3 ; lig++)
460 for (
int col = lig ; col<3 ; col++) {
463 Cmp auxi_bh (
hole.taij_tot(lig, col)/2.) ;
465 auxi_bh = division_xpun (auxi_bh, 0) ;
468 auxi_bh = auxi_bh / ntot_bh ;
476 Cmp copie_ns_bis (ns_taij_tot(lig, col)) ;
480 double lim_bh =
hole.mp.get_alpha()[1] +
hole.mp.get_beta()[1] ;
486 double xabs, yabs, zabs, air, theta,
phi ;
489 for (
int l=0 ; l<nz_ns ; l++) {
491 int nr =
star.mp.get_mg()->get_nr (l) ;
496 int np =
star.mp.get_mg()->get_np (l) ;
497 int nt =
star.mp.get_mg()->get_nt (l) ;
499 for (
int k=0 ; k<np ; k++)
500 for (
int j=0 ; j<nt ; j++)
501 for (
int i=0 ; i<nr ; i++) {
503 xabs = xabs_ns (l, k, j, i) ;
504 yabs = yabs_ns (l, k, j, i) ;
505 zabs = zabs_ns (l, k, j, i) ;
508 hole.mp.convert_absolute
509 (xabs, yabs, zabs, air, theta,
phi) ;
513 auxi_ns.
set(l, k, j, i) =
514 copie_ns_bis(l, k, j, i) / ntot_ns (l, k, j, i)/2. ;
522 for (
int k=0 ; k<np ; k++)
523 for (
int j=0 ; j<nt ; j++)
524 auxi_ns.
set(nz_ns-1, k, j, nr) = 0 ;
528 star.tkij_tot.set(lig, col) = auxi_ns ;
529 hole.tkij_tot.set(lig, col) = auxi_bh ;
532 star.tkij_tot.set_std_base() ;
533 hole.tkij_tot.set_std_base() ;
534 star.tkij_tot.inc2_dzpuis() ;
536 hole.tkij_tot.inc2_dzpuis() ;
543 star.tkij_auto.set_etat_qcq() ;
544 star.tkij_comp.set_etat_qcq() ;
545 hole.tkij_auto.set_etat_qcq() ;
547 for (
int lig=0 ; lig<3 ; lig++)
548 for (
int col=lig ; col<3 ; col++) {
549 star.tkij_auto.set(lig, col) =
star.tkij_tot(lig, col)*
551 star.tkij_comp.set(lig, col) =
star.tkij_tot(lig, col)*
553 hole.tkij_auto.set(lig, col) =
hole.tkij_tot(lig, col)*
556 star.tkij_auto.set_std_base() ;
557 star.tkij_comp.set_std_base() ;
558 hole.tkij_auto.set_std_base() ;
563 star.akcar_auto.set_etat_qcq() ;
564 star.akcar_auto.set() = 0 ;
566 for (
int i=0; i<3; i++)
567 for (
int j=0; j<3; j++)
568 star.akcar_auto.set() +=
star.tkij_auto(i, j) %
star.tkij_auto(i, j) ;
570 star.akcar_auto.set_std_base() ;
573 star.akcar_comp.set_etat_qcq() ;
574 star.akcar_comp.set() = 0 ;
576 for (
int i=0; i<3; i++)
577 for (
int j=0; j<3; j++)
578 star.akcar_comp.set() +=
star.tkij_auto(i, j) %
star.tkij_comp(i, j) ;
580 star.akcar_comp.set_std_base() ;