132 cout <<
"TROUS STATIQUES : " << endl ;
142 for (
int i=1 ; i<nz_un ; i++)
143 if (diff_un(i) > erreur)
144 erreur = diff_un(i) ;
147 for (
int i=1 ; i<nz_deux ; i++)
148 if (diff_deux(i) > erreur)
149 erreur = diff_deux(i) ;
152 cout <<
"PAS TOTAL : " << conte <<
" DIFFERENCE : " << erreur << endl ;
160 void Bhole_binaire::coal (
double precis,
double relax,
int nbre_ome,
double seuil_search,
double m1,
double m2,
const int sortie) {
162 assert (
omega == 0) ;
177 char name_iteration[40] ;
178 char name_correction[40] ;
179 char name_viriel[40] ;
181 char name_linear[40] ;
183 char name_error_m1[40] ;
184 char name_error_m2[40] ;
188 sprintf(name_iteration,
"ite.dat") ;
189 sprintf(name_correction,
"cor.dat") ;
190 sprintf(name_viriel,
"vir.dat") ;
191 sprintf(name_ome,
"ome.dat") ;
192 sprintf(name_linear,
"linear.dat") ;
193 sprintf(name_axe,
"axe.dat") ;
194 sprintf(name_error_m1,
"error_m1.dat") ;
195 sprintf(name_error_m2,
"error_m2.dat") ;
196 sprintf(name_r1,
"r1.dat") ;
197 sprintf(name_r2,
"r2.dat") ;
199 ofstream fiche_iteration(name_iteration) ;
200 fiche_iteration.precision(8) ;
202 ofstream fiche_correction(name_correction) ;
203 fiche_correction.precision(8) ;
205 ofstream fiche_viriel(name_viriel) ;
206 fiche_viriel.precision(8) ;
208 ofstream fiche_ome(name_ome) ;
209 fiche_ome.precision(8) ;
211 ofstream fiche_linear(name_linear) ;
212 fiche_linear.precision(8) ;
214 ofstream fiche_axe(name_axe) ;
215 fiche_axe.precision(8) ;
217 ofstream fiche_error_m1 (name_error_m1) ;
218 fiche_error_m1.precision(8) ;
220 ofstream fiche_error_m2 (name_error_m2) ;
221 fiche_error_m2.precision(8) ;
223 ofstream fiche_r1 (name_r1) ;
224 fiche_r1.precision(8) ;
226 ofstream fiche_r2 (name_r2) ;
227 fiche_r2.precision(8) ;
230 cout <<
"OMEGA AUGMENTE A LA MAIN." << endl ;
232 for (
int pas = 0 ; pas <nbre_ome ; pas ++) {
234 homme += angulaire/nbre_ome ;
248 for (
int i=1 ; i<nz1 ; i++)
249 if (diff_un(i) > erreur)
250 erreur = diff_un(i) ;
253 for (
int i=1 ; i<nz2 ; i++)
254 if (diff_deux(i) > erreur)
255 erreur = diff_deux(i) ;
257 double error_viriel =
viriel() ;
258 double error_linear = linear_momentum_systeme_inf()(1)/scale_linear ;
265 fiche_iteration << conte <<
" " << erreur << endl ;
267 fiche_viriel << conte <<
" " << error_viriel << endl ;
268 fiche_ome << conte <<
" " << homme << endl ;
269 fiche_linear << conte <<
" " << error_linear << endl ;
270 fiche_axe << conte <<
" " << pos_axe << endl ;
271 fiche_error_m1 << conte <<
" " << error_m1 << endl ;
272 fiche_error_m2 << conte <<
" " << error_m2 << endl ;
273 fiche_r1 << conte <<
" " << r1 << endl ;
274 fiche_r2 << conte <<
" " << r2 << endl ;
277 cout <<
"PAS TOTAL : " << conte <<
" DIFFERENCE : " << erreur << endl ;
282 cout <<
"OMEGA VARIABLE" << endl ;
299 for (
int i=1 ; i<nz1 ; i++)
300 if (diff_un(i) > erreur)
301 erreur = diff_un(i) ;
304 for (
int i=1 ; i<nz2 ; i++)
305 if (diff_deux(i) > erreur)
306 erreur = diff_deux(i) ;
308 double error_viriel =
viriel() ;
309 double error_linear = linear_momentum_systeme_inf()(1)/scale_linear ;
316 fiche_iteration << conte <<
" " << erreur << endl ;
318 fiche_viriel << conte <<
" " << error_viriel << endl ;
319 fiche_ome << conte <<
" " <<
omega << endl ;
320 fiche_linear << conte <<
" " << error_linear << endl ;
321 fiche_axe << conte <<
" " << pos_axe << endl ;
322 fiche_error_m1 << conte <<
" " << error_m1 << endl ;
323 fiche_error_m2 << conte <<
" " << error_m2 << endl ;
324 fiche_r1 << conte <<
" " << r1 << endl ;
325 fiche_r2 << conte <<
" " << r2 << endl ;
329 if (erreur <= seuil_search)
332 double scaling_ome =
pow((2-error_viriel)/(2-2*error_viriel), 1.) ;
335 double scaling_axe =
pow((2-error_linear)/(2-2*error_linear), 0.1) ;
336 set_pos_axe (pos_axe*scaling_axe) ;
338 double scaling_r1 =
pow((2-error_m1)/(2-2*error_m1), 0.1) ;
341 double scaling_r2 =
pow((2-error_m2)/(2-2*error_m2), 0.1) ;
345 cout <<
"PAS TOTAL : " << conte <<
" DIFFERENCE : " << erreur << endl ;
351 fiche_iteration.close() ;
352 fiche_correction.close() ;
353 fiche_viriel.close() ;
355 fiche_linear.close() ;
357 fiche_error_m1.close() ;
358 fiche_error_m2.close() ;
void fait_tkij()
Calculation af the extrinsic curvature tensor.
Component of a tensorial field *** DEPRECATED : use class Scalar instead ***.
Cmp sqrt(const Cmp &)
Square root.
void solve_shift(double precis, double relax)
Solves the equation for the shift, using the Oohara-Nakarmure scheme~: using the current for the ...
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
double get_ori_x() const
Returns the x coordinate of the origin.
virtual double val_r(int l, double xi, double theta, double pphi) const
Returns the value of the radial coordinate r for a given in a given domain.
const Tenseur & get_n_auto() const
Returns the part of N generated by the hole.
void init_bhole_binaire()
Initialisation of the system.
void coal(double precis, double relax, int nbre_ome, double search_ome, double m1, double m2, const int sortie=0)
Solves the equation for a particular angular velocity, the systeme being initialized to Misner-Lindqu...
double get_regul() const
Returns the intensity of the regularisation on .
double omega
Position of the axis of rotation.
double area() const
Computes the area of the throat.
Map_af & mp
Affine mapping.
Bhole hole1
Black hole one.
int get_nzone() const
Returns the number of domains.
void solve_psi(double precis, double relax)
Solves the equation for the conformal factor~: The fields are the total values excpet those with s...
double viriel() const
Computes the viriel error, that is the difference between the ADM and the Komar masses, calculated by the asymptotic behaviours of respectively and N .
double rayon
Radius of the horizon in LORENE's units.
Cmp pow(const Cmp &, int)
Power .
void set_statiques(double precis, double relax)
Initialize the systeme to Misner Lindquist solution, that is solving for N and in the case ...
void set_omega(double ome)
Sets the orbital velocity to ome.
void solve_lapse(double precis, double relax)
Solves the equation for the lapse~: The fields are the total values excpet those with subscript ...
const Tenseur & get_shift_auto() const
Returns the part of generated by the hole.
void homothetie_interne(double lambda)
Sets a new radial scale at the bondary between the nucleus and the first shell.
Tbl diffrelmax(const Cmp &a, const Cmp &b)
Relative difference between two Cmp (max version).
double regul
Intensity of the correction on the shift vector.
Bhole hole2
Black hole two.