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

File: [local] / OpenXM_contrib / PHC / Ada / Schubert / deformation_posets.ads (download)

Revision 1.1.1.1 (vendor branch), Sun Oct 29 17:45:32 2000 UTC (23 years, 6 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_Natural_Vectors;
with Standard_Complex_Vectors;
with Standard_Complex_VecMats;           use Standard_Complex_VecMats;
with Standard_Complex_Poly_Matrices;
with Brackets;                           use Brackets;
with Localization_Posets;                use Localization_Posets;

package Deformation_Posets is

-- DESCRIPTION :
--   This package is the continuous analogue of "Localization_Posets".

-- DATA STRUCTURES :

  type Array_of_VecMats is array ( integer range <> ) of Link_to_VecMat;
  type Link_to_Array_of_VecMats is access Array_of_VecMats;
  type Array_of_Array_of_VecMats is
    array ( integer range <> ) of Link_to_Array_of_VecMats;

  type Duration_Array is array ( integer range <> ) of duration;

-- CREATORS :

  function Create ( index_poset : Array_of_Array_of_Nodes )
                  return Array_of_Array_of_VecMats;

  -- DESCRIPTION :
  --   The array on return mirrors the index poset in the following sense:
  --     res(i)(j)'length = poset(i)(j).roco, if roco > 0,
  --     res(i)(j) = null, if roco = 0.

-- SELECTOR :

  function Empty ( poset : Array_of_Array_of_VecMats; level,label : natural )
                 return boolean;

  -- DESCRIPTION :
  --   Returns true if poset(level)(label) is a vector of null pointers.

-- ANALOGUES TO ROOT COUNTERS :

  procedure Solve ( file : in file_type; n : in natural;
                    poset : in out Array_of_Array_of_VecMats; nd : in Node;
                    planes : in VecMat; report,outlog : in boolean;
                    npaths : in out Standard_Natural_Vectors.Vector;
                    timings : in out Duration_Array );

  -- DESCRIPTION :
  --   Computes the p-planes that intersect with the given m-planes.
  --   This is the solver for hypersurface intersection conditions.

  -- ON ENTRY :
  --   file         output file for intermediate results and logs;
  --   n            dimension of the working space, equals m+p;
  --   poset        deformation poset, properly created from index poset;
  --   nd           target root node from the localization poset;
  --   planes       input planes in general position;
  --   report       indicates if reporting path tracker is needed;
  --   outlog       flag to write homotopies on file if set to true.

  -- ON RETURN :
  --   poset        poset(nd.level)(nd.label) contains all p-planes that
  --                intersect nontrivially with planes(1..nd.level);
  --   npaths       number of paths traced at each level;
  --   timings      CPU user time at each level.

  procedure One_Solve
                  ( file : in file_type; n : in natural; cod : in Bracket;
                    poset : in out Array_of_Array_of_VecMats; nd : in Node;
                    planes : in VecMat; report,outlog : in boolean;
                    npaths : in out Standard_Natural_Vectors.Vector;
                    timings : in out Duration_Array );

  -- DESCRIPTION :
  --   Computes the p-planes that intersect with the given planes of
  --   dimension (m+1-cod(i)), for i in cod'range.
  --   There is only one moving equation in the homotopies.

  -- REQUIRED :
  --   The localization poset has been built either by consistently
  --   incrementing the top or by decrementing the bottom pivots.
  --   The co-dimension conditions are not interlaced.

  -- ON ENTRY :
  --   file         output file for intermediate results and logs;
  --   n            dimension of the working space, equals m+p;
  --   cod          co-dimensions of input planes, dim(L_i) = m+1-cod(i)
  --   poset        deformation poset, properly created from index poset;
  --   nd           target root node from the localization poset;
  --   planes       input planes L_i in general position;
  --   report       indicates if reporting path tracker is needed;
  --   outlog       flag to write homotopies on file if set to true. 

  -- ON RETURN :
  --   poset        poset(nd.level)(nd.label) contains all p-planes that
  --                intersect nontrivially with planes(1..nd.level);
  --   npaths       number of paths traced at each level;
  --   timings      CPU user time at each level.

  procedure Solve ( file : in file_type; n : in natural; cod : in Bracket;
                    poset : in out Array_of_Array_of_VecMats; nd : in Node;
                    planes : in VecMat; report,outlog : in boolean;
                    npaths : in out Standard_Natural_Vectors.Vector;
                    timings : in out Duration_Array );

  -- DESCRIPTION :
  --   Computes the p-planes that intersect with the given planes of
  --   dimension (m+1-cod(i)), for i in cod'range.
  --   The co-dimension conditions are interlaced here.

  -- ON ENTRY :
  --   file         output file for intermediate results and logs;
  --   n            dimension of the working space, equals m+p;
  --   cod          co-dimensions of input planes, dim(L_i) = m+1-cod(i)
  --   poset        deformation poset, properly created from index poset;
  --   nd           target root node from the localization poset;
  --   planes       input planes L_i in general position;
  --   report       indicates if reporting path tracker is needed;
  --   outlog       flag to write homotopies on file if set to true.

  -- ON RETURN :
  --   poset        poset(nd.level)(nd.label) contains all p-planes that
  --                intersect nontrivially with planes(1..nd.level);
  --   npaths       number of paths traced at each level;
  --   timings      CPU user time at each level.

  procedure Solve ( file : in file_type; n,q : in natural;
                    poset : in out Array_of_Array_of_VecMats; nd : in Node;
                    planes : in VecMat; s : in Standard_Complex_Vectors.Vector;
                    report,outlog : in boolean;
                    npaths : in out Standard_Natural_Vectors.Vector;
                    timings : in out Duration_Array );

  -- DESCRIPTION :
  --   Computes the q-curve that produces p-planes in n-dimensional space
  --   that intersect with the given m-planes at specific s-values.
  --   This is the quantum analogue to the hypersurface solver.

  -- ON ENTRY :
  --   file         output file for intermediate results and logs;
  --   n            dimension of the working space, equals m+p;
  --   q            degree of the map;
  --   poset        deformation poset, properly created from index poset;
  --   nd           target root node from the localization poset;
  --   planes       input m-planes in general position;
  --   s            interpolation points to meet the input m-planes;
  --   report       indicates if reporting path tracker is needed.
  --   outlog       flag to write homotopies on file if set to true.

  -- ON RETURN :
  --   poset        poset(nd.level)(nd.label) contains coefficients
  --                of all curves that intersect nontrivially with
  --                planes(1..nd.level) at the specified s-values.
  --   npaths       number of paths traced at each level;
  --   timings      CPU user times at each level.

  procedure One_Solve
                  ( file : in file_type; n,q : in natural; cod : in Bracket;
                    poset : in out Array_of_Array_of_VecMats; nd : in Node;
                    planes : in VecMat; s : in Standard_Complex_Vectors.Vector;
                    report,outlog : in boolean;
                    npaths : in out Standard_Natural_Vectors.Vector;
                    timings : in out Duration_Array );

  -- DESCRIPTION :
  --   This is the quantum analogue to the other "One_Solve".
  --   Computes the p-planes that intersect with the given planes of
  --   dimension (m+1-cod(i)), for i in cod'range.
  --   There is only one moving equation in the homotopies.

  -- REQUIRED :
  --   The localization poset has been built either by consistently
  --   incrementing the top or by decrementing the bottom pivots.
  --   The co-dimension conditions are not interlaced.

  -- ON ENTRY :
  --   file         output file for intermediate results and logs;
  --   n            dimension of the working space, equals m+p;
  --   q            degree of the map;
  --   cod          co-dimensions of input planes, dim(L_i) = m+1-cod(i)
  --   poset        deformation poset, properly created from index poset;
  --   nd           target root node from the localization poset;
  --   planes       input planes L_i in general position;
  --   s            interpolation points to meet the input planes;
  --   report       indicates if reporting path tracker is needed;
  --   outlog       flag to write homotopies on file if set to true. 

  -- ON RETURN :
  --   poset        poset(nd.level)(nd.label) contains all p-planes that
  --                intersect nontrivially with planes(1..nd.level);
  --   npaths       number of paths traced at each level;
  --   timings      CPU user time at each level.

  procedure Solve ( file : in file_type; n,q : in natural; cod : in Bracket;
                    poset : in out Array_of_Array_of_VecMats; nd : in Node;
                    planes : in VecMat; s : in Standard_Complex_Vectors.Vector;
                    report,outlog : in boolean;
                    npaths : in out Standard_Natural_Vectors.Vector;
                    timings : in out Duration_Array );

  -- DESCRIPTION :
  --   Computes the q-curve that produces p-planes in n-dimensional space
  --   that intersect with the given m-planes at specific s-values.
  --   This is the quantum analogue to the general solver.

  -- ON ENTRY :
  --   file         output file for intermediate results and logs;
  --   n            dimension of the working space, equals m+p;
  --   q            degree of the map;
  --   cod          co-dimensions of input planes, dim(L_i) = m+1-cod(i);
  --   poset        deformation poset, properly created from index poset;
  --   nd           target root node from the localization poset;
  --   planes       input m-planes in general position;
  --   s            interpolation points to meet the input planes;
  --   report       indicates if reporting path tracker is needed.
  --   outlog       flag to write homotopies on file if set to true.

  -- ON RETURN :
  --   poset        poset(nd.level)(nd.label) contains coefficients
  --                of all curves that intersect nontrivially with
  --                planes(1..nd.level) at the specified s-values.
  --   npaths       number of paths traced at each level;
  --   timings      CPU user times at each level.

-- DESTRUCTORS :

  procedure Clear ( avm : in out Array_of_VecMats );
  procedure Clear ( avm : in out Link_to_Array_of_VecMats );
  procedure Clear ( avm : in out Array_of_Array_of_VecMats );

  -- DESCRIPTION :
  --   Deallocation of the occupied memory.

end Deformation_Posets;