diff options
Diffstat (limited to 'src/driver/setup.cc')
-rw-r--r-- | src/driver/setup.cc | 179 |
1 files changed, 128 insertions, 51 deletions
diff --git a/src/driver/setup.cc b/src/driver/setup.cc index c8ce8cc..79f34b3 100644 --- a/src/driver/setup.cc +++ b/src/driver/setup.cc @@ -85,6 +85,133 @@ enum patch_system::patch_system_type fp origin_x, fp origin_y, fp origin_z); } +void set_initial_guess_parameters(struct AH_data& AH_data, const int hn, + const fp ini_origin_x, const fp ini_origin_y, const fp ini_origin_z); + + + + + +//****************************************************************************** + +// +// This function is used to setup initial guesses either from +// the corresponding parameters, or from a custom ini_origin_*. +// The latter is necessary when tracking with a grid scalar. +// +// + +void set_initial_guess_parameters(struct AH_data& AH_data, const int hn, + const fp ini_origin_x, const fp ini_origin_y, const fp ini_origin_z) +{ +DECLARE_CCTK_PARAMETERS; + + AH_data.initial_guess_info.method + = decode_initial_guess_method(initial_guess_method[hn]); + AH_data.initial_guess_info.reset_horizon_after_not_finding + = reset_horizon_after_not_finding[hn]; + // ... read from named file + AH_data.initial_guess_info.read_from_named_file_info.file_name + = initial_guess__read_from_named_file__file_name[hn]; + +if (!track_origin_from_grid_scalar[hn]) { + + // ... Kerr/Kerr + AH_data.initial_guess_info.Kerr_Kerr_info.x_posn + = initial_guess__Kerr_Kerr__x_posn[hn]; + AH_data.initial_guess_info.Kerr_Kerr_info.y_posn + = initial_guess__Kerr_Kerr__y_posn[hn]; + AH_data.initial_guess_info.Kerr_Kerr_info.z_posn + = initial_guess__Kerr_Kerr__z_posn[hn]; + AH_data.initial_guess_info.Kerr_Kerr_info.mass + = initial_guess__Kerr_Kerr__mass[hn]; + AH_data.initial_guess_info.Kerr_Kerr_info.spin + = initial_guess__Kerr_Kerr__spin[hn]; + // ... Kerr/Kerr-Schild + AH_data.initial_guess_info.Kerr_KerrSchild_info.x_posn + = initial_guess__Kerr_KerrSchild__x_posn[hn]; + AH_data.initial_guess_info.Kerr_KerrSchild_info.y_posn + = initial_guess__Kerr_KerrSchild__y_posn[hn]; + AH_data.initial_guess_info.Kerr_KerrSchild_info.z_posn + = initial_guess__Kerr_KerrSchild__z_posn[hn]; + AH_data.initial_guess_info.Kerr_KerrSchild_info.mass + = initial_guess__Kerr_KerrSchild__mass[hn]; + AH_data.initial_guess_info.Kerr_KerrSchild_info.spin + = initial_guess__Kerr_KerrSchild__spin[hn]; + // ... coordinate sphere + AH_data.initial_guess_info.coord_sphere_info.x_center + = initial_guess__coord_sphere__x_center[hn]; + AH_data.initial_guess_info.coord_sphere_info.y_center + = initial_guess__coord_sphere__y_center[hn]; + AH_data.initial_guess_info.coord_sphere_info.z_center + = initial_guess__coord_sphere__z_center[hn]; + AH_data.initial_guess_info.coord_sphere_info.radius + = initial_guess__coord_sphere__radius[hn]; + // ... coordinate ellipsoid + AH_data.initial_guess_info.coord_ellipsoid_info.x_center + = initial_guess__coord_ellipsoid__x_center[hn]; + AH_data.initial_guess_info.coord_ellipsoid_info.y_center + = initial_guess__coord_ellipsoid__y_center[hn]; + AH_data.initial_guess_info.coord_ellipsoid_info.z_center + = initial_guess__coord_ellipsoid__z_center[hn]; + AH_data.initial_guess_info.coord_ellipsoid_info.x_radius + = initial_guess__coord_ellipsoid__x_radius[hn]; + AH_data.initial_guess_info.coord_ellipsoid_info.y_radius + = initial_guess__coord_ellipsoid__y_radius[hn]; + AH_data.initial_guess_info.coord_ellipsoid_info.z_radius + = initial_guess__coord_ellipsoid__z_radius[hn]; + +} else { + + // ... Kerr/Kerr + AH_data.initial_guess_info.Kerr_Kerr_info.x_posn + = ini_origin_x; + AH_data.initial_guess_info.Kerr_Kerr_info.y_posn + = ini_origin_y; + AH_data.initial_guess_info.Kerr_Kerr_info.z_posn + = ini_origin_z; + AH_data.initial_guess_info.Kerr_Kerr_info.mass + = initial_guess__Kerr_Kerr__mass[hn]; + AH_data.initial_guess_info.Kerr_Kerr_info.spin + = initial_guess__Kerr_Kerr__spin[hn]; + // ... Kerr/Kerr-Schild + AH_data.initial_guess_info.Kerr_KerrSchild_info.x_posn + = ini_origin_x; + AH_data.initial_guess_info.Kerr_KerrSchild_info.y_posn + = ini_origin_y; + AH_data.initial_guess_info.Kerr_KerrSchild_info.z_posn + = ini_origin_z; + AH_data.initial_guess_info.Kerr_KerrSchild_info.mass + = initial_guess__Kerr_KerrSchild__mass[hn]; + AH_data.initial_guess_info.Kerr_KerrSchild_info.spin + = initial_guess__Kerr_KerrSchild__spin[hn]; + // ... coordinate sphere + AH_data.initial_guess_info.coord_sphere_info.x_center + = ini_origin_x; + AH_data.initial_guess_info.coord_sphere_info.y_center + = ini_origin_y; + AH_data.initial_guess_info.coord_sphere_info.z_center + = ini_origin_z; + AH_data.initial_guess_info.coord_sphere_info.radius + = initial_guess__coord_sphere__radius[hn]; + // ... coordinate ellipsoid + AH_data.initial_guess_info.coord_ellipsoid_info.x_center + = ini_origin_x; + AH_data.initial_guess_info.coord_ellipsoid_info.y_center + = ini_origin_y; + AH_data.initial_guess_info.coord_ellipsoid_info.z_center + = ini_origin_z; + AH_data.initial_guess_info.coord_ellipsoid_info.x_radius + = initial_guess__coord_ellipsoid__x_radius[hn]; + AH_data.initial_guess_info.coord_ellipsoid_info.y_radius + = initial_guess__coord_ellipsoid__y_radius[hn]; + AH_data.initial_guess_info.coord_ellipsoid_info.z_radius + = initial_guess__coord_ellipsoid__z_radius[hn]; + +} + +} + //****************************************************************************** // @@ -591,57 +718,7 @@ if (strlen(surface_interpolator_name) > 0) if (verbose_info.print_algorithm_details) then CCTK_VInfo(CCTK_THORNSTRING, " setting initial guess parameters etc"); - AH_data.initial_guess_info.method - = decode_initial_guess_method(initial_guess_method[hn]); - AH_data.initial_guess_info.reset_horizon_after_not_finding - = reset_horizon_after_not_finding[hn]; - // ... read from named file - AH_data.initial_guess_info.read_from_named_file_info.file_name - = initial_guess__read_from_named_file__file_name[hn]; - // ... Kerr/Kerr - AH_data.initial_guess_info.Kerr_Kerr_info.x_posn - = initial_guess__Kerr_Kerr__x_posn[hn]; - AH_data.initial_guess_info.Kerr_Kerr_info.y_posn - = initial_guess__Kerr_Kerr__y_posn[hn]; - AH_data.initial_guess_info.Kerr_Kerr_info.z_posn - = initial_guess__Kerr_Kerr__z_posn[hn]; - AH_data.initial_guess_info.Kerr_Kerr_info.mass - = initial_guess__Kerr_Kerr__mass[hn]; - AH_data.initial_guess_info.Kerr_Kerr_info.spin - = initial_guess__Kerr_Kerr__spin[hn]; - // ... Kerr/Kerr-Schild - AH_data.initial_guess_info.Kerr_KerrSchild_info.x_posn - = initial_guess__Kerr_KerrSchild__x_posn[hn]; - AH_data.initial_guess_info.Kerr_KerrSchild_info.y_posn - = initial_guess__Kerr_KerrSchild__y_posn[hn]; - AH_data.initial_guess_info.Kerr_KerrSchild_info.z_posn - = initial_guess__Kerr_KerrSchild__z_posn[hn]; - AH_data.initial_guess_info.Kerr_KerrSchild_info.mass - = initial_guess__Kerr_KerrSchild__mass[hn]; - AH_data.initial_guess_info.Kerr_KerrSchild_info.spin - = initial_guess__Kerr_KerrSchild__spin[hn]; - // ... coordinate sphere - AH_data.initial_guess_info.coord_sphere_info.x_center - = initial_guess__coord_sphere__x_center[hn]; - AH_data.initial_guess_info.coord_sphere_info.y_center - = initial_guess__coord_sphere__y_center[hn]; - AH_data.initial_guess_info.coord_sphere_info.z_center - = initial_guess__coord_sphere__z_center[hn]; - AH_data.initial_guess_info.coord_sphere_info.radius - = initial_guess__coord_sphere__radius[hn]; - // ... coordinate ellipsoid - AH_data.initial_guess_info.coord_ellipsoid_info.x_center - = initial_guess__coord_ellipsoid__x_center[hn]; - AH_data.initial_guess_info.coord_ellipsoid_info.y_center - = initial_guess__coord_ellipsoid__y_center[hn]; - AH_data.initial_guess_info.coord_ellipsoid_info.z_center - = initial_guess__coord_ellipsoid__z_center[hn]; - AH_data.initial_guess_info.coord_ellipsoid_info.x_radius - = initial_guess__coord_ellipsoid__x_radius[hn]; - AH_data.initial_guess_info.coord_ellipsoid_info.y_radius - = initial_guess__coord_ellipsoid__y_radius[hn]; - AH_data.initial_guess_info.coord_ellipsoid_info.z_radius - = initial_guess__coord_ellipsoid__z_radius[hn]; + set_initial_guess_parameters(AH_data, hn, /* irrelevant here; leave at zero */0, 0, 0); } AH_data.search_flag = false; |