[BACK]Return to path_trackers.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Continuation

Annotation of OpenXM_contrib/PHC/Ada/Continuation/path_trackers.ads, Revision 1.1.1.1

1.1       maekawa     1: with text_io;                            use text_io;
                      2: with Standard_Floating_Numbers;          use Standard_Floating_Numbers;
                      3: with Standard_Complex_Numbers;           use Standard_Complex_Numbers;
                      4: with Standard_Floating_Vectors;
                      5: with Standard_Complex_Vectors;           use Standard_Complex_Vectors;
                      6: with Standard_Complex_Matrices;          use Standard_Complex_Matrices;
                      7: with Standard_Complex_Solutions;         use Standard_Complex_Solutions;
                      8: with Continuation_Data;                  use Continuation_Data;
                      9:
                     10: package Path_Trackers is
                     11:
                     12: -- DESCRIPTION :
                     13: --   This package offers some routines for tracking solution paths,
                     14: --   using an increment-and-fix predictor-corrector method.
                     15:
                     16: --   The following options can be made :
                     17: --    (Linear,Circular)
                     18: --       A linear path tracker takes t from a starting to a target value.
                     19: --       For computing winding numbers, a circular path tracker is needed.
                     20: --    (Single,Multiple)
                     21: --       A single path tracker only deals with one path at a time.
                     22: --       A multiple path tracker follows more than one path when it is called.
                     23: --    (Normal,Conditioned)
                     24: --       A normal path tracker does not compute an estimate for the inverse of
                     25: --       the condition number of the Jacobian matrix.  This additional work
                     26: --       is done by a conditioned path tracker.
                     27: --    (Silent,Reporting)
                     28: --       A silent path tracker does not produce any output on file.
                     29: --       A reporting path tracker allows to put intermediate results on file.
                     30:
                     31: --   By combining these options, the following path trackers are provided:
                     32:
                     33: --     Linear_Single_Normal_Silent_Continue
                     34: --     Linear_Single_Normal_Reporting_Continue
                     35: --     Linear_Single_Conditioned_Silent_Continue
                     36: --     Linear_Single_Conditioned_Reporting_Continue
                     37: --     Linear_Multiple_Normal_Silent_Continue
                     38: --     Linear_Multiple_Normal_Reporting_Continue
                     39: --     Linear_Multiple_Conditioned_Silent_Continue
                     40: --     Linear_Multiple_Conditioned_Reporting_Continue
                     41: --     Circular_Single_Normal_Reporting_Continue
                     42: --     Circular_Single_Conditioned_Reporting_Continue
                     43:
                     44: -- LINEAR PATH FOLLOWING FOR ONE PATH :
                     45:
                     46:   generic
                     47:
                     48:     with function Norm ( x : Vector ) return double_float;
                     49:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                     50:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                     51:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                     52:
                     53:   procedure Linear_Single_Normal_Silent_Continue
                     54:                 ( s : in out Solu_Info; target : in Complex_Number;
                     55:                   tol : in double_float; proj : in boolean;
                     56:                   p : in Pred_Pars; c : in Corr_Pars );
                     57:
                     58:   generic
                     59:
                     60:     with function Norm ( x : Vector ) return double_float;
                     61:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                     62:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                     63:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                     64:
                     65:   procedure Linear_Single_Normal_Reporting_Continue
                     66:                 ( file : in file_type; s : in out Solu_Info;
                     67:                   target : in Complex_Number; tol : in double_float;
                     68:                   proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
                     69:
                     70:   generic
                     71:
                     72:     with function Norm ( x : Vector ) return double_float;
                     73:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                     74:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                     75:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                     76:
                     77:   procedure Linear_Single_Conditioned_Silent_Continue
                     78:                 ( s : in out Solu_Info; target : in Complex_Number;
                     79:                   tol : in double_float; proj : in boolean;
                     80:                   rtoric : in natural;
                     81:                   v : in out Standard_Floating_Vectors.Link_to_Vector;
                     82:                   errorv : in out double_float;
                     83:                   p : in Pred_Pars; c : in Corr_Pars );
                     84:
                     85:   generic
                     86:
                     87:     with function Norm ( x : Vector) return double_float;
                     88:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                     89:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                     90:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                     91:
                     92:   procedure Linear_Single_Conditioned_Reporting_Continue
                     93:                 ( file : in file_type; s : in out Solu_Info;
                     94:                   target : in Complex_Number; tol : in double_float;
                     95:                   proj : in boolean; rtoric : in natural;
                     96:                   v : in out Standard_Floating_Vectors.Link_to_Vector;
                     97:                   errorv : in out double_float;
                     98:                   p : in Pred_Pars; c : in Corr_Pars );
                     99:
                    100:   -- DESCRIPTION :
                    101:   --   This routine follows a path of solutions of the system
                    102:   --   H(x,t) = 0, with t : t ---> target.
                    103:   --   An increment-and-fix path-following technique is applied.
                    104:
                    105:   -- ON ENTRY :
                    106:   --   file       to write intermediate results on;
                    107:   --   s          start solution and initial value of t;
                    108:   --   target     target value of the continuation parameter;
                    109:   --   tol        tolerance to decide when two double_floats are the same;
                    110:   --   proj       when perpendicular-projective corrector has to be used;
                    111:   --   rtoric     order of extrapolation for computation of path directions;
                    112:   --   v          direction of toric compactificiation, null when (rtoric = 0);
                    113:   --   errorv     error on the current direction;
                    114:   --   p          parameters for the predictor;
                    115:   --   c          parameters for the corrector.
                    116:
                    117:   -- ON RETURN :
                    118:   --   s          the computed solution of H(x,t) = 0;
                    119:   --   v          direction of the compactification, when rtoric > 0;
                    120:   --   errorv     difference with previously computed direction.
                    121:
                    122: -- LINEAR PATH FOLLOWING FOR A NUMBER OF PATHS :
                    123:
                    124:   generic
                    125:
                    126:     with function Norm ( x : Vector ) return double_float;
                    127:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                    128:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                    129:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                    130:
                    131:   procedure Linear_Multiple_Normal_Silent_Continue
                    132:                 ( s : in out Solu_Info_Array;
                    133:                   target : in Complex_Number; tol,dist_sols : in double_float;
                    134:                   proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
                    135:
                    136:   generic
                    137:
                    138:     with function Norm ( x : Vector ) return double_float;
                    139:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                    140:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                    141:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                    142:
                    143:   procedure Linear_Multiple_Normal_Reporting_Continue
                    144:                 ( file : in file_type; s : in out Solu_Info_Array;
                    145:                   target : in Complex_Number; tol,dist_sols : in double_float;
                    146:                   proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
                    147:
                    148:   generic
                    149:
                    150:     with function Norm ( x : Vector ) return double_float;
                    151:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                    152:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                    153:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                    154:
                    155:   procedure Linear_Multiple_Conditioned_Silent_Continue
                    156:                 ( s : in out Solu_Info_Array;
                    157:                   target : in Complex_Number; tol,dist_sols : in double_float;
                    158:                   proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
                    159:
                    160:   generic
                    161:
                    162:     with function Norm ( x : Vector ) return double_float;
                    163:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                    164:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                    165:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                    166:
                    167:   procedure Linear_Multiple_Conditioned_Reporting_Continue
                    168:                 ( file : in file_type; s : in out Solu_Info_Array;
                    169:                   target : in Complex_Number; tol,dist_sols : in double_float;
                    170:                   proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
                    171:
                    172:   -- DESCRIPTION :
                    173:   --   This routine follows simultaneously a number of paths in order
                    174:   --   to avoid clustering of solutions.
                    175:
                    176:   -- ON ENTRY :
                    177:   --   file       to write intermediate results on;
                    178:   --   s          array of start solutions, all for the same t;
                    179:   --   target     target value of the continuation parameters;
                    180:   --   tol        tolerance to decide when two double_floats are the same;
                    181:   --   dist_sols  distance to be kept between the solutions;
                    182:   --   proj       indicates whether perpendicular-projective corrector has
                    183:   --              to be used or not;
                    184:   --   p          parameters for the predictor;
                    185:   --   c          parameters for the corrector.
                    186:
                    187:   -- ON RETURN :
                    188:   --   s          the computed solutions of H(x,t) = 0.
                    189:
                    190: -- CIRCULAR PATH FOLLOWING FOR ONE PATH :
                    191:
                    192:   generic
                    193:
                    194:     with function Norm ( x : Vector ) return double_float;
                    195:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                    196:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                    197:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                    198:
                    199:   procedure Circular_Single_Normal_Reporting_Continue
                    200:                 ( file : in file_type; s : in out Solu_Info;
                    201:                   target : in Complex_Number; tol,epslop : in double_float;
                    202:                   wc : out natural; max_wc : in natural;
                    203:                   sum,all_sum : out Vector;
                    204:                   proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
                    205:
                    206:   generic
                    207:
                    208:     with function Norm ( x : Vector ) return double_float;
                    209:     with function H  ( x : Vector; t : Complex_Number ) return Vector;
                    210:     with function dH ( x : Vector; t : Complex_Number ) return Vector;
                    211:     with function dH ( x : Vector; t : Complex_Number ) return Matrix;
                    212:
                    213:   procedure Circular_Single_Conditioned_Reporting_Continue
                    214:                 ( file : in file_type; s : in out Solu_Info;
                    215:                   target : in Complex_Number; tol,epslop : in double_float;
                    216:                   wc : out natural; max_wc : in natural;
                    217:                   sum,all_sum : out Vector;
                    218:                   proj : in boolean; p : in Pred_Pars; c : in Corr_Pars );
                    219:
                    220:
                    221:   -- DESCRIPTION :
                    222:   --   This routine follows a path of solutions of the system
                    223:   --   H(x,t) = 0, with t circuling around the target.
                    224:   --   An increment-and-fix path-following technique is applied.
                    225:
                    226:   -- ON ENTRY :
                    227:   --   file       to write intermediate results on;
                    228:   --   s          array of start solutions, all for the same t;
                    229:   --   target     target value of the continuation parameters;
                    230:   --   tol        tolerance to decide when two floats are the same;
                    231:   --   epslop     tolerance to decide when w(0) = w(2*PI*wc);
                    232:   --   max_wc     maximum bound for winding number;
                    233:   --   proj       indicates whether perpendicular-projective corrector has
                    234:   --              to be used or not;
                    235:   --   p          parameters for the predictor;
                    236:   --   c          parameters for the corrector.
                    237:
                    238:   -- ON RETURN :
                    239:   --   s          the computed solution of H(x,t) = 0;
                    240:   --   wc         estimated cycle number;
                    241:   --   sum        is the trapezium sum over the equidistant points;
                    242:   --   all_sum    is the trapezium sum over all the points.
                    243:
                    244: end Path_Trackers;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>