File: [local] / OpenXM_contrib / PHC / Ada / Continuation / path_trackers.ads (download)
Revision 1.1.1.1 (vendor branch), Sun Oct 29 17:45:22 2000 UTC (23 years, 8 months ago) by maekawa
Branch: PHC, MAIN
CVS Tags: v2, maekawa-ipv6, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, HEAD Changes since 1.1: +0 -0
lines
Import the second public release of PHCpack.
OKed by Jan Verschelde.
|
with text_io; use text_io;
with Standard_Floating_Numbers; use Standard_Floating_Numbers;
with Standard_Complex_Numbers; use Standard_Complex_Numbers;
with Standard_Floating_Vectors;
with Standard_Complex_Vectors; use Standard_Complex_Vectors;
with Standard_Complex_Matrices; use Standard_Complex_Matrices;
with Standard_Complex_Solutions; use Standard_Complex_Solutions;
with Continuation_Data; use Continuation_Data;
package Path_Trackers is
-- DESCRIPTION :
-- This package offers some routines for tracking solution paths,
-- using an increment-and-fix predictor-corrector method.
-- The following options can be made :
-- (Linear,Circular)
-- A linear path tracker takes t from a starting to a target value.
-- For computing winding numbers, a circular path tracker is needed.
-- (Single,Multiple)
-- A single path tracker only deals with one path at a time.
-- A multiple path tracker follows more than one path when it is called.
-- (Normal,Conditioned)
-- A normal path tracker does not compute an estimate for the inverse of
-- the condition number of the Jacobian matrix. This additional work
-- is done by a conditioned path tracker.
-- (Silent,Reporting)
-- A silent path tracker does not produce any output on file.
-- A reporting path tracker allows to put intermediate results on file.
-- By combining these options, the following path trackers are provided:
-- Linear_Single_Normal_Silent_Continue
-- Linear_Single_Normal_Reporting_Continue
-- Linear_Single_Conditioned_Silent_Continue
-- Linear_Single_Conditioned_Reporting_Continue
-- Linear_Multiple_Normal_Silent_Continue
-- Linear_Multiple_Normal_Reporting_Continue
-- Linear_Multiple_Conditioned_Silent_Continue
-- Linear_Multiple_Conditioned_Reporting_Continue
-- Circular_Single_Normal_Reporting_Continue
-- Circular_Single_Conditioned_Reporting_Continue
-- LINEAR PATH FOLLOWING FOR ONE PATH :
generic
with function Norm ( x : Vector ) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Linear_Single_Normal_Silent_Continue
( s : in out Solu_Info; target : in Complex_Number;
tol : in double_float; proj : in boolean;
p : in Pred_Pars; c : in Corr_Pars );
generic
with function Norm ( x : Vector ) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Linear_Single_Normal_Reporting_Continue
( file : in file_type; s : in out Solu_Info;
target : in Complex_Number; tol : in double_float;
proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
generic
with function Norm ( x : Vector ) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Linear_Single_Conditioned_Silent_Continue
( s : in out Solu_Info; target : in Complex_Number;
tol : in double_float; proj : in boolean;
rtoric : in natural;
v : in out Standard_Floating_Vectors.Link_to_Vector;
errorv : in out double_float;
p : in Pred_Pars; c : in Corr_Pars );
generic
with function Norm ( x : Vector) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Linear_Single_Conditioned_Reporting_Continue
( file : in file_type; s : in out Solu_Info;
target : in Complex_Number; tol : in double_float;
proj : in boolean; rtoric : in natural;
v : in out Standard_Floating_Vectors.Link_to_Vector;
errorv : in out double_float;
p : in Pred_Pars; c : in Corr_Pars );
-- DESCRIPTION :
-- This routine follows a path of solutions of the system
-- H(x,t) = 0, with t : t ---> target.
-- An increment-and-fix path-following technique is applied.
-- ON ENTRY :
-- file to write intermediate results on;
-- s start solution and initial value of t;
-- target target value of the continuation parameter;
-- tol tolerance to decide when two double_floats are the same;
-- proj when perpendicular-projective corrector has to be used;
-- rtoric order of extrapolation for computation of path directions;
-- v direction of toric compactificiation, null when (rtoric = 0);
-- errorv error on the current direction;
-- p parameters for the predictor;
-- c parameters for the corrector.
-- ON RETURN :
-- s the computed solution of H(x,t) = 0;
-- v direction of the compactification, when rtoric > 0;
-- errorv difference with previously computed direction.
-- LINEAR PATH FOLLOWING FOR A NUMBER OF PATHS :
generic
with function Norm ( x : Vector ) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Linear_Multiple_Normal_Silent_Continue
( s : in out Solu_Info_Array;
target : in Complex_Number; tol,dist_sols : in double_float;
proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
generic
with function Norm ( x : Vector ) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Linear_Multiple_Normal_Reporting_Continue
( file : in file_type; s : in out Solu_Info_Array;
target : in Complex_Number; tol,dist_sols : in double_float;
proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
generic
with function Norm ( x : Vector ) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Linear_Multiple_Conditioned_Silent_Continue
( s : in out Solu_Info_Array;
target : in Complex_Number; tol,dist_sols : in double_float;
proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
generic
with function Norm ( x : Vector ) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Linear_Multiple_Conditioned_Reporting_Continue
( file : in file_type; s : in out Solu_Info_Array;
target : in Complex_Number; tol,dist_sols : in double_float;
proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
-- DESCRIPTION :
-- This routine follows simultaneously a number of paths in order
-- to avoid clustering of solutions.
-- ON ENTRY :
-- file to write intermediate results on;
-- s array of start solutions, all for the same t;
-- target target value of the continuation parameters;
-- tol tolerance to decide when two double_floats are the same;
-- dist_sols distance to be kept between the solutions;
-- proj indicates whether perpendicular-projective corrector has
-- to be used or not;
-- p parameters for the predictor;
-- c parameters for the corrector.
-- ON RETURN :
-- s the computed solutions of H(x,t) = 0.
-- CIRCULAR PATH FOLLOWING FOR ONE PATH :
generic
with function Norm ( x : Vector ) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Circular_Single_Normal_Reporting_Continue
( file : in file_type; s : in out Solu_Info;
target : in Complex_Number; tol,epslop : in double_float;
wc : out natural; max_wc : in natural;
sum,all_sum : out Vector;
proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
generic
with function Norm ( x : Vector ) return double_float;
with function H ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Vector;
with function dH ( x : Vector; t : Complex_Number ) return Matrix;
procedure Circular_Single_Conditioned_Reporting_Continue
( file : in file_type; s : in out Solu_Info;
target : in Complex_Number; tol,epslop : in double_float;
wc : out natural; max_wc : in natural;
sum,all_sum : out Vector;
proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
-- DESCRIPTION :
-- This routine follows a path of solutions of the system
-- H(x,t) = 0, with t circuling around the target.
-- An increment-and-fix path-following technique is applied.
-- ON ENTRY :
-- file to write intermediate results on;
-- s array of start solutions, all for the same t;
-- target target value of the continuation parameters;
-- tol tolerance to decide when two floats are the same;
-- epslop tolerance to decide when w(0) = w(2*PI*wc);
-- max_wc maximum bound for winding number;
-- proj indicates whether perpendicular-projective corrector has
-- to be used or not;
-- p parameters for the predictor;
-- c parameters for the corrector.
-- ON RETURN :
-- s the computed solution of H(x,t) = 0;
-- wc estimated cycle number;
-- sum is the trapezium sum over the equidistant points;
-- all_sum is the trapezium sum over all the points.
end Path_Trackers;