with Standard_Floating_Numbers; use Standard_Floating_Numbers;
with Continuation_Data; use Continuation_Data;
package Continuation_Parameters is
-- DESCRIPTION :
-- This package contains all important parameters and the default values.
-- GLOBAL MONITOR :
condition : natural := 0; -- 1
-- low = smooth paths, high = difficult path
block_size : natural := 1; -- 2
-- number of paths tracked simultaneously:
-- sequential, parallel or a combination of both.
max_steps : natural := 500*(condition+1); -- 3
-- maximum number of steps along a path
start_end_game : double_float := 0.1; -- 4
-- distance from target to start the end game
endext_order : natural := 0; -- 5
-- order of extrapolator in polyhedral end game
max_reruns : natural := condition + 1; -- 6
-- maximum number of re-runs allowed
-- STEP CONTROL (PREDICTOR) :
predictor_path_type : natural := 0; -- 7
predictor_endg_type : natural := 0; -- 8
-- predictor types:
-- 0 : secant for x, real for t;
-- 1 : secant for x, complex for t;
-- 2 : secant for x, geometric for t;
-- 3 : tangens for x, real for t;
-- 4 : tangens for x, complex for t;
-- 5 : tangens for x, geometric for t;
-- 6 : Hermite for x, real for t;
min_path_step_size : double_float := 10.0**(-6 - condition/4); -- 9
min_endg_step_size : double_float := 10.0**(-8 - condition/4); -- 10
-- minimum step size along a path and at end of path
max_path_step_size : double_float := 0.1/(double_float(condition+1)); -- 11
max_endg_step_size : double_float := 0.1/(double_float(condition+2)); -- 12
-- maximum step size along a path and at end of path
reduction_path_factor : double_float := 0.70; -- 13
reduction_endg_factor : double_float := 0.50; -- 14
-- reduction factor for step size along a path and at end
expansion_path_factor : double_float := 1.25; -- 15
expansion_endg_factor : double_float := 1.10; -- 16
-- expansion factor for step size
success_path_steps : natural := 1 + 2*condition; -- 17
success_endg_steps : natural := 1 + 4*condition; -- 18
-- threshold on number of successful steps
-- before expanding step size
power_of_t : positive := 1; -- power of t in the (polyhedral) homotopy
-- PATH CLOSENESS (CORRECTOR) :
max_path_iter : natural := 4; -- 19
max_endg_iter : natural := 4; -- 20
-- maximum number of iterations for one corrector step
-- along the path and at the end of the path
relative_path_residual : double_float := 10.0**(-9 - condition); -- 21
relative_endg_residual : double_float := 10.0**(-11 - condition); -- 22
absolute_path_residual : double_float := 10.0**(-9 - condition); -- 23
absolute_endg_residual : double_float := 10.0**(-11 - condition); -- 24
-- desired precision for residuals along the path and at end
-- |F(x)| < *_residual, once relative and once absolute
relative_path_correction : double_float := 10.0**(-9 - condition); -- 25
relative_endg_correction : double_float := 10.0**(-11 - condition); -- 26
absolute_path_correction : double_float := 10.0**(-9 - condition); -- 27
absolute_endg_correction : double_float := 10.0**(-11 - condition); -- 28
-- desired precision for corrections along the path and at end
-- |delta(x)| < *_correction, once relative and once absolute
-- SOLUTIONS (TOLERANCES) :
tol_path_inverse_condition : double_float := 10.0**(-4); -- 29
tol_endg_inverse_condition : double_float := 10.0**(-12); -- 30
-- tolerance for inverse condition of jacobian to
-- decide whether solution is singular or not
tol_path_distance : double_float := 10.0**(-4); -- 31
tol_endg_distance : double_float := 10.0**(-12); -- 32
-- tolerance for two solutions x1, x2 to be clustered,
-- when |x1(k) - x2(k)| < tol_*_distance, for all k
tol_path_at_infinity : double_float := 10.0**4; -- 33
tol_endg_at_infinity : double_float := 10.0**12; -- 34
-- tolerance for a solution x to lie a infinity,
-- when |x(k)| > tol_at_infinity, for a certain k
-- TUNING OF THE PARAMETERS :
procedure Tune ( estimate_for_condition : in natural );
-- DESCRIPTION :
-- Given an estimate for the condition of the homotopy, parameters
-- will be set, according to the formulas in the defaults.
procedure Tune_Endgm_Pred ( extrapolation_order : in natural );
-- DESCRIPTION :
-- Determines the settings for the predictor in the end game,
-- depending on the extrapolation order.
-- CREATING PARAMETER SETS :
function Create_for_Path return Pred_Pars;
function Create_End_Game return Pred_Pars;
function Create_for_Path return Corr_Pars;
function Create_End_Game return Corr_Pars;
-- DESCRIPTION :
-- Given the values for the parameters, sets of predictor and
-- corrector parameters will be created.
end Continuation_Parameters;