LORENE
star_bin_xcts.C
1 /*
2 * Methods for the class Star_bin_xcts
3 * (see file star.h for documentation)
4 */
5
6/*
7 * Copyright (c) 2010 Michal Bejger
8 *
9 * This file is part of LORENE.
10 *
11 * LORENE is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2
13 * as published by the Free Software Foundation.
14 *
15 * LORENE is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with LORENE; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 *
24 */
25
26
27
28/*
29 * $Id: star_bin_xcts.C,v 1.10 2016/12/05 16:18:15 j_novak Exp $
30 * $Log: star_bin_xcts.C,v $
31 * Revision 1.10 2016/12/05 16:18:15 j_novak
32 * Suppression of some global variables (file names, loch, ...) to prevent redefinitions
33 *
34 * Revision 1.9 2014/10/13 08:53:39 j_novak
35 * Lorene classes and functions now belong to the namespace Lorene.
36 *
37 * Revision 1.8 2010/12/09 10:45:26 m_bejger
38 * Added psi4 in the constructor, removed fait_decouple
39 *
40 * Revision 1.7 2010/10/28 13:50:27 m_bejger
41 * Added mass-shedding estimation to Star_bin_xcts::operator>>
42 *
43 * Revision 1.6 2010/10/26 20:18:34 m_bejger
44 * Correction to stdin output
45 *
46 * Revision 1.5 2010/10/26 19:57:02 m_bejger
47 * Various cleanups
48 *
49 * Revision 1.4 2010/06/17 15:06:25 m_bejger
50 * N, Psi output corrected
51 *
52 * Revision 1.3 2010/06/15 08:18:19 m_bejger
53 * Method set_chi_comp() added
54 *
55 * Revision 1.2 2010/06/04 19:59:56 m_bejger
56 * Corrected definitions of lapse and Psi4
57 *
58 * Revision 1.1 2010/05/04 07:51:05 m_bejger
59 * Initial version
60 *
61 * $Header: /cvsroot/Lorene/C++/Source/Star/star_bin_xcts.C,v 1.10 2016/12/05 16:18:15 j_novak Exp $
62 *
63 */
64
65// Headers C
66#include "math.h"
67
68// Headers Lorene
69#include "etoile.h"
70#include "star.h"
71#include "eos.h"
72#include "unites.h"
73
74// Local prototype
75namespace Lorene {
76Cmp raccord_c1(const Cmp& uu, int l1) ;
77
78 //--------------//
79 // Constructors //
80 //--------------//
81
82// Standard constructor
83// --------------------
85 int nzet_i,
86 const Eos& eos_i,
87 bool irrot)
88 : Star(mpi, nzet_i, eos_i),
89 irrotational(irrot),
90 psi0(mpi),
91 d_psi(mpi, COV, mpi.get_bvect_cart()),
92 wit_w(mpi, CON, mpi.get_bvect_cart()),
93 loggam(mpi),
94 bsn(mpi, CON, mpi.get_bvect_cart()),
95 pot_centri(mpi),
96 chi_auto(mpi),
97 chi_comp(mpi),
98 Psi_auto(mpi),
99 Psi_comp(mpi),
100 Psi(mpi),
101 chi(mpi),
102 psi4(mpi),
103 w_beta(mpi, CON, mpi.get_bvect_cart()),
104 khi(mpi),
105 dcov_Psi(mpi, COV, mpi.get_bvect_cart()),
106 dcov_chi(mpi, COV, mpi.get_bvect_cart()),
107 flat(mpi, mpi.get_bvect_cart()),
108 beta_auto(mpi, CON, mpi.get_bvect_cart()),
109 beta_comp(mpi, CON, mpi.get_bvect_cart()),
110 haij_auto(mpi, CON, mpi.get_bvect_cart()),
111 haij_comp(mpi, CON, mpi.get_bvect_cart()),
112 hacar_auto(mpi),
113 hacar_comp(mpi),
114 ssjm1_chi(mpi),
115 ssjm1_psi(mpi),
116 ssjm1_khi(mpi),
117 ssjm1_wbeta(mpi, CON, mpi.get_bvect_cart()) {
118
119 // Pointers of derived quantities initialized to zero :
120 set_der_0x0() ;
121
122 // Quantities defined on a spherical triad in star.C are put on
123 // a cartesian one
124 u_euler.change_triad(mpi.get_bvect_cart()) ;
125 stress_euler.change_triad(mpi.get_bvect_cart()) ;
126 beta.change_triad(mpi.get_bvect_cart()) ;
127 Metric temp_met (mp.flat_met_cart()) ;
128 gamma = temp_met ;
129
130 // Initialization of all quantities :
131 psi0 = 0 ;
132 d_psi.set_etat_zero() ;
133 wit_w.set_etat_zero() ;
134 loggam = 0 ;
135 bsn.set_etat_zero() ;
136 pot_centri = 0 ;
137
138 Psi_auto = 0 ;
139 Psi_comp = 0 ;
140
141 beta_auto.set_etat_zero() ;
142 beta_comp.set_etat_zero() ;
143 chi_auto = 0 ;
144 chi_comp = 0 ;
145
146 Psi = 1. ;
147 chi = 1. ;
148
149 w_beta.set_etat_zero() ;
150 khi = 0 ;
151
152 dcov_Psi.set_etat_zero() ;
153 dcov_chi.set_etat_zero() ;
154
155 haij_auto.set_etat_zero() ;
156 haij_comp.set_etat_zero() ;
157 hacar_auto = 0 ;
158 hacar_comp = 0 ;
159 ssjm1_psi = 0 ;
160 ssjm1_chi = 0 ;
161 ssjm1_khi = 0 ;
162 ssjm1_wbeta.set_etat_zero() ;
163
164}
165
166// Copy constructor
167// ----------------
169 : Star(star),
171 psi0(star.psi0),
172 d_psi(star.d_psi),
173 wit_w(star.wit_w),
174 loggam(star.loggam),
175 bsn(star.bsn),
177 chi_auto(star.chi_auto),
178 chi_comp(star.chi_comp),
179 Psi_auto(star.Psi_auto),
180 Psi_comp(star.Psi_comp),
181 Psi(star.Psi),
182 chi(star.chi),
183 psi4(star.psi4),
184 w_beta(star.w_beta),
185 khi(star.khi),
186 dcov_Psi(star.dcov_Psi),
187 dcov_chi(star.dcov_chi),
188 flat(star.flat),
189 beta_auto(star.beta_auto),
190 beta_comp(star.beta_comp),
191 haij_auto(star.haij_auto),
192 haij_comp(star.haij_comp),
195 ssjm1_chi(star.ssjm1_chi),
196 ssjm1_psi(star.ssjm1_psi),
197 ssjm1_khi(star.ssjm1_khi),
199
200 set_der_0x0() ;
201
202}
203
204// Constructor from a file
205// -----------------------
207 const Eos& eos_i,
208 FILE* fich)
209 : Star(mpi, eos_i, fich),
210 psi0(mpi),
211 d_psi(mpi, COV, mpi.get_bvect_cart()),
212 wit_w(mpi, CON, mpi.get_bvect_cart()),
213 loggam(mpi),
214 bsn(mpi, CON, mpi.get_bvect_cart()),
215 pot_centri(mpi),
216 chi_auto(mpi, *(mpi.get_mg()), fich),
217 chi_comp(mpi),
218 Psi_auto(mpi, *(mpi.get_mg()), fich),
219 Psi_comp(mpi),
220 Psi(mpi),
221 chi(mpi),
222 psi4(mpi),
223 w_beta(mpi, mpi.get_bvect_cart(), fich),
224 khi(mpi, *(mpi.get_mg()), fich),
225 dcov_Psi(mpi, COV, mpi.get_bvect_cart()),
226 dcov_chi(mpi, COV, mpi.get_bvect_cart()),
227 flat(mpi, mpi.get_bvect_cart()),
228 beta_auto(mpi, mpi.get_bvect_cart(), fich),
229 beta_comp(mpi, CON, mpi.get_bvect_cart()),
230 haij_auto(mpi, CON, mpi.get_bvect_cart()),
231 haij_comp(mpi, CON, mpi.get_bvect_cart()),
232 hacar_auto(mpi),
233 hacar_comp(mpi),
234 ssjm1_chi(mpi, *(mpi.get_mg()), fich),
235 ssjm1_psi(mpi, *(mpi.get_mg()), fich),
236 ssjm1_khi(mpi, *(mpi.get_mg()), fich),
237 ssjm1_wbeta(mpi, mpi.get_bvect_cart(), fich) {
238
239 // Star parameters
240 // -----------------
241
242 // irrotational is read in the file:
243 bool status = fread(&irrotational, sizeof(bool), 1, fich) ;
244 if(!status)
245 cout << "Star_bin_xcts::Constructor from a file: Problem with reading ! " << endl ;
246
247 // Read of the saved fields:
248 // ------------------------
249
250 if (irrotational) {
251 Scalar psi0_file(mp, *(mp.get_mg()), fich) ;
252 psi0 = psi0_file ;
253
254 Scalar gam_euler_file(mp, *(mp.get_mg()), fich) ;
255 gam_euler = gam_euler_file ;
256 }
257
258 // Quantities defined on a spherical triad in star.C are put on
259 // a cartesian one
260
261 u_euler.change_triad(mpi.get_bvect_cart()) ;
262 stress_euler.change_triad(mpi.get_bvect_cart()) ;
263 beta.change_triad(mpi.get_bvect_cart()) ;
264 Metric temp_met (mp.flat_met_cart()) ;
265 gamma = temp_met ;
266
267 // All other fields are initialized to initial values :
268 // ----------------------------------------------------
269
270 d_psi.set_etat_zero() ;
271 wit_w.set_etat_zero() ;
272 loggam = 0 ;
273 bsn.set_etat_zero() ;
274 pot_centri = 0 ;
275 Psi_comp = 0 ;
276 dcov_Psi.set_etat_zero() ;
277 beta_comp.set_etat_zero() ;
278 chi_comp = 0 ;
279 w_beta.set_etat_zero() ;
280 khi = 0 ;
281 dcov_chi.set_etat_zero() ;
282 haij_auto.set_etat_zero() ;
283 haij_comp.set_etat_zero() ;
284 hacar_auto = 0 ;
285 hacar_comp = 0 ;
286
287 // Pointers of derived quantities initialized to zero
288 // --------------------------------------------------
289 set_der_0x0() ;
290
291}
292
293 //------------//
294 // Destructor //
295 //------------//
296
302
303 //----------------------------------//
304 // Management of derived quantities //
305 //----------------------------------//
306
308
310
311 if (p_xa_barycenter != 0x0) delete p_xa_barycenter ;
312
313 set_der_0x0() ;
314}
315
317
319
320 p_xa_barycenter = 0x0 ;
321
322}
323
325
327
328 del_deriv() ;
329
330}
331
332
333 //--------------//
334 // Assignment //
335 //--------------//
336
337// Assignment to another Star_bin_xcts
338// --------------------------------
340
341 // Assignment of quantities common to the derived classes of Star
342 Star::operator=(star) ;
343
344 // Assignement of proper quantities of class Star_bin_xcts
346 psi0 = star.psi0 ;
347 d_psi = star.d_psi ;
348 wit_w = star.wit_w ;
349 loggam = star.loggam ;
350 bsn = star.bsn ;
351 pot_centri = star.pot_centri ;
352 Psi_auto = star.Psi_auto ;
353 Psi_comp = star.Psi_comp ;
354 chi_auto = star.chi_auto ;
355 chi_comp = star.chi_comp ;
356 Psi = star.Psi ;
357 chi = star.chi ;
358 psi4 = star.psi4 ;
359 w_beta = star.w_beta ;
360 khi = star.khi ;
361 dcov_Psi = star.dcov_Psi ;
362 dcov_chi = star.dcov_chi ;
363 flat = star.flat ;
364 beta_auto = star.beta_auto ;
365 beta_comp = star.beta_comp ;
366 haij_auto = star.haij_auto ;
367 haij_comp = star.haij_comp ;
368 hacar_auto = star.hacar_auto ;
369 hacar_comp = star.hacar_comp ;
370 ssjm1_psi = star.ssjm1_psi ;
371 ssjm1_chi = star.ssjm1_chi ;
372 ssjm1_khi = star.ssjm1_khi ;
373 ssjm1_wbeta = star.ssjm1_wbeta ;
374
375 del_deriv() ; // Deletes all derived quantities
376
377}
378
380
381 del_deriv() ; // sets to 0x0 all the derived quantities
382 return pot_centri ;
383
384}
385
387
388 del_deriv() ; // sets to 0x0 all the derived quantities
389 return Psi_comp ;
390
391}
392
394
395 del_deriv() ; // sets to 0x0 all the derived quantities
396 return Psi_auto ;
397
398}
399
401
402 del_deriv() ; // sets to 0x0 all the derived quantities
403 return chi_comp ;
404
405}
406
408
409 del_deriv() ; // sets to 0x0 all the derived quantities
410 return chi_auto ;
411
412}
413
415
416 del_deriv() ; // sets to 0x0 all the derived quantities
417 return beta_auto ;
418
419}
420
422
423 del_deriv() ; // sets to 0x0 all the derived quantities
424 return beta ;
425
426}
427
428
429 //--------------//
430 // Outputs //
431 //--------------//
432
433// Save in a file
434// --------------
435void Star_bin_xcts::sauve(FILE* fich) const {
436
437 Star::sauve(fich) ;
438
439 chi_auto.sauve(fich) ;
440 Psi_auto.sauve(fich) ;
441
442 w_beta.sauve(fich) ;
443 khi.sauve(fich) ;
444
445 beta_auto.sauve(fich) ;
446
447 ssjm1_chi.sauve(fich) ;
448 ssjm1_psi.sauve(fich) ;
449 ssjm1_khi.sauve(fich) ;
450 ssjm1_wbeta.sauve(fich) ;
451
452 fwrite(&irrotational, sizeof(bool), 1, fich) ;
453
454 if (irrotational) {
455
456 psi0.sauve(fich) ;
457 gam_euler.sauve(fich) ; // required to construct d_psi from psi0
458
459 }
460
461}
462
463// Printing
464// --------
465
466ostream& Star_bin_xcts::operator>>(ostream& ost) const {
467
468 using namespace Unites ;
469
470// Star::operator>>(ost) ;
471
472 ost << endl ;
473
474 ost << "Number of domains occupied by the star : " << nzet << endl ;
475
476 ost << "Equation of state : " << endl ;
477 ost << eos << endl ;
478
479 ost << endl << "Central enthalpy : " << ent.val_grid_point(0,0,0,0) << " c^2" << endl ;
480 ost << "Central proper baryon density : " << nbar.val_grid_point(0,0,0,0)
481 << " x 0.1 fm^-3" << endl ;
482 ost << "Central proper energy density : " << ener.val_grid_point(0,0,0,0)
483 << " rho_nuc c^2" << endl ;
484 ost << "Central pressure : " << press.val_grid_point(0,0,0,0)
485 << " rho_nuc c^2" << endl ;
486
487 ost << endl ;
488
489 Scalar psi4_local = pow(Psi_auto + Psi_comp + 1., 4.) ;
490 psi4_local.std_spectral_base() ;
491
492 ost << "Central lapse N : " << nn.val_grid_point(0,0,0,0) << endl ;
493 ost << "Central value of Psi^4 : " << psi4_local.val_grid_point(0,0,0,0) << endl ;
494
495 ost << endl
496 << "Coordinate equatorial radius (phi=0) a1 = "
497 << ray_eq()/km << " km" << endl ;
498 ost << "Coordinate equatorial radius (phi=pi/2) a2 = "
499 << ray_eq_pis2()/km << " km" << endl ;
500 ost << "Coordinate equatorial radius (phi=pi): "
501 << ray_eq_pi()/km << " km" << endl ;
502 ost << "Coordinate polar radius a3 = "
503 << ray_pole()/km << " km" << endl ;
504 ost << "Axis ratio a2/a1 = " << ray_eq_pis2() / ray_eq()
505 << " a3/a1 = " << ray_pole() / ray_eq() << endl ;
506
507 double dent_eq = ent.dsdr().val_point(ray_eq(),M_PI/2.,0.) ;
508 double dent_pole = ent.dsdr().val_point(ray_pole(),0.,0.) ;
509 double mass_shedd_chi = fabs( dent_eq / dent_pole ) ;
510
511 ost << "Mass-shedding estimator = " << mass_shedd_chi << endl ;
512
513 ost << endl << "Baryon mass : " << mass_b() / msol << " M_sol" << endl ;
514 ost << "Gravitational mass : " << mass_g() / msol << " M_sol" << endl ;
515
516
517
518 ost << endl ;
519 ost << "Star in a binary system" << endl ;
520 ost << "-----------------------" << endl ;
521
522 if (irrotational) {
523 ost << "irrotational configuration" << endl ;
524 }
525 else {
526 ost << "corotating configuration" << endl ;
527 }
528
529 ost << "Absolute abscidia of the stellar center: " <<
530 mp.get_ori_x() / km << " km" << endl ;
531
532 ost << "Absolute abscidia of the barycenter of the baryon density : " <<
533 xa_barycenter() / km << " km" << endl ;
534
535 double r_0 = 0.5 * ( ray_eq() + ray_eq_pi() ) ;
536 double d_ns = fabs( mp.get_ori_x() ) + ray_eq_pi() - r_0 ;
537 double d_tilde = 2 * d_ns / r_0 ;
538
539 ost << "d_tilde : " << d_tilde << endl ;
540
541 ost << "Central value of gam_euler : "
542 << gam_euler.val_grid_point(0, 0, 0, 0) << endl ;
543
544 ost << "Central u_euler (U^r, U^t, U^p) [c] : "
545 << u_euler(1).val_grid_point(0, 0, 0, 0) << " "
546 << u_euler(2).val_grid_point(0, 0, 0, 0) << " "
547 << u_euler(3).val_grid_point(0, 0, 0, 0) << endl ;
548
549 if (irrotational) {
550 ost << "Central d_psi (r, t, p) [c] : "
551 << d_psi(1).val_grid_point(0, 0, 0, 0) << " "
552 << d_psi(2).val_grid_point(0, 0, 0, 0) << " "
553 << d_psi(3).val_grid_point(0, 0, 0, 0) << endl ;
554
555 ost << "Central vel. / co-orb. (W^r, W^t, W^p) [c] : "
556 << wit_w(1).val_grid_point(0, 0, 0, 0) << " "
557 << wit_w(2).val_grid_point(0, 0, 0, 0) << " "
558 << wit_w(3).val_grid_point(0, 0, 0, 0) << endl ;
559
560 ost << "Max vel. / co-orb. (W^r, W^t, W^p) [c] : "
561 << max(max(wit_w(1))) << " "
562 << max(max(wit_w(2))) << " "
563 << max(max(wit_w(3))) << endl ;
564
565 ost << "Min vel. / co-orb. (W^r, W^t, W^p) [c] : "
566 << min(min(wit_w(1))) << " "
567 << min(min(wit_w(2))) << " "
568 << min(min(wit_w(3))) << endl ;
569
570 double r_surf = mp.val_r(0,1.,M_PI/4,M_PI/4) ;
571
572 ost << "Velocity at (r_surf,pi/4,pi/4) / co-orb. [c] : "
573 << wit_w(1).val_point(r_surf,M_PI/4,M_PI/4) << " "
574 << wit_w(2).val_point(r_surf,M_PI/4,M_PI/4) << " "
575 << wit_w(3).val_point(r_surf,M_PI/4,M_PI/4) << endl ;
576
577 ost << "Central value of loggam : "
578 << loggam.val_grid_point(0, 0, 0, 0) << endl ;
579 }
580
581 ost << "Central value of Psi auto, comp : "
582 << Psi_auto.val_grid_point(0, 0, 0, 0) << " "
583 << Psi_comp.val_grid_point(0, 0, 0, 0) << endl ;
584
585 ost << "Central value of beta (N^r, N^t, N^p) [c] : "
586 << beta(1).val_grid_point(0, 0, 0, 0) << " "
587 << beta(2).val_grid_point(0, 0, 0, 0) << " "
588 << beta(3).val_grid_point(0, 0, 0, 0) << endl ;
589
590 ost << " ... beta_auto part of it [c] : "
591 << beta_auto(1).val_grid_point(0, 0, 0, 0) << " "
592 << beta_auto(2).val_grid_point(0, 0, 0, 0) << " "
593 << beta_auto(3).val_grid_point(0, 0, 0, 0) << endl ;
594
595 ost << endl << "Central value of (B^r, B^t, B^p)/N [c] : "
596 << bsn(1).val_grid_point(0, 0, 0, 0) << " "
597 << bsn(2).val_grid_point(0, 0, 0, 0) << " "
598 << bsn(3).val_grid_point(0, 0, 0, 0) << endl ;
599
600
601 ost << endl << "Central \\hat{A}^{ij} [c/km] : " << endl ;
602 ost << " \\hat{A}^{xx} auto, comp : "
603 << haij_auto(1, 1).val_grid_point(0, 0, 0, 0) * km << " "
604 << haij_comp(1, 1).val_grid_point(0, 0, 0, 0) * km << endl ;
605 ost << " A^{xy} auto, comp : "
606 << haij_auto(1, 2).val_grid_point(0, 0, 0, 0) * km << " "
607 << haij_comp(1, 2).val_grid_point(0, 0, 0, 0) * km << endl ;
608 ost << " A^{xz} auto, comp : "
609 << haij_auto(1, 3).val_grid_point(0, 0, 0, 0) * km << " "
610 << haij_comp(1, 3).val_grid_point(0, 0, 0, 0) * km << endl ;
611 ost << " A^{yy} auto, comp : "
612 << haij_auto(2, 2).val_grid_point(0, 0, 0, 0) * km << " "
613 << haij_comp(2, 2).val_grid_point(0, 0, 0, 0) * km << endl ;
614 ost << " A^{yz} auto, comp : "
615 << haij_auto(2, 3).val_grid_point(0, 0, 0, 0) * km << " "
616 << haij_comp(2, 3).val_grid_point(0, 0, 0, 0) * km << endl ;
617 ost << " A^{zz} auto, comp : "
618 << haij_auto(3, 3).val_grid_point(0, 0, 0, 0) * km << " "
619 << haij_comp(3, 3).val_grid_point(0, 0, 0, 0) * km << endl ;
620
621 ost << endl << "Central \\hat{A}_{ij}\\hat{A}^{ij} [c^2/km^2] : "
622 << endl ;
623 ost << " \\hat{A}_{ij}\\hat{A}^{ij} auto, comp : "
624 << hacar_auto.val_grid_point(0, 0, 0, 0) * km*km << " "
625 << hacar_comp.val_grid_point(0, 0, 0, 0) * km*km << endl ;
626
627 return ost ;
628}
629
630 //-------------------------//
631 // Computational routines //
632 //-------------------------//
633
635
636 if (!irrotational) {
637 d_psi.set_etat_nondef() ;
638 return ;
639 }
640
641 // Specific relativistic enthalpy ---> hhh
642 //----------------------------------
643
644 Scalar hhh = exp(ent) ; // = 1 at the Newtonian limit
645
646 // Computation of W^i = - h Gamma_n B^i/N
647 //----------------------------------------------
648
649 Vector www = hhh * gam_euler * bsn * psi4 ;
650
651 // Constant value of W^i at the center of the star
652 //-------------------------------------------------
653
654 Vector v_orb(mp, COV, mp.get_bvect_cart()) ;
655
656 for (int i=1; i<=3; i++)
657 v_orb.set(i) = www(i).val_grid_point(0, 0, 0, 0) ;
658
659 // Gradient of psi
660 //----------------
661
662 Vector d_psi0 = psi0.derive_cov(flat) ;
663
664 d_psi0.change_triad( mp.get_bvect_cart() ) ;
665 d_psi0.std_spectral_base() ;
666
667 d_psi = d_psi0 + v_orb ;
668
669 for (int i=1; i<=3; i++) {
670 if (d_psi(i).get_etat() == ETATZERO)
671 d_psi.set(i).annule_hard() ;
672 }
673
674 // C^1 continuation of d_psi outside the star
675 // (to ensure a smooth enthalpy field accross the stellar surface)
676 // ----------------------------------------------------------------
677
678 int nzm1 = mp.get_mg()->get_nzone() - 1 ;
679 d_psi.annule(nzet, nzm1) ;
680
681 for (int i=1; i<=3; i++) {
682 Cmp d_psi_i (d_psi(i)) ;
683 d_psi_i.va.set_base( d_psi0(i).get_spectral_va().base ) ;
684 d_psi_i = raccord_c1(d_psi_i, nzet) ;
685 d_psi.set(i) = d_psi_i ;
686 }
687
688 d_psi.std_spectral_base() ;
689
690}
691
693 double relax_ent,
694 double relax_met,
695 int mer,
696 int fmer_met) {
697
698 double relax_ent_jm1 = 1. - relax_ent ;
699 double relax_met_jm1 = 1. - relax_met ;
700
701 ent = relax_ent * ent + relax_ent_jm1 * star_jm1.ent ;
702
703 if ( (mer != 0) && (mer % fmer_met == 0)) {
704
705 Psi_auto = relax_met * Psi_auto
706 + relax_met_jm1 * star_jm1.Psi_auto ;
707
708 chi_auto = relax_met * chi_auto
709 + relax_met_jm1 * star_jm1.chi_auto ;
710
711 beta_auto = relax_met * beta_auto
712 + relax_met_jm1 * star_jm1.beta_auto ;
713
714 }
715
716 del_deriv() ;
717
719
720}
721}
Component of a tensorial field *** DEPRECATED : use class Scalar instead ***.
Definition cmp.h:446
Valeur va
The numerical value of the Cmp.
Definition cmp.h:464
Equation of state base class.
Definition eos.h:206
Metric for tensor calculation.
Definition metric.h:90
Tensor field of valence 0 (or component of a tensorial field).
Definition scalar.h:393
virtual void std_spectral_base()
Sets the spectral bases of the Valeur va to the standard ones for a scalar field.
Definition scalar.C:790
double val_grid_point(int l, int k, int j, int i) const
Returns the value of the field at a specified grid point.
Definition scalar.h:643
Scalar Psi
Total conformal factor .
Definition star.h:1152
Scalar psi0
Scalar potential of the non-translational part of fluid 4-velocity (in the irrotational case).
Definition star.h:1104
Scalar & set_pot_centri()
Read/write the centrifugal potential.
void operator=(const Star_bin_xcts &)
Assignment to another Star_bin_xcts.
Scalar pot_centri
Centrifugal potential.
Definition star.h:1129
Sym_tensor haij_auto
Part of the extrinsic curvature tensor generated by beta_auto.
Definition star.h:1193
Vector & set_beta_auto()
Read/write of .
void fait_d_psi()
Computes the gradient of the total velocity potential .
Scalar psi4
Conformal factor .
Definition star.h:1158
Vector wit_w
Spatial projection of the fluid 3-velocity with respect to the co-orbiting observer.
Definition star.h:1115
virtual double xa_barycenter() const
Absolute coordinate X of the barycenter of the baryon density,.
virtual void set_der_0x0() const
Sets to 0x0 all the pointers on derived quantities.
Metric_flat flat
Flat metric defined on the mapping (Spherical components with respect to the mapping of the star) .
Definition star.h:1177
Vector & set_beta()
Read/write of .
Scalar ssjm1_khi
Effective source at the previous step for the resolution of the Poisson equation for khi.
Definition star.h:1227
Scalar khi
Solution for the scalar part of the vector Poisson equation for .
Definition star.h:1168
Star_bin_xcts(Map &mp_i, int nzet_i, const Eos &eos_i, bool irrot)
Standard constructor.
Vector ssjm1_wbeta
Effective source at the previous step for wbeta of the vector Poisson equation for wbeta (needed for ...
Definition star.h:1234
Scalar Psi_comp
Scalar field generated principally by the companion star.
Definition star.h:1149
Scalar ssjm1_chi
Effective source at the previous step for the resolution of the Poisson equation for \chi_auto .
Definition star.h:1216
Vector dcov_Psi
Covariant derivative of the conformal factor .
Definition star.h:1171
Vector beta_comp
Part of the shift vector generated principally by the star (Spherical components with respect to the ...
Definition star.h:1187
Vector beta_auto
Part of the shift vector generated principally by the star (Spherical components with respect to the ...
Definition star.h:1182
Scalar Psi_auto
Scalar field generated principally by the star.
Definition star.h:1144
Scalar hacar_comp
Part of the scalar generated by beta_auto and beta_comp, i.e.
Definition star.h:1211
Scalar chi
Total function .
Definition star.h:1155
Scalar & set_chi_comp()
Read/write the conformal factor .
Vector bsn
3-vector shift, divided by N, of the rotating coordinates, .
Definition star.h:1126
virtual void del_hydro_euler()
Sets to ETATNONDEF (undefined state) the hydrodynamical quantities relative to the Eulerian observer.
Scalar loggam
Logarithm of the Lorentz factor between the fluid and the co-orbiting observer.
Definition star.h:1120
Scalar & set_chi_auto()
Read/write the conformal factor .
Sym_tensor haij_comp
Part of the extrinsic curvature tensor generated by beta_comp.
Definition star.h:1199
Scalar & set_Psi_comp()
Read/write the conformal factor .
Scalar & set_Psi_auto()
Read/write the conformal factor .
virtual ostream & operator>>(ostream &) const
Operator >> (virtual function called by the operator <<).
Vector dcov_chi
Covariant derivative of the function .
Definition star.h:1174
Scalar chi_auto
Scalar field generated principally by the star.
Definition star.h:1134
virtual double mass_g() const
Gravitational mass.
Vector w_beta
Solution for the vector part of the vector Poisson equation for .
Definition star.h:1163
Scalar chi_comp
Scalar field generated principally by the companion star.
Definition star.h:1139
Scalar ssjm1_psi
Effective source at the previous step for the resolution of the Poisson equation for \Psi_auto .
Definition star.h:1221
void relaxation(const Star_bin_xcts &star_prev, double relax_ent, double relax_met, int mer, int fmer_met)
Performs a relaxation on ent, Psi_auto, chi_auto and beta_auto.
bool irrotational
true for an irrotational star, false for a corotating one
Definition star.h:1099
virtual void del_deriv() const
Deletes all the derived quantities.
Vector d_psi
Gradient of (in the irrotational case) (Spherical components with respect to the mapping of the star...
Definition star.h:1109
virtual void sauve(FILE *) const
Save in a file.
virtual double mass_b() const
Baryon mass.
virtual ~Star_bin_xcts()
Destructor.
double * p_xa_barycenter
Absolute coordinate X of the barycenter of the baryon density.
Definition star.h:1240
Scalar hacar_auto
Part of the scalar generated by beta_auto, i.e.
Definition star.h:1205
Star(Map &mp_i, int nzet_i, const Eos &eos_i)
Standard constructor.
Definition star.C:127
Scalar ener
Total energy density in the fluid frame.
Definition star.h:193
Scalar nn
Lapse function N .
Definition star.h:225
virtual void del_hydro_euler()
Sets to ETATNONDEF (undefined state) the hydrodynamical quantities relative to the Eulerian observer.
Definition star.C:333
const Eos & eos
Equation of state of the stellar matter.
Definition star.h:185
Scalar nbar
Baryon density in the fluid frame.
Definition star.h:192
void equation_of_state()
Computes the proper baryon and energy density, as well as pressure from the enthalpy.
Definition star.C:465
virtual void del_deriv() const
Deletes all the derived quantities.
Definition star.C:301
Scalar gam_euler
Lorentz factor between the fluid and Eulerian observers.
Definition star.h:204
virtual void set_der_0x0() const
Sets to 0x0 all the pointers on derived quantities.
Definition star.C:319
double ray_eq() const
Coordinate radius at , [r_unit].
Metric gamma
3-metric
Definition star.h:235
virtual void sauve(FILE *) const
Save in a file.
Definition star.C:400
double ray_eq_pis2() const
Coordinate radius at , [r_unit].
Sym_tensor stress_euler
Spatial part of the stress-energy tensor with respect to the Eulerian observer.
Definition star.h:212
Scalar press
Fluid pressure.
Definition star.h:194
double ray_eq_pi() const
Coordinate radius at , [r_unit].
Scalar ent
Log-enthalpy.
Definition star.h:190
Vector u_euler
Fluid 3-velocity with respect to the Eulerian observer.
Definition star.h:207
Map & mp
Mapping associated with the star.
Definition star.h:180
void operator=(const Star &)
Assignment to another Star.
Definition star.C:354
int nzet
Number of domains of *mp occupied by the star.
Definition star.h:183
Vector beta
Shift vector.
Definition star.h:228
double ray_pole() const
Coordinate radius at [r_unit].
void set_base(const Base_val &)
Sets the bases for spectral expansions (member base ).
Definition valeur.C:813
Tensor field of valence 1.
Definition vector.h:188
virtual void std_spectral_base()
Sets the standard spectal bases of decomposition for each component.
Definition vector.C:319
virtual void change_triad(const Base_vect &)
Sets a new vectorial basis (triad) of decomposition and modifies the components accordingly.
Scalar & set(int)
Read/write access to a component.
Definition vector.C:299
Cmp exp(const Cmp &)
Exponential.
Definition cmp_math.C:273
Tbl min(const Cmp &)
Minimum values of a Cmp in each domain.
Definition cmp_math.C:461
Tbl max(const Cmp &)
Maximum values of a Cmp in each domain.
Definition cmp_math.C:438
Cmp pow(const Cmp &, int)
Power .
Definition cmp_math.C:351
Lorene prototypes.
Definition app_hor.h:67
const Base_vect_cart & get_bvect_cart() const
Returns the Cartesian basis associated with the coordinates (x,y,z) of the mapping,...
Definition map.h:803
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
Definition map.h:777
Map(const Mg3d &)
Constructor from a multi-domain 3D grid.
Definition map.C:142
Standard units of space, time and mass.