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) {
172 double mass_area =
sqrt(
hole1.area_hor()/16/M_PI) +
174 double error_m = (mass_irr - mass_area) / mass_irr ;
175 double scaling_r =
pow((2-error_m)/(2-2*error_m), 1.) ;
176 hole1.mp.homothetie_interne(scaling_r) ;
178 hole2.mp.homothetie_interne(scaling_r) ;
191 cout <<
"Angular momentum computed at the horizon : " <<
ang_mom_hor()
196 for (
int i=1 ; i<nz ; i++)
197 if (diff(i) > erreur)
204 hole1.get_gam().radial_vect()*
205 hole1.get_gam().radial_vect(), 0, 1)) ;
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) {
248 double mass_area =
sqrt(
hole1.area_hor()/16/M_PI) +
250 double error_m = (mass_irr - mass_area) / mass_irr ;
251 double scaling_r =
pow((2-error_m)/(2-2*error_m), 1.) ;
253 hole1.mp.homothetie_interne(scaling_r) ;
255 hole2.mp.homothetie_interne(scaling_r) ;
261 for (
int i=1 ; i<nz ; i++)
262 if (diff(i) > erreur)
269 hole1.get_gam().radial_vect()*
270 hole1.get_gam().radial_vect(), 0, 1)) ;
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 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...
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 ,...