[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     ! 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>