Orbiter 2022
Combinatorial Objects
cubic_surface_activity.cpp
Go to the documentation of this file.
1/*
2 * cubic_surface_activity.cpp
3 *
4 * Created on: Mar 18, 2021
5 * Author: betten
6 */
7
8
9
10#include "orbiter.h"
11
12using namespace std;
13
14namespace orbiter {
15namespace layer5_applications {
16namespace applications_in_algebraic_geometry {
17namespace cubic_surfaces_in_general {
18
19
20
22{
23 Descr = NULL;
24 SC = NULL;
25}
26
28{
29
30}
31
33 cubic_surfaces_in_general::cubic_surface_activity_description *Cubic_surface_activity_description,
34 surface_create *SC, int verbose_level)
35{
36 int f_v = (verbose_level >= 1);
37
38 if (f_v) {
39 cout << "cubic_surface_activity::init" << endl;
40 }
41 Descr = Cubic_surface_activity_description;
43
44 if (f_v) {
45 cout << "cubic_surface_activity::init done" << endl;
46 }
47}
48
50{
51 int f_v = (verbose_level >= 1);
52
53 if (f_v) {
54 cout << "cubic_surface_activity::perform_activity" << endl;
55 }
56
57 if (Descr->f_report) {
58
59 if (f_v) {
60 cout << "cubic_surface_activity::perform_activity before SC->Surf_A->do_report" << endl;
61 }
62 SC->Surf_A->do_report(SC, verbose_level);
63 if (f_v) {
64 cout << "cubic_surface_activity::perform_activity after SC->Surf_A->do_report" << endl;
65 }
66
67 }
69
70 if (f_v) {
71 cout << "cubic_surface_activity::perform_activity before SC->Surf_A->report_with_group" << endl;
72 }
73
74 int f_has_control_six_arcs = FALSE;
76
78 SC,
79 f_has_control_six_arcs, Control_six_arcs,
80 verbose_level);
81
82 if (f_v) {
83 cout << "cubic_surface_activity::perform_activity after SC->Surf_A->report_with_group" << endl;
84 }
85
86 }
88
89 if (f_v) {
90 cout << "cubic_surface_activity::perform_activity before SC->Surf_A->export_points" << endl;
91 }
92 SC->Surf_A->export_points(SC, verbose_level);
93 if (f_v) {
94 cout << "cubic_surface_activity::perform_activity after SC->Surf_A->export_points" << endl;
95 }
96
97 }
98
99
100 if (Descr->f_clebsch) {
101
102 }
103
104 if (Descr->f_codes) {
105
106 }
107
109
111
112 if (!SC->f_has_group) {
113 cout << "-all_quartic_curves: The automorphism group of the surface is missing" << endl;
114 exit(1);
115 }
116
117 if (f_v) {
118 cout << "cubic_surface_activity::perform_activity before SC->Surf_A->create_surface_object_with_action" << endl;
119 }
121 SC,
122 SoA,
123 verbose_level);
124 if (f_v) {
125 cout << "cubic_surface_activity::perform_activity after SC->Surf_A->create_surface_object_with_action" << endl;
126 }
127
128 string surface_prefix;
129 string fname_tex;
130 string fname_quartics;
131 string fname_mask;
132 string label;
133 string label_tex;
134
135
136 surface_prefix.assign("surface_");
137 surface_prefix.append(SC->label_txt);
138
139 label.assign("surface_");
140 label.append(SC->label_txt);
141 label.append("_quartics");
142
143
144 fname_tex.assign(label);
145 fname_tex.append(".tex");
146
147
148
149 fname_quartics.assign(label);
150 fname_quartics.append(".csv");
151
152
153 label_tex.assign("surface_");
154 label_tex.append(SC->label_tex);
155
156 fname_mask.assign("surface_");
157 fname_mask.append(SC->prefix);
158 fname_mask.append("_orbit_%d");
159
160 {
161 ofstream ost(fname_tex);
162 ofstream ost_quartics(fname_quartics);
163
165
166 L.head_easy(ost);
167
168 if (f_v) {
169 cout << "cubic_surface_activity::perform_activity before SoA->all_quartic_curves" << endl;
170 }
171 SoA->all_quartic_curves(surface_prefix, ost, ost_quartics, verbose_level);
172 if (f_v) {
173 cout << "cubic_surface_activity::perform_activity after SoA->all_quartic_curves" << endl;
174 }
175
176 //ost_curves << -1 << endl;
177
178 L.foot(ost);
179 }
181
182 cout << "Written file " << fname_tex << " of size "
183 << Fio.file_size(fname_tex) << endl;
184
185
186 FREE_OBJECT(SoA);
187
188 }
189
190
192
194
195 if (!SC->f_has_group) {
196 cout << "-all_quartic_curves: The automorphism group of the surface is missing" << endl;
197 exit(1);
198 }
199
200 if (f_v) {
201 cout << "cubic_surface_activity::perform_activity before SC->Surf_A->create_surface_object_with_action" << endl;
202 }
204 SC,
205 SoA,
206 verbose_level);
207 if (f_v) {
208 cout << "cubic_surface_activity::perform_activity after SC->Surf_A->create_surface_object_with_action" << endl;
209 }
210
211 string surface_prefix;
212 string fname_curves;
213 string label;
214
215
216 surface_prefix.assign("surface_");
217 surface_prefix.append(SC->label_txt);
218
219 label.assign("surface_");
220 label.append(SC->label_txt);
221 label.append("_quartics");
222
223
224 fname_curves.assign(label);
225 fname_curves.append(".csv");
226
227
228
229 {
230 ofstream ost_curves(fname_curves);
231
232 if (f_v) {
233 cout << "cubic_surface_activity::perform_activity before SoA->export_all_quartic_curves" << endl;
234 }
235 SoA->export_all_quartic_curves(surface_prefix, ost_curves, verbose_level);
236 if (f_v) {
237 cout << "cubic_surface_activity::perform_activity after SoA->export_all_quartic_curves" << endl;
238 }
239
240 ost_curves << -1 << endl;
241
242 }
244
245 cout << "Written file " << fname_curves << " of size "
246 << Fio.file_size(fname_curves) << endl;
247
248
249 FREE_OBJECT(SoA);
250
251 }
253
255
256 if (!SC->f_has_group) {
257 cout << "-all_quartic_curves: The automorphism group of the surface is missing" << endl;
258 exit(1);
259 }
260
263
264 SO = SC->SO;
265 SOP = SO->SOP;
266
268 string fname;
269
270 fname.assign(SC->label_txt);
271 fname.append("_tritangent_planes.csv");
272
274
275 cout << "Written file " << fname << " of size " << Fio.file_size(fname) << endl;
276
277 }
278
279
280 if (f_v) {
281 cout << "cubic_surface_activity::perform_activity done" << endl;
282 }
283
284}
285
286
287
288}}}}
289
290
291
292
properties of a particular cubic surface in PG(3,q), as defined by an object of class surface_object
a particular cubic surface in PG(3,q), given by its equation
void lint_matrix_write_csv(std::string &fname, long int *M, int m, int n)
Definition: file_io.cpp:1323
to control the behavior of the poset classification algorithm
void all_quartic_curves(std::string &surface_prefix, std::ostream &ost, std::ostream &ost_quartics, int verbose_level)
void export_all_quartic_curves(std::string &surface_prefix, std::ostream &ost_quartics_csv, int verbose_level)
void init(cubic_surfaces_in_general::cubic_surface_activity_description *Cubic_surface_activity_description, surface_create *SC, int verbose_level)
void create_surface_object_with_action(surface_create *SC, surface_object_with_action *&SoA, int verbose_level)
void report_with_group(surface_create *SC, int f_has_control_six_arcs, poset_classification::poset_classification_control *Control_six_arcs, int verbose_level)
to create a cubic surface from a description using class surface_create_description
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects