Annotation of OpenXM_contrib/PHC/Ada/Schubert/deformation_posets.ads, Revision 1.1.1.1
1.1 maekawa 1: with text_io; use text_io;
2: with Standard_Natural_Vectors;
3: with Standard_Complex_Vectors;
4: with Standard_Complex_VecMats; use Standard_Complex_VecMats;
5: with Standard_Complex_Poly_Matrices;
6: with Brackets; use Brackets;
7: with Localization_Posets; use Localization_Posets;
8:
9: package Deformation_Posets is
10:
11: -- DESCRIPTION :
12: -- This package is the continuous analogue of "Localization_Posets".
13:
14: -- DATA STRUCTURES :
15:
16: type Array_of_VecMats is array ( integer range <> ) of Link_to_VecMat;
17: type Link_to_Array_of_VecMats is access Array_of_VecMats;
18: type Array_of_Array_of_VecMats is
19: array ( integer range <> ) of Link_to_Array_of_VecMats;
20:
21: type Duration_Array is array ( integer range <> ) of duration;
22:
23: -- CREATORS :
24:
25: function Create ( index_poset : Array_of_Array_of_Nodes )
26: return Array_of_Array_of_VecMats;
27:
28: -- DESCRIPTION :
29: -- The array on return mirrors the index poset in the following sense:
30: -- res(i)(j)'length = poset(i)(j).roco, if roco > 0,
31: -- res(i)(j) = null, if roco = 0.
32:
33: -- SELECTOR :
34:
35: function Empty ( poset : Array_of_Array_of_VecMats; level,label : natural )
36: return boolean;
37:
38: -- DESCRIPTION :
39: -- Returns true if poset(level)(label) is a vector of null pointers.
40:
41: -- ANALOGUES TO ROOT COUNTERS :
42:
43: procedure Solve ( file : in file_type; n : in natural;
44: poset : in out Array_of_Array_of_VecMats; nd : in Node;
45: planes : in VecMat; report,outlog : in boolean;
46: npaths : in out Standard_Natural_Vectors.Vector;
47: timings : in out Duration_Array );
48:
49: -- DESCRIPTION :
50: -- Computes the p-planes that intersect with the given m-planes.
51: -- This is the solver for hypersurface intersection conditions.
52:
53: -- ON ENTRY :
54: -- file output file for intermediate results and logs;
55: -- n dimension of the working space, equals m+p;
56: -- poset deformation poset, properly created from index poset;
57: -- nd target root node from the localization poset;
58: -- planes input planes in general position;
59: -- report indicates if reporting path tracker is needed;
60: -- outlog flag to write homotopies on file if set to true.
61:
62: -- ON RETURN :
63: -- poset poset(nd.level)(nd.label) contains all p-planes that
64: -- intersect nontrivially with planes(1..nd.level);
65: -- npaths number of paths traced at each level;
66: -- timings CPU user time at each level.
67:
68: procedure One_Solve
69: ( file : in file_type; n : in natural; cod : in Bracket;
70: poset : in out Array_of_Array_of_VecMats; nd : in Node;
71: planes : in VecMat; report,outlog : in boolean;
72: npaths : in out Standard_Natural_Vectors.Vector;
73: timings : in out Duration_Array );
74:
75: -- DESCRIPTION :
76: -- Computes the p-planes that intersect with the given planes of
77: -- dimension (m+1-cod(i)), for i in cod'range.
78: -- There is only one moving equation in the homotopies.
79:
80: -- REQUIRED :
81: -- The localization poset has been built either by consistently
82: -- incrementing the top or by decrementing the bottom pivots.
83: -- The co-dimension conditions are not interlaced.
84:
85: -- ON ENTRY :
86: -- file output file for intermediate results and logs;
87: -- n dimension of the working space, equals m+p;
88: -- cod co-dimensions of input planes, dim(L_i) = m+1-cod(i)
89: -- poset deformation poset, properly created from index poset;
90: -- nd target root node from the localization poset;
91: -- planes input planes L_i in general position;
92: -- report indicates if reporting path tracker is needed;
93: -- outlog flag to write homotopies on file if set to true.
94:
95: -- ON RETURN :
96: -- poset poset(nd.level)(nd.label) contains all p-planes that
97: -- intersect nontrivially with planes(1..nd.level);
98: -- npaths number of paths traced at each level;
99: -- timings CPU user time at each level.
100:
101: procedure Solve ( file : in file_type; n : in natural; cod : in Bracket;
102: poset : in out Array_of_Array_of_VecMats; nd : in Node;
103: planes : in VecMat; report,outlog : in boolean;
104: npaths : in out Standard_Natural_Vectors.Vector;
105: timings : in out Duration_Array );
106:
107: -- DESCRIPTION :
108: -- Computes the p-planes that intersect with the given planes of
109: -- dimension (m+1-cod(i)), for i in cod'range.
110: -- The co-dimension conditions are interlaced here.
111:
112: -- ON ENTRY :
113: -- file output file for intermediate results and logs;
114: -- n dimension of the working space, equals m+p;
115: -- cod co-dimensions of input planes, dim(L_i) = m+1-cod(i)
116: -- poset deformation poset, properly created from index poset;
117: -- nd target root node from the localization poset;
118: -- planes input planes L_i in general position;
119: -- report indicates if reporting path tracker is needed;
120: -- outlog flag to write homotopies on file if set to true.
121:
122: -- ON RETURN :
123: -- poset poset(nd.level)(nd.label) contains all p-planes that
124: -- intersect nontrivially with planes(1..nd.level);
125: -- npaths number of paths traced at each level;
126: -- timings CPU user time at each level.
127:
128: procedure Solve ( file : in file_type; n,q : in natural;
129: poset : in out Array_of_Array_of_VecMats; nd : in Node;
130: planes : in VecMat; s : in Standard_Complex_Vectors.Vector;
131: report,outlog : in boolean;
132: npaths : in out Standard_Natural_Vectors.Vector;
133: timings : in out Duration_Array );
134:
135: -- DESCRIPTION :
136: -- Computes the q-curve that produces p-planes in n-dimensional space
137: -- that intersect with the given m-planes at specific s-values.
138: -- This is the quantum analogue to the hypersurface solver.
139:
140: -- ON ENTRY :
141: -- file output file for intermediate results and logs;
142: -- n dimension of the working space, equals m+p;
143: -- q degree of the map;
144: -- poset deformation poset, properly created from index poset;
145: -- nd target root node from the localization poset;
146: -- planes input m-planes in general position;
147: -- s interpolation points to meet the input m-planes;
148: -- report indicates if reporting path tracker is needed.
149: -- outlog flag to write homotopies on file if set to true.
150:
151: -- ON RETURN :
152: -- poset poset(nd.level)(nd.label) contains coefficients
153: -- of all curves that intersect nontrivially with
154: -- planes(1..nd.level) at the specified s-values.
155: -- npaths number of paths traced at each level;
156: -- timings CPU user times at each level.
157:
158: procedure One_Solve
159: ( file : in file_type; n,q : in natural; cod : in Bracket;
160: poset : in out Array_of_Array_of_VecMats; nd : in Node;
161: planes : in VecMat; s : in Standard_Complex_Vectors.Vector;
162: report,outlog : in boolean;
163: npaths : in out Standard_Natural_Vectors.Vector;
164: timings : in out Duration_Array );
165:
166: -- DESCRIPTION :
167: -- This is the quantum analogue to the other "One_Solve".
168: -- Computes the p-planes that intersect with the given planes of
169: -- dimension (m+1-cod(i)), for i in cod'range.
170: -- There is only one moving equation in the homotopies.
171:
172: -- REQUIRED :
173: -- The localization poset has been built either by consistently
174: -- incrementing the top or by decrementing the bottom pivots.
175: -- The co-dimension conditions are not interlaced.
176:
177: -- ON ENTRY :
178: -- file output file for intermediate results and logs;
179: -- n dimension of the working space, equals m+p;
180: -- q degree of the map;
181: -- cod co-dimensions of input planes, dim(L_i) = m+1-cod(i)
182: -- poset deformation poset, properly created from index poset;
183: -- nd target root node from the localization poset;
184: -- planes input planes L_i in general position;
185: -- s interpolation points to meet the input planes;
186: -- report indicates if reporting path tracker is needed;
187: -- outlog flag to write homotopies on file if set to true.
188:
189: -- ON RETURN :
190: -- poset poset(nd.level)(nd.label) contains all p-planes that
191: -- intersect nontrivially with planes(1..nd.level);
192: -- npaths number of paths traced at each level;
193: -- timings CPU user time at each level.
194:
195: procedure Solve ( file : in file_type; n,q : in natural; cod : in Bracket;
196: poset : in out Array_of_Array_of_VecMats; nd : in Node;
197: planes : in VecMat; s : in Standard_Complex_Vectors.Vector;
198: report,outlog : in boolean;
199: npaths : in out Standard_Natural_Vectors.Vector;
200: timings : in out Duration_Array );
201:
202: -- DESCRIPTION :
203: -- Computes the q-curve that produces p-planes in n-dimensional space
204: -- that intersect with the given m-planes at specific s-values.
205: -- This is the quantum analogue to the general solver.
206:
207: -- ON ENTRY :
208: -- file output file for intermediate results and logs;
209: -- n dimension of the working space, equals m+p;
210: -- q degree of the map;
211: -- cod co-dimensions of input planes, dim(L_i) = m+1-cod(i);
212: -- poset deformation poset, properly created from index poset;
213: -- nd target root node from the localization poset;
214: -- planes input m-planes in general position;
215: -- s interpolation points to meet the input planes;
216: -- report indicates if reporting path tracker is needed.
217: -- outlog flag to write homotopies on file if set to true.
218:
219: -- ON RETURN :
220: -- poset poset(nd.level)(nd.label) contains coefficients
221: -- of all curves that intersect nontrivially with
222: -- planes(1..nd.level) at the specified s-values.
223: -- npaths number of paths traced at each level;
224: -- timings CPU user times at each level.
225:
226: -- DESTRUCTORS :
227:
228: procedure Clear ( avm : in out Array_of_VecMats );
229: procedure Clear ( avm : in out Link_to_Array_of_VecMats );
230: procedure Clear ( avm : in out Array_of_Array_of_VecMats );
231:
232: -- DESCRIPTION :
233: -- Deallocation of the occupied memory.
234:
235: end Deformation_Posets;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>