suanPan
DomainBase.h
Go to the documentation of this file.
1/*******************************************************************************
2 * Copyright (C) 2017-2024 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
42using std::future;
43
44template<sp_d T> class Factory;
45class Amplitude;
46class Expression;
47class Constraint;
48class Converger;
49class Criterion;
50class Database;
51class Element;
52class ExternalModule;
53class Group;
54class Integrator;
55class Load;
56class Material;
57class Modifier;
58class Node;
59class Orientation;
60class Recorder;
61class Section;
62class Solver;
63class Step;
64
65using AmplitudeQueue = std::vector<shared_ptr<Amplitude>>;
66using ExpressionQueue = std::vector<shared_ptr<Expression>>;
67using ConstraintQueue = std::vector<shared_ptr<Constraint>>;
68using ConvergerQueue = std::vector<shared_ptr<Converger>>;
69using CriterionQueue = std::vector<shared_ptr<Criterion>>;
70using DatabaseQueue = std::vector<shared_ptr<Database>>;
71using ElementQueue = std::vector<shared_ptr<Element>>;
72using GroupQueue = std::vector<shared_ptr<Group>>;
73using IntegratorQueue = std::vector<shared_ptr<Integrator>>;
74using LoadQueue = std::vector<shared_ptr<Load>>;
75using MaterialQueue = std::vector<shared_ptr<Material>>;
76using ModifierQueue = std::vector<shared_ptr<Modifier>>;
77using NodeQueue = std::vector<shared_ptr<Node>>;
78using OrientationQueue = std::vector<shared_ptr<Orientation>>;
79using RecorderQueue = std::vector<shared_ptr<Recorder>>;
80using SectionQueue = std::vector<shared_ptr<Section>>;
81using SolverQueue = std::vector<shared_ptr<Solver>>;
82using StepQueue = std::map<unsigned, shared_ptr<Step>>;
83
85
86enum class ColorMethod {
87 OFF,
88 WP,
89 MIS
90};
91
92enum class ModalAttribute : size_t {
94};
95
96enum class Statistics : size_t {
102};
103
104class DomainBase : public Tag {
105public:
106 explicit DomainBase(const unsigned T)
107 : Tag(T) {}
108
109 DomainBase(const DomainBase&) = delete; // copy forbidden
110 DomainBase(DomainBase&&) = delete; // move forbidden
111 DomainBase& operator=(const DomainBase&) = delete; // assign forbidden
112 DomainBase& operator=(DomainBase&&) = delete; // assign forbidden
113 ~DomainBase() override = default;
114
115 virtual void set_factory(const shared_ptr<LongFactory>&) = 0;
116 [[nodiscard]] virtual const shared_ptr<LongFactory>& get_factory() const = 0;
117
118 virtual bool insert(const shared_ptr<future<void>>&) = 0;
119
120 virtual void wait() = 0;
121
122 virtual bool insert(const shared_ptr<ExternalModule>&) = 0;
123 [[nodiscard]] virtual const std::vector<shared_ptr<ExternalModule>>& get_external_module_pool() const = 0;
124
125 virtual bool insert(const shared_ptr<Amplitude>&) = 0;
126 virtual bool insert(const shared_ptr<Expression>&) = 0;
127 virtual bool insert(const shared_ptr<Constraint>&) = 0;
128 virtual bool insert(const shared_ptr<Converger>&) = 0;
129 virtual bool insert(const shared_ptr<Criterion>&) = 0;
130 virtual bool insert(const shared_ptr<Database>&) = 0;
131 virtual bool insert(const shared_ptr<Element>&) = 0;
132 virtual bool insert(const shared_ptr<Group>&) = 0;
133 virtual bool insert(const shared_ptr<Integrator>&) = 0;
134 virtual bool insert(const shared_ptr<Load>&) = 0;
135 virtual bool insert(const shared_ptr<Material>&) = 0;
136 virtual bool insert(const shared_ptr<Modifier>&) = 0;
137 virtual bool insert(const shared_ptr<Node>&) = 0;
138 virtual bool insert(const shared_ptr<Orientation>&) = 0;
139 virtual bool insert(const shared_ptr<Recorder>&) = 0;
140 virtual bool insert(const shared_ptr<Section>&) = 0;
141 virtual bool insert(const shared_ptr<Solver>&) = 0;
142 virtual bool insert(const shared_ptr<Step>&) = 0;
143
144 template<typename T> bool erase(unsigned);
145 virtual bool erase_amplitude(unsigned) = 0;
146 virtual bool erase_expression(unsigned) = 0;
147 virtual bool erase_constraint(unsigned) = 0;
148 virtual bool erase_converger(unsigned) = 0;
149 virtual bool erase_criterion(unsigned) = 0;
150 virtual bool erase_database(unsigned) = 0;
151 virtual bool erase_element(unsigned) = 0;
152 virtual bool erase_group(unsigned) = 0;
153 virtual bool erase_integrator(unsigned) = 0;
154 virtual bool erase_load(unsigned) = 0;
155 virtual bool erase_material(unsigned) = 0;
156 virtual bool erase_modifier(unsigned) = 0;
157 virtual bool erase_node(unsigned) = 0;
158 virtual bool erase_orientation(unsigned) = 0;
159 virtual bool erase_recorder(unsigned) = 0;
160 virtual bool erase_section(unsigned) = 0;
161 virtual bool erase_solver(unsigned) = 0;
162 virtual bool erase_step(unsigned) = 0;
163
164 virtual void disable_amplitude(unsigned) = 0;
165 virtual void disable_expression(unsigned) = 0;
166 virtual void disable_constraint(unsigned) = 0;
167 virtual void disable_converger(unsigned) = 0;
168 virtual void disable_criterion(unsigned) = 0;
169 virtual void disable_database(unsigned) = 0;
170 virtual void disable_element(unsigned) = 0;
171 virtual void disable_group(unsigned) = 0;
172 virtual void disable_integrator(unsigned) = 0;
173 virtual void disable_load(unsigned) = 0;
174 virtual void disable_material(unsigned) = 0;
175 virtual void disable_modifier(unsigned) = 0;
176 virtual void disable_node(unsigned) = 0;
177 virtual void disable_orientation(unsigned) = 0;
178 virtual void disable_recorder(unsigned) = 0;
179 virtual void disable_section(unsigned) = 0;
180 virtual void disable_solver(unsigned) = 0;
181 virtual void disable_step(unsigned) = 0;
182
183 virtual void enable_amplitude(unsigned) = 0;
184 virtual void enable_expression(unsigned) = 0;
185 virtual void enable_constraint(unsigned) = 0;
186 virtual void enable_converger(unsigned) = 0;
187 virtual void enable_criterion(unsigned) = 0;
188 virtual void enable_database(unsigned) = 0;
189 virtual void enable_element(unsigned) = 0;
190 virtual void enable_group(unsigned) = 0;
191 virtual void enable_integrator(unsigned) = 0;
192 virtual void enable_load(unsigned) = 0;
193 virtual void enable_material(unsigned) = 0;
194 virtual void enable_modifier(unsigned) = 0;
195 virtual void enable_node(unsigned) = 0;
196 virtual void enable_orientation(unsigned) = 0;
197 virtual void enable_recorder(unsigned) = 0;
198 virtual void enable_section(unsigned) = 0;
199 virtual void enable_solver(unsigned) = 0;
200 virtual void enable_step(unsigned) = 0;
201
202 template<typename T> const shared_ptr<T>& get(unsigned);
203 template<typename T> const shared_ptr<T>& get(uword);
204 template<typename T> std::vector<shared_ptr<T>> get(const uvec&);
205 [[nodiscard]] virtual const shared_ptr<Amplitude>& get_amplitude(unsigned) const = 0;
206 [[nodiscard]] virtual const shared_ptr<Expression>& get_expression(unsigned) const = 0;
207 [[nodiscard]] virtual const shared_ptr<Constraint>& get_constraint(unsigned) const = 0;
208 [[nodiscard]] virtual const shared_ptr<Converger>& get_converger(unsigned) const = 0;
209 [[nodiscard]] virtual const shared_ptr<Criterion>& get_criterion(unsigned) const = 0;
210 [[nodiscard]] virtual const shared_ptr<Database>& get_database(unsigned) const = 0;
211 [[nodiscard]] virtual const shared_ptr<Element>& get_element(unsigned) const = 0;
212 [[nodiscard]] virtual const shared_ptr<Group>& get_group(unsigned) const = 0;
213 [[nodiscard]] virtual const shared_ptr<Integrator>& get_integrator(unsigned) const = 0;
214 [[nodiscard]] virtual const shared_ptr<Load>& get_load(unsigned) const = 0;
215 [[nodiscard]] virtual const shared_ptr<Material>& get_material(unsigned) const = 0;
216 [[nodiscard]] virtual const shared_ptr<Modifier>& get_modifier(unsigned) const = 0;
217 [[nodiscard]] virtual const shared_ptr<Node>& get_node(unsigned) const = 0;
218 [[nodiscard]] virtual const shared_ptr<Orientation>& get_orientation(unsigned) const = 0;
219 [[nodiscard]] virtual const shared_ptr<Recorder>& get_recorder(unsigned) const = 0;
220 [[nodiscard]] virtual const shared_ptr<Section>& get_section(unsigned) const = 0;
221 [[nodiscard]] virtual const shared_ptr<Solver>& get_solver(unsigned) const = 0;
222 [[nodiscard]] virtual const shared_ptr<Step>& get_step(unsigned) const = 0;
223
224 template<typename T> const std::vector<shared_ptr<T>>& get_pool();
225 [[nodiscard]] virtual const AmplitudeQueue& get_amplitude_pool() const = 0;
226 [[nodiscard]] virtual const ExpressionQueue& get_expression_pool() const = 0;
227 [[nodiscard]] virtual const ConstraintQueue& get_constraint_pool() const = 0;
228 [[nodiscard]] virtual const ConvergerQueue& get_converger_pool() const = 0;
229 [[nodiscard]] virtual const CriterionQueue& get_criterion_pool() const = 0;
230 [[nodiscard]] virtual const DatabaseQueue& get_database_pool() const = 0;
231 [[nodiscard]] virtual const ElementQueue& get_element_pool() const = 0;
232 [[nodiscard]] virtual const GroupQueue& get_group_pool() const = 0;
233 [[nodiscard]] virtual const IntegratorQueue& get_integrator_pool() const = 0;
234 [[nodiscard]] virtual const LoadQueue& get_load_pool() const = 0;
235 [[nodiscard]] virtual const MaterialQueue& get_material_pool() const = 0;
236 [[nodiscard]] virtual const ModifierQueue& get_modifier_pool() const = 0;
237 [[nodiscard]] virtual const NodeQueue& get_node_pool() const = 0;
238 [[nodiscard]] virtual const OrientationQueue& get_orientation_pool() const = 0;
239 [[nodiscard]] virtual const RecorderQueue& get_recorder_pool() const = 0;
240 [[nodiscard]] virtual const SectionQueue& get_section_pool() const = 0;
241 [[nodiscard]] virtual const SolverQueue& get_solver_pool() const = 0;
242 [[nodiscard]] virtual const StepQueue& get_step_pool() const = 0;
243
244 friend shared_ptr<Amplitude>& get_amplitude(const shared_ptr<DomainBase>&, unsigned);
245 friend shared_ptr<Expression>& get_expression(const shared_ptr<DomainBase>&, unsigned);
246 friend shared_ptr<Constraint>& get_constraint(const shared_ptr<DomainBase>&, unsigned);
247 friend shared_ptr<Converger>& get_converger(const shared_ptr<DomainBase>&, unsigned);
248 friend shared_ptr<Criterion>& get_criterion(const shared_ptr<DomainBase>&, unsigned);
249 friend shared_ptr<Database>& get_database(const shared_ptr<DomainBase>&, unsigned);
250 friend shared_ptr<Element>& get_element(const shared_ptr<DomainBase>&, unsigned);
251 friend shared_ptr<Group>& get_group(const shared_ptr<DomainBase>&, unsigned);
252 friend shared_ptr<Integrator>& get_integrator(const shared_ptr<DomainBase>&, unsigned);
253 friend shared_ptr<Load>& get_load(const shared_ptr<DomainBase>&, unsigned);
254 friend shared_ptr<Material>& get_material(const shared_ptr<DomainBase>&, unsigned);
255 friend shared_ptr<Modifier>& get_modifier(const shared_ptr<DomainBase>&, unsigned);
256 friend shared_ptr<Node>& get_node(const shared_ptr<DomainBase>&, unsigned);
257 friend shared_ptr<Orientation>& get_orientation(const shared_ptr<DomainBase>&, unsigned);
258 friend shared_ptr<Recorder>& get_recorder(const shared_ptr<DomainBase>&, unsigned);
259 friend shared_ptr<Section>& get_section(const shared_ptr<DomainBase>&, unsigned);
260 friend shared_ptr<Solver>& get_solver(const shared_ptr<DomainBase>&, unsigned);
261 friend shared_ptr<Step>& get_step(const shared_ptr<DomainBase>&, unsigned);
262
263 template<typename T> size_t get();
264 [[nodiscard]] virtual size_t get_amplitude() const = 0;
265 [[nodiscard]] virtual size_t get_expression() const = 0;
266 [[nodiscard]] virtual size_t get_constraint() const = 0;
267 [[nodiscard]] virtual size_t get_converger() const = 0;
268 [[nodiscard]] virtual size_t get_criterion() const = 0;
269 [[nodiscard]] virtual size_t get_database() const = 0;
270 [[nodiscard]] virtual size_t get_element() const = 0;
271 [[nodiscard]] virtual size_t get_group() const = 0;
272 [[nodiscard]] virtual size_t get_integrator() const = 0;
273 [[nodiscard]] virtual size_t get_load() const = 0;
274 [[nodiscard]] virtual size_t get_material() const = 0;
275 [[nodiscard]] virtual size_t get_modifier() const = 0;
276 [[nodiscard]] virtual size_t get_node() const = 0;
277 [[nodiscard]] virtual size_t get_orientation() const = 0;
278 [[nodiscard]] virtual size_t get_recorder() const = 0;
279 [[nodiscard]] virtual size_t get_section() const = 0;
280 [[nodiscard]] virtual size_t get_solver() const = 0;
281 [[nodiscard]] virtual size_t get_step() const = 0;
282
283 template<typename T> bool find(unsigned);
284 template<typename T> bool find(uword);
285 template<typename T> bool find(const uvec&);
286 [[nodiscard]] virtual bool find_amplitude(unsigned) const = 0;
287 [[nodiscard]] virtual bool find_expression(unsigned) const = 0;
288 [[nodiscard]] virtual bool find_constraint(unsigned) const = 0;
289 [[nodiscard]] virtual bool find_converger(unsigned) const = 0;
290 [[nodiscard]] virtual bool find_criterion(unsigned) const = 0;
291 [[nodiscard]] virtual bool find_database(unsigned) const = 0;
292 [[nodiscard]] virtual bool find_element(unsigned) const = 0;
293 [[nodiscard]] virtual bool find_group(unsigned) const = 0;
294 [[nodiscard]] virtual bool find_integrator(unsigned) const = 0;
295 [[nodiscard]] virtual bool find_load(unsigned) const = 0;
296 [[nodiscard]] virtual bool find_material(unsigned) const = 0;
297 [[nodiscard]] virtual bool find_modifier(unsigned) const = 0;
298 [[nodiscard]] virtual bool find_node(unsigned) const = 0;
299 [[nodiscard]] virtual bool find_orientation(unsigned) const = 0;
300 [[nodiscard]] virtual bool find_recorder(unsigned) const = 0;
301 [[nodiscard]] virtual bool find_section(unsigned) const = 0;
302 [[nodiscard]] virtual bool find_solver(unsigned) const = 0;
303 [[nodiscard]] virtual bool find_step(unsigned) const = 0;
304
305 virtual void set_current_step_tag(unsigned) = 0;
306 virtual void set_current_converger_tag(unsigned) = 0;
307 virtual void set_current_integrator_tag(unsigned) = 0;
308 virtual void set_current_solver_tag(unsigned) = 0;
309
310 virtual unsigned get_current_step_tag() = 0;
311 virtual std::pair<unsigned, unsigned> get_current_converger_tag() = 0;
312 virtual std::pair<unsigned, unsigned> get_current_integrator_tag() = 0;
313 virtual std::pair<unsigned, unsigned> get_current_solver_tag() = 0;
314
315 [[nodiscard]] virtual const shared_ptr<Step>& get_current_step() const = 0;
316 [[nodiscard]] virtual const shared_ptr<Converger>& get_current_converger() const = 0;
317 [[nodiscard]] virtual const shared_ptr<Integrator>& get_current_integrator() const = 0;
318 [[nodiscard]] virtual const shared_ptr<Solver>& get_current_solver() const = 0;
319
321
325 virtual void insert_loaded_dof(const uvec&) = 0;
329 virtual void insert_restrained_dof(const uvec&) = 0;
333 virtual void insert_constrained_dof(const uvec&) = 0;
334
338 virtual void insert_loaded_dof(uword) = 0;
342 virtual void insert_restrained_dof(uword) = 0;
346 virtual void insert_constrained_dof(uword) = 0;
347
348 [[nodiscard]] virtual const suanpan::unordered_set<uword>& get_loaded_dof() const = 0;
349 [[nodiscard]] virtual const suanpan::unordered_set<uword>& get_restrained_dof() const = 0;
350 [[nodiscard]] virtual const suanpan::unordered_set<uword>& get_constrained_dof() const = 0;
351
352 [[nodiscard]] virtual bool is_updated() const = 0;
353 [[nodiscard]] virtual bool is_sparse() const = 0;
354
355 virtual void set_attribute(ModalAttribute) = 0;
356 [[nodiscard]] virtual bool get_attribute(ModalAttribute) = 0;
357
358 virtual void set_color_model(ColorMethod) = 0;
359 [[nodiscard]] virtual const std::vector<std::vector<unsigned>>& get_color_map() const = 0;
360 [[nodiscard]] virtual std::pair<std::vector<unsigned>, suanpan::graph<unsigned>> get_element_connectivity(bool) = 0;
361
362 virtual int reorder_dof() = 0;
363 virtual int assign_color() = 0;
364
365 virtual int restart() = 0;
366 virtual int soft_restart() = 0;
367 virtual int initialize() = 0;
368 virtual int initialize_load() = 0;
369 virtual int initialize_constraint() = 0;
370 virtual int initialize_reference() = 0;
371 virtual int initialize_material() = 0;
372 virtual int initialize_section() = 0;
373
374 [[nodiscard]] virtual int process_load(bool) = 0;
375 [[nodiscard]] virtual int process_constraint(bool) = 0;
376 [[nodiscard]] virtual int process_criterion() = 0;
377 [[nodiscard]] virtual int process_modifier() = 0;
378
379 virtual void record() = 0;
380 virtual void enable_all() = 0;
381 virtual void summary() const = 0;
382
383 virtual void update_current_resistance() const = 0;
384 virtual void update_current_damping_force() const = 0;
385 virtual void update_current_nonviscous_force() const = 0;
386 virtual void update_current_inertial_force() const = 0;
387
388 virtual void assemble_resistance() const = 0;
389 virtual void assemble_damping_force() const = 0;
390 virtual void assemble_nonviscous_force() const = 0;
391 virtual void assemble_inertial_force() const = 0;
392
393 virtual void assemble_initial_mass() const = 0;
394 virtual void assemble_current_mass() const = 0;
395 virtual void assemble_trial_mass() const = 0;
396 virtual void assemble_initial_damping() const = 0;
397 virtual void assemble_current_damping() const = 0;
398 virtual void assemble_trial_damping() const = 0;
399 virtual void assemble_initial_nonviscous() const = 0;
400 virtual void assemble_current_nonviscous() const = 0;
401 virtual void assemble_trial_nonviscous() const = 0;
402 virtual void assemble_initial_stiffness() const = 0;
403 virtual void assemble_current_stiffness() const = 0;
404 virtual void assemble_trial_stiffness() const = 0;
405 virtual void assemble_initial_geometry() const = 0;
406 virtual void assemble_current_geometry() const = 0;
407 virtual void assemble_trial_geometry() const = 0;
408
409 virtual void assemble_mass_container() const = 0;
410 virtual void assemble_stiffness_container() const = 0;
411
412 virtual void erase_machine_error(vec&) const = 0;
413
414 virtual void update_load() = 0;
415 virtual void update_constraint() = 0;
416
417 virtual void assemble_load_stiffness() = 0;
419
420 [[nodiscard]] virtual int update_current_status() const = 0;
421 [[nodiscard]] virtual int update_incre_status() const = 0;
422 [[nodiscard]] virtual int update_trial_status() const = 0;
423
424 virtual void stage_status() = 0;
425 virtual void commit_status() const = 0;
426 virtual void clear_status() = 0;
427 virtual void reset_status() const = 0;
428
429 template<Statistics T> void update(const double value) const { update(T, value); }
430
431 template<Statistics T> [[nodiscard]] double stats() const { return stats(T); }
432
433 virtual void update(Statistics, double) const = 0;
434
435 [[nodiscard]] virtual double stats(Statistics) const = 0;
436
437 virtual void save(string) = 0;
438};
439
440template<typename T> bool DomainBase::erase(unsigned) { throw invalid_argument("unsupported"); }
441
442template<> inline bool DomainBase::erase<Amplitude>(const unsigned T) { return erase_amplitude(T); }
443
444template<> inline bool DomainBase::erase<Expression>(const unsigned T) { return erase_expression(T); }
445
446template<> inline bool DomainBase::erase<Constraint>(const unsigned T) { return erase_constraint(T); }
447
448template<> inline bool DomainBase::erase<Converger>(const unsigned T) { return erase_converger(T); }
449
450template<> inline bool DomainBase::erase<Criterion>(const unsigned T) { return erase_criterion(T); }
451
452template<> inline bool DomainBase::erase<Database>(const unsigned T) { return erase_database(T); }
453
454template<> inline bool DomainBase::erase<Element>(const unsigned T) { return erase_element(T); }
455
456template<> inline bool DomainBase::erase<Group>(const unsigned T) { return erase_group(T); }
457
458template<> inline bool DomainBase::erase<Integrator>(const unsigned T) { return erase_integrator(T); }
459
460template<> inline bool DomainBase::erase<Load>(const unsigned T) { return erase_load(T); }
461
462template<> inline bool DomainBase::erase<Material>(const unsigned T) { return erase_material(T); }
463
464template<> inline bool DomainBase::erase<Modifier>(const unsigned T) { return erase_modifier(T); }
465
466template<> inline bool DomainBase::erase<Node>(const unsigned T) { return erase_node(T); }
467
468template<> inline bool DomainBase::erase<Orientation>(const unsigned T) { return erase_orientation(T); }
469
470template<> inline bool DomainBase::erase<Recorder>(const unsigned T) { return erase_recorder(T); }
471
472template<> inline bool DomainBase::erase<Section>(const unsigned T) { return erase_section(T); }
473
474template<> inline bool DomainBase::erase<Solver>(const unsigned T) { return erase_solver(T); }
475
476template<> inline bool DomainBase::erase<Step>(const unsigned T) { return erase_step(T); }
477
478template<typename T> const shared_ptr<T>& DomainBase::get(unsigned) { throw invalid_argument("unsupported"); }
479
480template<typename T> const shared_ptr<T>& DomainBase::get(uword) { throw invalid_argument("unsupported"); }
481
482template<typename T> std::vector<shared_ptr<T>> DomainBase::get(const uvec& P) {
483 std::vector<shared_ptr<T>> output;
484 output.reserve(P.n_elem);
485
486 for(auto I : P) output.emplace_back(get<T>(I));
487
488 return output;
489}
490
491template<> inline const shared_ptr<Amplitude>& DomainBase::get<Amplitude>(const uword T) { return get_amplitude(static_cast<unsigned>(T)); }
492
493template<> inline const shared_ptr<Expression>& DomainBase::get<Expression>(const uword T) { return get_expression(static_cast<unsigned>(T)); }
494
495template<> inline const shared_ptr<Constraint>& DomainBase::get<Constraint>(const uword T) { return get_constraint(static_cast<unsigned>(T)); }
496
497template<> inline const shared_ptr<Converger>& DomainBase::get<Converger>(const uword T) { return get_converger(static_cast<unsigned>(T)); }
498
499template<> inline const shared_ptr<Criterion>& DomainBase::get<Criterion>(const uword T) { return get_criterion(static_cast<unsigned>(T)); }
500
501template<> inline const shared_ptr<Database>& DomainBase::get<Database>(const uword T) { return get_database(static_cast<unsigned>(T)); }
502
503template<> inline const shared_ptr<Element>& DomainBase::get<Element>(const uword T) { return get_element(static_cast<unsigned>(T)); }
504
505template<> inline const shared_ptr<Group>& DomainBase::get<Group>(const uword T) { return get_group(static_cast<unsigned>(T)); }
506
507template<> inline const shared_ptr<Integrator>& DomainBase::get<Integrator>(const uword T) { return get_integrator(static_cast<unsigned>(T)); }
508
509template<> inline const shared_ptr<Load>& DomainBase::get<Load>(const uword T) { return get_load(static_cast<unsigned>(T)); }
510
511template<> inline const shared_ptr<Material>& DomainBase::get<Material>(const uword T) { return get_material(static_cast<unsigned>(T)); }
512
513template<> inline const shared_ptr<Modifier>& DomainBase::get<Modifier>(const uword T) { return get_modifier(static_cast<unsigned>(T)); }
514
515template<> inline const shared_ptr<Node>& DomainBase::get<Node>(const uword T) { return get_node(static_cast<unsigned>(T)); }
516
517template<> inline const shared_ptr<Orientation>& DomainBase::get<Orientation>(const uword T) { return get_orientation(static_cast<unsigned>(T)); }
518
519template<> inline const shared_ptr<Recorder>& DomainBase::get<Recorder>(const uword T) { return get_recorder(static_cast<unsigned>(T)); }
520
521template<> inline const shared_ptr<Section>& DomainBase::get<Section>(const uword T) { return get_section(static_cast<unsigned>(T)); }
522
523template<> inline const shared_ptr<Solver>& DomainBase::get<Solver>(const uword T) { return get_solver(static_cast<unsigned>(T)); }
524
525template<> inline const shared_ptr<Step>& DomainBase::get<Step>(const uword T) { return get_step(static_cast<unsigned>(T)); }
526
527template<> inline const shared_ptr<Amplitude>& DomainBase::get<Amplitude>(const unsigned T) { return get_amplitude(T); }
528
529template<> inline const shared_ptr<Expression>& DomainBase::get<Expression>(const unsigned T) { return get_expression(T); }
530
531template<> inline const shared_ptr<Constraint>& DomainBase::get<Constraint>(const unsigned T) { return get_constraint(T); }
532
533template<> inline const shared_ptr<Converger>& DomainBase::get<Converger>(const unsigned T) { return get_converger(T); }
534
535template<> inline const shared_ptr<Criterion>& DomainBase::get<Criterion>(const unsigned T) { return get_criterion(T); }
536
537template<> inline const shared_ptr<Database>& DomainBase::get<Database>(const unsigned T) { return get_database(T); }
538
539template<> inline const shared_ptr<Element>& DomainBase::get<Element>(const unsigned T) { return get_element(T); }
540
541template<> inline const shared_ptr<Group>& DomainBase::get<Group>(const unsigned T) { return get_group(T); }
542
543template<> inline const shared_ptr<Integrator>& DomainBase::get<Integrator>(const unsigned T) { return get_integrator(T); }
544
545template<> inline const shared_ptr<Load>& DomainBase::get<Load>(const unsigned T) { return get_load(T); }
546
547template<> inline const shared_ptr<Material>& DomainBase::get<Material>(const unsigned T) { return get_material(T); }
548
549template<> inline const shared_ptr<Modifier>& DomainBase::get<Modifier>(const unsigned T) { return get_modifier(T); }
550
551template<> inline const shared_ptr<Node>& DomainBase::get<Node>(const unsigned T) { return get_node(T); }
552
553template<> inline const shared_ptr<Orientation>& DomainBase::get<Orientation>(const unsigned T) { return get_orientation(T); }
554
555template<> inline const shared_ptr<Recorder>& DomainBase::get<Recorder>(const unsigned T) { return get_recorder(T); }
556
557template<> inline const shared_ptr<Section>& DomainBase::get<Section>(const unsigned T) { return get_section(T); }
558
559template<> inline const shared_ptr<Solver>& DomainBase::get<Solver>(const unsigned T) { return get_solver(T); }
560
561template<> inline const shared_ptr<Step>& DomainBase::get<Step>(const unsigned T) { return get_step(T); }
562
563template<typename T> const std::vector<shared_ptr<T>>& DomainBase::get_pool() { throw invalid_argument("unsupported"); }
564
565template<> inline const std::vector<shared_ptr<Amplitude>>& DomainBase::get_pool<Amplitude>() { return get_amplitude_pool(); }
566
567template<> inline const std::vector<shared_ptr<Expression>>& DomainBase::get_pool<Expression>() { return get_expression_pool(); }
568
569template<> inline const std::vector<shared_ptr<Constraint>>& DomainBase::get_pool<Constraint>() { return get_constraint_pool(); }
570
571template<> inline const std::vector<shared_ptr<Converger>>& DomainBase::get_pool<Converger>() { return get_converger_pool(); }
572
573template<> inline const std::vector<shared_ptr<Criterion>>& DomainBase::get_pool<Criterion>() { return get_criterion_pool(); }
574
575template<> inline const std::vector<shared_ptr<Database>>& DomainBase::get_pool<Database>() { return get_database_pool(); }
576
577template<> inline const std::vector<shared_ptr<Element>>& DomainBase::get_pool<Element>() { return get_element_pool(); }
578
579template<> inline const std::vector<shared_ptr<Group>>& DomainBase::get_pool<Group>() { return get_group_pool(); }
580
581template<> inline const std::vector<shared_ptr<Integrator>>& DomainBase::get_pool<Integrator>() { return get_integrator_pool(); }
582
583template<> inline const std::vector<shared_ptr<Load>>& DomainBase::get_pool<Load>() { return get_load_pool(); }
584
585template<> inline const std::vector<shared_ptr<Material>>& DomainBase::get_pool<Material>() { return get_material_pool(); }
586
587template<> inline const std::vector<shared_ptr<Modifier>>& DomainBase::get_pool<Modifier>() { return get_modifier_pool(); }
588
589template<> inline const std::vector<shared_ptr<Node>>& DomainBase::get_pool<Node>() { return get_node_pool(); }
590
591template<> inline const std::vector<shared_ptr<Orientation>>& DomainBase::get_pool<Orientation>() { return get_orientation_pool(); }
592
593template<> inline const std::vector<shared_ptr<Recorder>>& DomainBase::get_pool<Recorder>() { return get_recorder_pool(); }
594
595template<> inline const std::vector<shared_ptr<Section>>& DomainBase::get_pool<Section>() { return get_section_pool(); }
596
597template<> inline const std::vector<shared_ptr<Solver>>& DomainBase::get_pool<Solver>() { return get_solver_pool(); }
598
599template<typename T> size_t DomainBase::get() { throw invalid_argument("unsupported"); }
600
601template<> inline size_t DomainBase::get<Amplitude>() { return get_amplitude(); }
602
603template<> inline size_t DomainBase::get<Expression>() { return get_expression(); }
604
605template<> inline size_t DomainBase::get<Constraint>() { return get_constraint(); }
606
607template<> inline size_t DomainBase::get<Converger>() { return get_converger(); }
608
609template<> inline size_t DomainBase::get<Criterion>() { return get_criterion(); }
610
611template<> inline size_t DomainBase::get<Database>() { return get_database(); }
612
613template<> inline size_t DomainBase::get<Element>() { return get_element(); }
614
615template<> inline size_t DomainBase::get<Group>() { return get_group(); }
616
617template<> inline size_t DomainBase::get<Integrator>() { return get_integrator(); }
618
619template<> inline size_t DomainBase::get<Load>() { return get_load(); }
620
621template<> inline size_t DomainBase::get<Material>() { return get_material(); }
622
623template<> inline size_t DomainBase::get<Modifier>() { return get_modifier(); }
624
625template<> inline size_t DomainBase::get<Node>() { return get_node(); }
626
627template<> inline size_t DomainBase::get<Orientation>() { return get_orientation(); }
628
629template<> inline size_t DomainBase::get<Recorder>() { return get_recorder(); }
630
631template<> inline size_t DomainBase::get<Section>() { return get_section(); }
632
633template<> inline size_t DomainBase::get<Solver>() { return get_solver(); }
634
635template<> inline size_t DomainBase::get<Step>() { return get_step(); }
636
637template<typename T> bool DomainBase::find(unsigned) { throw invalid_argument("unsupported"); }
638
639template<typename T> bool DomainBase::find(uword) { throw invalid_argument("unsupported"); }
640
641template<typename T> bool DomainBase::find(const uvec& P) {
642 for(auto I : P) if(!find<T>(I)) return false;
643
644 return true;
645}
646
647template<> inline bool DomainBase::find<Amplitude>(const uword T) { return find_amplitude(static_cast<unsigned>(T)); }
648
649template<> inline bool DomainBase::find<Expression>(const uword T) { return find_expression(static_cast<unsigned>(T)); }
650
651template<> inline bool DomainBase::find<Constraint>(const uword T) { return find_constraint(static_cast<unsigned>(T)); }
652
653template<> inline bool DomainBase::find<Converger>(const uword T) { return find_converger(static_cast<unsigned>(T)); }
654
655template<> inline bool DomainBase::find<Criterion>(const uword T) { return find_criterion(static_cast<unsigned>(T)); }
656
657template<> inline bool DomainBase::find<Database>(const uword T) { return find_database(static_cast<unsigned>(T)); }
658
659template<> inline bool DomainBase::find<Element>(const uword T) { return find_element(static_cast<unsigned>(T)); }
660
661template<> inline bool DomainBase::find<Group>(const uword T) { return find_group(static_cast<unsigned>(T)); }
662
663template<> inline bool DomainBase::find<Integrator>(const uword T) { return find_integrator(static_cast<unsigned>(T)); }
664
665template<> inline bool DomainBase::find<Load>(const uword T) { return find_load(static_cast<unsigned>(T)); }
666
667template<> inline bool DomainBase::find<Material>(const uword T) { return find_material(static_cast<unsigned>(T)); }
668
669template<> inline bool DomainBase::find<Modifier>(const uword T) { return find_modifier(static_cast<unsigned>(T)); }
670
671template<> inline bool DomainBase::find<Node>(const uword T) { return find_node(static_cast<unsigned>(T)); }
672
673template<> inline bool DomainBase::find<Orientation>(const uword T) { return find_orientation(static_cast<unsigned>(T)); }
674
675template<> inline bool DomainBase::find<Recorder>(const uword T) { return find_recorder(static_cast<unsigned>(T)); }
676
677template<> inline bool DomainBase::find<Section>(const uword T) { return find_section(static_cast<unsigned>(T)); }
678
679template<> inline bool DomainBase::find<Solver>(const uword T) { return find_solver(static_cast<unsigned>(T)); }
680
681template<> inline bool DomainBase::find<Step>(const uword T) { return find_step(static_cast<unsigned>(T)); }
682
683template<> inline bool DomainBase::find<Amplitude>(const unsigned T) { return find_amplitude(T); }
684
685template<> inline bool DomainBase::find<Expression>(const unsigned T) { return find_expression(T); }
686
687template<> inline bool DomainBase::find<Constraint>(const unsigned T) { return find_constraint(T); }
688
689template<> inline bool DomainBase::find<Converger>(const unsigned T) { return find_converger(T); }
690
691template<> inline bool DomainBase::find<Criterion>(const unsigned T) { return find_criterion(T); }
692
693template<> inline bool DomainBase::find<Database>(const unsigned T) { return find_database(T); }
694
695template<> inline bool DomainBase::find<Element>(const unsigned T) { return find_element(T); }
696
697template<> inline bool DomainBase::find<Group>(const unsigned T) { return find_group(T); }
698
699template<> inline bool DomainBase::find<Integrator>(const unsigned T) { return find_integrator(T); }
700
701template<> inline bool DomainBase::find<Load>(const unsigned T) { return find_load(T); }
702
703template<> inline bool DomainBase::find<Material>(const unsigned T) { return find_material(T); }
704
705template<> inline bool DomainBase::find<Modifier>(const unsigned T) { return find_modifier(T); }
706
707template<> inline bool DomainBase::find<Node>(const unsigned T) { return find_node(T); }
708
709template<> inline bool DomainBase::find<Orientation>(const unsigned T) { return find_orientation(T); }
710
711template<> inline bool DomainBase::find<Recorder>(const unsigned T) { return find_recorder(T); }
712
713template<> inline bool DomainBase::find<Section>(const unsigned T) { return find_section(T); }
714
715template<> inline bool DomainBase::find<Solver>(const unsigned T) { return find_solver(T); }
716
717template<> inline bool DomainBase::find<Step>(const unsigned T) { return find_step(T); }
718
719#endif
720
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:104
virtual void disable_element(unsigned)=0
virtual const shared_ptr< LongFactory > & get_factory() const =0
virtual void disable_converger(unsigned)=0
virtual const shared_ptr< Converger > & get_current_converger() 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 void set_attribute(ModalAttribute)=0
virtual const shared_ptr< Database > & get_database(unsigned) const =0
virtual void enable_database(unsigned)=0
virtual const ElementQueue & get_element_pool() const =0
~DomainBase() override=default
virtual const shared_ptr< Step > & get_current_step() const =0
virtual void enable_step(unsigned)=0
virtual bool find_group(unsigned) const =0
virtual void disable_section(unsigned)=0
virtual int reorder_dof()=0
virtual int initialize_constraint()=0
virtual const RecorderQueue & get_recorder_pool() const =0
virtual size_t get_step() const =0
virtual void assemble_current_geometry() const =0
virtual const shared_ptr< Modifier > & get_modifier(unsigned) 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 void save(string)=0
DomainBase & operator=(const DomainBase &)=delete
virtual void enable_load(unsigned)=0
virtual void enable_material(unsigned)=0
virtual bool find_modifier(unsigned) const =0
void update(const double value) const
Definition: DomainBase.h:429
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
double stats() const
Definition: DomainBase.h:431
virtual bool erase_recorder(unsigned)=0
virtual const IntegratorQueue & get_integrator_pool() const =0
virtual const shared_ptr< Amplitude > & get_amplitude(unsigned) const =0
virtual int initialize_material()=0
virtual void stage_status()=0
virtual const shared_ptr< Constraint > & get_constraint(unsigned) const =0
virtual const suanpan::unordered_set< uword > & get_constrained_dof() const =0
virtual void disable_modifier(unsigned)=0
virtual void update(Statistics, double) 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 std::pair< unsigned, unsigned > get_current_solver_tag()=0
virtual bool insert(const shared_ptr< Expression > &)=0
virtual int initialize()=0
virtual bool insert(const shared_ptr< Recorder > &)=0
virtual const shared_ptr< Expression > & get_expression(unsigned) const =0
virtual void disable_load(unsigned)=0
virtual bool insert(const shared_ptr< Constraint > &)=0
virtual size_t get_orientation() const =0
virtual bool insert(const shared_ptr< Modifier > &)=0
virtual const StepQueue & get_step_pool() const =0
virtual void assemble_damping_force() const =0
virtual size_t get_node() const =0
virtual void enable_all()=0
virtual size_t get_expression() 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 const shared_ptr< Recorder > & get_recorder(unsigned) const =0
virtual const suanpan::unordered_set< uword > & get_restrained_dof() const =0
virtual const GroupQueue & get_group_pool() const =0
virtual bool insert(const shared_ptr< Material > &)=0
virtual bool insert(const shared_ptr< Node > &)=0
virtual size_t get_recorder() 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 const shared_ptr< Solver > & get_current_solver() const =0
virtual void disable_constraint(unsigned)=0
virtual bool is_updated() const =0
virtual void enable_integrator(unsigned)=0
virtual const shared_ptr< Step > & get_step(unsigned) const =0
virtual bool insert(const shared_ptr< Group > &)=0
virtual const shared_ptr< Material > & get_material(unsigned) const =0
virtual void insert_loaded_dof(const uvec &)=0
concurrently safe insertion method
virtual bool get_attribute(ModalAttribute)=0
virtual unsigned get_current_step_tag()=0
virtual void enable_node(unsigned)=0
virtual void assemble_trial_nonviscous() const =0
virtual bool find_database(unsigned) const =0
virtual const LoadQueue & get_load_pool() const =0
virtual void assemble_trial_damping() const =0
virtual size_t get_group() const =0
virtual bool find_constraint(unsigned) const =0
virtual bool erase_expression(unsigned)=0
virtual const shared_ptr< Criterion > & get_criterion(unsigned) const =0
virtual size_t get_database() const =0
virtual void update_current_nonviscous_force() const =0
virtual bool find_orientation(unsigned) const =0
virtual int initialize_load()=0
virtual void enable_recorder(unsigned)=0
virtual bool erase_database(unsigned)=0
virtual const shared_ptr< Orientation > & get_orientation(unsigned) const =0
virtual void enable_converger(unsigned)=0
virtual size_t get_converger() const =0
virtual void assemble_current_mass() 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 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 std::pair< std::vector< unsigned >, suanpan::graph< unsigned > > get_element_connectivity(bool)=0
virtual void set_current_converger_tag(unsigned)=0
virtual void assemble_initial_damping() const =0
DomainBase & operator=(DomainBase &&)=delete
virtual bool find_converger(unsigned) const =0
virtual bool erase_load(unsigned)=0
virtual void assemble_nonviscous_force() const =0
virtual const shared_ptr< Section > & get_section(unsigned) const =0
virtual const ModifierQueue & get_modifier_pool() const =0
virtual int process_modifier()=0
virtual const shared_ptr< Integrator > & get_integrator(unsigned) const =0
DomainBase(const unsigned T)
Definition: DomainBase.h:106
virtual bool insert(const shared_ptr< Load > &)=0
virtual const NodeQueue & get_node_pool() const =0
virtual int initialize_reference()=0
virtual std::pair< unsigned, unsigned > get_current_integrator_tag()=0
virtual void set_factory(const shared_ptr< LongFactory > &)=0
virtual void update_current_damping_force() const =0
virtual const shared_ptr< Converger > & get_converger(unsigned) 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 double stats(Statistics) const =0
virtual void reset_status() const =0
virtual const SectionQueue & get_section_pool() 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 void assemble_initial_nonviscous() const =0
virtual const OrientationQueue & get_orientation_pool() const =0
virtual bool insert(const shared_ptr< Integrator > &)=0
virtual bool find_section(unsigned) const =0
virtual bool find_load(unsigned) const =0
virtual void clear_status()=0
virtual void disable_database(unsigned)=0
virtual void enable_element(unsigned)=0
virtual bool erase_material(unsigned)=0
virtual std::pair< unsigned, unsigned > get_current_converger_tag()=0
virtual void enable_amplitude(unsigned)=0
virtual const shared_ptr< Group > & get_group(unsigned) const =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 const DatabaseQueue & get_database_pool() const =0
virtual void assemble_trial_geometry() const =0
virtual bool find_recorder(unsigned) const =0
virtual void enable_expression(unsigned)=0
virtual void insert_restrained_dof(const uvec &)=0
concurrently safe insertion method
virtual const ConvergerQueue & get_converger_pool() const =0
virtual void erase_machine_error(vec &) const =0
virtual void set_current_integrator_tag(unsigned)=0
virtual bool insert(const shared_ptr< future< void > > &)=0
virtual void enable_group(unsigned)=0
virtual void disable_criterion(unsigned)=0
virtual const SolverQueue & get_solver_pool() const =0
DomainBase(const DomainBase &)=delete
virtual const shared_ptr< Solver > & get_solver(unsigned) const =0
virtual size_t get_solver() const =0
virtual void disable_expression(unsigned)=0
virtual void insert_constrained_dof(const uvec &)=0
concurrently safe insertion method
virtual bool insert(const shared_ptr< Solver > &)=0
virtual void assemble_initial_mass() const =0
virtual int update_current_status() const =0
virtual unique_ptr< Material > initialized_material_copy(uword)=0
virtual bool insert(const shared_ptr< Converger > &)=0
virtual int assign_color()=0
virtual const MaterialQueue & get_material_pool() const =0
virtual size_t get_section() const =0
virtual void assemble_load_stiffness()=0
virtual const shared_ptr< Node > & get_node(unsigned) const =0
virtual bool insert(const shared_ptr< Criterion > &)=0
virtual const ExpressionQueue & get_expression_pool() const =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 int process_constraint(bool)=0
virtual void assemble_current_nonviscous() const =0
virtual size_t get_material() const =0
virtual const std::vector< std::vector< unsigned > > & get_color_map() const =0
virtual void disable_node(unsigned)=0
virtual bool erase_criterion(unsigned)=0
virtual void assemble_constraint_stiffness()=0
virtual bool find_node(unsigned) const =0
virtual bool find_expression(unsigned) const =0
virtual const suanpan::unordered_set< uword > & get_loaded_dof() const =0
virtual const AmplitudeQueue & get_amplitude_pool() const =0
virtual bool erase_group(unsigned)=0
virtual int update_trial_status() const =0
virtual bool find_solver(unsigned) const =0
virtual size_t get_load() const =0
virtual int initialize_section()=0
virtual const ConstraintQueue & get_constraint_pool() 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 const shared_ptr< Element > & get_element(unsigned) const =0
virtual const CriterionQueue & get_criterion_pool() const =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 std::vector< shared_ptr< ExternalModule > > & get_external_module_pool() const =0
virtual const shared_ptr< Load > & get_load(unsigned) const =0
virtual void assemble_mass_container() const =0
virtual bool erase_converger(unsigned)=0
virtual void update_constraint()=0
virtual const shared_ptr< Integrator > & get_current_integrator() const =0
virtual void assemble_current_damping() const =0
A Element class.
Definition: Element.h:117
A Expression class represents a maths expression.
Definition: Expression.h:34
A ExternalModule class handles communication between the main program and external library.
Definition: ExternalModule.h:45
A Factory class.
Definition: Factory.hpp:73
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:51
A Load class.
Definition: Load.h:37
A Material abstract base class.
Definition: Material.h:111
A Modifier class.
Definition: Modifier.h:36
The Node class holds the number of DoFs, coordinate, displacement, velocity and acceleration.
Definition: Node.h:80
A Orientation class.
Definition: Orientation.h:48
A Recorder class.
Definition: Recorder.h:35
A Section class.
Definition: Section.h:77
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:86
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
Statistics
Definition: DomainBase.h:96
std::vector< shared_ptr< Modifier > > ModifierQueue
Definition: DomainBase.h:76
const std::vector< shared_ptr< T > > & get_pool()
Definition: DomainBase.h:563
size_t get()
Definition: DomainBase.h:599
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< 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
bool erase(unsigned)
Definition: DomainBase.h:440
bool find(unsigned)
Definition: DomainBase.h:637
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