39 std::atomic_bool updated =
false;
42 unsigned current_step_tag = 0;
43 std::pair<unsigned, unsigned> current_converger_tag{0, 0};
44 std::pair<unsigned, unsigned> current_integrator_tag{0, 0};
45 std::pair<unsigned, unsigned> current_solver_tag{0, 0};
52 shared_ptr<LongFactory> factory;
78 std::vector<std::vector<unsigned>> color_map;
80 std::vector<bool> attribute;
82 mutable std::array<double, 5> statistics{};
85 explicit Domain(
unsigned = 0);
92 void set_factory(
const shared_ptr<LongFactory>&)
override;
93 const shared_ptr<LongFactory>&
get_factory()
const override;
95 bool insert(std::future<void>&&)
override;
99 bool insert(
const shared_ptr<ExternalModule>&)
override;
102 bool insert(
const shared_ptr<Amplitude>&)
override;
103 bool insert(
const shared_ptr<Expression>&)
override;
104 bool insert(
const shared_ptr<Constraint>&)
override;
105 bool insert(
const shared_ptr<Converger>&)
override;
106 bool insert(
const shared_ptr<Criterion>&)
override;
107 bool insert(
const shared_ptr<Database>&)
override;
108 bool insert(
const shared_ptr<Element>&)
override;
109 bool insert(
const shared_ptr<Group>&)
override;
110 bool insert(
const shared_ptr<Integrator>&)
override;
111 bool insert(
const shared_ptr<Load>&)
override;
112 bool insert(
const shared_ptr<Material>&)
override;
113 bool insert(
const shared_ptr<Modifier>&)
override;
114 bool insert(
const shared_ptr<Node>&)
override;
115 bool insert(
const shared_ptr<Orientation>&)
override;
116 bool insert(
const shared_ptr<Recorder>&)
override;
117 bool insert(
const shared_ptr<Section>&)
override;
118 bool insert(
const shared_ptr<Solver>&)
override;
119 bool insert(
const shared_ptr<Step>&)
override;
178 const shared_ptr<Amplitude>&
get_amplitude(
unsigned)
const override;
179 const shared_ptr<Expression>&
get_expression(
unsigned)
const override;
180 const shared_ptr<Constraint>&
get_constraint(
unsigned)
const override;
181 const shared_ptr<Converger>&
get_converger(
unsigned)
const override;
182 const shared_ptr<Criterion>&
get_criterion(
unsigned)
const override;
183 const shared_ptr<Database>&
get_database(
unsigned)
const override;
184 const shared_ptr<Element>&
get_element(
unsigned)
const override;
185 const shared_ptr<Group>&
get_group(
unsigned)
const override;
186 const shared_ptr<Integrator>&
get_integrator(
unsigned)
const override;
187 const shared_ptr<Load>&
get_load(
unsigned)
const override;
188 const shared_ptr<Material>&
get_material(
unsigned)
const override;
189 const shared_ptr<Modifier>&
get_modifier(
unsigned)
const override;
190 const shared_ptr<Node>&
get_node(
unsigned)
const override;
191 const shared_ptr<Orientation>&
get_orientation(
unsigned)
const override;
192 const shared_ptr<Recorder>&
get_recorder(
unsigned)
const override;
193 const shared_ptr<Section>&
get_section(
unsigned)
const override;
194 const shared_ptr<Solver>&
get_solver(
unsigned)
const override;
195 const shared_ptr<Step>&
get_step(
unsigned)
const override;
216 friend shared_ptr<Amplitude>&
get_amplitude(
const shared_ptr<Domain>&,
unsigned);
217 friend shared_ptr<Expression>&
get_expression(
const shared_ptr<Domain>&,
unsigned);
218 friend shared_ptr<Constraint>&
get_constraint(
const shared_ptr<Domain>&,
unsigned);
219 friend shared_ptr<Converger>&
get_converger(
const shared_ptr<Domain>&,
unsigned);
220 friend shared_ptr<Criterion>&
get_criterion(
const shared_ptr<Domain>&,
unsigned);
221 friend shared_ptr<Database>&
get_database(
const shared_ptr<Domain>&,
unsigned);
222 friend shared_ptr<Element>&
get_element(
const shared_ptr<Domain>&,
unsigned);
223 friend shared_ptr<Group>&
get_group(
const shared_ptr<Domain>&,
unsigned);
224 friend shared_ptr<Integrator>&
get_integrator(
const shared_ptr<Domain>&,
unsigned);
225 friend shared_ptr<Load>&
get_load(
const shared_ptr<Domain>&,
unsigned);
226 friend shared_ptr<Material>&
get_material(
const shared_ptr<Domain>&,
unsigned);
227 friend shared_ptr<Modifier>&
get_modifier(
const shared_ptr<Domain>&,
unsigned);
228 friend shared_ptr<Node>&
get_node(
const shared_ptr<Domain>&,
unsigned);
229 friend shared_ptr<Orientation>&
get_orientation(
const shared_ptr<Domain>&,
unsigned);
230 friend shared_ptr<Recorder>&
get_recorder(
const shared_ptr<Domain>&,
unsigned);
231 friend shared_ptr<Section>&
get_section(
const shared_ptr<Domain>&,
unsigned);
232 friend shared_ptr<Solver>&
get_solver(
const shared_ptr<Domain>&,
unsigned);
233 friend shared_ptr<Step>&
get_step(
const shared_ptr<Domain>&,
unsigned);
235 friend shared_ptr<Amplitude>&
get_amplitude(
const shared_ptr<DomainBase>&,
unsigned);
236 friend shared_ptr<Expression>&
get_expression(
const shared_ptr<DomainBase>&,
unsigned);
237 friend shared_ptr<Constraint>&
get_constraint(
const shared_ptr<DomainBase>&,
unsigned);
238 friend shared_ptr<Converger>&
get_converger(
const shared_ptr<DomainBase>&,
unsigned);
239 friend shared_ptr<Criterion>&
get_criterion(
const shared_ptr<DomainBase>&,
unsigned);
240 friend shared_ptr<Database>&
get_database(
const shared_ptr<DomainBase>&,
unsigned);
241 friend shared_ptr<Element>&
get_element(
const shared_ptr<DomainBase>&,
unsigned);
242 friend shared_ptr<Group>&
get_group(
const shared_ptr<DomainBase>&,
unsigned);
243 friend shared_ptr<Integrator>&
get_integrator(
const shared_ptr<DomainBase>&,
unsigned);
244 friend shared_ptr<Load>&
get_load(
const shared_ptr<DomainBase>&,
unsigned);
245 friend shared_ptr<Material>&
get_material(
const shared_ptr<DomainBase>&,
unsigned);
246 friend shared_ptr<Modifier>&
get_modifier(
const shared_ptr<DomainBase>&,
unsigned);
247 friend shared_ptr<Node>&
get_node(
const shared_ptr<DomainBase>&,
unsigned);
248 friend shared_ptr<Orientation>&
get_orientation(
const shared_ptr<DomainBase>&,
unsigned);
249 friend shared_ptr<Recorder>&
get_recorder(
const shared_ptr<DomainBase>&,
unsigned);
250 friend shared_ptr<Section>&
get_section(
const shared_ptr<DomainBase>&,
unsigned);
251 friend shared_ptr<Solver>&
get_solver(
const shared_ptr<DomainBase>&,
unsigned);
252 friend shared_ptr<Step>&
get_step(
const shared_ptr<DomainBase>&,
unsigned);
330 const std::vector<std::vector<unsigned>>&
get_color_map()
const override;
410 void update(
const Statistics T,
const double value)
const override { statistics[
static_cast<size_t>(
T)] += value; }
414 void save(std::string)
override;
The DomainBase class is a template.
Definition DomainBase.h:102
A Domain class holds all FE model components.
Definition Domain.h:38
bool find_element(unsigned) const override
Definition Domain.cpp:668
bool find_node(unsigned) const override
Definition Domain.cpp:680
void assemble_damping_force() const override
Definition DomainState.cpp:130
std::pair< unsigned, unsigned > get_current_solver_tag() override
Definition Domain.cpp:706
void disable_amplitude(unsigned) override
Definition Domain.cpp:294
void enable_constraint(unsigned) override
Definition Domain.cpp:435
const ConvergerQueue & get_converger_pool() const override
Definition Domain.cpp:590
bool erase_modifier(unsigned) override
Definition Domain.cpp:245
int update_trial_status() const override
Definition DomainState.cpp:497
void assemble_current_nonviscous() const override
Definition DomainState.cpp:319
bool erase_node(unsigned) override
Definition Domain.cpp:252
bool erase_expression(unsigned) override
Definition Domain.cpp:175
bool find_material(unsigned) const override
Definition Domain.cpp:676
void assemble_nonviscous_force() const override
Definition DomainState.cpp:153
bool erase_load(unsigned) override
Definition Domain.cpp:231
const shared_ptr< Step > & get_current_step() const override
Definition Domain.cpp:708
void enable_step(unsigned) override
Definition Domain.cpp:540
void update_load() override
Definition Domain.cpp:1295
friend shared_ptr< Constraint > & get_constraint(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:24
bool erase_converger(unsigned) override
Definition Domain.cpp:189
void enable_solver(unsigned) override
Definition Domain.cpp:533
bool erase_constraint(unsigned) override
Definition Domain.cpp:182
const AmplitudeQueue & get_amplitude_pool() const override
Definition Domain.cpp:584
friend shared_ptr< Section > & get_section(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:50
void enable_modifier(unsigned) override
Definition Domain.cpp:498
bool is_sparse() const override
Definition Domain.cpp:795
void enable_section(unsigned) override
Definition Domain.cpp:526
bool erase_integrator(unsigned) override
Definition Domain.cpp:224
int initialize_section() override
Definition Domain.cpp:1111
void assemble_initial_mass() const override
Definition DomainState.cpp:199
std::pair< unsigned, unsigned > get_current_converger_tag() override
Definition Domain.cpp:702
void assemble_trial_geometry() const override
Definition DomainState.cpp:444
void assemble_current_mass() const override
Definition DomainState.cpp:216
const ExternalModuleQueue & get_external_module_pool() const override
Definition Domain.cpp:76
bool erase_section(unsigned) override
Definition Domain.cpp:273
friend shared_ptr< Amplitude > & get_amplitude(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:20
const ModifierQueue & get_modifier_pool() const override
Definition Domain.cpp:606
const StepQueue & get_step_pool() const override
Definition Domain.cpp:618
bool find_modifier(unsigned) const override
Definition Domain.cpp:678
bool erase_element(unsigned) override
Definition Domain.cpp:210
void enable_element(unsigned) override
Definition Domain.cpp:463
void disable_converger(unsigned) override
Definition Domain.cpp:315
void insert_restrained_dof(const uvec &) override
concurrently safe insertion method
Definition Domain.cpp:765
const shared_ptr< Solver > & get_current_solver() const override
Definition Domain.cpp:714
const RecorderQueue & get_recorder_pool() const override
Definition Domain.cpp:612
const MaterialQueue & get_material_pool() const override
Definition Domain.cpp:604
friend shared_ptr< Material > & get_material(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:40
void assemble_current_geometry() const override
Definition DomainState.cpp:425
void assemble_constraint_stiffness() override
Definition Domain.cpp:1311
const shared_ptr< LongFactory > & get_factory() const override
Definition Domain.cpp:59
void update_current_resistance() const override
Definition DomainState.cpp:27
const shared_ptr< Integrator > & get_current_integrator() const override
Definition Domain.cpp:712
bool insert(std::future< void > &&) override
Definition Domain.cpp:61
void disable_orientation(unsigned) override
Definition Domain.cpp:385
const DatabaseQueue & get_database_pool() const override
Definition Domain.cpp:594
int initialize_constraint() override
Definition Domain.cpp:1061
const ElementQueue & get_element_pool() const override
Definition Domain.cpp:596
int process_constraint(bool) override
Definition Domain.cpp:1180
const suanpan::unordered_set< uword > & get_constrained_dof() const override
Definition Domain.cpp:791
bool find_recorder(unsigned) const override
Definition Domain.cpp:684
Domain(const Domain &)=delete
~Domain() override
Definition Domain.cpp:48
const SolverQueue & get_solver_pool() const override
Definition Domain.cpp:616
void reset_status() const override
Definition DomainState.cpp:627
void enable_load(unsigned) override
Definition Domain.cpp:484
void enable_converger(unsigned) override
Definition Domain.cpp:442
int process_modifier() override
Definition Domain.cpp:1260
void clear_status() override
Definition DomainState.cpp:602
void enable_expression(unsigned) override
Definition Domain.cpp:428
void set_current_solver_tag(unsigned) override
Definition Domain.cpp:698
void summary() const override
Definition Domain.cpp:1289
void enable_group(unsigned) override
Definition Domain.cpp:470
bool erase_material(unsigned) override
Definition Domain.cpp:238
void update(const Statistics T, const double value) const override
Definition Domain.h:410
bool find_integrator(unsigned) const override
Definition Domain.cpp:672
int initialize() override
Definition Domain.cpp:936
friend shared_ptr< Orientation > & get_orientation(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:46
void insert_constrained_dof(const uvec &) override
concurrently safe insertion method
Definition Domain.cpp:770
bool find_section(unsigned) const override
Definition Domain.cpp:686
int update_incre_status() const override
Definition DomainState.cpp:513
bool find_amplitude(unsigned) const override
Definition Domain.cpp:656
const OrientationQueue & get_orientation_pool() const override
Definition Domain.cpp:610
friend shared_ptr< Converger > & get_converger(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:26
void enable_orientation(unsigned) override
Definition Domain.cpp:512
bool erase_recorder(unsigned) override
Definition Domain.cpp:266
void disable_criterion(unsigned) override
Definition Domain.cpp:322
bool find_converger(unsigned) const override
Definition Domain.cpp:662
void disable_node(unsigned) override
Definition Domain.cpp:378
void assemble_trial_stiffness() const override
Definition DomainState.cpp:389
void enable_database(unsigned) override
Definition Domain.cpp:456
void set_factory(const shared_ptr< LongFactory > &) override
Definition Domain.cpp:52
Domain & operator=(Domain &&)=delete
void disable_solver(unsigned) override
Definition Domain.cpp:406
bool erase_step(unsigned) override
Definition Domain.cpp:287
unsigned get_current_step_tag() override
Definition Domain.cpp:700
friend shared_ptr< Group > & get_group(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:34
void assemble_trial_nonviscous() const override
Definition DomainState.cpp:337
void enable_all() override
Definition Domain.cpp:1272
unique_ptr< Amplitude > initialized_amplitude_copy(uword) override
Definition Domain.cpp:716
bool find_criterion(unsigned) const override
Definition Domain.cpp:664
friend shared_ptr< Element > & get_element(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:32
const IntegratorQueue & get_integrator_pool() const override
Definition Domain.cpp:600
int restart() override
Definition Domain.cpp:914
const CriterionQueue & get_criterion_pool() const override
Definition Domain.cpp:592
bool find_group(unsigned) const override
Definition Domain.cpp:670
void disable_element(unsigned) override
Definition Domain.cpp:336
const ConstraintQueue & get_constraint_pool() const override
Definition Domain.cpp:588
friend shared_ptr< Database > & get_database(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:30
const ExpressionQueue & get_expression_pool() const override
Definition Domain.cpp:586
bool find_expression(unsigned) const override
Definition Domain.cpp:658
void set_current_integrator_tag(unsigned) override
Definition Domain.cpp:696
void assemble_initial_nonviscous() const override
Definition DomainState.cpp:301
int process_criterion() override
Definition Domain.cpp:1254
bool erase_amplitude(unsigned) override
Definition Domain.cpp:168
void assemble_initial_geometry() const override
Definition DomainState.cpp:406
friend shared_ptr< Solver > & get_solver(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:52
bool find_constraint(unsigned) const override
Definition Domain.cpp:660
void enable_node(unsigned) override
Definition Domain.cpp:505
void disable_recorder(unsigned) override
Definition Domain.cpp:392
friend shared_ptr< Expression > & get_expression(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:22
bool get_attribute(ModalAttribute) override
Definition Domain.cpp:799
const std::vector< std::vector< unsigned > > & get_color_map() const override
Definition Domain.cpp:806
unique_ptr< Material > initialized_material_copy(uword) override
Definition Domain.cpp:729
void assemble_initial_damping() const override
Definition DomainState.cpp:250
const suanpan::unordered_set< uword > & get_loaded_dof() const override
Definition Domain.cpp:787
void assemble_load_stiffness() override
Definition Domain.cpp:1309
bool is_updated() const override
Definition Domain.cpp:793
void disable_expression(unsigned) override
Definition Domain.cpp:301
void assemble_mass_container() const override
Definition DomainState.cpp:463
void set_color_model(ColorMethod) override
Definition Domain.cpp:801
const SectionQueue & get_section_pool() const override
Definition Domain.cpp:614
std::pair< std::vector< unsigned >, suanpan::graph< unsigned > > get_element_connectivity(bool) override
Definition Domain.cpp:808
int assign_color() override
Definition Domain.cpp:886
void enable_recorder(unsigned) override
Definition Domain.cpp:519
bool find_load(unsigned) const override
Definition Domain.cpp:674
int initialize_load() override
Definition Domain.cpp:1052
bool erase_group(unsigned) override
Definition Domain.cpp:217
void commit_status() const override
Definition DomainState.cpp:589
int initialize_material() override
Definition Domain.cpp:1089
const suanpan::unordered_set< uword > & get_restrained_dof() const override
Definition Domain.cpp:789
void assemble_stiffness_container() const override
Definition DomainState.cpp:480
void disable_database(unsigned) override
Definition Domain.cpp:329
void enable_criterion(unsigned) override
Definition Domain.cpp:449
void update_current_damping_force() const override
Definition DomainState.cpp:47
void enable_amplitude(unsigned) override
Definition Domain.cpp:421
friend shared_ptr< Modifier > & get_modifier(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:42
void stage_status() override
Definition DomainState.cpp:585
friend shared_ptr< Load > & get_load(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:38
bool find_step(unsigned) const override
Definition Domain.cpp:690
const shared_ptr< Converger > & get_current_converger() const override
Definition Domain.cpp:710
void set_current_converger_tag(unsigned) override
Definition Domain.cpp:694
double stats(const Statistics T) const override
Definition Domain.h:412
friend shared_ptr< Criterion > & get_criterion(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:28
int reorder_dof() override
Definition Domain.cpp:836
const LoadQueue & get_load_pool() const override
Definition Domain.cpp:602
friend shared_ptr< Node > & get_node(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:44
Domain & operator=(const Domain &)=delete
void assemble_current_stiffness() const override
Definition DomainState.cpp:372
void assemble_current_damping() const override
Definition DomainState.cpp:267
friend shared_ptr< Recorder > & get_recorder(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:48
int initialize_reference() override
Definition Domain.cpp:1068
bool find_database(unsigned) const override
Definition Domain.cpp:666
void disable_section(unsigned) override
Definition Domain.cpp:399
void set_current_step_tag(unsigned) override
Definition Domain.cpp:692
bool find_orientation(unsigned) const override
Definition Domain.cpp:682
const NodeQueue & get_node_pool() const override
Definition Domain.cpp:608
void wait() override
Definition Domain.cpp:67
bool erase_database(unsigned) override
Definition Domain.cpp:203
void disable_material(unsigned) override
Definition Domain.cpp:364
std::pair< unsigned, unsigned > get_current_integrator_tag() override
Definition Domain.cpp:704
bool erase_solver(unsigned) override
Definition Domain.cpp:280
int soft_restart() override
Definition Domain.cpp:934
bool erase_criterion(unsigned) override
Definition Domain.cpp:196
void assemble_trial_damping() const override
Definition DomainState.cpp:284
void enable_integrator(unsigned) override
Definition Domain.cpp:477
void disable_modifier(unsigned) override
Definition Domain.cpp:371
void disable_load(unsigned) override
Definition Domain.cpp:357
bool find_solver(unsigned) const override
Definition Domain.cpp:688
void record() override
Definition Domain.cpp:1268
unique_ptr< Section > initialized_section_copy(uword) override
Definition Domain.cpp:743
void erase_machine_error(vec &) const override
Definition Domain.cpp:1291
int update_current_status() const override
Definition DomainState.cpp:529
friend shared_ptr< Integrator > & get_integrator(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:36
const GroupQueue & get_group_pool() const override
Definition Domain.cpp:598
void update_constraint() override
Definition Domain.cpp:1297
void assemble_trial_mass() const override
Definition DomainState.cpp:233
void assemble_inertial_force() const override
Definition DomainState.cpp:176
void update_current_nonviscous_force() const override
Definition DomainState.cpp:67
void assemble_resistance() const override
Definition DomainState.cpp:107
void enable_material(unsigned) override
Definition Domain.cpp:491
void assemble_initial_stiffness() const override
Definition DomainState.cpp:355
void disable_constraint(unsigned) override
Definition Domain.cpp:308
void update_current_inertial_force() const override
Definition DomainState.cpp:87
void disable_integrator(unsigned) override
Definition Domain.cpp:350
void set_attribute(ModalAttribute) override
Definition Domain.cpp:797
void disable_group(unsigned) override
Definition Domain.cpp:343
bool erase_orientation(unsigned) override
Definition Domain.cpp:259
int process_load(bool) override
Definition Domain.cpp:1133
friend shared_ptr< Step > & get_step(const shared_ptr< Domain > &, unsigned)
Definition DomainHelper.cpp:54
void save(std::string) override
Definition Domain.cpp:1316
void insert_loaded_dof(const uvec &) override
concurrently safe insertion method
Definition Domain.cpp:760
void disable_step(unsigned) override
Definition Domain.cpp:413
std::vector< shared_ptr< ExternalModule > > ExternalModuleQueue
Definition Domain.h:35
std::vector< shared_ptr< Orientation > > OrientationQueue
Definition DomainBase.h:76
std::vector< shared_ptr< Node > > NodeQueue
Definition DomainBase.h:75
std::vector< shared_ptr< Database > > DatabaseQueue
Definition DomainBase.h:68
std::vector< shared_ptr< Group > > GroupQueue
Definition DomainBase.h:70
std::vector< shared_ptr< Material > > MaterialQueue
Definition DomainBase.h:73
std::vector< shared_ptr< Modifier > > ModifierQueue
Definition DomainBase.h:74
ModalAttribute
Definition DomainBase.h:90
std::vector< shared_ptr< Integrator > > IntegratorQueue
Definition DomainBase.h:71
std::vector< shared_ptr< Recorder > > RecorderQueue
Definition DomainBase.h:77
std::vector< shared_ptr< Constraint > > ConstraintQueue
Definition DomainBase.h:65
std::map< unsigned, shared_ptr< Step > > StepQueue
Definition DomainBase.h:80
std::vector< shared_ptr< Element > > ElementQueue
Definition DomainBase.h:69
std::vector< shared_ptr< Converger > > ConvergerQueue
Definition DomainBase.h:66
std::vector< shared_ptr< Solver > > SolverQueue
Definition DomainBase.h:79
std::vector< std::future< void > > ThreadQueue
Definition Domain.h:36
ColorMethod
Definition DomainBase.h:84
std::vector< shared_ptr< Load > > LoadQueue
Definition DomainBase.h:72
std::vector< shared_ptr< Section > > SectionQueue
Definition DomainBase.h:78
Statistics
Definition DomainBase.h:94
std::vector< shared_ptr< Criterion > > CriterionQueue
Definition DomainBase.h:67
std::vector< shared_ptr< Expression > > ExpressionQueue
Definition DomainBase.h:64
std::vector< shared_ptr< Amplitude > > AmplitudeQueue
Definition DomainBase.h:63
std::unordered_set< T > unordered_set
Definition container.h:55
vector< set< T > > graph
Definition container.h:59