Orbiter 2022
Combinatorial Objects
orthogonal_space_activity.cpp
Go to the documentation of this file.
1/*
2 * orthogonal_space_activity.cpp
3 *
4 * Created on: Jan 12, 2021
5 * Author: betten
6 */
7
8
9
10
11#include "orbiter.h"
12
13using namespace std;
14
15namespace orbiter {
16namespace layer5_applications {
17namespace orthogonal_geometry_applications {
18
19
21{
22 Descr = NULL;
23 OA = NULL;
24 Blt_set_domain = NULL;
25
26}
27
29{
30 if (Blt_set_domain) {
32 }
33 if (OA) {
35 }
36}
37
40 int verbose_level)
41{
42 int f_v = (verbose_level >= 1);
43
44 if (f_v) {
45 cout << "orthogonal_space_activity::init" << endl;
46 }
47
50
51
52
53 if (f_v) {
54 cout << "orthogonal_space_activity::init done" << endl;
55 }
56}
57
58
60{
61 int f_v = (verbose_level >= 1);
62
63 if (f_v) {
64 cout << "orthogonal_space_activity::perform_activity" << endl;
65 }
66
68
69 if (f_v) {
70 cout << "orthogonal_space_activity::perform_activity f_create_BLT_set" << endl;
71 }
72
73
75
76 if (f_v) {
77 cout << "orthogonal_space_activity::perform_activity before Blt_set_domain->init" << endl;
78 }
79 Blt_set_domain->init(OA->O, verbose_level);
80 if (f_v) {
81 cout << "orthogonal_space_activity::perform_activity after Blt_set_domain->init" << endl;
82 }
83
85
87
89
91
92
93 cout << "We have created the following BLT-set:" << endl;
94 cout << "$$" << endl;
95 L.lint_set_print_tex(cout, BC->set, OA->Descr->F->q + 1);
96 cout << endl;
97 cout << "$$" << endl;
98
99 if (BC->f_has_group) {
100 cout << "The stabilizer is generated by:" << endl;
101 BC->Sg->print_generators_tex(cout);
102 }
103
104 BC->report(verbose_level);
105
106 FREE_OBJECT(BC);
107
108
109 if (f_v) {
110 cout << "orthogonal_space_activity::perform_activity f_create_BLT_set done" << endl;
111 }
112
113 }
114 else if (Descr->f_BLT_set_starter) {
115
116 if (f_v) {
117 cout << "orthogonal_space_activity::perform_activity f_BLT_set_starter" << endl;
118 }
119
120
122
123 if (f_v) {
124 cout << "orthogonal_space_activity::perform_activity before Blt_set_domain->init" << endl;
125 }
126 Blt_set_domain->init(OA->O, verbose_level);
127 if (f_v) {
128 cout << "orthogonal_space_activity::perform_activity after Blt_set_domain->init" << endl;
129 }
130
131
132 blt_set_classify *BLT_classify;
133
134 BLT_classify = NEW_OBJECT(blt_set_classify);
135
136 if (f_v) {
137 cout << "orthogonal_space_activity::perform_activity before BLT_classify->init_basic" << endl;
138 }
139 BLT_classify->init_basic(OA->A,
140 OA->A->Strong_gens,
142 verbose_level);
143 if (f_v) {
144 cout << "orthogonal_space_activity::perform_activity after BLT_classify->init_basic" << endl;
145 }
146
147 if (f_v) {
148 cout << "orthogonal_space_activity::perform_activity before BLT_classify->compute_starter" << endl;
149 }
150 BLT_classify->compute_starter(
152 verbose_level);
153 if (f_v) {
154 cout << "orthogonal_space_activity::perform_activity after BLT_classify->compute_starter" << endl;
155 }
156
157 if (f_v) {
158 cout << "orthogonal_space_activity::perform_activity f_BLT_set_starter done" << endl;
159 }
160
161 }
162
163 else if (Descr->f_BLT_set_graphs) {
164
165 if (f_v) {
166 cout << "orthogonal_space_activity::perform_activity f_BLT_set_graphs" << endl;
167 }
168
169
171
172 if (f_v) {
173 cout << "orthogonal_space_activity::perform_activity before Blt_set_domain->init" << endl;
174 }
175 Blt_set_domain->init(OA->O, verbose_level);
176 if (f_v) {
177 cout << "orthogonal_space_activity::perform_activity after Blt_set_domain->init" << endl;
178 }
179
180
181 blt_set_classify *BLT_classify;
182
183 BLT_classify = NEW_OBJECT(blt_set_classify);
184
185 if (f_v) {
186 cout << "orthogonal_space_activity::perform_activity before BLT_classify->init_basic" << endl;
187 }
188 BLT_classify->init_basic(OA->A,
189 OA->A->Strong_gens,
191 verbose_level);
192 if (f_v) {
193 cout << "orthogonal_space_activity::perform_activity after BLT_classify->init_basic" << endl;
194 }
195
196
197 if (f_v) {
198 cout << "orthogonal_space_activity::perform_activity before BLT_classify->create_graphs" << endl;
199 }
200
201
202 BLT_classify->create_graphs(
206 TRUE /* f_lexorder_test */, FALSE /* f_eliminate_graphs_if_possible */,
207 verbose_level);
208
209 if (f_v) {
210 cout << "orthogonal_space_activity::perform_activity after BLT_classify->create_graphs" << endl;
211 }
212
213 if (f_v) {
214 cout << "orthogonal_space_activity::perform_activity f_BLT_set_graphs done" << endl;
215 }
216
217 }
218
219
221
222 if (f_v) {
223 cout << "orthogonal_space_activity::perform_activity before OA->report" << endl;
224 }
225
226 if (!orbiter_kernel_system::Orbiter->f_draw_options) {
227 cout << "please use -draw_options ... -end" << endl;
228 exit(1);
229 }
230
232 verbose_level);
233
234
235 if (f_v) {
236 cout << "orthogonal_space_activity::perform_activity after OA->report" << endl;
237 }
238
239 }
240
242
243 if (f_v) {
244 cout << "orthogonal_space_activity::perform_activity f_unrank_line_through_two_points" << endl;
245 }
246
247 long int p1;
248 long int p2;
249 long int rk;
251
254
255 if (f_v) {
256 cout << "point rank p1 = " << p1 << endl;
257 cout << "point rank p2 = " << p2 << endl;
258 }
259
260 rk = OA->O->rank_line(p1, p2, verbose_level);
261
262 if (TRUE) {
263 cout << "line rank = " << rk << endl;
264 }
265
266 if (f_v) {
267 cout << "orthogonal_space_activity::perform_activity f_unrank_line_through_two_points done" << endl;
268 }
269
270 }
271
272 else if (Descr->f_lines_on_point) {
273
274 if (f_v) {
275 cout << "orthogonal_space_activity::perform_activity f_lines_on_point" << endl;
276 }
277
278 long int *line_pencil_line_ranks;
279
280 line_pencil_line_ranks = NEW_lint(OA->O->alpha);
281
282 if (f_v) {
283 cout << "point rank = " << Descr->lines_on_point_rank << endl;
284 }
285
287 line_pencil_line_ranks, verbose_level);
288
289 if (TRUE) {
290 cout << "There are " << OA->O->alpha << " lines on point = "
291 << Descr->lines_on_point_rank << ". They are: ";
292 Lint_vec_print_fully(cout, line_pencil_line_ranks, OA->O->alpha);
293 cout << endl;
294 }
295
296 if (f_v) {
297 cout << "orthogonal_space_activity::perform_activity f_lines_on_point done" << endl;
298 }
299
300 }
301
302 else if (Descr->f_perp) {
303
304 if (f_v) {
305 cout << "orthogonal_space_activity::perform_activity f_perp" << endl;
306 }
307
308 long int *pts;
309 int nb_pts;
310
311 Lint_vec_scan(Descr->perp_text.c_str(), pts, nb_pts);
312
313 if (f_v) {
314 cout << "Computing the common perp of the set ";
315 Lint_vec_print(cout, pts, nb_pts);
316 cout << endl;
317 }
318
319 long int *Perp;
320 int sz;
321
322
323 OA->O->perp_of_k_points(pts, nb_pts, Perp, sz, verbose_level);
324
325 cout << "The common perp of the set has size " << sz << " and is ";
326 Lint_vec_print_fully(cout, Perp, sz);
327 cout << endl;
328
329 FREE_lint(Perp);
330 FREE_lint(pts);
331
332 if (f_v) {
333 cout << "orthogonal_space_activity::perform_activity f_perp done" << endl;
334 }
335
336 }
337
338 else if (Descr->f_set_stabilizer) {
339
346 verbose_level);
347 }
349
350 OA->O->export_incidence_matrix_to_csv(verbose_level);
351 }
352
353
354
355
356 if (f_v) {
357 cout << "orthogonal_space_activity::perform_activity done" << endl;
358 }
359
360}
361
362
365 int intermediate_subset_size,
366 std::string &fname_mask, int nb, std::string &column_label,
367 std::string &fname_out,
368 int verbose_level)
369{
370 int f_v = (verbose_level >= 1);
371
372
373 if (f_v) {
374 cout << "orthogonal_space_activity::set_stabilizer" << endl;
375 }
376
377
379
381 OA->A, OA->A, OA->A->Strong_gens,
382 intermediate_subset_size,
383 fname_mask, nb, column_label,
384 fname_out,
385 verbose_level);
386
387
388
389#if 0
390 top_level_geometry_global T;
391
392 T.set_stabilizer_orthogonal_space(
393 OA,
394 intermediate_subset_size,
395 fname_mask, nb, column_label,
396 verbose_level);
397#endif
398
399 if (f_v) {
400 cout << "orthogonal_space_activity::set_stabilizer done" << endl;
401 }
402
403}
404
405
406
407}}}
408
functions related to strings and character arrays
void lint_set_print_tex(std::ostream &ost, long int *v, int len)
void lines_on_point_by_line_rank(long int pt, long int *line_pencil_line_ranks, int verbose_level)
void perp_of_k_points(long int *pts, int nb_pts, long int *&Perp, int &sz, int verbose_level)
long int rank_line(long int p1, long int p2, int verbose_level)
groups::strong_generators * Strong_gens
Definition: actions.h:130
void set_stabilizer_in_any_space(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int intermediate_subset_size, std::string &fname_mask, int nb, std::string &column_label, std::string &fname_out, int verbose_level)
to create a BLT-set from a description using class BLT_set_create_description
void init(layer1_foundations::orthogonal_geometry::blt_set_domain *Blt_set_domain, BLT_set_create_description *Descr, orthogonal_space_with_action *OA, int verbose_level)
void create_graphs(int orbit_at_level_r, int orbit_at_level_m, int level_of_candidates_file, int f_lexorder_test, int f_eliminate_graphs_if_possible, int verbose_level)
void compute_starter(poset_classification::poset_classification_control *Control, int verbose_level)
void init_basic(actions::action *A, groups::strong_generators *Strong_gens, int starter_size, int verbose_level)
void set_stabilizer(orthogonal_space_with_action *OA, int intermediate_subset_size, std::string &fname_mask, int nb, std::string &column_label, std::string &fname_out, int verbose_level)
layer1_foundations::orthogonal_geometry::blt_set_domain * Blt_set_domain
void init(orthogonal_space_activity_description *Descr, orthogonal_space_with_action *OA, int verbose_level)
void report(graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
#define Lint_vec_scan(A, B, C)
Definition: foundations.h:717
#define NEW_OBJECT(type)
Definition: foundations.h:638
#define Lint_vec_print(A, B, C)
Definition: foundations.h:686
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
#define FREE_lint(p)
Definition: foundations.h:642
#define NEW_lint(n)
Definition: foundations.h:628
#define Lint_vec_print_fully(A, B, C)
Definition: foundations.h:688
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects