suanPan
DomainBase.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright (C) 2017-2022 Theodore Chang
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  ******************************************************************************/
35 #ifndef DOMAINBASE_H
36 #define DOMAINBASE_H
37 
38 #include <future>
39 #include <Domain/Tag.h>
40 #include <Toolbox/container.h>
41 
42 using std::future;
43 
44 template<sp_d T> class Factory;
45 class Amplitude;
46 class Constraint;
47 class Converger;
48 class Criterion;
49 class Database;
50 class Element;
51 class ExternalModule;
52 class Group;
53 class Integrator;
54 class Load;
55 class Material;
56 class Modifier;
57 class Node;
58 class Orientation;
59 class Recorder;
60 class Section;
61 class Solver;
62 class Step;
63 
64 using AmplitudeQueue = std::vector<shared_ptr<Amplitude>>;
65 using ConstraintQueue = std::vector<shared_ptr<Constraint>>;
66 using ConvergerQueue = std::vector<shared_ptr<Converger>>;
67 using CriterionQueue = std::vector<shared_ptr<Criterion>>;
68 using DatabaseQueue = std::vector<shared_ptr<Database>>;
69 using ElementQueue = std::vector<shared_ptr<Element>>;
70 using GroupQueue = std::vector<shared_ptr<Group>>;
71 using IntegratorQueue = std::vector<shared_ptr<Integrator>>;
72 using LoadQueue = std::vector<shared_ptr<Load>>;
73 using MaterialQueue = std::vector<shared_ptr<Material>>;
74 using ModifierQueue = std::vector<shared_ptr<Modifier>>;
75 using NodeQueue = std::vector<shared_ptr<Node>>;
76 using OrientationQueue = std::vector<shared_ptr<Orientation>>;
77 using RecorderQueue = std::vector<shared_ptr<Recorder>>;
78 using SectionQueue = std::vector<shared_ptr<Section>>;
79 using SolverQueue = std::vector<shared_ptr<Solver>>;
80 using StepQueue = std::map<unsigned, shared_ptr<Step>>;
81 
83 
84 enum class ColorMethod {
85  OFF,
86  WP,
87  MIS
88 };
89 
90 class DomainBase : public Tag {
91 public:
92  explicit DomainBase(unsigned);
93  DomainBase(const DomainBase&) = delete; // copy forbidden
94  DomainBase(DomainBase&&) = delete; // move forbidden
95  DomainBase& operator=(const DomainBase&) = delete; // assign forbidden
96  DomainBase& operator=(DomainBase&&) = delete; // assign forbidden
97  ~DomainBase() override;
98 
99  virtual void set_factory(const shared_ptr<LongFactory>&) = 0;
100  [[nodiscard]] virtual const shared_ptr<LongFactory>& get_factory() const = 0;
101 
102  virtual bool insert(const shared_ptr<future<void>>&) = 0;
103 
104  virtual void wait() = 0;
105 
106  virtual bool insert(const shared_ptr<ExternalModule>&) = 0;
107  [[nodiscard]] virtual const std::vector<shared_ptr<ExternalModule>>& get_external_module_pool() const = 0;
108 
109  virtual bool insert(const shared_ptr<Amplitude>&) = 0;
110  virtual bool insert(const shared_ptr<Constraint>&) = 0;
111  virtual bool insert(const shared_ptr<Converger>&) = 0;
112  virtual bool insert(const shared_ptr<Criterion>&) = 0;
113  virtual bool insert(const shared_ptr<Database>&) = 0;
114  virtual bool insert(const shared_ptr<Element>&) = 0;
115  virtual bool insert(const shared_ptr<Group>&) = 0;
116  virtual bool insert(const shared_ptr<Integrator>&) = 0;
117  virtual bool insert(const shared_ptr<Load>&) = 0;
118  virtual bool insert(const shared_ptr<Material>&) = 0;
119  virtual bool insert(const shared_ptr<Modifier>&) = 0;
120  virtual bool insert(const shared_ptr<Node>&) = 0;
121  virtual bool insert(const shared_ptr<Orientation>&) = 0;
122  virtual bool insert(const shared_ptr<Recorder>&) = 0;
123  virtual bool insert(const shared_ptr<Section>&) = 0;
124  virtual bool insert(const shared_ptr<Solver>&) = 0;
125  virtual bool insert(const shared_ptr<Step>&) = 0;
126 
127  template<typename T> bool erase(unsigned);
128  virtual bool erase_amplitude(unsigned) = 0;
129  virtual bool erase_constraint(unsigned) = 0;
130  virtual bool erase_converger(unsigned) = 0;
131  virtual bool erase_criterion(unsigned) = 0;
132  virtual bool erase_database(unsigned) = 0;
133  virtual bool erase_element(unsigned) = 0;
134  virtual bool erase_group(unsigned) = 0;
135  virtual bool erase_integrator(unsigned) = 0;
136  virtual bool erase_load(unsigned) = 0;
137  virtual bool erase_material(unsigned) = 0;
138  virtual bool erase_modifier(unsigned) = 0;
139  virtual bool erase_node(unsigned) = 0;
140  virtual bool erase_orientation(unsigned) = 0;
141  virtual bool erase_recorder(unsigned) = 0;
142  virtual bool erase_section(unsigned) = 0;
143  virtual bool erase_solver(unsigned) = 0;
144  virtual bool erase_step(unsigned) = 0;
145 
146  virtual void disable_amplitude(unsigned) = 0;
147  virtual void disable_constraint(unsigned) = 0;
148  virtual void disable_converger(unsigned) = 0;
149  virtual void disable_criterion(unsigned) = 0;
150  virtual void disable_database(unsigned) = 0;
151  virtual void disable_element(unsigned) = 0;
152  virtual void disable_group(unsigned) = 0;
153  virtual void disable_integrator(unsigned) = 0;
154  virtual void disable_load(unsigned) = 0;
155  virtual void disable_material(unsigned) = 0;
156  virtual void disable_modifier(unsigned) = 0;
157  virtual void disable_node(unsigned) = 0;
158  virtual void disable_orientation(unsigned) = 0;
159  virtual void disable_recorder(unsigned) = 0;
160  virtual void disable_section(unsigned) = 0;
161  virtual void disable_solver(unsigned) = 0;
162  virtual void disable_step(unsigned) = 0;
163 
164  virtual void enable_amplitude(unsigned) = 0;
165  virtual void enable_constraint(unsigned) = 0;
166  virtual void enable_converger(unsigned) = 0;
167  virtual void enable_criterion(unsigned) = 0;
168  virtual void enable_database(unsigned) = 0;
169  virtual void enable_element(unsigned) = 0;
170  virtual void enable_group(unsigned) = 0;
171  virtual void enable_integrator(unsigned) = 0;
172  virtual void enable_load(unsigned) = 0;
173  virtual void enable_material(unsigned) = 0;
174  virtual void enable_modifier(unsigned) = 0;
175  virtual void enable_node(unsigned) = 0;
176  virtual void enable_orientation(unsigned) = 0;
177  virtual void enable_recorder(unsigned) = 0;
178  virtual void enable_section(unsigned) = 0;
179  virtual void enable_solver(unsigned) = 0;
180  virtual void enable_step(unsigned) = 0;
181 
182  template<typename T> const shared_ptr<T>& get(unsigned);
183  template<typename T> const shared_ptr<T>& get(uword);
184  template<typename T> std::vector<shared_ptr<T>> get(const uvec&);
185  [[nodiscard]] virtual const shared_ptr<Amplitude>& get_amplitude(unsigned) const = 0;
186  [[nodiscard]] virtual const shared_ptr<Constraint>& get_constraint(unsigned) const = 0;
187  [[nodiscard]] virtual const shared_ptr<Converger>& get_converger(unsigned) const = 0;
188  [[nodiscard]] virtual const shared_ptr<Criterion>& get_criterion(unsigned) const = 0;
189  [[nodiscard]] virtual const shared_ptr<Database>& get_database(unsigned) const = 0;
190  [[nodiscard]] virtual const shared_ptr<Element>& get_element(unsigned) const = 0;
191  [[nodiscard]] virtual const shared_ptr<Group>& get_group(unsigned) const = 0;
192  [[nodiscard]] virtual const shared_ptr<Integrator>& get_integrator(unsigned) const = 0;
193  [[nodiscard]] virtual const shared_ptr<Load>& get_load(unsigned) const = 0;
194  [[nodiscard]] virtual const shared_ptr<Material>& get_material(unsigned) const = 0;
195  [[nodiscard]] virtual const shared_ptr<Modifier>& get_modifier(unsigned) const = 0;
196  [[nodiscard]] virtual const shared_ptr<Node>& get_node(unsigned) const = 0;
197  [[nodiscard]] virtual const shared_ptr<Orientation>& get_orientation(unsigned) const = 0;
198  [[nodiscard]] virtual const shared_ptr<Recorder>& get_recorder(unsigned) const = 0;
199  [[nodiscard]] virtual const shared_ptr<Section>& get_section(unsigned) const = 0;
200  [[nodiscard]] virtual const shared_ptr<Solver>& get_solver(unsigned) const = 0;
201  [[nodiscard]] virtual const shared_ptr<Step>& get_step(unsigned) const = 0;
202 
203  template<typename T> const std::vector<shared_ptr<T>>& get_pool();
204  [[nodiscard]] virtual const AmplitudeQueue& get_amplitude_pool() const = 0;
205  [[nodiscard]] virtual const ConstraintQueue& get_constraint_pool() const = 0;
206  [[nodiscard]] virtual const ConvergerQueue& get_converger_pool() const = 0;
207  [[nodiscard]] virtual const CriterionQueue& get_criterion_pool() const = 0;
208  [[nodiscard]] virtual const DatabaseQueue& get_database_pool() const = 0;
209  [[nodiscard]] virtual const ElementQueue& get_element_pool() const = 0;
210  [[nodiscard]] virtual const GroupQueue& get_group_pool() const = 0;
211  [[nodiscard]] virtual const IntegratorQueue& get_integrator_pool() const = 0;
212  [[nodiscard]] virtual const LoadQueue& get_load_pool() const = 0;
213  [[nodiscard]] virtual const MaterialQueue& get_material_pool() const = 0;
214  [[nodiscard]] virtual const ModifierQueue& get_modifier_pool() const = 0;
215  [[nodiscard]] virtual const NodeQueue& get_node_pool() const = 0;
216  [[nodiscard]] virtual const OrientationQueue& get_orientation_pool() const = 0;
217  [[nodiscard]] virtual const RecorderQueue& get_recorder_pool() const = 0;
218  [[nodiscard]] virtual const SectionQueue& get_section_pool() const = 0;
219  [[nodiscard]] virtual const SolverQueue& get_solver_pool() const = 0;
220  [[nodiscard]] virtual const StepQueue& get_step_pool() const = 0;
221 
222  friend shared_ptr<Amplitude>& get_amplitude(const shared_ptr<DomainBase>&, unsigned);
223  friend shared_ptr<Constraint>& get_constraint(const shared_ptr<DomainBase>&, unsigned);
224  friend shared_ptr<Converger>& get_converger(const shared_ptr<DomainBase>&, unsigned);
225  friend shared_ptr<Criterion>& get_criterion(const shared_ptr<DomainBase>&, unsigned);
226  friend shared_ptr<Database>& get_database(const shared_ptr<DomainBase>&, unsigned);
227  friend shared_ptr<Element>& get_element(const shared_ptr<DomainBase>&, unsigned);
228  friend shared_ptr<Group>& get_group(const shared_ptr<DomainBase>&, unsigned);
229  friend shared_ptr<Integrator>& get_integrator(const shared_ptr<DomainBase>&, unsigned);
230  friend shared_ptr<Load>& get_load(const shared_ptr<DomainBase>&, unsigned);
231  friend shared_ptr<Material>& get_material(const shared_ptr<DomainBase>&, unsigned);
232  friend shared_ptr<Modifier>& get_modifier(const shared_ptr<DomainBase>&, unsigned);
233  friend shared_ptr<Node>& get_node(const shared_ptr<DomainBase>&, unsigned);
234  friend shared_ptr<Orientation>& get_orientation(const shared_ptr<DomainBase>&, unsigned);
235  friend shared_ptr<Recorder>& get_recorder(const shared_ptr<DomainBase>&, unsigned);
236  friend shared_ptr<Section>& get_section(const shared_ptr<DomainBase>&, unsigned);
237  friend shared_ptr<Solver>& get_solver(const shared_ptr<DomainBase>&, unsigned);
238  friend shared_ptr<Step>& get_step(const shared_ptr<DomainBase>&, unsigned);
239 
240  template<typename T> size_t get();
241  [[nodiscard]] virtual size_t get_amplitude() const = 0;
242  [[nodiscard]] virtual size_t get_constraint() const = 0;
243  [[nodiscard]] virtual size_t get_converger() const = 0;
244  [[nodiscard]] virtual size_t get_criterion() const = 0;
245  [[nodiscard]] virtual size_t get_database() const = 0;
246  [[nodiscard]] virtual size_t get_element() const = 0;
247  [[nodiscard]] virtual size_t get_group() const = 0;
248  [[nodiscard]] virtual size_t get_integrator() const = 0;
249  [[nodiscard]] virtual size_t get_load() const = 0;
250  [[nodiscard]] virtual size_t get_material() const = 0;
251  [[nodiscard]] virtual size_t get_modifier() const = 0;
252  [[nodiscard]] virtual size_t get_node() const = 0;
253  [[nodiscard]] virtual size_t get_orientation() const = 0;
254  [[nodiscard]] virtual size_t get_recorder() const = 0;
255  [[nodiscard]] virtual size_t get_section() const = 0;
256  [[nodiscard]] virtual size_t get_solver() const = 0;
257  [[nodiscard]] virtual size_t get_step() const = 0;
258 
259  template<typename T> bool find(unsigned);
260  template<typename T> bool find(uword);
261  template<typename T> bool find(const uvec&);
262  [[nodiscard]] virtual bool find_amplitude(unsigned) const = 0;
263  [[nodiscard]] virtual bool find_constraint(unsigned) const = 0;
264  [[nodiscard]] virtual bool find_converger(unsigned) const = 0;
265  [[nodiscard]] virtual bool find_criterion(unsigned) const = 0;
266  [[nodiscard]] virtual bool find_database(unsigned) const = 0;
267  [[nodiscard]] virtual bool find_element(unsigned) const = 0;
268  [[nodiscard]] virtual bool find_group(unsigned) const = 0;
269  [[nodiscard]] virtual bool find_integrator(unsigned) const = 0;
270  [[nodiscard]] virtual bool find_load(unsigned) const = 0;
271  [[nodiscard]] virtual bool find_material(unsigned) const = 0;
272  [[nodiscard]] virtual bool find_modifier(unsigned) const = 0;
273  [[nodiscard]] virtual bool find_node(unsigned) const = 0;
274  [[nodiscard]] virtual bool find_orientation(unsigned) const = 0;
275  [[nodiscard]] virtual bool find_recorder(unsigned) const = 0;
276  [[nodiscard]] virtual bool find_section(unsigned) const = 0;
277  [[nodiscard]] virtual bool find_solver(unsigned) const = 0;
278  [[nodiscard]] virtual bool find_step(unsigned) const = 0;
279 
280  virtual void set_current_step_tag(unsigned) = 0;
281  virtual void set_current_converger_tag(unsigned) = 0;
282  virtual void set_current_integrator_tag(unsigned) = 0;
283  virtual void set_current_solver_tag(unsigned) = 0;
284 
285  virtual unsigned get_current_step_tag() = 0;
286  virtual unsigned get_current_converger_tag() = 0;
287  virtual unsigned get_current_integrator_tag() = 0;
288  virtual unsigned get_current_solver_tag() = 0;
289 
290  [[nodiscard]] virtual const shared_ptr<Step>& get_current_step() const = 0;
291  [[nodiscard]] virtual const shared_ptr<Converger>& get_current_converger() const = 0;
292  [[nodiscard]] virtual const shared_ptr<Integrator>& get_current_integrator() const = 0;
293  [[nodiscard]] virtual const shared_ptr<Solver>& get_current_solver() const = 0;
294 
298  virtual void insert_loaded_dof(const uvec&) = 0;
302  virtual void insert_restrained_dof(const uvec&) = 0;
306  virtual void insert_constrained_dof(const uvec&) = 0;
307 
311  virtual void insert_loaded_dof(uword) = 0;
315  virtual void insert_restrained_dof(uword) = 0;
319  virtual void insert_constrained_dof(uword) = 0;
320 
321  [[nodiscard]] virtual const suanpan::unordered_set<uword>& get_loaded_dof() const = 0;
322  [[nodiscard]] virtual const suanpan::unordered_set<uword>& get_restrained_dof() const = 0;
323  [[nodiscard]] virtual const suanpan::unordered_set<uword>& get_constrained_dof() const = 0;
324 
325  [[nodiscard]] virtual bool is_updated() const = 0;
326  [[nodiscard]] virtual bool is_sparse() const = 0;
327 
328  virtual void set_color_model(ColorMethod) = 0;
329  [[nodiscard]] virtual const std::vector<std::vector<unsigned>>& get_color_map() const = 0;
330  [[nodiscard]] virtual std::pair<std::vector<unsigned>, suanpan::graph<unsigned>> get_element_connectivity(bool) = 0;
331 
332  virtual int reorder_dof() = 0;
333  virtual int assign_color() = 0;
334 
335  virtual int restart() = 0;
336  virtual int soft_restart() = 0;
337  virtual int initialize() = 0;
338  virtual int initialize_load() = 0;
339  virtual int initialize_constraint() = 0;
340  virtual int initialize_reference() = 0;
341 
342  [[nodiscard]] virtual int process_load(bool) = 0;
343  [[nodiscard]] virtual int process_constraint(bool) = 0;
344  [[nodiscard]] virtual int process_criterion() = 0;
345  [[nodiscard]] virtual int process_modifier() = 0;
346 
347  virtual void record() = 0;
348  virtual void enable_all() = 0;
349  virtual void summary() const = 0;
350 
351  virtual void update_current_resistance() const = 0;
352  virtual void update_current_damping_force() const = 0;
353  virtual void update_current_inertial_force() const = 0;
354 
355  virtual void assemble_resistance() const = 0;
356  virtual void assemble_damping_force() const = 0;
357  virtual void assemble_inertial_force() const = 0;
358 
359  virtual void assemble_initial_mass() const = 0;
360  virtual void assemble_current_mass() const = 0;
361  virtual void assemble_trial_mass() const = 0;
362  virtual void assemble_initial_damping() const = 0;
363  virtual void assemble_current_damping() const = 0;
364  virtual void assemble_trial_damping() const = 0;
365  virtual void assemble_initial_stiffness() const = 0;
366  virtual void assemble_current_stiffness() const = 0;
367  virtual void assemble_trial_stiffness() const = 0;
368  virtual void assemble_initial_geometry() const = 0;
369  virtual void assemble_current_geometry() const = 0;
370  virtual void assemble_trial_geometry() const = 0;
371 
372  virtual void assemble_mass_container() const = 0;
373  virtual void assemble_stiffness_container() const = 0;
374 
375  virtual void erase_machine_error() const = 0;
376 
377  virtual void update_load() = 0;
378  virtual void update_constraint() = 0;
379 
380  virtual void assemble_load_stiffness() = 0;
381  virtual void assemble_constraint_stiffness() = 0;
382 
383  [[nodiscard]] virtual int update_current_status() const = 0;
384  [[nodiscard]] virtual int update_incre_status() const = 0;
385  [[nodiscard]] virtual int update_trial_status() const = 0;
386 
387  virtual void stage_status() = 0;
388  virtual void commit_status() const = 0;
389  virtual void clear_status() = 0;
390  virtual void reset_status() const = 0;
391 
392  virtual void save(string) = 0;
393 };
394 
395 template<typename T> bool DomainBase::erase(unsigned) { throw invalid_argument("unsupported"); }
396 
397 template<> inline bool DomainBase::erase<Amplitude>(const unsigned T) { return erase_amplitude(T); }
398 
399 template<> inline bool DomainBase::erase<Constraint>(const unsigned T) { return erase_constraint(T); }
400 
401 template<> inline bool DomainBase::erase<Converger>(const unsigned T) { return erase_converger(T); }
402 
403 template<> inline bool DomainBase::erase<Criterion>(const unsigned T) { return erase_criterion(T); }
404 
405 template<> inline bool DomainBase::erase<Database>(const unsigned T) { return erase_database(T); }
406 
407 template<> inline bool DomainBase::erase<Element>(const unsigned T) { return erase_element(T); }
408 
409 template<> inline bool DomainBase::erase<Group>(const unsigned T) { return erase_group(T); }
410 
411 template<> inline bool DomainBase::erase<Integrator>(const unsigned T) { return erase_integrator(T); }
412 
413 template<> inline bool DomainBase::erase<Load>(const unsigned T) { return erase_load(T); }
414 
415 template<> inline bool DomainBase::erase<Material>(const unsigned T) { return erase_material(T); }
416 
417 template<> inline bool DomainBase::erase<Modifier>(const unsigned T) { return erase_modifier(T); }
418 
419 template<> inline bool DomainBase::erase<Node>(const unsigned T) { return erase_node(T); }
420 
421 template<> inline bool DomainBase::erase<Orientation>(const unsigned T) { return erase_orientation(T); }
422 
423 template<> inline bool DomainBase::erase<Recorder>(const unsigned T) { return erase_recorder(T); }
424 
425 template<> inline bool DomainBase::erase<Section>(const unsigned T) { return erase_section(T); }
426 
427 template<> inline bool DomainBase::erase<Solver>(const unsigned T) { return erase_solver(T); }
428 
429 template<> inline bool DomainBase::erase<Step>(const unsigned T) { return erase_step(T); }
430 
431 template<typename T> const shared_ptr<T>& DomainBase::get(unsigned) { throw invalid_argument("unsupported"); }
432 
433 template<typename T> const shared_ptr<T>& DomainBase::get(uword) { throw invalid_argument("unsupported"); }
434 
435 template<typename T> std::vector<shared_ptr<T>> DomainBase::get(const uvec& P) {
436  std::vector<shared_ptr<T>> output;
437  output.reserve(P.n_elem);
438 
439  for(auto I : P) output.emplace_back(get<T>(I));
440 
441  return output;
442 }
443 
444 template<> inline const shared_ptr<Amplitude>& DomainBase::get<Amplitude>(const uword T) { return get_amplitude(static_cast<unsigned>(T)); }
445 
446 template<> inline const shared_ptr<Constraint>& DomainBase::get<Constraint>(const uword T) { return get_constraint(static_cast<unsigned>(T)); }
447 
448 template<> inline const shared_ptr<Converger>& DomainBase::get<Converger>(const uword T) { return get_converger(static_cast<unsigned>(T)); }
449 
450 template<> inline const shared_ptr<Criterion>& DomainBase::get<Criterion>(const uword T) { return get_criterion(static_cast<unsigned>(T)); }
451 
452 template<> inline const shared_ptr<Database>& DomainBase::get<Database>(const uword T) { return get_database(static_cast<unsigned>(T)); }
453 
454 template<> inline const shared_ptr<Element>& DomainBase::get<Element>(const uword T) { return get_element(static_cast<unsigned>(T)); }
455 
456 template<> inline const shared_ptr<Group>& DomainBase::get<Group>(const uword T) { return get_group(static_cast<unsigned>(T)); }
457 
458 template<> inline const shared_ptr<Integrator>& DomainBase::get<Integrator>(const uword T) { return get_integrator(static_cast<unsigned>(T)); }
459 
460 template<> inline const shared_ptr<Load>& DomainBase::get<Load>(const uword T) { return get_load(static_cast<unsigned>(T)); }
461 
462 template<> inline const shared_ptr<Material>& DomainBase::get<Material>(const uword T) { return get_material(static_cast<unsigned>(T)); }
463 
464 template<> inline const shared_ptr<Modifier>& DomainBase::get<Modifier>(const uword T) { return get_modifier(static_cast<unsigned>(T)); }
465 
466 template<> inline const shared_ptr<Node>& DomainBase::get<Node>(const uword T) { return get_node(static_cast<unsigned>(T)); }
467 
468 template<> inline const shared_ptr<Orientation>& DomainBase::get<Orientation>(const uword T) { return get_orientation(static_cast<unsigned>(T)); }
469 
470 template<> inline const shared_ptr<Recorder>& DomainBase::get<Recorder>(const uword T) { return get_recorder(static_cast<unsigned>(T)); }
471 
472 template<> inline const shared_ptr<Section>& DomainBase::get<Section>(const uword T) { return get_section(static_cast<unsigned>(T)); }
473 
474 template<> inline const shared_ptr<Solver>& DomainBase::get<Solver>(const uword T) { return get_solver(static_cast<unsigned>(T)); }
475 
476 template<> inline const shared_ptr<Step>& DomainBase::get<Step>(const uword T) { return get_step(static_cast<unsigned>(T)); }
477 
478 template<> inline const shared_ptr<Amplitude>& DomainBase::get<Amplitude>(const unsigned T) { return get_amplitude(T); }
479 
480 template<> inline const shared_ptr<Constraint>& DomainBase::get<Constraint>(const unsigned T) { return get_constraint(T); }
481 
482 template<> inline const shared_ptr<Converger>& DomainBase::get<Converger>(const unsigned T) { return get_converger(T); }
483 
484 template<> inline const shared_ptr<Criterion>& DomainBase::get<Criterion>(const unsigned T) { return get_criterion(T); }
485 
486 template<> inline const shared_ptr<Database>& DomainBase::get<Database>(const unsigned T) { return get_database(T); }
487 
488 template<> inline const shared_ptr<Element>& DomainBase::get<Element>(const unsigned T) { return get_element(T); }
489 
490 template<> inline const shared_ptr<Group>& DomainBase::get<Group>(const unsigned T) { return get_group(T); }
491 
492 template<> inline const shared_ptr<Integrator>& DomainBase::get<Integrator>(const unsigned T) { return get_integrator(T); }
493 
494 template<> inline const shared_ptr<Load>& DomainBase::get<Load>(const unsigned T) { return get_load(T); }
495 
496 template<> inline const shared_ptr<Material>& DomainBase::get<Material>(const unsigned T) { return get_material(T); }
497 
498 template<> inline const shared_ptr<Modifier>& DomainBase::get<Modifier>(const unsigned T) { return get_modifier(T); }
499 
500 template<> inline const shared_ptr<Node>& DomainBase::get<Node>(const unsigned T) { return get_node(T); }
501 
502 template<> inline const shared_ptr<Orientation>& DomainBase::get<Orientation>(const unsigned T) { return get_orientation(T); }
503 
504 template<> inline const shared_ptr<Recorder>& DomainBase::get<Recorder>(const unsigned T) { return get_recorder(T); }
505 
506 template<> inline const shared_ptr<Section>& DomainBase::get<Section>(const unsigned T) { return get_section(T); }
507 
508 template<> inline const shared_ptr<Solver>& DomainBase::get<Solver>(const unsigned T) { return get_solver(T); }
509 
510 template<> inline const shared_ptr<Step>& DomainBase::get<Step>(const unsigned T) { return get_step(T); }
511 
512 template<typename T> const std::vector<shared_ptr<T>>& DomainBase::get_pool() { throw invalid_argument("unsupported"); }
513 
514 template<> inline const std::vector<shared_ptr<Amplitude>>& DomainBase::get_pool<Amplitude>() { return get_amplitude_pool(); }
515 
516 template<> inline const std::vector<shared_ptr<Constraint>>& DomainBase::get_pool<Constraint>() { return get_constraint_pool(); }
517 
518 template<> inline const std::vector<shared_ptr<Converger>>& DomainBase::get_pool<Converger>() { return get_converger_pool(); }
519 
520 template<> inline const std::vector<shared_ptr<Criterion>>& DomainBase::get_pool<Criterion>() { return get_criterion_pool(); }
521 
522 template<> inline const std::vector<shared_ptr<Database>>& DomainBase::get_pool<Database>() { return get_database_pool(); }
523 
524 template<> inline const std::vector<shared_ptr<Element>>& DomainBase::get_pool<Element>() { return get_element_pool(); }
525 
526 template<> inline const std::vector<shared_ptr<Group>>& DomainBase::get_pool<Group>() { return get_group_pool(); }
527 
528 template<> inline const std::vector<shared_ptr<Integrator>>& DomainBase::get_pool<Integrator>() { return get_integrator_pool(); }
529 
530 template<> inline const std::vector<shared_ptr<Load>>& DomainBase::get_pool<Load>() { return get_load_pool(); }
531 
532 template<> inline const std::vector<shared_ptr<Material>>& DomainBase::get_pool<Material>() { return get_material_pool(); }
533 
534 template<> inline const std::vector<shared_ptr<Modifier>>& DomainBase::get_pool<Modifier>() { return get_modifier_pool(); }
535 
536 template<> inline const std::vector<shared_ptr<Node>>& DomainBase::get_pool<Node>() { return get_node_pool(); }
537 
538 template<> inline const std::vector<shared_ptr<Orientation>>& DomainBase::get_pool<Orientation>() { return get_orientation_pool(); }
539 
540 template<> inline const std::vector<shared_ptr<Recorder>>& DomainBase::get_pool<Recorder>() { return get_recorder_pool(); }
541 
542 template<> inline const std::vector<shared_ptr<Section>>& DomainBase::get_pool<Section>() { return get_section_pool(); }
543 
544 template<> inline const std::vector<shared_ptr<Solver>>& DomainBase::get_pool<Solver>() { return get_solver_pool(); }
545 
546 template<typename T> size_t DomainBase::get() { throw invalid_argument("unsupported"); }
547 
548 template<> inline size_t DomainBase::get<Amplitude>() { return get_amplitude(); }
549 
550 template<> inline size_t DomainBase::get<Constraint>() { return get_constraint(); }
551 
552 template<> inline size_t DomainBase::get<Converger>() { return get_converger(); }
553 
554 template<> inline size_t DomainBase::get<Criterion>() { return get_criterion(); }
555 
556 template<> inline size_t DomainBase::get<Database>() { return get_database(); }
557 
558 template<> inline size_t DomainBase::get<Element>() { return get_element(); }
559 
560 template<> inline size_t DomainBase::get<Group>() { return get_group(); }
561 
562 template<> inline size_t DomainBase::get<Integrator>() { return get_integrator(); }
563 
564 template<> inline size_t DomainBase::get<Load>() { return get_load(); }
565 
566 template<> inline size_t DomainBase::get<Material>() { return get_material(); }
567 
568 template<> inline size_t DomainBase::get<Modifier>() { return get_modifier(); }
569 
570 template<> inline size_t DomainBase::get<Node>() { return get_node(); }
571 
572 template<> inline size_t DomainBase::get<Orientation>() { return get_orientation(); }
573 
574 template<> inline size_t DomainBase::get<Recorder>() { return get_recorder(); }
575 
576 template<> inline size_t DomainBase::get<Section>() { return get_section(); }
577 
578 template<> inline size_t DomainBase::get<Solver>() { return get_solver(); }
579 
580 template<> inline size_t DomainBase::get<Step>() { return get_step(); }
581 
582 template<typename T> bool DomainBase::find(unsigned) { throw invalid_argument("unsupported"); }
583 
584 template<typename T> bool DomainBase::find(uword) { throw invalid_argument("unsupported"); }
585 
586 template<typename T> bool DomainBase::find(const uvec& P) {
587  for(auto I : P) if(!find<T>(I)) return false;
588 
589  return true;
590 }
591 
592 template<> inline bool DomainBase::find<Amplitude>(const uword T) { return find_amplitude(static_cast<unsigned>(T)); }
593 
594 template<> inline bool DomainBase::find<Constraint>(const uword T) { return find_constraint(static_cast<unsigned>(T)); }
595 
596 template<> inline bool DomainBase::find<Converger>(const uword T) { return find_converger(static_cast<unsigned>(T)); }
597 
598 template<> inline bool DomainBase::find<Criterion>(const uword T) { return find_criterion(static_cast<unsigned>(T)); }
599 
600 template<> inline bool DomainBase::find<Database>(const uword T) { return find_database(static_cast<unsigned>(T)); }
601 
602 template<> inline bool DomainBase::find<Element>(const uword T) { return find_element(static_cast<unsigned>(T)); }
603 
604 template<> inline bool DomainBase::find<Group>(const uword T) { return find_group(static_cast<unsigned>(T)); }
605 
606 template<> inline bool DomainBase::find<Integrator>(const uword T) { return find_integrator(static_cast<unsigned>(T)); }
607 
608 template<> inline bool DomainBase::find<Load>(const uword T) { return find_load(static_cast<unsigned>(T)); }
609 
610 template<> inline bool DomainBase::find<Material>(const uword T) { return find_material(static_cast<unsigned>(T)); }
611 
612 template<> inline bool DomainBase::find<Modifier>(const uword T) { return find_modifier(static_cast<unsigned>(T)); }
613 
614 template<> inline bool DomainBase::find<Node>(const uword T) { return find_node(static_cast<unsigned>(T)); }
615 
616 template<> inline bool DomainBase::find<Orientation>(const uword T) { return find_orientation(static_cast<unsigned>(T)); }
617 
618 template<> inline bool DomainBase::find<Recorder>(const uword T) { return find_recorder(static_cast<unsigned>(T)); }
619 
620 template<> inline bool DomainBase::find<Section>(const uword T) { return find_section(static_cast<unsigned>(T)); }
621 
622 template<> inline bool DomainBase::find<Solver>(const uword T) { return find_solver(static_cast<unsigned>(T)); }
623 
624 template<> inline bool DomainBase::find<Step>(const uword T) { return find_step(static_cast<unsigned>(T)); }
625 
626 template<> inline bool DomainBase::find<Amplitude>(const unsigned T) { return find_amplitude(T); }
627 
628 template<> inline bool DomainBase::find<Constraint>(const unsigned T) { return find_constraint(T); }
629 
630 template<> inline bool DomainBase::find<Converger>(const unsigned T) { return find_converger(T); }
631 
632 template<> inline bool DomainBase::find<Criterion>(const unsigned T) { return find_criterion(T); }
633 
634 template<> inline bool DomainBase::find<Database>(const unsigned T) { return find_database(T); }
635 
636 template<> inline bool DomainBase::find<Element>(const unsigned T) { return find_element(T); }
637 
638 template<> inline bool DomainBase::find<Group>(const unsigned T) { return find_group(T); }
639 
640 template<> inline bool DomainBase::find<Integrator>(const unsigned T) { return find_integrator(T); }
641 
642 template<> inline bool DomainBase::find<Load>(const unsigned T) { return find_load(T); }
643 
644 template<> inline bool DomainBase::find<Material>(const unsigned T) { return find_material(T); }
645 
646 template<> inline bool DomainBase::find<Modifier>(const unsigned T) { return find_modifier(T); }
647 
648 template<> inline bool DomainBase::find<Node>(const unsigned T) { return find_node(T); }
649 
650 template<> inline bool DomainBase::find<Orientation>(const unsigned T) { return find_orientation(T); }
651 
652 template<> inline bool DomainBase::find<Recorder>(const unsigned T) { return find_recorder(T); }
653 
654 template<> inline bool DomainBase::find<Section>(const unsigned T) { return find_section(T); }
655 
656 template<> inline bool DomainBase::find<Solver>(const unsigned T) { return find_solver(T); }
657 
658 template<> inline bool DomainBase::find<Step>(const unsigned T) { return find_step(T); }
659 
660 #endif
661 
An Amplitude class that can generate Amplitude pattern.
Definition: Amplitude.h:67
A Constraint class.
Definition: Constraint.h:36
The Converger class handles converger test to indicate if the iteration converges according to variou...
Definition: Converger.h:44
A Criterion class.
Definition: Criterion.h:38
A Database class is a top level container.
Definition: Database.h:33
The DomainBase class is a template.
Definition: DomainBase.h:90
virtual void disable_element(unsigned)=0
virtual const SectionQueue & get_section_pool() const =0
virtual void disable_converger(unsigned)=0
virtual const StepQueue & get_step_pool() const =0
virtual bool find_element(unsigned) const =0
virtual bool erase_solver(unsigned)=0
virtual void enable_criterion(unsigned)=0
virtual void assemble_trial_stiffness() const =0
virtual void assemble_initial_stiffness() const =0
virtual const suanpan::unordered_set< uword > & get_loaded_dof() const =0
virtual void enable_database(unsigned)=0
virtual const shared_ptr< Criterion > & get_criterion(unsigned) const =0
virtual void enable_step(unsigned)=0
virtual bool find_group(unsigned) const =0
virtual const ModifierQueue & get_modifier_pool() const =0
virtual void disable_section(unsigned)=0
virtual const shared_ptr< Recorder > & get_recorder(unsigned) const =0
virtual int reorder_dof()=0
virtual const AmplitudeQueue & get_amplitude_pool() const =0
virtual int initialize_constraint()=0
virtual size_t get_step() const =0
virtual void assemble_current_geometry() const =0
virtual void insert_restrained_dof(uword)=0
concurrently safe insertion method
virtual void enable_section(unsigned)=0
virtual bool insert(const shared_ptr< Amplitude > &)=0
virtual const NodeQueue & get_node_pool() const =0
virtual void save(string)=0
virtual void enable_load(unsigned)=0
DomainBase & operator=(DomainBase &&)=delete
virtual void enable_material(unsigned)=0
virtual bool find_modifier(unsigned) const =0
virtual bool insert(const shared_ptr< Database > &)=0
virtual bool insert(const shared_ptr< Section > &)=0
virtual void disable_step(unsigned)=0
virtual void assemble_resistance() const =0
virtual void update_current_inertial_force() const =0
virtual bool erase_recorder(unsigned)=0
virtual const shared_ptr< Group > & get_group(unsigned) const =0
virtual void stage_status()=0
virtual void disable_modifier(unsigned)=0
virtual const std::vector< shared_ptr< ExternalModule > > & get_external_module_pool() const =0
virtual const MaterialQueue & get_material_pool() const =0
virtual size_t get_constraint() const =0
virtual bool erase_integrator(unsigned)=0
virtual void summary() const =0
virtual void set_current_step_tag(unsigned)=0
virtual int initialize()=0
virtual bool insert(const shared_ptr< Recorder > &)=0
virtual void disable_load(unsigned)=0
virtual bool insert(const shared_ptr< Constraint > &)=0
virtual size_t get_orientation() const =0
virtual unsigned get_current_integrator_tag()=0
virtual bool insert(const shared_ptr< Modifier > &)=0
virtual void assemble_damping_force() const =0
virtual const shared_ptr< LongFactory > & get_factory() const =0
virtual size_t get_node() const =0
virtual void enable_all()=0
virtual const std::vector< std::vector< unsigned > > & get_color_map() const =0
virtual size_t get_modifier() const =0
virtual bool find_criterion(unsigned) const =0
virtual bool erase_step(unsigned)=0
DomainBase(DomainBase &&)=delete
virtual void assemble_stiffness_container() const =0
virtual void disable_recorder(unsigned)=0
virtual void commit_status() const =0
virtual bool find_integrator(unsigned) const =0
virtual bool find_amplitude(unsigned) const =0
virtual bool insert(const shared_ptr< Material > &)=0
virtual const OrientationQueue & get_orientation_pool() const =0
virtual const shared_ptr< Load > & get_load(unsigned) const =0
virtual bool insert(const shared_ptr< Node > &)=0
virtual const shared_ptr< Database > & get_database(unsigned) const =0
virtual size_t get_recorder() const =0
virtual const shared_ptr< Step > & get_step(unsigned) const =0
virtual const LoadQueue & get_load_pool() const =0
virtual bool erase_modifier(unsigned)=0
virtual void set_current_solver_tag(unsigned)=0
virtual size_t get_element() const =0
virtual void assemble_inertial_force() const =0
virtual void erase_machine_error() const =0
virtual void disable_constraint(unsigned)=0
virtual bool is_updated() const =0
virtual void enable_integrator(unsigned)=0
virtual bool insert(const shared_ptr< Group > &)=0
virtual void insert_loaded_dof(const uvec &)=0
concurrently safe insertion method
virtual unsigned get_current_step_tag()=0
virtual void enable_node(unsigned)=0
virtual bool find_database(unsigned) const =0
virtual bool insert(const shared_ptr< future< void >> &)=0
virtual const suanpan::unordered_set< uword > & get_constrained_dof() const =0
virtual void assemble_trial_damping() const =0
DomainBase & operator=(const DomainBase &)=delete
virtual size_t get_group() const =0
virtual bool find_constraint(unsigned) const =0
virtual const shared_ptr< Integrator > & get_integrator(unsigned) const =0
virtual size_t get_database() const =0
virtual bool find_orientation(unsigned) const =0
virtual const shared_ptr< Amplitude > & get_amplitude(unsigned) const =0
virtual int initialize_load()=0
virtual void enable_recorder(unsigned)=0
virtual bool erase_database(unsigned)=0
virtual void enable_converger(unsigned)=0
virtual size_t get_converger() const =0
virtual void assemble_current_mass() const =0
virtual const shared_ptr< Element > & get_element(unsigned) const =0
virtual void disable_group(unsigned)=0
virtual void assemble_trial_mass() const =0
virtual bool insert(const shared_ptr< ExternalModule > &)=0
virtual bool erase_node(unsigned)=0
virtual const ConstraintQueue & get_constraint_pool() const =0
virtual void update_load()=0
virtual void assemble_initial_geometry() const =0
virtual int update_incre_status() const =0
virtual void disable_solver(unsigned)=0
virtual const shared_ptr< Orientation > & get_orientation(unsigned) const =0
virtual void set_current_converger_tag(unsigned)=0
virtual void assemble_initial_damping() const =0
virtual const ConvergerQueue & get_converger_pool() const =0
virtual bool find_converger(unsigned) const =0
virtual bool erase_load(unsigned)=0
virtual int process_modifier()=0
virtual bool insert(const shared_ptr< Load > &)=0
virtual int initialize_reference()=0
virtual void set_factory(const shared_ptr< LongFactory > &)=0
virtual void update_current_damping_force() const =0
virtual void set_color_model(ColorMethod)=0
virtual bool find_step(unsigned) const =0
virtual int soft_restart()=0
virtual bool insert(const shared_ptr< Element > &)=0
virtual void insert_constrained_dof(uword)=0
concurrently safe insertion method
virtual bool erase_constraint(unsigned)=0
virtual const shared_ptr< Integrator > & get_current_integrator() const =0
virtual void reset_status() const =0
virtual void disable_material(unsigned)=0
virtual bool insert(const shared_ptr< Orientation > &)=0
virtual bool erase_element(unsigned)=0
virtual void enable_constraint(unsigned)=0
virtual bool insert(const shared_ptr< Integrator > &)=0
virtual bool find_section(unsigned) const =0
virtual const RecorderQueue & get_recorder_pool() const =0
virtual bool find_load(unsigned) const =0
virtual void clear_status()=0
virtual const shared_ptr< Solver > & get_current_solver() const =0
virtual void disable_database(unsigned)=0
virtual const shared_ptr< Converger > & get_current_converger() const =0
virtual void enable_element(unsigned)=0
virtual const shared_ptr< Constraint > & get_constraint(unsigned) const =0
virtual bool erase_material(unsigned)=0
virtual void enable_amplitude(unsigned)=0
virtual bool find_material(unsigned) const =0
virtual size_t get_integrator() const =0
virtual size_t get_amplitude() const =0
virtual void assemble_current_stiffness() const =0
virtual void record()=0
virtual void enable_orientation(unsigned)=0
virtual int process_criterion()=0
virtual bool erase_section(unsigned)=0
virtual void wait()=0
virtual void assemble_trial_geometry() const =0
virtual bool find_recorder(unsigned) const =0
virtual const shared_ptr< Solver > & get_solver(unsigned) const =0
DomainBase(unsigned)
Definition: DomainBase.cpp:20
virtual void insert_restrained_dof(const uvec &)=0
concurrently safe insertion method
virtual void set_current_integrator_tag(unsigned)=0
virtual void enable_group(unsigned)=0
virtual void disable_criterion(unsigned)=0
DomainBase(const DomainBase &)=delete
virtual size_t get_solver() const =0
virtual const shared_ptr< Converger > & get_converger(unsigned) const =0
virtual void insert_constrained_dof(const uvec &)=0
concurrently safe insertion method
virtual bool insert(const shared_ptr< Solver > &)=0
virtual unsigned get_current_converger_tag()=0
virtual const shared_ptr< Material > & get_material(unsigned) const =0
~DomainBase() override
Definition: DomainBase.cpp:23
virtual void assemble_initial_mass() const =0
virtual int update_current_status() const =0
virtual bool insert(const shared_ptr< Converger > &)=0
virtual int assign_color()=0
virtual size_t get_section() const =0
virtual const IntegratorQueue & get_integrator_pool() const =0
virtual const ElementQueue & get_element_pool() const =0
virtual void assemble_load_stiffness()=0
virtual bool insert(const shared_ptr< Criterion > &)=0
virtual unsigned get_current_solver_tag()=0
virtual size_t get_criterion() const =0
virtual bool is_sparse() const =0
virtual void disable_orientation(unsigned)=0
virtual bool erase_amplitude(unsigned)=0
virtual void enable_modifier(unsigned)=0
virtual void disable_integrator(unsigned)=0
virtual const suanpan::unordered_set< uword > & get_restrained_dof() const =0
virtual int process_constraint(bool)=0
virtual const SolverQueue & get_solver_pool() const =0
virtual size_t get_material() const =0
virtual void disable_node(unsigned)=0
virtual bool erase_criterion(unsigned)=0
virtual const DatabaseQueue & get_database_pool() const =0
virtual void assemble_constraint_stiffness()=0
virtual bool find_node(unsigned) const =0
virtual const shared_ptr< Step > & get_current_step() const =0
virtual const shared_ptr< Modifier > & get_modifier(unsigned) const =0
virtual bool erase_group(unsigned)=0
virtual std::pair< std::vector< unsigned >, suanpan::graph< unsigned > > get_element_connectivity(bool)=0
virtual int update_trial_status() const =0
virtual bool find_solver(unsigned) const =0
virtual size_t get_load() const =0
virtual bool erase_orientation(unsigned)=0
virtual void disable_amplitude(unsigned)=0
virtual bool insert(const shared_ptr< Step > &)=0
virtual void enable_solver(unsigned)=0
virtual int process_load(bool)=0
virtual int restart()=0
virtual void update_current_resistance() const =0
virtual void insert_loaded_dof(uword)=0
concurrently safe insertion method
virtual const GroupQueue & get_group_pool() const =0
virtual const shared_ptr< Section > & get_section(unsigned) const =0
virtual void assemble_mass_container() const =0
virtual const CriterionQueue & get_criterion_pool() const =0
virtual bool erase_converger(unsigned)=0
virtual void update_constraint()=0
virtual void assemble_current_damping() const =0
virtual const shared_ptr< Node > & get_node(unsigned) const =0
A Element class.
Definition: Element.h:92
A ExternalModule class handles communication between the main program and external library.
Definition: ExternalModule.h:45
A Factory class.
Definition: Factory.hpp:67
The Group class.
Definition: Group.h:36
The Integrator class is basically a wrapper of the DomainBase class with regard to some status changi...
Definition: Integrator.h:46
A Load class.
Definition: Load.h:37
A Material abstract base class.
Definition: Material.h:102
A Modifier class.
Definition: Modifier.h:36
The Node class holds the number of DoFs, coordinate, displacement, velocity and acceleration.
Definition: Node.h:77
A Orientation class.
Definition: Orientation.h:40
A Recorder class.
Definition: Recorder.h:35
A Section class.
Definition: Section.h:73
A Solver class defines solvers used in analysis.
Definition: Solver.h:38
A Step class.
Definition: Step.h:39
A base Tag class.
Definition: Tag.h:38
ColorMethod
Definition: DomainBase.h:84
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
const std::vector< shared_ptr< T > > & get_pool()
Definition: DomainBase.h:512
size_t get()
Definition: DomainBase.h:546
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< shared_ptr< Load > > LoadQueue
Definition: DomainBase.h:72
std::vector< shared_ptr< Section > > SectionQueue
Definition: DomainBase.h:78
std::vector< shared_ptr< Criterion > > CriterionQueue
Definition: DomainBase.h:67
bool erase(unsigned)
Definition: DomainBase.h:395
bool find(unsigned)
Definition: DomainBase.h:582
std::vector< shared_ptr< Amplitude > > AmplitudeQueue
Definition: DomainBase.h:64
std::unordered_set< T > unordered_set
Definition: container.h:55
vector< set< T > > graph
Definition: container.h:59