Annotation of OpenXM_contrib/PHC/Ada/Continuation/directions_of_solution_paths.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;
! 6: with Standard_Floating_VecVecs; use Standard_Floating_VecVecs;
! 7:
! 8: package Directions_of_Solution_Paths is
! 9:
! 10: -- DESCRIPTION :
! 11: -- This package provides some routines to estimate numerically the direction
! 12: -- of a solution path diverging to a solution of a face system.
! 13:
! 14: procedure Affine_Update_Direction
! 15: ( t,prev_t,target : in Complex_Number;
! 16: x,prevx : in Standard_Complex_Vectors.Vector;
! 17: prevdls,prevstep : in out double_float;
! 18: prevdiff,v : in out Standard_Floating_Vectors.Vector );
! 19:
! 20: -- DESCRIPTION :
! 21: -- Computes an approximation of the direction of the path.
! 22: -- When prevdls /= 0.0, a second-order extrapolation will be applied.
! 23:
! 24: -- ON ENTRY :
! 25: -- t current value of continuation parameter;
! 26: -- prev_t previous value of continuation parameter;
! 27: -- target target value of continuation parameter;
! 28: -- x current solution vector;
! 29: -- prevx solution vector for previous value of continuation parameter;
! 30: -- prevdls previous difference of the logs of distances to target;
! 31: -- prevstep previous step size;
! 32: -- prevdiff previous difference of the logs of the solution vectors;
! 33: -- v current approximate direction of the path.
! 34:
! 35: procedure Projective_Update_Direction
! 36: ( t,prev_t,target : in Complex_Number;
! 37: x,prevx : in Standard_Complex_Vectors.Vector;
! 38: prevdls,prevstep : in out double_float;
! 39: prevdiff,v : in out Standard_Floating_Vectors.Vector );
! 40:
! 41: -- DESCRIPTION :
! 42: -- Does the same as the other procedure, under the assumption that the
! 43: -- solution vector lies in projective space.
! 44:
! 45: -- REQUIRED :
! 46: -- The homogenization variable is the last element of the solution vector.
! 47:
! 48: procedure Affine_Update_Direction
! 49: ( r,m,estm,cntm : in out natural; thresm : in natural;
! 50: er : in out integer; t,target : in Complex_Number;
! 51: x : in Standard_Complex_Vectors.Vector;
! 52: dt,s,logs : in out Standard_Floating_Vectors.Vector;
! 53: logx,wvl0,wvl1,wvltmp : in out VecVec;
! 54: v,diferr : in out Standard_Floating_Vectors.Vector;
! 55: error : in out double_float );
! 56:
! 57: procedure Affine_Update_Direction
! 58: ( file : in file_type;
! 59: r,m,estm,cntm : in out natural; thresm : in natural;
! 60: er : in out integer; t,target : in Complex_Number;
! 61: x : in Standard_Complex_Vectors.Vector;
! 62: dt,s,logs : in out Standard_Floating_Vectors.Vector;
! 63: logx,wvl0,wvl1,wvltmp : in out VecVec;
! 64: v,diferr : in out Standard_Floating_Vectors.Vector;
! 65: error : in out double_float );
! 66:
! 67: -- DESCRIPTION :
! 68: -- Higher-order extrapolation method that produces direction with error of
! 69: -- order (t-target)^r, when the solution path converges to regular solution
! 70: -- in affine space.
! 71:
! 72: -- REQUIRED : s'range = logs'range = logx'range = 0..max,
! 73: -- wvl'range = 1..max, logx(i)'range = wvl'range(i) = 1..n,
! 74: -- diferr'range = 0..max, max >= 1, equals maximal order of extrapolator.
! 75:
! 76: -- ON ENTRY :
! 77: -- file to write intermediate data, if not submitted, no output;
! 78: -- r last meaningful entry in logx and logs;
! 79: -- m current value for multiplicity;
! 80: -- estm current estimate for multiplicity;
! 81: -- cntm number of consecutive times estm has been guessed;
! 82: -- thresm threshold for changing the m to estm;
! 83: -- er order of extrapolator on the errors;
! 84: -- t current value of continuation parameter;
! 85: -- target target value of continuation parameter;
! 86: -- x current solution for t;
! 87: -- dt consecutive distances of t-values to target value;
! 88: -- s consecutive s-values, with proper value for m;
! 89: -- logs logarithms of previous values (target - t);
! 90: -- logx logarithms of previous solution vectors;
! 91: -- wvl0 previous consecutive estimates for direction;
! 92: -- wvl1 current consecutive estimates for direction;
! 93: -- wvltmp work space for updating wvl0 and wvl1.
! 94:
! 95: -- ON RETURN :
! 96: -- r if r < logs'last, then r will be raised by one,
! 97: -- otherwise r remains unchanged;
! 98: -- s updated distance vector;
! 99: -- logs updated vector of logarithms of distances to target;
! 100: -- logx updated vector of solution vectors;
! 101: -- wvl0 updated previous consecutive estimates, equals wvl1;
! 102: -- wvl1 updated current consecutive estimates for direction;
! 103: -- v estimated direction of path;
! 104: -- diferr norms of consecutive differences of estimates for v;
! 105: -- error norm of errorv;
! 106:
! 107: procedure Projective_Update_Direction
! 108: ( r,m,estm,cntm : in out natural; thresm : in natural;
! 109: er : in out integer; t,target : in Complex_Number;
! 110: x : in Standard_Complex_Vectors.Vector;
! 111: dt,s,logs : in out Standard_Floating_Vectors.Vector;
! 112: logx : in out VecVec;
! 113: prevv,v : in out Standard_Floating_Vectors.Vector;
! 114: error : in out double_float );
! 115:
! 116: procedure Projective_Update_Direction
! 117: ( file : in file_type;
! 118: r,m,estm,cntm : in out natural; thresm : in natural;
! 119: er : in out integer; t,target : in Complex_Number;
! 120: x : in Standard_Complex_Vectors.Vector;
! 121: dt,s,logs : in out Standard_Floating_Vectors.Vector;
! 122: logx : in out VecVec;
! 123: prevv,v : in out Standard_Floating_Vectors.Vector;
! 124: error : in out double_float );
! 125:
! 126: -- DESCRIPTION :
! 127: -- Higher-order extrapolation method that produces direction with error of
! 128: -- order (t-target)^r, when the solution path converges to regular solution
! 129: -- in affine space.
! 130:
! 131: -- REQUIRED :
! 132: -- x(x'last) contains value of variable introduced to homogenize the system.
! 133:
! 134: end Directions_of_Solution_Paths;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>