38 std::atomic_bool updated =
false;
41 unsigned current_step_tag = 0;
42 unsigned current_converger_tag = 0;
43 unsigned current_integrator_tag = 0;
44 unsigned current_solver_tag = 0;
51 shared_ptr<LongFactory> factory;
76 std::vector<std::vector<unsigned>> color_map;
79 explicit Domain(
unsigned = 0);
86 void set_factory(
const shared_ptr<LongFactory>&)
override;
87 const shared_ptr<LongFactory>&
get_factory()
const override;
89 bool insert(
const shared_ptr<future<void>>&)
override;
93 bool insert(
const shared_ptr<ExternalModule>&)
override;
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;
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;
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);
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);
307 const std::vector<std::vector<unsigned>>&
get_color_map()
const override;
378 void save(
string)
override;
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
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