Orbiter 2022
Combinatorial Objects
arc_orbits_on_pairs.cpp
Go to the documentation of this file.
1/*
2 * arc_orbits_on_pairs.cpp
3 *
4 * Created on: Jan 9, 2019
5 * Author: betten
6 */
7
8
9
10
11#include "orbiter.h"
12
13using namespace std;
14
15namespace orbiter {
16namespace layer5_applications {
17namespace applications_in_algebraic_geometry {
18namespace cubic_surfaces_and_arcs {
19
20
22{
23 SAL = NULL;
24
25 A = NULL;
26
27 The_arc = NULL;
28 A_on_arc = NULL;
29
30 arc_idx = -1;
31 Poset = NULL;
32 Control = NULL;
33 Orbits_on_pairs = NULL;
34
38
41 //null();
42}
43
45{
46 freeself();
47}
48
50{
51}
52
54{
55 if (Poset) {
57 }
58 if (Control) {
60 }
61 if (Orbits_on_pairs) {
63 }
64 if (The_arc) {
66 }
67 if (A_on_arc) {
69 }
72 }
75 }
78 }
79 null();
80}
81
83 surfaces_arc_lifting *SAL, int arc_idx,
85 int verbose_level)
86{
87 int f_v = (verbose_level >= 1);
88
89
90 if (f_v) {
91 cout << "arc_orbits_on_pairs::init" << endl;
92 }
93
97
98
99 if (f_v) {
100 cout << "arc_orbits_on_pairs::init creating The_arc" << endl;
101 }
102
104 6 /* level */,
106 verbose_level);
107
108
109 if (f_v) {
110 cout << "arc_orbits_on_pairs::init "
111 "creating restricted action on the arc" << endl;
112 }
113
114 A_on_arc = A->restricted_action(The_arc->data, 6 /* nb_points */,
115 verbose_level - 2);
116
117 if (f_v) {
118 cout << "arc_orbits_on_pairs::init "
119 "creating poset" << endl;
120 }
121
124 Control->depth = 2;
125
129 verbose_level);
130
132 Poset->print_function = NULL;
133 Poset->print_function_data = (void *) this;
134
135
138 2 /* sz */, verbose_level);
139
140
141
142
143
144
145 if (f_v) {
146 cout << "arc_orbits_on_pairs::init after init_root_node" << endl;
147 }
149
150 int t0 = Os.os_ticks();
151
152 if (f_v) {
153 cout << "arc_orbits_on_pairs::init before Orbits_on_pairs->main" << endl;
154 }
155 //Orbits_on_pairs->depth = 2;
156 Orbits_on_pairs->main(t0, 2 /*schreier_depth */,
157 TRUE /* f_use_invariant_subset_if_available */,
158 FALSE /* f_debug*/,
159 verbose_level);
160 if (f_v) {
161 cout << "arc_orbits_on_pairs::init after Orbits_on_pairs->main" << endl;
162 }
163
165 if (f_v) {
166 cout << "arc_orbits_on_pairs::init "
167 "nb_orbits_on_pairs=" << nb_orbits_on_pairs << endl;
168 }
169
172
173 if (f_v) {
174 cout << "arc_orbits_on_pairs::init "
175 "computing orbits on partition" << endl;
176 }
177
178
180 int pair_orbit_idx;
181
183
184 for (pair_orbit_idx = 0;
185 pair_orbit_idx < nb_orbits_on_pairs;
186 pair_orbit_idx++) {
187
188 if (f_v) {
189 cout << "arc_orbits_on_pairs::init "
190 "pair_orbit_idx = " << pair_orbit_idx << " / " << nb_orbits_on_pairs << ":" << endl;
191 }
192
193 int nb;
194
195 if (f_v) {
196 cout << "arc_orbits_on_pairs::init "
197 "before Table_orbits_on_pairs[" << arc_idx << "].init" << endl;
198 }
199 Table_orbits_on_partition[pair_orbit_idx].init(this, pair_orbit_idx,
200 A, A_on_arc,
201 verbose_level);
202
204
205 if (f_v) {
206 cout << "arc_orbits_on_pairs::init "
207 "pair_orbit_idx = " << pair_orbit_idx << " / " << nb_orbits_on_pairs
208 << " has " << nb << " orbits on partitions" << endl;
209 }
210
212 partition_orbit_len[pair_orbit_idx] = nb;
213
215 }
216 if (f_v) {
217 cout << "arc_orbits_on_pairs::init "
218 "computing orbits on partition done" << endl;
219 }
220
221
222 if (f_v) {
223 cout << "arc_orbits_on_pairs::init done" << endl;
224 }
225}
226
228{
229 int pair_orbit_idx, nb;
230
231 cout << "pair_orbit_idx : nb_orbits_on_partitions" << endl;
232 for (pair_orbit_idx = 0;
233 pair_orbit_idx < nb_orbits_on_pairs;
234 pair_orbit_idx++) {
235
237
238 cout << pair_orbit_idx << " & " << nb << endl;
239 }
240}
241
242void arc_orbits_on_pairs::recognize(long int *pair, int *transporter,
243 int &orbit_idx, int verbose_level)
244{
245 int f_v = (verbose_level >= 1);
246
247 if (f_v) {
248 cout << "arc_orbits_on_pairs::recognize" << endl;
249 }
250
251 Orbits_on_pairs->identify(pair, 2,
252 transporter,
253 orbit_idx,
254 0 /*verbose_level */);
255
256
257 if (f_v) {
258 cout << "arc_orbits_on_pairs::recognize done" << endl;
259 }
260}
261
262
263
264}}}}
265
266
a permutation group in a fixed action.
Definition: actions.h:99
action * restricted_action(long int *points, int nb_points, int verbose_level)
to control the behavior of the poset classification algorithm
void initialize_and_allocate_root_node(poset_classification_control *PC_control, poset_with_group_action *Poset, int depth, int verbose_level)
data_structures_groups::set_and_stabilizer * get_set_and_stabilizer(int level, int orbit_at_level, int verbose_level)
int main(int t0, int schreier_depth, int f_use_invariant_subset_if_available, int f_debug, int verbose_level)
void identify(long int *data, int sz, int *transporter, int &orbit_at_level, int verbose_level)
void init_subset_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int verbose_level)
void(* print_function)(std::ostream &ost, int len, long int *S, void *data)
void init(surfaces_arc_lifting *SAL, int arc_idx, actions::action *A, int verbose_level)
orbits on the partitions of the remaining four points of a non-conical arc
void init(arc_orbits_on_pairs *OP, int pair_orbit_idx, actions::action *A, actions::action *A_on_arc, int verbose_level)
poset_classification::poset_classification * gen
Definition: tl_geometry.h:104
#define FREE_OBJECTS(p)
Definition: foundations.h:652
#define FREE_int(p)
Definition: foundations.h:640
#define NEW_OBJECT(type)
Definition: foundations.h:638
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define NEW_int(n)
Definition: foundations.h:625
#define NEW_OBJECTS(type, n)
Definition: foundations.h:639
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects