suanPan
Loading...
Searching...
No Matches
Domain.h
Go to the documentation of this file.
1/*******************************************************************************
2 * Copyright (C) 2017-2023 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
34using ExternalModuleQueue = std::vector<shared_ptr<ExternalModule>>;
35using ThreadQueue = std::vector<shared_ptr<future<void>>>;
36
37class Domain final : public DomainBase, public std::enable_shared_from_this<Domain> {
38 std::atomic_bool updated = false;
39 ColorMethod color_model = ColorMethod::MIS;
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 ExpressionStorage expression_pond;
57 ConstraintStorage constraint_pond;
58 ConvergerStorage converger_pond;
59 CriterionStorage criterion_pond;
60 DatabaseStorage database_pond;
61 ElementStorage element_pond;
62 GroupStorage group_pond;
63 IntegratorStorage integrator_pond;
64 LoadStorage load_pond;
65 MaterialStorage material_pond;
66 ModifierStorage modifier_pond;
67 NodeStorage node_pond;
68 OrientationStorage orientation_pond;
69 RecorderStorage recorder_pond;
70 SectionStorage section_pond;
71 SolverStorage solver_pond;
72
73 suanpan::unordered_set<uword> constrained_dofs;
75 suanpan::unordered_set<uword> restrained_dofs;
77 std::vector<std::vector<unsigned>> color_map;
78
79 std::vector<bool> attribute;
80
81public:
82 explicit Domain(unsigned = 0);
83 Domain(const Domain&) = delete; // copy forbidden
84 Domain(Domain&&) = delete; // move forbidden
85 Domain& operator=(const Domain&) = delete; // assign forbidden
86 Domain& operator=(Domain&&) = delete; // assign forbidden
87 ~Domain() override;
88
89 void set_factory(const shared_ptr<LongFactory>&) override;
90 const shared_ptr<LongFactory>& get_factory() const override;
91
92 bool insert(const shared_ptr<future<void>>&) override;
93
94 void wait() override;
95
96 bool insert(const shared_ptr<ExternalModule>&) override;
97 const ExternalModuleQueue& get_external_module_pool() const override;
98
99 bool insert(const shared_ptr<Amplitude>&) override;
100 bool insert(const shared_ptr<Expression>&) override;
101 bool insert(const shared_ptr<Constraint>&) override;
102 bool insert(const shared_ptr<Converger>&) override;
103 bool insert(const shared_ptr<Criterion>&) override;
104 bool insert(const shared_ptr<Database>&) override;
105 bool insert(const shared_ptr<Element>&) override;
106 bool insert(const shared_ptr<Group>&) override;
107 bool insert(const shared_ptr<Integrator>&) override;
108 bool insert(const shared_ptr<Load>&) override;
109 bool insert(const shared_ptr<Material>&) override;
110 bool insert(const shared_ptr<Modifier>&) override;
111 bool insert(const shared_ptr<Node>&) override;
112 bool insert(const shared_ptr<Orientation>&) override;
113 bool insert(const shared_ptr<Recorder>&) override;
114 bool insert(const shared_ptr<Section>&) override;
115 bool insert(const shared_ptr<Solver>&) override;
116 bool insert(const shared_ptr<Step>&) override;
117
118 bool erase_amplitude(unsigned) override;
119 bool erase_expression(unsigned) override;
120 bool erase_constraint(unsigned) override;
121 bool erase_converger(unsigned) override;
122 bool erase_criterion(unsigned) override;
123 bool erase_database(unsigned) override;
124 bool erase_element(unsigned) override;
125 bool erase_group(unsigned) override;
126 bool erase_integrator(unsigned) override;
127 bool erase_load(unsigned) override;
128 bool erase_material(unsigned) override;
129 bool erase_modifier(unsigned) override;
130 bool erase_node(unsigned) override;
131 bool erase_orientation(unsigned) override;
132 bool erase_recorder(unsigned) override;
133 bool erase_section(unsigned) override;
134 bool erase_solver(unsigned) override;
135 bool erase_step(unsigned) override;
136
137 void disable_amplitude(unsigned) override;
138 void disable_expression(unsigned) override;
139 void disable_constraint(unsigned) override;
140 void disable_converger(unsigned) override;
141 void disable_criterion(unsigned) override;
142 void disable_database(unsigned) override;
143 void disable_element(unsigned) override;
144 void disable_group(unsigned) override;
145 void disable_integrator(unsigned) override;
146 void disable_load(unsigned) override;
147 void disable_material(unsigned) override;
148 void disable_modifier(unsigned) override;
149 void disable_node(unsigned) override;
150 void disable_orientation(unsigned) override;
151 void disable_recorder(unsigned) override;
152 void disable_section(unsigned) override;
153 void disable_solver(unsigned) override;
154 void disable_step(unsigned) override;
155
156 void enable_amplitude(unsigned) override;
157 void enable_expression(unsigned) override;
158 void enable_constraint(unsigned) override;
159 void enable_converger(unsigned) override;
160 void enable_criterion(unsigned) override;
161 void enable_database(unsigned) override;
162 void enable_element(unsigned) override;
163 void enable_group(unsigned) override;
164 void enable_integrator(unsigned) override;
165 void enable_load(unsigned) override;
166 void enable_material(unsigned) override;
167 void enable_modifier(unsigned) override;
168 void enable_node(unsigned) override;
169 void enable_orientation(unsigned) override;
170 void enable_recorder(unsigned) override;
171 void enable_section(unsigned) override;
172 void enable_solver(unsigned) override;
173 void enable_step(unsigned) override;
174
175 const shared_ptr<Amplitude>& get_amplitude(unsigned) const override;
176 const shared_ptr<Expression>& get_expression(unsigned) const override;
177 const shared_ptr<Constraint>& get_constraint(unsigned) const override;
178 const shared_ptr<Converger>& get_converger(unsigned) const override;
179 const shared_ptr<Criterion>& get_criterion(unsigned) const override;
180 const shared_ptr<Database>& get_database(unsigned) const override;
181 const shared_ptr<Element>& get_element(unsigned) const override;
182 const shared_ptr<Group>& get_group(unsigned) const override;
183 const shared_ptr<Integrator>& get_integrator(unsigned) const override;
184 const shared_ptr<Load>& get_load(unsigned) const override;
185 const shared_ptr<Material>& get_material(unsigned) const override;
186 const shared_ptr<Modifier>& get_modifier(unsigned) const override;
187 const shared_ptr<Node>& get_node(unsigned) const override;
188 const shared_ptr<Orientation>& get_orientation(unsigned) const override;
189 const shared_ptr<Recorder>& get_recorder(unsigned) const override;
190 const shared_ptr<Section>& get_section(unsigned) const override;
191 const shared_ptr<Solver>& get_solver(unsigned) const override;
192 const shared_ptr<Step>& get_step(unsigned) const override;
193
194 const AmplitudeQueue& get_amplitude_pool() const override;
195 const ExpressionQueue& get_expression_pool() const override;
196 const ConstraintQueue& get_constraint_pool() const override;
197 const ConvergerQueue& get_converger_pool() const override;
198 const CriterionQueue& get_criterion_pool() const override;
199 const DatabaseQueue& get_database_pool() const override;
200 const ElementQueue& get_element_pool() const override;
201 const GroupQueue& get_group_pool() const override;
202 const IntegratorQueue& get_integrator_pool() const override;
203 const LoadQueue& get_load_pool() const override;
204 const MaterialQueue& get_material_pool() const override;
205 const ModifierQueue& get_modifier_pool() const override;
206 const NodeQueue& get_node_pool() const override;
207 const OrientationQueue& get_orientation_pool() const override;
208 const RecorderQueue& get_recorder_pool() const override;
209 const SectionQueue& get_section_pool() const override;
210 const SolverQueue& get_solver_pool() const override;
211 const StepQueue& get_step_pool() const override;
212
213 friend shared_ptr<Amplitude>& get_amplitude(const shared_ptr<Domain>&, unsigned);
214 friend shared_ptr<Expression>& get_expression(const shared_ptr<Domain>&, unsigned);
215 friend shared_ptr<Constraint>& get_constraint(const shared_ptr<Domain>&, unsigned);
216 friend shared_ptr<Converger>& get_converger(const shared_ptr<Domain>&, unsigned);
217 friend shared_ptr<Criterion>& get_criterion(const shared_ptr<Domain>&, unsigned);
218 friend shared_ptr<Database>& get_database(const shared_ptr<Domain>&, unsigned);
219 friend shared_ptr<Element>& get_element(const shared_ptr<Domain>&, unsigned);
220 friend shared_ptr<Group>& get_group(const shared_ptr<Domain>&, unsigned);
221 friend shared_ptr<Integrator>& get_integrator(const shared_ptr<Domain>&, unsigned);
222 friend shared_ptr<Load>& get_load(const shared_ptr<Domain>&, unsigned);
223 friend shared_ptr<Material>& get_material(const shared_ptr<Domain>&, unsigned);
224 friend shared_ptr<Modifier>& get_modifier(const shared_ptr<Domain>&, unsigned);
225 friend shared_ptr<Node>& get_node(const shared_ptr<Domain>&, unsigned);
226 friend shared_ptr<Orientation>& get_orientation(const shared_ptr<Domain>&, unsigned);
227 friend shared_ptr<Recorder>& get_recorder(const shared_ptr<Domain>&, unsigned);
228 friend shared_ptr<Section>& get_section(const shared_ptr<Domain>&, unsigned);
229 friend shared_ptr<Solver>& get_solver(const shared_ptr<Domain>&, unsigned);
230 friend shared_ptr<Step>& get_step(const shared_ptr<Domain>&, unsigned);
231
232 friend shared_ptr<Amplitude>& get_amplitude(const shared_ptr<DomainBase>&, unsigned);
233 friend shared_ptr<Expression>& get_expression(const shared_ptr<DomainBase>&, unsigned);
234 friend shared_ptr<Constraint>& get_constraint(const shared_ptr<DomainBase>&, unsigned);
235 friend shared_ptr<Converger>& get_converger(const shared_ptr<DomainBase>&, unsigned);
236 friend shared_ptr<Criterion>& get_criterion(const shared_ptr<DomainBase>&, unsigned);
237 friend shared_ptr<Database>& get_database(const shared_ptr<DomainBase>&, unsigned);
238 friend shared_ptr<Element>& get_element(const shared_ptr<DomainBase>&, unsigned);
239 friend shared_ptr<Group>& get_group(const shared_ptr<DomainBase>&, unsigned);
240 friend shared_ptr<Integrator>& get_integrator(const shared_ptr<DomainBase>&, unsigned);
241 friend shared_ptr<Load>& get_load(const shared_ptr<DomainBase>&, unsigned);
242 friend shared_ptr<Material>& get_material(const shared_ptr<DomainBase>&, unsigned);
243 friend shared_ptr<Modifier>& get_modifier(const shared_ptr<DomainBase>&, unsigned);
244 friend shared_ptr<Node>& get_node(const shared_ptr<DomainBase>&, unsigned);
245 friend shared_ptr<Orientation>& get_orientation(const shared_ptr<DomainBase>&, unsigned);
246 friend shared_ptr<Recorder>& get_recorder(const shared_ptr<DomainBase>&, unsigned);
247 friend shared_ptr<Section>& get_section(const shared_ptr<DomainBase>&, unsigned);
248 friend shared_ptr<Solver>& get_solver(const shared_ptr<DomainBase>&, unsigned);
249 friend shared_ptr<Step>& get_step(const shared_ptr<DomainBase>&, unsigned);
250
251 size_t get_amplitude() const override;
252 size_t get_expression() const override;
253 size_t get_constraint() const override;
254 size_t get_converger() const override;
255 size_t get_criterion() const override;
256 size_t get_database() const override;
257 size_t get_element() const override;
258 size_t get_group() const override;
259 size_t get_integrator() const override;
260 size_t get_load() const override;
261 size_t get_material() const override;
262 size_t get_modifier() const override;
263 size_t get_node() const override;
264 size_t get_orientation() const override;
265 size_t get_recorder() const override;
266 size_t get_section() const override;
267 size_t get_solver() const override;
268 size_t get_step() const override;
269
270 bool find_amplitude(unsigned) const override;
271 bool find_expression(unsigned) const override;
272 bool find_constraint(unsigned) const override;
273 bool find_converger(unsigned) const override;
274 bool find_criterion(unsigned) const override;
275 bool find_database(unsigned) const override;
276 bool find_element(unsigned) const override;
277 bool find_group(unsigned) const override;
278 bool find_integrator(unsigned) const override;
279 bool find_load(unsigned) const override;
280 bool find_material(unsigned) const override;
281 bool find_modifier(unsigned) const override;
282 bool find_node(unsigned) const override;
283 bool find_orientation(unsigned) const override;
284 bool find_recorder(unsigned) const override;
285 bool find_section(unsigned) const override;
286 bool find_solver(unsigned) const override;
287 bool find_step(unsigned) const override;
288
289 void set_current_step_tag(unsigned) override;
290 void set_current_converger_tag(unsigned) override;
291 void set_current_integrator_tag(unsigned) override;
292 void set_current_solver_tag(unsigned) override;
293
294 unsigned get_current_step_tag() override;
295 unsigned get_current_converger_tag() override;
296 unsigned get_current_integrator_tag() override;
297 unsigned get_current_solver_tag() override;
298
299 const shared_ptr<Step>& get_current_step() const override;
300 const shared_ptr<Converger>& get_current_converger() const override;
301 const shared_ptr<Integrator>& get_current_integrator() const override;
302 const shared_ptr<Solver>& get_current_solver() const override;
303
304 void insert_loaded_dof(const uvec&) override;
305 void insert_restrained_dof(const uvec&) override;
306 void insert_constrained_dof(const uvec&) override;
307
308 void insert_loaded_dof(uword) override;
309 void insert_restrained_dof(uword) override;
310 void insert_constrained_dof(uword) override;
311
312 const suanpan::unordered_set<uword>& get_loaded_dof() const override;
315
316 bool is_updated() const override;
317 bool is_sparse() const override;
318
319 void set_attribute(ModalAttribute) override;
320 [[nodiscard]] bool get_attribute(ModalAttribute) override;
321
322 void set_color_model(ColorMethod) override;
323 const std::vector<std::vector<unsigned>>& get_color_map() const override;
324 std::pair<std::vector<unsigned>, suanpan::graph<unsigned>> get_element_connectivity(bool) override;
325
326 int reorder_dof() override;
327 int assign_color() override;
328
329 // restart domain from the previous step
330 int restart() override;
331 // initialize domain from the previous step
332 int soft_restart() override;
333 // initialize the domain
334 int initialize() override;
335 // initialize loads for each step
336 int initialize_load() override;
337 // initialize constraints for each step
338 int initialize_constraint() override;
339 // initialize constraints for each step
340 int initialize_reference() override;
341 // process loads and constraints
342 [[nodiscard]] int process_load(bool) override;
343 [[nodiscard]] int process_constraint(bool) override;
344 [[nodiscard]] int process_criterion() override;
345 [[nodiscard]] int process_modifier() override;
346 // record response
347 void record() override;
348 // enable all objects
349 void enable_all() override;
350 // print out domain summary
351 void summary() const override;
352
353 void update_current_resistance() const override;
354 void update_current_damping_force() const override;
355 void update_current_inertial_force() const override;
356
357 void assemble_resistance() const override;
358 void assemble_damping_force() const override;
359 void assemble_inertial_force() const override;
360
361 void assemble_initial_mass() const override;
362 void assemble_current_mass() const override;
363 void assemble_trial_mass() const override;
364 void assemble_initial_damping() const override;
365 void assemble_current_damping() const override;
366 void assemble_trial_damping() const override;
367 void assemble_initial_stiffness() const override;
368 void assemble_current_stiffness() const override;
369 void assemble_trial_stiffness() const override;
370 void assemble_initial_geometry() const override;
371 void assemble_current_geometry() const override;
372 void assemble_trial_geometry() const override;
373
374 void assemble_mass_container() const override;
375 void assemble_stiffness_container() const override;
376
377 void erase_machine_error(vec&) const override;
378
379 void update_load() override;
380 void update_constraint() override;
381
382 void assemble_load_stiffness() override;
383 void assemble_constraint_stiffness() override;
384
385 int update_current_status() const override;
386 int update_incre_status() const override;
387 int update_trial_status() const override;
388
389 void stage_status() override;
390 void commit_status() const override;
391 void clear_status() override;
392 void reset_status() const override;
393
394 void save(string) override;
395};
396
397#endif
398
The DomainBase class is a template.
Definition: DomainBase.h:96
A Domain class holds all FE model components.
Definition: Domain.h:37
bool find_element(unsigned) const override
Definition: Domain.cpp:663
bool find_node(unsigned) const override
Definition: Domain.cpp:675
void assemble_damping_force() const override
Definition: DomainState.cpp:82
void disable_amplitude(unsigned) override
Definition: Domain.cpp:289
void enable_constraint(unsigned) override
Definition: Domain.cpp:430
const ConvergerQueue & get_converger_pool() const override
Definition: Domain.cpp:585
bool erase_modifier(unsigned) override
Definition: Domain.cpp:240
int update_trial_status() const override
Definition: DomainState.cpp:315
bool erase_node(unsigned) override
Definition: Domain.cpp:247
bool erase_expression(unsigned) override
Definition: Domain.cpp:170
bool find_material(unsigned) const override
Definition: Domain.cpp:671
bool erase_load(unsigned) override
Definition: Domain.cpp:226
const shared_ptr< Step > & get_current_step() const override
Definition: Domain.cpp:703
void enable_step(unsigned) override
Definition: Domain.cpp:535
void update_load() override
Definition: Domain.cpp:1222
friend shared_ptr< Constraint > & get_constraint(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:24
bool erase_converger(unsigned) override
Definition: Domain.cpp:184
void enable_solver(unsigned) override
Definition: Domain.cpp:528
bool erase_constraint(unsigned) override
Definition: Domain.cpp:177
const AmplitudeQueue & get_amplitude_pool() const override
Definition: Domain.cpp:579
friend shared_ptr< Section > & get_section(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:50
void enable_modifier(unsigned) override
Definition: Domain.cpp:493
bool is_sparse() const override
Definition: Domain.cpp:749
void enable_section(unsigned) override
Definition: Domain.cpp:521
bool erase_integrator(unsigned) override
Definition: Domain.cpp:219
void assemble_initial_mass() const override
Definition: DomainState.cpp:116
Domain(Domain &&)=delete
void assemble_trial_geometry() const override
Definition: DomainState.cpp:272
void assemble_current_mass() const override
Definition: DomainState.cpp:130
const ExternalModuleQueue & get_external_module_pool() const override
Definition: Domain.cpp:71
bool erase_section(unsigned) override
Definition: Domain.cpp:268
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:601
const StepQueue & get_step_pool() const override
Definition: Domain.cpp:613
bool insert(const shared_ptr< future< void > > &) override
Definition: Domain.cpp:59
bool find_modifier(unsigned) const override
Definition: Domain.cpp:673
bool erase_element(unsigned) override
Definition: Domain.cpp:205
void enable_element(unsigned) override
Definition: Domain.cpp:458
void disable_converger(unsigned) override
Definition: Domain.cpp:310
void insert_restrained_dof(const uvec &) override
concurrently safe insertion method
Definition: Domain.cpp:719
const shared_ptr< Solver > & get_current_solver() const override
Definition: Domain.cpp:709
const RecorderQueue & get_recorder_pool() const override
Definition: Domain.cpp:607
const MaterialQueue & get_material_pool() const override
Definition: Domain.cpp:599
friend shared_ptr< Material > & get_material(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:40
void assemble_current_geometry() const override
Definition: DomainState.cpp:257
void assemble_constraint_stiffness() override
Definition: Domain.cpp:1238
const shared_ptr< LongFactory > & get_factory() const override
Definition: Domain.cpp:57
void update_current_resistance() const override
Definition: DomainState.cpp:25
const shared_ptr< Integrator > & get_current_integrator() const override
Definition: Domain.cpp:707
void disable_orientation(unsigned) override
Definition: Domain.cpp:380
const DatabaseQueue & get_database_pool() const override
Definition: Domain.cpp:589
int initialize_constraint() override
Definition: Domain.cpp:1047
const ElementQueue & get_element_pool() const override
Definition: Domain.cpp:591
int process_constraint(bool) override
Definition: Domain.cpp:1110
const suanpan::unordered_set< uword > & get_constrained_dof() const override
Definition: Domain.cpp:745
bool find_recorder(unsigned) const override
Definition: Domain.cpp:679
Domain(const Domain &)=delete
~Domain() override
Definition: Domain.cpp:48
const SolverQueue & get_solver_pool() const override
Definition: Domain.cpp:611
void reset_status() const override
Definition: DomainState.cpp:433
void enable_load(unsigned) override
Definition: Domain.cpp:479
void enable_converger(unsigned) override
Definition: Domain.cpp:437
int process_modifier() override
Definition: Domain.cpp:1189
void clear_status() override
Definition: DomainState.cpp:410
void enable_expression(unsigned) override
Definition: Domain.cpp:423
void set_current_solver_tag(unsigned) override
Definition: Domain.cpp:693
void summary() const override
Definition: Domain.cpp:1215
void enable_group(unsigned) override
Definition: Domain.cpp:465
bool erase_material(unsigned) override
Definition: Domain.cpp:233
bool find_integrator(unsigned) const override
Definition: Domain.cpp:667
int initialize() override
Definition: Domain.cpp:898
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:724
bool find_section(unsigned) const override
Definition: Domain.cpp:681
int update_incre_status() const override
Definition: DomainState.cpp:328
bool find_amplitude(unsigned) const override
Definition: Domain.cpp:651
const OrientationQueue & get_orientation_pool() const override
Definition: Domain.cpp:605
friend shared_ptr< Converger > & get_converger(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:26
void enable_orientation(unsigned) override
Definition: Domain.cpp:507
bool erase_recorder(unsigned) override
Definition: Domain.cpp:261
void disable_criterion(unsigned) override
Definition: Domain.cpp:317
bool find_converger(unsigned) const override
Definition: Domain.cpp:657
void disable_node(unsigned) override
Definition: Domain.cpp:373
void assemble_trial_stiffness() const override
Definition: DomainState.cpp:228
void enable_database(unsigned) override
Definition: Domain.cpp:451
void set_factory(const shared_ptr< LongFactory > &) override
Definition: Domain.cpp:50
Domain & operator=(Domain &&)=delete
void disable_solver(unsigned) override
Definition: Domain.cpp:401
bool erase_step(unsigned) override
Definition: Domain.cpp:282
unsigned get_current_converger_tag() override
Definition: Domain.cpp:697
unsigned get_current_step_tag() override
Definition: Domain.cpp:695
friend shared_ptr< Group > & get_group(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:34
void enable_all() override
Definition: Domain.cpp:1198
bool find_criterion(unsigned) const override
Definition: Domain.cpp:659
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:595
int restart() override
Definition: Domain.cpp:876
const CriterionQueue & get_criterion_pool() const override
Definition: Domain.cpp:587
bool find_group(unsigned) const override
Definition: Domain.cpp:665
void disable_element(unsigned) override
Definition: Domain.cpp:331
const ConstraintQueue & get_constraint_pool() const override
Definition: Domain.cpp:583
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:581
bool find_expression(unsigned) const override
Definition: Domain.cpp:653
void set_current_integrator_tag(unsigned) override
Definition: Domain.cpp:691
int process_criterion() override
Definition: Domain.cpp:1183
bool erase_amplitude(unsigned) override
Definition: Domain.cpp:163
void assemble_initial_geometry() const override
Definition: DomainState.cpp:242
friend shared_ptr< Solver > & get_solver(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:52
bool find_constraint(unsigned) const override
Definition: Domain.cpp:655
void enable_node(unsigned) override
Definition: Domain.cpp:500
void disable_recorder(unsigned) override
Definition: Domain.cpp:387
friend shared_ptr< Expression > & get_expression(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:22
bool get_attribute(ModalAttribute) override
Definition: Domain.cpp:753
const std::vector< std::vector< unsigned > > & get_color_map() const override
Definition: Domain.cpp:760
void assemble_initial_damping() const override
Definition: DomainState.cpp:158
const suanpan::unordered_set< uword > & get_loaded_dof() const override
Definition: Domain.cpp:741
void assemble_load_stiffness() override
Definition: Domain.cpp:1236
bool is_updated() const override
Definition: Domain.cpp:747
void disable_expression(unsigned) override
Definition: Domain.cpp:296
void assemble_mass_container() const override
Definition: DomainState.cpp:287
void set_color_model(ColorMethod) override
Definition: Domain.cpp:755
const SectionQueue & get_section_pool() const override
Definition: Domain.cpp:609
std::pair< std::vector< unsigned >, suanpan::graph< unsigned > > get_element_connectivity(bool) override
Definition: Domain.cpp:762
int assign_color() override
Definition: Domain.cpp:848
void enable_recorder(unsigned) override
Definition: Domain.cpp:514
bool find_load(unsigned) const override
Definition: Domain.cpp:669
int initialize_load() override
Definition: Domain.cpp:1038
bool erase_group(unsigned) override
Definition: Domain.cpp:212
void commit_status() const override
Definition: DomainState.cpp:397
const suanpan::unordered_set< uword > & get_restrained_dof() const override
Definition: Domain.cpp:743
void assemble_stiffness_container() const override
Definition: DomainState.cpp:301
void disable_database(unsigned) override
Definition: Domain.cpp:324
void enable_criterion(unsigned) override
Definition: Domain.cpp:444
void update_current_damping_force() const override
Definition: DomainState.cpp:39
void enable_amplitude(unsigned) override
Definition: Domain.cpp:416
friend shared_ptr< Modifier > & get_modifier(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:42
void stage_status() override
Definition: DomainState.cpp:395
friend shared_ptr< Load > & get_load(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:38
bool find_step(unsigned) const override
Definition: Domain.cpp:685
const shared_ptr< Converger > & get_current_converger() const override
Definition: Domain.cpp:705
void set_current_converger_tag(unsigned) override
Definition: Domain.cpp:689
friend shared_ptr< Criterion > & get_criterion(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:28
unsigned get_current_integrator_tag() override
Definition: Domain.cpp:699
int reorder_dof() override
Definition: Domain.cpp:788
const LoadQueue & get_load_pool() const override
Definition: Domain.cpp:597
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:214
void assemble_current_damping() const override
Definition: DomainState.cpp:172
friend shared_ptr< Recorder > & get_recorder(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:48
unsigned get_current_solver_tag() override
Definition: Domain.cpp:701
int initialize_reference() override
Definition: Domain.cpp:1054
bool find_database(unsigned) const override
Definition: Domain.cpp:661
void disable_section(unsigned) override
Definition: Domain.cpp:394
void set_current_step_tag(unsigned) override
Definition: Domain.cpp:687
bool find_orientation(unsigned) const override
Definition: Domain.cpp:677
const NodeQueue & get_node_pool() const override
Definition: Domain.cpp:603
void wait() override
Definition: Domain.cpp:64
bool erase_database(unsigned) override
Definition: Domain.cpp:198
void disable_material(unsigned) override
Definition: Domain.cpp:359
bool erase_solver(unsigned) override
Definition: Domain.cpp:275
int soft_restart() override
Definition: Domain.cpp:896
bool erase_criterion(unsigned) override
Definition: Domain.cpp:191
void assemble_trial_damping() const override
Definition: DomainState.cpp:186
void enable_integrator(unsigned) override
Definition: Domain.cpp:472
void disable_modifier(unsigned) override
Definition: Domain.cpp:366
void disable_load(unsigned) override
Definition: Domain.cpp:352
bool find_solver(unsigned) const override
Definition: Domain.cpp:683
void record() override
Definition: Domain.cpp:1196
void erase_machine_error(vec &) const override
Definition: Domain.cpp:1220
void save(string) override
Definition: Domain.cpp:1240
int update_current_status() const override
Definition: DomainState.cpp:341
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:593
void update_constraint() override
Definition: Domain.cpp:1224
void assemble_trial_mass() const override
Definition: DomainState.cpp:144
void assemble_inertial_force() const override
Definition: DomainState.cpp:99
void assemble_resistance() const override
Definition: DomainState.cpp:65
void enable_material(unsigned) override
Definition: Domain.cpp:486
void assemble_initial_stiffness() const override
Definition: DomainState.cpp:200
void disable_constraint(unsigned) override
Definition: Domain.cpp:303
void update_current_inertial_force() const override
Definition: DomainState.cpp:52
void disable_integrator(unsigned) override
Definition: Domain.cpp:345
void set_attribute(ModalAttribute) override
Definition: Domain.cpp:751
void disable_group(unsigned) override
Definition: Domain.cpp:338
bool erase_orientation(unsigned) override
Definition: Domain.cpp:254
int process_load(bool) override
Definition: Domain.cpp:1074
friend shared_ptr< Step > & get_step(const shared_ptr< Domain > &, unsigned)
Definition: DomainHelper.cpp:54
void insert_loaded_dof(const uvec &) override
concurrently safe insertion method
Definition: Domain.cpp:714
void disable_step(unsigned) override
Definition: Domain.cpp:408
ColorMethod
Definition: DomainBase.h:86
std::vector< shared_ptr< ExternalModule > > ExternalModuleQueue
Definition: Domain.h:34
std::vector< shared_ptr< Orientation > > OrientationQueue
Definition: DomainBase.h:78
std::vector< shared_ptr< Node > > NodeQueue
Definition: DomainBase.h:77
std::vector< shared_ptr< Database > > DatabaseQueue
Definition: DomainBase.h:70
std::vector< shared_ptr< Group > > GroupQueue
Definition: DomainBase.h:72
std::vector< shared_ptr< Material > > MaterialQueue
Definition: DomainBase.h:75
std::vector< shared_ptr< Modifier > > ModifierQueue
Definition: DomainBase.h:76
std::vector< shared_ptr< Integrator > > IntegratorQueue
Definition: DomainBase.h:73
std::vector< shared_ptr< Recorder > > RecorderQueue
Definition: DomainBase.h:79
std::vector< shared_ptr< Constraint > > ConstraintQueue
Definition: DomainBase.h:67
std::map< unsigned, shared_ptr< Step > > StepQueue
Definition: DomainBase.h:82
std::vector< shared_ptr< future< void > > > ThreadQueue
Definition: Domain.h:35
std::vector< shared_ptr< Element > > ElementQueue
Definition: DomainBase.h:71
std::vector< shared_ptr< Converger > > ConvergerQueue
Definition: DomainBase.h:68
std::vector< shared_ptr< Solver > > SolverQueue
Definition: DomainBase.h:81
std::vector< shared_ptr< Load > > LoadQueue
Definition: DomainBase.h:74
std::vector< shared_ptr< Section > > SectionQueue
Definition: DomainBase.h:80
std::vector< shared_ptr< Criterion > > CriterionQueue
Definition: DomainBase.h:69
std::vector< shared_ptr< Expression > > ExpressionQueue
Definition: DomainBase.h:66
ModalAttribute
Definition: DomainBase.h:92
std::vector< shared_ptr< Amplitude > > AmplitudeQueue
Definition: DomainBase.h:65
std::unordered_set< T > unordered_set
Definition: container.h:55
vector< set< T > > graph
Definition: container.h:59