Orbiter 2022
Combinatorial Objects
orthogonal_space_with_action.cpp
Go to the documentation of this file.
1/*
2 * orthogonal_space_with_action.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 //std::string label_txt;
24 //std::string label_tex;
25 O = NULL;
27 A = NULL;
28 AO = NULL;
29}
30
32{
33 if (O) {
35 }
36 if (A) {
38 }
39}
40
43 int verbose_level)
44{
45 int f_v = (verbose_level >= 1);
46
47 if (f_v) {
48 cout << "orthogonal_space_with_action::init" << endl;
49 }
51
53
54 if (Descr->f_label_txt) {
55 label_txt.assign(Descr->label_txt);
56 }
57 else {
58 char str[1000];
59
60 sprintf(str, "O_%d_%d_%d", Descr->epsilon, Descr->n, Descr->F->q);
61 label_txt.assign(str);
62 }
63 if (Descr->f_label_tex) {
64 label_tex.assign(Descr->label_tex);
65 }
66 else {
67 char str[1000];
68
69 if (Descr->epsilon == 1) {
70 sprintf(str, "O^+(%d,%d)", Descr->n, Descr->F->q);
71 }
72 else if (Descr->epsilon == 0) {
73 sprintf(str, "O(%d,%d)", Descr->n, Descr->F->q);
74 }
75 else if (Descr->epsilon == -1) {
76 sprintf(str, "O^-(%d,%d)", Descr->n, Descr->F->q);
77 }
78 else {
79 cout << "orthogonal_space_with_action::init illegal value of epsilon" << endl;
80 exit(1);
81 }
82 label_tex.assign(str);
83 }
84
85
86
87 if (f_v) {
88 cout << "orthogonal_space_with_action::init before O->init" << endl;
89 }
90 O->init(Descr->epsilon, Descr->n, Descr->F, verbose_level);
91 if (f_v) {
92 cout << "orthogonal_space_with_action::init after O->init" << endl;
93 }
94
95
96 if (!Descr->f_without_group) {
97
98 if (f_v) {
99 cout << "orthogonal_space_with_action::init before init_group" << endl;
100 }
101 init_group(verbose_level);
102 if (f_v) {
103 cout << "orthogonal_space_with_action::init after init_group" << endl;
104 }
105 }
106 else {
107 if (f_v) {
108 cout << "orthogonal_space_with_action::init without group" << endl;
109 }
110
111 }
112
113
114 if (f_v) {
115 cout << "orthogonal_space_with_action::init done" << endl;
116 }
117}
118
120{
121 int f_v = (verbose_level >= 1);
122
123 if (f_v) {
124 cout << "orthogonal_space_with_action::init_group" << endl;
125 }
126
128
130 if (NT.is_prime(Descr->F->q)) {
132 }
133
134
136
137 if (f_v) {
138 cout << "orthogonal_space_with_action::init_group before "
139 "A->init_orthogonal_group_with_O" << endl;
140 }
141
143 TRUE /* f_on_points */,
144 FALSE /* f_on_lines */,
145 FALSE /* f_on_points_and_lines */,
147 TRUE /* f_basis */,
148 verbose_level);
149
150 if (f_v) {
151 cout << "orthogonal_space_with_action::init_group "
152 "after A->init_orthogonal_group_with_O" << endl;
153 }
154
155 if (f_v) {
156 cout << "A->make_element_size = "
157 << A->make_element_size << endl;
158 cout << "orthogonal_space_with_action::init_group "
159 "degree = " << A->degree << endl;
160 }
161
162 if (f_v) {
163 cout << "orthogonal_space_with_action::init_group computing "
164 "lex-least base" << endl;
165 }
166 A->lex_least_base_in_place(0 /*verbose_level - 2*/);
167 if (f_v) {
168 cout << "orthogonal_space_with_action::init_group computing "
169 "lex-least base done" << endl;
170 cout << "orthogonal_space_with_action::init_group base: ";
171 Lint_vec_print(cout, A->get_base(), A->base_len());
172 cout << endl;
173 }
174
175
176
177 AO = A->G.AO;
178 O = AO->O;
179
180
181 if (f_v) {
182 cout << "orthogonal_space_with_action::init_group done" << endl;
183 }
184}
185
188 int verbose_level)
189{
190 int f_v = (verbose_level >= 1);
191
192 if (f_v) {
193 cout << "orthogonal_space_with_action::report" << endl;
194 }
195
196 {
197 string fname_report;
198 fname_report.assign(label_txt);
199 fname_report.append("_report.tex");
202
203 {
204 ofstream ost(fname_report);
205 L.head_easy(ost);
206
207 if (f_v) {
208 cout << "poset_classification::post_processing "
209 "before report2" << endl;
210 }
211 report2(ost, LG_Draw_options, verbose_level);
212 if (f_v) {
213 cout << "poset_classification::post_processing "
214 "after report2" << endl;
215 }
216
217 L.foot(ost);
218 }
219
220 cout << "Written file " << fname_report << " of size "
221 << Fio.file_size(fname_report) << endl;
222 }
223
224}
225
228 int verbose_level)
229{
230 int f_v = (verbose_level >= 1);
231
232 if (f_v) {
233 cout << "orthogonal_space_with_action::report2" << endl;
234 }
235
236
237 if (!Descr->f_without_group) {
238 if (f_v) {
239 cout << "orthogonal_space_with_action::report2 "
240 "before A>report" << endl;
241 }
242
243 A->report(ost,
244 FALSE /* f_sims */, NULL,
245 FALSE /* f_strong_gens */, NULL,
246 LG_Draw_options,
247 verbose_level - 1);
248
249 if (f_v) {
250 cout << "orthogonal_space_with_action::report2 "
251 "after A->report" << endl;
252 }
253 }
254 else {
255 ost << "The group is not available.\\\\" << endl;
256 }
257
258 if (f_v) {
259 cout << "orthogonal_space_with_action::report2 before O->report" << endl;
260 }
261 O->report(ost, verbose_level);
262 if (f_v) {
263 cout << "orthogonal_space_with_action::report2 after O->report" << endl;
264 }
265
266
267 if (f_v) {
268 cout << "orthogonal_space_with_action::report2 done" << endl;
269 }
270}
271
272}}}
273
options for drawing an object of type layered_graph
Definition: graphics.h:457
void report(std::ostream &ost, int verbose_level)
void init(int epsilon, int n, field_theory::finite_field *F, int verbose_level)
Definition: orthogonal.cpp:312
a permutation group in a fixed action.
Definition: actions.h:99
void report(std::ostream &ost, int f_sims, groups::sims *S, int f_strong_gens, groups::strong_generators *SG, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
Definition: action_io.cpp:22
void init_orthogonal_group_with_O(orthogonal_geometry::orthogonal *O, int f_on_points, int f_on_lines, int f_on_points_and_lines, int f_semilinear, int f_basis, int verbose_level)
void report(graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
void report2(std::ostream &ost, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
void init(orthogonal_space_with_action_description *Descr, int verbose_level)
#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
the orbiter library for the classification of combinatorial objects
induced_actions::action_on_orthogonal * AO