16namespace layer5_applications {
17namespace applications_in_algebraic_geometry {
18namespace cubic_surfaces_and_arcs {
80 int f_test_nb_Eckardt_points,
int nb_E,
83 int f_v = (verbose_level >= 1);
94 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs" << endl;
114 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs "
115 "before Six_arcs->init" << endl;
121 f_test_nb_Eckardt_points, nb_E,
124 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs "
125 "after Six_arcs->init" << endl;
131 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs "
132 "before extending the arcs" << endl;
163 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs "
164 "before SCAL[nb_surfaces].init, nb_surfaces = " <<
nb_surfaces << endl;
170 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs "
171 "after SCAL[nb_surfaces].init nb_surfaces = " <<
nb_surfaces << endl;
179 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs "
180 "after extending the arcs" << endl;
182 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs "
186 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs "
187 "decomposition matrix:" << endl;
213 cout <<
"surface_classify_using_arc::classify_surfaces_through_arcs_and_trihedral_pairs done" << endl;
222 int f_v = (verbose_level >= 1);
225 cout <<
"surface_classify_using_arc::report" << endl;
236 string fname_arc_lifting;
239 sprintf(str,
"%d", F->
q);
240 fname_arc_lifting.assign(
"arc_lifting_q");
241 fname_arc_lifting.append(str);
242 fname_arc_lifting.append(
".tex");
247 snprintf(title, 1000,
"Arc lifting over GF(%d) ", F->
q);
251 ofstream fp(fname_arc_lifting);
267 report2(fp, Opt, verbose_level);
276 cout <<
"Written file " << fname_arc_lifting <<
" of size "
277 << Fio.
file_size(fname_arc_lifting) << endl;
281 cout <<
"surface_classify_using_arc::report done" << endl;
290 int f_v = (verbose_level >= 1);
293 cout <<
"surface_classify_using_arc::report2" << endl;
303 cout <<
"surface_classify_using_arc::report2 q=" << F->
q << endl;
313 for (surface_idx = 0;
319 ost <<
"Surface $" << surface_idx <<
"$ is associated with the following arcs: $";
323 ost <<
"$\\\\" << endl;
334 ost <<
"\\section*{Six-Arcs}" << endl << endl;
338 cout <<
"surface_classify_using_arc::report2 before Six_arcs->report_latex" << endl;
342 cout <<
"surface_classify_using_arc::report2 after Six_arcs->report_latex" << endl;
346 char fname_base[1000];
347 snprintf(fname_base, 1000,
"arcs_q%d", F->
q);
350 cout <<
"before Gen->gen->draw_poset_full" << endl;
362 ost <<
"\\section*{Double Triplets}" << endl << endl;
365 cout <<
"surface_classify_using_arc::report2 before Surf_A->report_double_triplets" << endl;
371 cout <<
"surface_classify_using_arc::report2 after Surf_A->report_double_triplets" << endl;
377 ost <<
"\\section*{Summary of Surfaces}" << endl << endl;
382 for (surface_idx = 0;
388 ost <<
"\\subsection*{Surface $" << surface_idx <<
"$ of " <<
nb_surfaces <<
"}" << endl << endl;
392 cout <<
"surface_classify_using_arc::report2 before SCAL[" << surface_idx <<
"].report_summary" << endl;
396 cout <<
"surface_classify_using_arc::report2 after SCAL[" << surface_idx <<
"].report_summary" << endl;
401 <<
" arcs are involved with surface " <<
nb_surfaces <<
": $";
405 ost <<
"$\\\\" << endl;
413 ost <<
"\\section*{List of Surfaces}" << endl << endl;
418 for (surface_idx = 0;
424 ost <<
"\\subsection*{Surface $" << surface_idx <<
"$ of " <<
nb_surfaces <<
"}" << endl << endl;
428 cout <<
"surface_classify_using_arc::report2 before SCAL[" << surface_idx <<
"].report" << endl;
430 SCAL[surface_idx].
report(ost, Opt, verbose_level);
432 cout <<
"surface_classify_using_arc::report2 after SCAL[" << surface_idx <<
"].report" << endl;
437 <<
" arcs are involved with surface " <<
nb_surfaces <<
": $";
441 ost <<
"$\\\\" << endl;
448 ost <<
"\\section*{Double Triplets: Details}" << endl << endl;
450 cout <<
"surface_classify_using_arc::report2 before Surf_A->report_double_triplets_detailed" << endl;
456 cout <<
"surface_classify_using_arc::report2 after Surf_A->report_double_triplets_detailed" << endl;
460 ost <<
"\\section*{Basics}" << endl << endl;
463 cout <<
"surface_classify_using_arc::report2 before Surf_A->report_basics_and_trihedral_pair" << endl;
469 cout <<
"surface_classify_using_arc::report2 after Surf_A->report_basics_and_trihedral_pair" << endl;
477 int f_v = (verbose_level >= 1);
481 cout <<
"surface_classify_using_arc::report_decomposition_matrix" << endl;
484 ost <<
"\\section*{Decomposition Matrix Arcs vs Surfaces}" << endl << endl;
488 cout <<
"surface_classify_using_arc::report_decomposition_matrix "
489 "decomposition matrix:" << endl;
490 cout <<
"$$" << endl;
494 cout <<
"$$" << endl;
496 ost <<
"Decomposition matrix:" << endl;
506 string fname_decomposition;
508 sprintf(str,
"surfaces_q%d_decomposition_matrix.csv",
Surf_A->
PA->
F->
q);
509 fname_decomposition.assign(str);
513 cout <<
"Written file " << fname_decomposition <<
" of size "
514 << Fio.
file_size(fname_decomposition) << endl;
517 cout <<
"surface_classify_using_arc::report_decomposition_matrix done" << endl;
cubic surfaces in PG(3,q) with 27 lines
options for drawing an object of type layered_graph
basic number theoretic functions
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
long int file_size(std::string &fname)
interface to create latex output files
void print_integer_matrix_tex_block_by_block(std::ostream &ost, int *p, int m, int n, int block_width)
void head(std::ostream &ost, int f_book, int f_title, const char *title, const char *author, int f_toc, int f_landscape, int f_12pt, int f_enlarged_page, int f_pagenumbers, const char *extras_for_preamble)
void print_integer_matrix_with_standard_labels(std::ostream &ost, int *p, int m, int n, int f_tex)
void foot(std::ostream &ost)
to control the behavior of the poset classification algorithm
void draw_poset(std::string &fname_base, int depth, int data, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
to create a single cubic surface from an arc using arc lifting
void report(std::ostream &ost, graphics::layered_graph_draw_options *Opt, int verbose_level)
void init(int arc_idx, surface_classify_using_arc *SCA, int verbose_level)
void report_summary(std::ostream &ost, int verbose_level)
six_arcs_not_on_a_conic * Six_arcs
void report2(std::ostream &ost, graphics::layered_graph_draw_options *Opt, int verbose_level)
cubic_surfaces_in_general::surface_with_action * Surf_A
void classify_surfaces_through_arcs_and_trihedral_pairs(poset_classification::poset_classification_control *Control_six_arcs, cubic_surfaces_in_general::surface_with_action *Surf_A, int f_test_nb_Eckardt_points, int nb_E, int verbose_level)
void report_decomposition_matrix(std::ostream &ost, int verbose_level)
void report(graphics::layered_graph_draw_options *Opt, int verbose_level)
surface_create_by_arc_lifting * SCAL
surface_classify_using_arc()
apps_geometry::arc_generator_description * Descr
~surface_classify_using_arc()
classification of six-arcs not on a conic in PG(2,q)
void init(apps_geometry::arc_generator_description *Descr, projective_geometry::projective_space_with_action *PA, int f_test_nb_Eckardt_points, int nb_E, int verbose_level)
apps_geometry::arc_generator * Gen
void report_latex(std::ostream &ost)
cubic surfaces in projective space with automorphism group
void report_basics(std::ostream &ost)
projective_geometry::projective_space_with_action * PA
void report_double_triplets_detailed(std::ostream &ost)
void report_double_triplets(std::ostream &ost)
algebraic_geometry::surface_domain * Surf
description of a classification problem of arcs in a geometry
poset_classification::poset_classification_control * Control
poset_classification::poset_classification * gen
field_theory::finite_field * F
#define Int_vec_zero(A, B)
#define NEW_OBJECTS(type, n)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects