suanPan
Domain.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  ******************************************************************************/
28 #ifndef DOMAIN_H
29 #define DOMAIN_H
30 
31 #include <Domain/DomainBase.h>
32 #include <Domain/Storage.hpp>
33 
34 using ExternalModuleQueue = std::vector<shared_ptr<ExternalModule>>;
35 using ThreadQueue = std::vector<shared_ptr<future<void>>>;
36 
37 class Domain final : public DomainBase, public std::enable_shared_from_this<Domain> {
38  std::atomic_bool updated = false;
39  ColorMethod color_model = ColorMethod::WP;
40 
41  unsigned current_step_tag = 0;
42  unsigned current_converger_tag = 0;
43  unsigned current_integrator_tag = 0;
44  unsigned current_solver_tag = 0;
45 
46  ThreadQueue thread_pond;
47 
48  // dynamic libraries should be destroyed after all dependent objects are destroyed
49  ExternalModuleQueue external_module_pond;
50 
51  shared_ptr<LongFactory> factory;
53  StepQueue step_pond;
54 
55  AmplitudeStorage amplitude_pond;
56  ConstraintStorage constraint_pond;
57  ConvergerStorage converger_pond;
58  CriterionStorage criterion_pond;
59  DatabaseStorage database_pond;
60  ElementStorage element_pond;
61  GroupStorage group_pond;
62  IntegratorStorage integrator_pond;
63  LoadStorage load_pond;
64  MaterialStorage material_pond;
65  ModifierStorage modifier_pond;
66  NodeStorage node_pond;
67  OrientationStorage orientation_pond;
68  RecorderStorage recorder_pond;
69  SectionStorage section_pond;
70  SolverStorage solver_pond;
71 
72  suanpan::unordered_set<uword> constrained_dofs;
73  suanpan::unordered_set<uword> loaded_dofs;
74  suanpan::unordered_set<uword> restrained_dofs;
76  std::vector<std::vector<unsigned>> color_map;
77 
78 public:
79  explicit Domain(unsigned = 0);
80  Domain(const Domain&) = delete; // copy forbidden
81  Domain(Domain&&) = delete; // move forbidden
82  Domain& operator=(const Domain&) = delete; // assign forbidden
83  Domain& operator=(Domain&&) = delete; // assign forbidden
84  ~Domain() override;
85 
86  void set_factory(const shared_ptr<LongFactory>&) override;
87  const shared_ptr<LongFactory>& get_factory() const override;
88 
89  bool insert(const shared_ptr<future<void>>&) override;
90 
91  void wait() override;
92 
93  bool insert(const shared_ptr<ExternalModule>&) override;
94  const ExternalModuleQueue& get_external_module_pool() const override;
95 
96  bool insert(const shared_ptr<Amplitude>&) override;
97  bool insert(const shared_ptr<Constraint>&) override;
98  bool insert(const shared_ptr<Converger>&) override;
99  bool insert(const shared_ptr<Criterion>&) override;
100  bool insert(const shared_ptr<Database>&) override;
101  bool insert(const shared_ptr<Element>&) override;
102  bool insert(const shared_ptr<Group>&) override;
103  bool insert(const shared_ptr<Integrator>&) override;
104  bool insert(const shared_ptr<Load>&) override;
105  bool insert(const shared_ptr<Material>&) override;
106  bool insert(const shared_ptr<Modifier>&) override;
107  bool insert(const shared_ptr<Node>&) override;
108  bool insert(const shared_ptr<Orientation>&) override;
109  bool insert(const shared_ptr<Recorder>&) override;
110  bool insert(const shared_ptr<Section>&) override;
111  bool insert(const shared_ptr<Solver>&) override;
112  bool insert(const shared_ptr<Step>&) override;
113 
114  bool erase_amplitude(unsigned) override;
115  bool erase_constraint(unsigned) override;
116  bool erase_converger(unsigned) override;
117  bool erase_criterion(unsigned) override;
118  bool erase_database(unsigned) override;
119  bool erase_element(unsigned) override;
120  bool erase_group(unsigned) override;
121  bool erase_integrator(unsigned) override;
122  bool erase_load(unsigned) override;
123  bool erase_material(unsigned) override;
124  bool erase_modifier(unsigned) override;
125  bool erase_node(unsigned) override;
126  bool erase_orientation(unsigned) override;
127  bool erase_recorder(unsigned) override;
128  bool erase_section(unsigned) override;
129  bool erase_solver(unsigned) override;
130  bool erase_step(unsigned) override;
131 
132  void disable_amplitude(unsigned) override;
133  void disable_constraint(unsigned) override;
134  void disable_converger(unsigned) override;
135  void disable_criterion(unsigned) override;
136  void disable_database(unsigned) override;
137  void disable_element(unsigned) override;
138  void disable_group(unsigned) override;
139  void disable_integrator(unsigned) override;
140  void disable_load(unsigned) override;
141  void disable_material(unsigned) override;
142  void disable_modifier(unsigned) override;
143  void disable_node(unsigned) override;
144  void disable_orientation(unsigned) override;
145  void disable_recorder(unsigned) override;
146  void disable_section(unsigned) override;
147  void disable_solver(unsigned) override;
148  void disable_step(unsigned) override;
149 
150  void enable_amplitude(unsigned) override;
151  void enable_constraint(unsigned) override;
152  void enable_converger(unsigned) override;
153  void enable_criterion(unsigned) override;
154  void enable_database(unsigned) override;
155  void enable_element(unsigned) override;
156  void enable_group(unsigned) override;
157  void enable_integrator(unsigned) override;
158  void enable_load(unsigned) override;
159  void enable_material(unsigned) override;
160  void enable_modifier(unsigned) override;
161  void enable_node(unsigned) override;
162  void enable_orientation(unsigned) override;
163  void enable_recorder(unsigned) override;
164  void enable_section(unsigned) override;
165  void enable_solver(unsigned) override;
166  void enable_step(unsigned) override;
167 
168  const shared_ptr<Amplitude>& get_amplitude(unsigned) const override;
169  const shared_ptr<Constraint>& get_constraint(unsigned) const override;
170  const shared_ptr<Converger>& get_converger(unsigned) const override;
171  const shared_ptr<Criterion>& get_criterion(unsigned) const override;
172  const shared_ptr<Database>& get_database(unsigned) const override;
173  const shared_ptr<Element>& get_element(unsigned) const override;
174  const shared_ptr<Group>& get_group(unsigned) const override;
175  const shared_ptr<Integrator>& get_integrator(unsigned) const override;
176  const shared_ptr<Load>& get_load(unsigned) const override;
177  const shared_ptr<Material>& get_material(unsigned) const override;
178  const shared_ptr<Modifier>& get_modifier(unsigned) const override;
179  const shared_ptr<Node>& get_node(unsigned) const override;
180  const shared_ptr<Orientation>& get_orientation(unsigned) const override;
181  const shared_ptr<Recorder>& get_recorder(unsigned) const override;
182  const shared_ptr<Section>& get_section(unsigned) const override;
183  const shared_ptr<Solver>& get_solver(unsigned) const override;
184  const shared_ptr<Step>& get_step(unsigned) const override;
185 
186  const AmplitudeQueue& get_amplitude_pool() const override;
187  const ConstraintQueue& get_constraint_pool() const override;
188  const ConvergerQueue& get_converger_pool() const override;
189  const CriterionQueue& get_criterion_pool() const override;
190  const DatabaseQueue& get_database_pool() const override;
191  const ElementQueue& get_element_pool() const override;
192  const GroupQueue& get_group_pool() const override;
193  const IntegratorQueue& get_integrator_pool() const override;
194  const LoadQueue& get_load_pool() const override;
195  const MaterialQueue& get_material_pool() const override;
196  const ModifierQueue& get_modifier_pool() const override;
197  const NodeQueue& get_node_pool() const override;
198  const OrientationQueue& get_orientation_pool() const override;
199  const RecorderQueue& get_recorder_pool() const override;
200  const SectionQueue& get_section_pool() const override;
201  const SolverQueue& get_solver_pool() const override;
202  const StepQueue& get_step_pool() const override;
203 
204  friend shared_ptr<Amplitude>& get_amplitude(const shared_ptr<Domain>&, unsigned);
205  friend shared_ptr<Constraint>& get_constraint(const shared_ptr<Domain>&, unsigned);
206  friend shared_ptr<Converger>& get_converger(const shared_ptr<Domain>&, unsigned);
207  friend shared_ptr<Criterion>& get_criterion(const shared_ptr<Domain>&, unsigned);
208  friend shared_ptr<Database>& get_database(const shared_ptr<Domain>&, unsigned);
209  friend shared_ptr<Element>& get_element(const shared_ptr<Domain>&, unsigned);
210  friend shared_ptr<Group>& get_group(const shared_ptr<Domain>&, unsigned);
211  friend shared_ptr<Integrator>& get_integrator(const shared_ptr<Domain>&, unsigned);
212  friend shared_ptr<Load>& get_load(const shared_ptr<Domain>&, unsigned);
213  friend shared_ptr<Material>& get_material(const shared_ptr<Domain>&, unsigned);
214  friend shared_ptr<Modifier>& get_modifier(const shared_ptr<Domain>&, unsigned);
215  friend shared_ptr<Node>& get_node(const shared_ptr<Domain>&, unsigned);
216  friend shared_ptr<Orientation>& get_orientation(const shared_ptr<Domain>&, unsigned);
217  friend shared_ptr<Recorder>& get_recorder(const shared_ptr<Domain>&, unsigned);
218  friend shared_ptr<Section>& get_section(const shared_ptr<Domain>&, unsigned);
219  friend shared_ptr<Solver>& get_solver(const shared_ptr<Domain>&, unsigned);
220  friend shared_ptr<Step>& get_step(const shared_ptr<Domain>&, unsigned);
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  size_t get_amplitude() const override;
241  size_t get_constraint() const override;
242  size_t get_converger() const override;
243  size_t get_criterion() const override;
244  size_t get_database() const override;
245  size_t get_element() const override;
246  size_t get_group() const override;
247  size_t get_integrator() const override;
248  size_t get_load() const override;
249  size_t get_material() const override;
250  size_t get_modifier() const override;
251  size_t get_node() const override;
252  size_t get_orientation() const override;
253  size_t get_recorder() const override;
254  size_t get_section() const override;
255  size_t get_solver() const override;
256  size_t get_step() const override;
257 
258  bool find_amplitude(unsigned) const override;
259  bool find_constraint(unsigned) const override;
260  bool find_converger(unsigned) const override;
261  bool find_criterion(unsigned) const override;
262  bool find_database(unsigned) const override;
263  bool find_element(unsigned) const override;
264  bool find_group(unsigned) const override;
265  bool find_integrator(unsigned) const override;
266  bool find_load(unsigned) const override;
267  bool find_material(unsigned) const override;
268  bool find_modifier(unsigned) const override;
269  bool find_node(unsigned) const override;
270  bool find_orientation(unsigned) const override;
271  bool find_recorder(unsigned) const override;
272  bool find_section(unsigned) const override;
273  bool find_solver(unsigned) const override;
274  bool find_step(unsigned) const override;
275 
276  void set_current_step_tag(unsigned) override;
277  void set_current_converger_tag(unsigned) override;
278  void set_current_integrator_tag(unsigned) override;
279  void set_current_solver_tag(unsigned) override;
280 
281  unsigned get_current_step_tag() override;
282  unsigned get_current_converger_tag() override;
283  unsigned get_current_integrator_tag() override;
284  unsigned get_current_solver_tag() override;
285 
286  const shared_ptr<Step>& get_current_step() const override;
287  const shared_ptr<Converger>& get_current_converger() const override;
288  const shared_ptr<Integrator>& get_current_integrator() const override;
289  const shared_ptr<Solver>& get_current_solver() const override;
290 
291  void insert_loaded_dof(const uvec&) override;
292  void insert_restrained_dof(const uvec&) override;
293  void insert_constrained_dof(const uvec&) override;
294 
295  void insert_loaded_dof(uword) override;
296  void insert_restrained_dof(uword) override;
297  void insert_constrained_dof(uword) override;
298 
299  const suanpan::unordered_set<uword>& get_loaded_dof() const override;
300  const suanpan::unordered_set<uword>& get_restrained_dof() const override;
301  const suanpan::unordered_set<uword>& get_constrained_dof() const override;
302 
303  bool is_updated() const override;
304  bool is_sparse() const override;
305 
306  void set_color_model(ColorMethod) override;
307  const std::vector<std::vector<unsigned>>& get_color_map() const override;
308  std::pair<std::vector<unsigned>, suanpan::graph<unsigned>> get_element_connectivity(bool) override;
309 
310  int reorder_dof() override;
311  int assign_color() override;
312 
313  // restart domain from the previous step
314  int restart() override;
315  // initialize domain from the previous step
316  int soft_restart() override;
317  // initialize the domain
318  int initialize() override;
319  // initialize loads for each step
320  int initialize_load() override;
321  // initialize constraints for each step
322  int initialize_constraint() override;
323  // initialize constraints for each step
324  int initialize_reference() override;
325  // process loads and constraints
326  [[nodiscard]] int process_load(bool) override;
327  [[nodiscard]] int process_constraint(bool) override;
328  [[nodiscard]] int process_criterion() override;
329  [[nodiscard]] int process_modifier() override;
330  // record response
331  void record() override;
332  // enable all objects
333  void enable_all() override;
334  // print out domain summary
335  void summary() const override;
336 
337  void update_current_resistance() const override;
338  void update_current_damping_force() const override;
339  void update_current_inertial_force() const override;
340 
341  void assemble_resistance() const override;
342  void assemble_damping_force() const override;
343  void assemble_inertial_force() const override;
344 
345  void assemble_initial_mass() const override;
346  void assemble_current_mass() const override;
347  void assemble_trial_mass() const override;
348  void assemble_initial_damping() const override;
349  void assemble_current_damping() const override;
350  void assemble_trial_damping() const override;
351  void assemble_initial_stiffness() const override;
352  void assemble_current_stiffness() const override;
353  void assemble_trial_stiffness() const override;
354  void assemble_initial_geometry() const override;
355  void assemble_current_geometry() const override;
356  void assemble_trial_geometry() const override;
357 
358  void assemble_mass_container() const override;
359  void assemble_stiffness_container() const override;
360 
361  void erase_machine_error() const override;
362 
363  void update_load() override;
364  void update_constraint() override;
365 
366  void assemble_load_stiffness() override;
367  void assemble_constraint_stiffness() override;
368 
369  int update_current_status() const override;
370  int update_incre_status() const override;
371  int update_trial_status() const override;
372 
373  void stage_status() override;
374  void commit_status() const override;
375  void clear_status() override;
376  void reset_status() const override;
377 
378  void save(string) override;
379 };
380 
381 #endif
382 
The DomainBase class is a template.
Definition: DomainBase.h:90
A Domain class holds all FE model components.
Definition: Domain.h:37
bool find_element(unsigned) const override
Definition: Domain.cpp:627
bool find_node(unsigned) const override
Definition: Domain.cpp:639
void assemble_damping_force() const override
Definition: DomainState.cpp:79
void disable_amplitude(unsigned) override
Definition: Domain.cpp:275
void enable_constraint(unsigned) override
Definition: Domain.cpp:402
const ConvergerQueue & get_converger_pool() const override
Definition: Domain.cpp:553
bool erase_modifier(unsigned) override
Definition: Domain.cpp:226
size_t get_solver() const override
Definition: Domain.cpp:613
int update_trial_status() const override
Definition: DomainState.cpp:306
bool erase_node(unsigned) override
Definition: Domain.cpp:233
bool find_material(unsigned) const override
Definition: Domain.cpp:635
bool erase_load(unsigned) override
Definition: Domain.cpp:212
const shared_ptr< Step > & get_current_step() const override
Definition: Domain.cpp:667
void enable_step(unsigned) override
Definition: Domain.cpp:507
void update_load() override
Definition: Domain.cpp:1185
bool erase_converger(unsigned) override
Definition: Domain.cpp:170
void enable_solver(unsigned) override
Definition: Domain.cpp:500
bool erase_constraint(unsigned) override
Definition: Domain.cpp:163
const AmplitudeQueue & get_amplitude_pool() const override
Definition: Domain.cpp:549
size_t get_converger() const override
Definition: Domain.cpp:587
void enable_modifier(unsigned) override
Definition: Domain.cpp:465
bool is_sparse() const override
Definition: Domain.cpp:713
void enable_section(unsigned) override
Definition: Domain.cpp:493
bool erase_integrator(unsigned) override
Definition: Domain.cpp:205
void assemble_initial_mass() const override
Definition: DomainState.cpp:107
Domain(Domain &&)=delete
void assemble_trial_geometry() const override
Definition: DomainState.cpp:263
void assemble_current_mass() const override
Definition: DomainState.cpp:121
const ExternalModuleQueue & get_external_module_pool() const override
Definition: Domain.cpp:69
bool erase_section(unsigned) override
Definition: Domain.cpp:254
const ModifierQueue & get_modifier_pool() const override
Definition: Domain.cpp:569
const StepQueue & get_step_pool() const override
Definition: Domain.cpp:581
bool find_modifier(unsigned) const override
Definition: Domain.cpp:637
bool erase_element(unsigned) override
Definition: Domain.cpp:191
void enable_element(unsigned) override
Definition: Domain.cpp:430
void disable_converger(unsigned) override
Definition: Domain.cpp:289
void insert_restrained_dof(const uvec &) override
concurrently safe insertion method
Definition: Domain.cpp:683
bool insert(const shared_ptr< future< void >> &) override
Definition: Domain.cpp:57
const shared_ptr< Solver > & get_current_solver() const override
Definition: Domain.cpp:673
const RecorderQueue & get_recorder_pool() const override
Definition: Domain.cpp:575
const MaterialQueue & get_material_pool() const override
Definition: Domain.cpp:567
void assemble_current_geometry() const override
Definition: DomainState.cpp:248
void assemble_constraint_stiffness() override
Definition: Domain.cpp:1201
const shared_ptr< LongFactory > & get_factory() const override
Definition: Domain.cpp:55
void update_current_resistance() const override
Definition: DomainState.cpp:25
const shared_ptr< Integrator > & get_current_integrator() const override
Definition: Domain.cpp:671
Domain & operator=(Domain &&)=delete
void disable_orientation(unsigned) override
Definition: Domain.cpp:359
const DatabaseQueue & get_database_pool() const override
Definition: Domain.cpp:557
int initialize_constraint() override
Definition: Domain.cpp:1007
const ElementQueue & get_element_pool() const override
Definition: Domain.cpp:559
int process_constraint(bool) override
Definition: Domain.cpp:1070
const suanpan::unordered_set< uword > & get_constrained_dof() const override
Definition: Domain.cpp:709
size_t get_node() const override
Definition: Domain.cpp:605
bool find_recorder(unsigned) const override
Definition: Domain.cpp:643
Domain(const Domain &)=delete
~Domain() override
Definition: Domain.cpp:46
const SolverQueue & get_solver_pool() const override
Definition: Domain.cpp:579
void reset_status() const override
Definition: DomainState.cpp:403
size_t get_amplitude() const override
Definition: Domain.cpp:583
void enable_load(unsigned) override
Definition: Domain.cpp:451
void enable_converger(unsigned) override
Definition: Domain.cpp:409
int process_modifier() override
Definition: Domain.cpp:1149
void clear_status() override
Definition: DomainState.cpp:380
void set_current_solver_tag(unsigned) override
Definition: Domain.cpp:657
void summary() const override
Definition: Domain.cpp:1175
void enable_group(unsigned) override
Definition: Domain.cpp:437
bool erase_material(unsigned) override
Definition: Domain.cpp:219
bool find_integrator(unsigned) const override
Definition: Domain.cpp:631
int initialize() override
Definition: Domain.cpp:858
void insert_constrained_dof(const uvec &) override
concurrently safe insertion method
Definition: Domain.cpp:688
bool find_section(unsigned) const override
Definition: Domain.cpp:645
int update_incre_status() const override
Definition: DomainState.cpp:320
bool find_amplitude(unsigned) const override
Definition: Domain.cpp:617
const OrientationQueue & get_orientation_pool() const override
Definition: Domain.cpp:573
void enable_orientation(unsigned) override
Definition: Domain.cpp:479
size_t get_step() const override
Definition: Domain.cpp:615
bool erase_recorder(unsigned) override
Definition: Domain.cpp:247
void disable_criterion(unsigned) override
Definition: Domain.cpp:296
bool find_converger(unsigned) const override
Definition: Domain.cpp:621
void disable_node(unsigned) override
Definition: Domain.cpp:352
void assemble_trial_stiffness() const override
Definition: DomainState.cpp:219
size_t get_database() const override
Definition: Domain.cpp:591
void enable_database(unsigned) override
Definition: Domain.cpp:423
void set_factory(const shared_ptr< LongFactory > &) override
Definition: Domain.cpp:48
void disable_solver(unsigned) override
Definition: Domain.cpp:380
bool erase_step(unsigned) override
Definition: Domain.cpp:268
unsigned get_current_converger_tag() override
Definition: Domain.cpp:661
unsigned get_current_step_tag() override
Definition: Domain.cpp:659
void enable_all() override
Definition: Domain.cpp:1158
bool find_criterion(unsigned) const override
Definition: Domain.cpp:623
const IntegratorQueue & get_integrator_pool() const override
Definition: Domain.cpp:563
int restart() override
Definition: Domain.cpp:836
const CriterionQueue & get_criterion_pool() const override
Definition: Domain.cpp:555
bool find_group(unsigned) const override
Definition: Domain.cpp:629
void disable_element(unsigned) override
Definition: Domain.cpp:310
const ConstraintQueue & get_constraint_pool() const override
Definition: Domain.cpp:551
void set_current_integrator_tag(unsigned) override
Definition: Domain.cpp:655
int process_criterion() override
Definition: Domain.cpp:1143
bool erase_amplitude(unsigned) override
Definition: Domain.cpp:156
void assemble_initial_geometry() const override
Definition: DomainState.cpp:233
bool find_constraint(unsigned) const override
Definition: Domain.cpp:619
void enable_node(unsigned) override
Definition: Domain.cpp:472
size_t get_criterion() const override
Definition: Domain.cpp:589
void disable_recorder(unsigned) override
Definition: Domain.cpp:366
void erase_machine_error() const override
Definition: Domain.cpp:1180
const std::vector< std::vector< unsigned > > & get_color_map() const override
Definition: Domain.cpp:720
void assemble_initial_damping() const override
Definition: DomainState.cpp:149
const suanpan::unordered_set< uword > & get_loaded_dof() const override
Definition: Domain.cpp:705
void assemble_load_stiffness() override
Definition: Domain.cpp:1199
bool is_updated() const override
Definition: Domain.cpp:711
void assemble_mass_container() const override
Definition: DomainState.cpp:278
void set_color_model(ColorMethod) override
Definition: Domain.cpp:715
const SectionQueue & get_section_pool() const override
Definition: Domain.cpp:577
std::pair< std::vector< unsigned >, suanpan::graph< unsigned > > get_element_connectivity(bool) override
Definition: Domain.cpp:722
size_t get_recorder() const override
Definition: Domain.cpp:609
int assign_color() override
Definition: Domain.cpp:808
void enable_recorder(unsigned) override
Definition: Domain.cpp:486
bool find_load(unsigned) const override
Definition: Domain.cpp:633
int initialize_load() override
Definition: Domain.cpp:998
size_t get_material() const override
Definition: Domain.cpp:601
bool erase_group(unsigned) override
Definition: Domain.cpp:198
void commit_status() const override
Definition: DomainState.cpp:367
const suanpan::unordered_set< uword > & get_restrained_dof() const override
Definition: Domain.cpp:707
size_t get_element() const override
Definition: Domain.cpp:593
void assemble_stiffness_container() const override
Definition: DomainState.cpp:292
void disable_database(unsigned) override
Definition: Domain.cpp:303
void enable_criterion(unsigned) override
Definition: Domain.cpp:416
void update_current_damping_force() const override
Definition: DomainState.cpp:39
void enable_amplitude(unsigned) override
Definition: Domain.cpp:395
void stage_status() override
Definition: DomainState.cpp:365
size_t get_section() const override
Definition: Domain.cpp:611
bool find_step(unsigned) const override
Definition: Domain.cpp:649
const shared_ptr< Converger > & get_current_converger() const override
Definition: Domain.cpp:669
void set_current_converger_tag(unsigned) override
Definition: Domain.cpp:653
unsigned get_current_integrator_tag() override
Definition: Domain.cpp:663
Domain(unsigned=0)
Definition: Domain.cpp:42
int reorder_dof() override
Definition: Domain.cpp:748
const LoadQueue & get_load_pool() const override
Definition: Domain.cpp:565
void assemble_current_stiffness() const override
Definition: DomainState.cpp:205
void assemble_current_damping() const override
Definition: DomainState.cpp:163
unsigned get_current_solver_tag() override
Definition: Domain.cpp:665
int initialize_reference() override
Definition: Domain.cpp:1014
bool find_database(unsigned) const override
Definition: Domain.cpp:625
void disable_section(unsigned) override
Definition: Domain.cpp:373
void set_current_step_tag(unsigned) override
Definition: Domain.cpp:651
bool find_orientation(unsigned) const override
Definition: Domain.cpp:641
const NodeQueue & get_node_pool() const override
Definition: Domain.cpp:571
void wait() override
Definition: Domain.cpp:62
bool erase_database(unsigned) override
Definition: Domain.cpp:184
void disable_material(unsigned) override
Definition: Domain.cpp:338
bool erase_solver(unsigned) override
Definition: Domain.cpp:261
int soft_restart() override
Definition: Domain.cpp:856
bool erase_criterion(unsigned) override
Definition: Domain.cpp:177
void assemble_trial_damping() const override
Definition: DomainState.cpp:177
Domain & operator=(const Domain &)=delete
void enable_integrator(unsigned) override
Definition: Domain.cpp:444
void disable_modifier(unsigned) override
Definition: Domain.cpp:345
size_t get_load() const override
Definition: Domain.cpp:599
void disable_load(unsigned) override
Definition: Domain.cpp:331
bool find_solver(unsigned) const override
Definition: Domain.cpp:647
size_t get_constraint() const override
Definition: Domain.cpp:585
void record() override
Definition: Domain.cpp:1156
void save(string) override
Definition: Domain.cpp:1203
int update_current_status() const override
Definition: DomainState.cpp:334
const GroupQueue & get_group_pool() const override
Definition: Domain.cpp:561
void update_constraint() override
Definition: Domain.cpp:1187
size_t get_modifier() const override
Definition: Domain.cpp:603
void assemble_trial_mass() const override
Definition: DomainState.cpp:135
void assemble_inertial_force() const override
Definition: DomainState.cpp:93
size_t get_integrator() const override
Definition: Domain.cpp:597
void assemble_resistance() const override
Definition: DomainState.cpp:65
void enable_material(unsigned) override
Definition: Domain.cpp:458
void assemble_initial_stiffness() const override
Definition: DomainState.cpp:191
void disable_constraint(unsigned) override
Definition: Domain.cpp:282
void update_current_inertial_force() const override
Definition: DomainState.cpp:52
void disable_integrator(unsigned) override
Definition: Domain.cpp:324
void disable_group(unsigned) override
Definition: Domain.cpp:317
bool erase_orientation(unsigned) override
Definition: Domain.cpp:240
size_t get_orientation() const override
Definition: Domain.cpp:607
int process_load(bool) override
Definition: Domain.cpp:1034
size_t get_group() const override
Definition: Domain.cpp:595
void insert_loaded_dof(const uvec &) override
concurrently safe insertion method
Definition: Domain.cpp:678
void disable_step(unsigned) override
Definition: Domain.cpp:387
ColorMethod
Definition: DomainBase.h:84
std::vector< shared_ptr< ExternalModule > > ExternalModuleQueue
Definition: Domain.h:34
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
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< future< void > >> ThreadQueue
Definition: Domain.h:35
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
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