100 double lim_nn,
int bound_psi) {
102 int nz =
hole1.
mp.get_mg()->get_nzone() ;
113 cout <<
"Static black holes : " << endl ;
124 for (
int i=1 ; i<nz ; i++)
125 if (diff(i) > erreur)
128 cout <<
"Step : " << conte <<
" Difference : " << erreur << endl ;
137 int nb_it,
int bound_nn,
double lim_nn,
138 int bound_psi,
int bound_beta,
double omega_eff,
140 ostream& fich_iteration, ostream& fich_correction,
141 ostream& fich_viriel, ostream& fich_kss,
142 int step,
int search_mass,
double mass_irr,
145 int nz =
hole1.
mp.get_mg()->get_nzone() ;
147 double precis = 1e-7 ;
150 cout <<
"OMEGA INCREASED STEP BY STEP." << endl ;
152 double inc_homme = (angu_vel - homme)/nb_ome ;
153 for (
int pas = 0 ; pas <nb_ome ; pas ++) {
156 if (omega_eff == alpha*homme ) verif = true ;
161 omega_eff = alpha*homme ;
164 solve_shift (precis, relax, bound_beta, omega_eff) ;
171 if (search_mass == 1 && step >= 30) {
174 double error_m = (mass_irr - mass_area) / mass_irr ;
175 double scaling_r =
pow((2-error_m)/(2-2*error_m), 1.) ;
191 cout <<
"Angular momentum computed at the horizon : " <<
ang_mom_hor()
196 for (
int i=1 ; i<nz ; i++)
197 if (diff(i) > erreur)
208 int nnp =
hole1.
mp.get_mg()->get_np(1) ;
209 int nnt =
hole2.
mp.get_mg()->get_nt(1) ;
210 for (
int k=0 ; k<nnp ; k++)
211 for (
int j=0 ; j<nnt ; j++){
219 fich_iteration << step <<
" " <<
log10(erreur) <<
" " << homme << endl ;
220 fich_correction << step <<
" " <<
log10(
hole1.
regul) <<
" " << homme << endl ;
222 fich_viriel << step <<
" " <<
viriel() <<
" " << homme <<
" " <<
hole1.
omega_hor() - alpha*homme <<
" " << omega_eff << endl ;
223 fich_kss << step <<
" " << max_kss <<
" " << min_kss << endl ;
226 cout <<
"STEP : " << step <<
" DIFFERENCE : " << erreur << endl ;
233 cout <<
"OMEGA FIXED" << endl ;
236 for (
int pas = 0 ; pas <nb_it ; pas ++) {
240 solve_shift (precis, relax, bound_beta, omega_eff) ;
247 if (search_mass == 1 && step >= 30) {
250 double error_m = (mass_irr - mass_area) / mass_irr ;
251 double scaling_r =
pow((2-error_m)/(2-2*error_m), 1.) ;
261 for (
int i=1 ; i<nz ; i++)
262 if (diff(i) > erreur)
273 int nnp =
hole1.
mp.get_mg()->get_np(1) ;
274 int nnt =
hole2.
mp.get_mg()->get_nt(1) ;
275 for (
int k=0 ; k<nnp ; k++)
276 for (
int j=0 ; j<nnt ; j++){
285 fich_iteration << step <<
" " <<
log10(erreur) <<
" " << homme << endl ;
286 fich_correction << step <<
" " <<
log10(
hole1.
regul) <<
" " << homme << endl ;
288 fich_viriel << step <<
" " <<
viriel() <<
" " << homme <<
" " <<
hole1.
omega_hor() - alpha*homme <<
" " << omega_eff << endl ;
289 fich_kss << step <<
" " << max_kss <<
" " << min_kss << endl ;
292 cout <<
"STEP : " << step <<
" DIFFERENCE : " << erreur << endl ;
297 fich_iteration <<
"#----------------------------" << endl ;
298 fich_correction <<
"#-----------------------------" << endl ;
299 fich_viriel <<
"#------------------------------" << endl ;
double viriel() const
Computes the viriel error, that is the difference between the ADM and the Komar masses,...
void solve_psi(double precis, double relax, int bound_psi)
Solves the equation for the conformal factor : The fields are the total values excpet those with subs...
double coal(double ang_vel, double relax, int nb_om, int nb_it, int bound_nn, double lim_nn, int bound_psi, int bound_beta, double omega_eff, double alpha, ostream &fich_iteration, ostream &fich_correction, ostream &fich_viriel, ostream &fich_kss, int step, int search_mass, double mass_irr, const int sortie=0)
Solves the equation for a particular angular velocity, the systeme being initialized to Misner-Lindqu...
Single_hor hole1
Black hole one.
Single_hor hole2
Black hole two.
double ang_mom_hor() const
Calculates the angular momentum of the black hole using the formula at the horizon.
void init_bin_hor()
Initialisation of the system.
void solve_shift(double precis, double relax, int bound_beta, double omega_eff)
Solves the equation for the shift, using the Oohara-Nakarmure scheme : The fields are the total value...
void set_statiques(double precis, double relax, int bound_nn, double lim_nn, int bound_psi)
Initialize the systeme to Misner Lindquist solution, that is solving for N and in the case .
void solve_lapse(double precis, double relax, int bound_nn, double lim_nn)
Solves the equation for the lapse : The fields are the total values except those with subscript ,...
void set_omega(double ome)
Sets the orbital velocity to ome.
void extrinsic_curvature()
Calculation of the extrinsic curvature tensor.
double get_omega() const
Returns the angular velocity.
void homothetie_interne(double lambda)
Sets a new radial scale at the bondary between the nucleus and the first shell.
virtual const Vector & radial_vect() const
Returns the radial vector normal to a spherical slicing and pointing toward spatial infinity.
Tensor field of valence 0 (or component of a tensorial 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.
double radius
Radius of the horizon in LORENE's units.
const Metric & get_gam() const
metric
Vector beta_auto
Shift function .
const Sym_tensor & get_k_dd() const
k_dd
Metric_flat ff
3 metric flat
Map_af & mp
Affine mapping.
void init_met_trK()
Sets the 3-metric tilde to the flat metric and gamt_point, trK and trK_point to zero.
double area_hor() const
Area of the horizon.
double regul
Intensity of the correction on the shift vector.
double omega_hor() const
Orbital velocity.
Scalar n_auto
Lapse function .
Metric tgam
3 metric tilde
Cmp sqrt(const Cmp &)
Square root.
Cmp log10(const Cmp &)
Basis 10 logarithm.
Cmp pow(const Cmp &, int)
Power .
Tbl diffrelmax(const Cmp &a, const Cmp &b)
Relative difference between two Cmp (max version).
Tenseur contract(const Tenseur &, int id1, int id2)
Self contraction of two indices of a Tenseur .