Orbiter 2022
Combinatorial Objects
flag_orbit_node.cpp
Go to the documentation of this file.
1// flag_orbit_node.cpp
2//
3// Anton Betten
4// September 23, 2017
5//
6//
7//
8//
9//
10
12#include "discreta/discreta.h"
15
16using namespace std;
17
18namespace orbiter {
19namespace layer4_classification {
20namespace invariant_relations {
21
23{
24 Flag_orbits = NULL;
33 fusion_with = -1;
34 fusion_elt = NULL;
35 gens = NULL;
36
37 nb_received = 0;
38 Receptacle = NULL;
39
40 //null();
41}
42
44{
45 freeself();
46}
47
49{
50}
51
53{
54 int verbose_level = 0;
55 int f_v = (verbose_level >= 1);
56
57 if (f_v) {
58 cout << "flag_orbit_node::freeself" << endl;
59 }
60 if (fusion_elt) {
62 }
63 if (f_v) {
64 cout << "flag_orbit_node::freeself before FREE_OBJECT(gens)" << endl;
65 }
66 if (gens) {
68 }
69 if (Receptacle) {
70 int i;
71
72 for (i = 0; i < nb_received; i++) {
75 }
77 }
78 if (f_v) {
79 cout << "flag_orbit_node::freeself done" << endl;
80 }
81 null();
82}
83
85 flag_orbits *Flag_orbits, int flag_orbit_index,
86 int downstep_primary_orbit, int downstep_secondary_orbit,
87 int downstep_orbit_len, int f_long_orbit,
88 long int *pt_representation, groups::strong_generators *Strong_gens,
89 int verbose_level)
90{
91 int f_v = (verbose_level >= 1);
92
93 if (f_v) {
94 cout << "flag_orbit_node::init" << endl;
95 }
102 Lint_vec_copy(pt_representation,
103 Flag_orbits->Pt +
106 gens = Strong_gens;
107
108 nb_received = 0;
110
111 if (f_v) {
112 cout << "flag_orbit_node::init done" << endl;
113 }
114}
115
117{
118 int f_v = (verbose_level >= 1);
119
120 if (f_v) {
121 cout << "flag_orbit_node::receive_trace_result" << endl;
122 }
124 cout << "flag_orbit_node::receive_trace_result Receptacle is full" << endl;
125 exit(1);
126 }
128
130 cout << "flag_orbit_node::receive_trace_result Warning: Flag_orbits->free_received_trace_data == NULL" << endl;
131 }
132 if (f_v) {
133 cout << "flag_orbit_node::receive_trace_result done" << endl;
134 }
135}
136
137
138
139void flag_orbit_node::write_file(ofstream &fp, int verbose_level)
140{
141 int f_v = (verbose_level >= 1);
142
143 if (f_v) {
144 cout << "flag_orbit_node::write_file" << endl;
145 }
146 fp.write((char *) &downstep_primary_orbit, sizeof(int));
147 fp.write((char *) &downstep_secondary_orbit, sizeof(int));
148 fp.write((char *) &downstep_orbit_len, sizeof(int));
149 fp.write((char *) &upstep_primary_orbit, sizeof(int));
150 fp.write((char *) &upstep_secondary_orbit, sizeof(int));
151 fp.write((char *) &f_fusion_node, sizeof(int));
152 if (f_fusion_node) {
153 if (f_v) {
154 cout << "flag_orbit_node::write_file f_fusion_node" << endl;
155 }
156 fp.write((char *) &fusion_with, sizeof(int));
158 }
159 if (f_v) {
160 cout << "flag_orbit_node::write_file "
161 "before gens->write_to_file_binary" << endl;
162 }
163 gens->write_to_file_binary(fp, 0 /* verbose_level */);
164
165 if (f_v) {
166 cout << "flag_orbit_node::write_file finished" << endl;
167 }
168}
169
170void flag_orbit_node::read_file(ifstream &fp, int verbose_level)
171{
172 int f_v = (verbose_level >= 1);
173
174 if (f_v) {
175 cout << "flag_orbit_node::read_file" << endl;
176 }
177
178 fp.read((char *) &downstep_primary_orbit, sizeof(int));
179 fp.read((char *) &downstep_secondary_orbit, sizeof(int));
180 fp.read((char *) &downstep_orbit_len, sizeof(int));
181 fp.read((char *) &upstep_primary_orbit, sizeof(int));
182 fp.read((char *) &upstep_secondary_orbit, sizeof(int));
183 fp.read((char *) &f_fusion_node, sizeof(int));
184 if (f_fusion_node) {
185 if (f_v) {
186 cout << "flag_orbit_node::read_file f_fusion_node" << endl;
187 }
188 fp.read((char *) &fusion_with, sizeof(int));
191 }
192
193 if (f_v) {
194 cout << "flag_orbit_node::read_file "
195 "before gens->read_from_file_binary" << endl;
196 }
198 gens->read_from_file_binary(Flag_orbits->A, fp, verbose_level);
199
200 if (f_v) {
201 cout << "flag_orbit_node::read_file finished" << endl;
202 }
203}
204
206 ostream &ost,
207 int f_print_stabilizer_gens)
208{
210
211 ost << "Flag orbit " << flag_orbit_index << " / " << Flag_orbits->nb_flag_orbits
212 << " down=(" << downstep_primary_orbit
214 << ")"
215 << " up=(" << upstep_primary_orbit
216 << "," << upstep_secondary_orbit
217 << ")";
218 if (f_fusion_node) {
219 ost << " fuse to " << fusion_with;
220 }
221 ost << " is ";
222
226
227 ost << " with a stabilizer of order ";
229 ost << go << "\\\\" << endl;
230 if (f_print_stabilizer_gens) {
232 }
233 if (f_fusion_node) {
234 ost << "Fusion element:\\\\" << endl;
235 ost << "$$" << endl;
237 ost << "$$" << endl;
238 }
239
240 ost << "nb received = " << nb_received << "\\\\" << endl;
241
242 if (nb_received) {
245 Flag_orbits->free_received_trace_data, 0 /*verbose_level*/);
246 }
247 }
248}
249
250}}}
251
252
253
a class to represent arbitrary precision integers
Definition: ring_theory.h:366
void element_print_latex(void *elt, std::ostream &ost)
Definition: action_cb.cpp:364
void element_read_from_file_binary(int *Elt, std::ifstream &fp, int verbose_level)
Definition: action_cb.cpp:737
void element_write_to_file_binary(int *Elt, std::ofstream &fp, int verbose_level)
Definition: action_cb.cpp:708
a strong generating set for a permutation group with respect to a fixed action
Definition: groups.h:1703
void read_from_file_binary(actions::action *A, std::ifstream &fp, int verbose_level)
void write_to_file_binary(std::ofstream &fp, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void init(flag_orbits *Flag_orbits, int flag_orbit_index, int downstep_primary_orbit, int downstep_secondary_orbit, int downstep_orbit_len, int f_long_orbit, long int *pt_representation, groups::strong_generators *Strong_gens, int verbose_level)
void print_latex(flag_orbits *Flag_orbits, std::ostream &ost, int f_print_stabilizer_gens)
void receive_trace_result(void *trace_result, int verbose_level)
stores the set of flag orbits; related to the class classification_step
Definition: classify.h:75
void(* func_latex_report_trace)(std::ostream &ost, void *trace_result, void *data, int verbose_level)
Definition: classify.h:85
void(* func_to_free_received_trace)(void *trace_result, void *data, int verbose_level)
Definition: classify.h:84
#define Lint_vec_copy(A, B, C)
Definition: foundations.h:694
#define FREE_int(p)
Definition: foundations.h:640
#define NEW_pvoid(n)
Definition: foundations.h:637
#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 NEW_int(n)
Definition: foundations.h:625
#define FREE_pvoid(p)
Definition: foundations.h:650
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects