82using StepQueue = std::map<unsigned, shared_ptr<Step>>;
116 [[nodiscard]]
virtual const shared_ptr<LongFactory>&
get_factory()
const = 0;
118 virtual bool insert(
const shared_ptr<future<void>>&) = 0;
122 virtual bool insert(
const shared_ptr<ExternalModule>&) = 0;
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;
144 template<
typename T>
bool erase(
unsigned);
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;
224 template<
typename T>
const std::vector<shared_ptr<T>>&
get_pool();
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);
263 template<
typename T>
size_t get();
283 template<
typename T>
bool find(
unsigned);
284 template<
typename T>
bool find(uword);
285 template<
typename T>
bool find(
const uvec&);
295 [[nodiscard]]
virtual bool find_load(
unsigned)
const = 0;
298 [[nodiscard]]
virtual bool find_node(
unsigned)
const = 0;
303 [[nodiscard]]
virtual bool find_step(
unsigned)
const = 0;
357 [[nodiscard]]
virtual const std::vector<std::vector<unsigned>>&
get_color_map()
const = 0;
422 template<Statistics T>
void update(
const double value)
const {
update(
T, value); }
424 template<Statistics T> [[nodiscard]]
double stats()
const {
return stats(
T); }
435template<>
inline bool DomainBase::erase<Amplitude>(
const unsigned T) {
return erase_amplitude(
T); }
437template<>
inline bool DomainBase::erase<Expression>(
const unsigned T) {
return erase_expression(
T); }
439template<>
inline bool DomainBase::erase<Constraint>(
const unsigned T) {
return erase_constraint(
T); }
441template<>
inline bool DomainBase::erase<Converger>(
const unsigned T) {
return erase_converger(
T); }
443template<>
inline bool DomainBase::erase<Criterion>(
const unsigned T) {
return erase_criterion(
T); }
445template<>
inline bool DomainBase::erase<Database>(
const unsigned T) {
return erase_database(
T); }
447template<>
inline bool DomainBase::erase<Element>(
const unsigned T) {
return erase_element(
T); }
449template<>
inline bool DomainBase::erase<Group>(
const unsigned T) {
return erase_group(
T); }
451template<>
inline bool DomainBase::erase<Integrator>(
const unsigned T) {
return erase_integrator(
T); }
453template<>
inline bool DomainBase::erase<Load>(
const unsigned T) {
return erase_load(
T); }
455template<>
inline bool DomainBase::erase<Material>(
const unsigned T) {
return erase_material(
T); }
457template<>
inline bool DomainBase::erase<Modifier>(
const unsigned T) {
return erase_modifier(
T); }
459template<>
inline bool DomainBase::erase<Node>(
const unsigned T) {
return erase_node(
T); }
463template<>
inline bool DomainBase::erase<Recorder>(
const unsigned T) {
return erase_recorder(
T); }
465template<>
inline bool DomainBase::erase<Section>(
const unsigned T) {
return erase_section(
T); }
467template<>
inline bool DomainBase::erase<Solver>(
const unsigned T) {
return erase_solver(
T); }
469template<>
inline bool DomainBase::erase<Step>(
const unsigned T) {
return erase_step(
T); }
471template<
typename T>
const shared_ptr<T>&
DomainBase::get(
unsigned) {
throw invalid_argument(
"unsupported"); }
473template<
typename T>
const shared_ptr<T>&
DomainBase::get(uword) {
throw invalid_argument(
"unsupported"); }
476 std::vector<shared_ptr<T>> output;
477 output.reserve(
P.n_elem);
479 for(
auto I :
P) output.emplace_back(get<T>(I));
484template<>
inline const shared_ptr<Amplitude>& DomainBase::get<Amplitude>(
const uword
T) {
return get_amplitude(
static_cast<unsigned>(
T)); }
486template<>
inline const shared_ptr<Expression>& DomainBase::get<Expression>(
const uword
T) {
return get_expression(
static_cast<unsigned>(
T)); }
488template<>
inline const shared_ptr<Constraint>& DomainBase::get<Constraint>(
const uword
T) {
return get_constraint(
static_cast<unsigned>(
T)); }
490template<>
inline const shared_ptr<Converger>& DomainBase::get<Converger>(
const uword
T) {
return get_converger(
static_cast<unsigned>(
T)); }
492template<>
inline const shared_ptr<Criterion>& DomainBase::get<Criterion>(
const uword
T) {
return get_criterion(
static_cast<unsigned>(
T)); }
494template<>
inline const shared_ptr<Database>& DomainBase::get<Database>(
const uword
T) {
return get_database(
static_cast<unsigned>(
T)); }
496template<>
inline const shared_ptr<Element>& DomainBase::get<Element>(
const uword
T) {
return get_element(
static_cast<unsigned>(
T)); }
498template<>
inline const shared_ptr<Group>& DomainBase::get<Group>(
const uword
T) {
return get_group(
static_cast<unsigned>(
T)); }
500template<>
inline const shared_ptr<Integrator>& DomainBase::get<Integrator>(
const uword
T) {
return get_integrator(
static_cast<unsigned>(
T)); }
502template<>
inline const shared_ptr<Load>& DomainBase::get<Load>(
const uword
T) {
return get_load(
static_cast<unsigned>(
T)); }
504template<>
inline const shared_ptr<Material>& DomainBase::get<Material>(
const uword
T) {
return get_material(
static_cast<unsigned>(
T)); }
506template<>
inline const shared_ptr<Modifier>& DomainBase::get<Modifier>(
const uword
T) {
return get_modifier(
static_cast<unsigned>(
T)); }
508template<>
inline const shared_ptr<Node>& DomainBase::get<Node>(
const uword
T) {
return get_node(
static_cast<unsigned>(
T)); }
510template<>
inline const shared_ptr<Orientation>& DomainBase::get<Orientation>(
const uword
T) {
return get_orientation(
static_cast<unsigned>(
T)); }
512template<>
inline const shared_ptr<Recorder>& DomainBase::get<Recorder>(
const uword
T) {
return get_recorder(
static_cast<unsigned>(
T)); }
514template<>
inline const shared_ptr<Section>& DomainBase::get<Section>(
const uword
T) {
return get_section(
static_cast<unsigned>(
T)); }
516template<>
inline const shared_ptr<Solver>& DomainBase::get<Solver>(
const uword
T) {
return get_solver(
static_cast<unsigned>(
T)); }
518template<>
inline const shared_ptr<Step>& DomainBase::get<Step>(
const uword
T) {
return get_step(
static_cast<unsigned>(
T)); }
520template<>
inline const shared_ptr<Amplitude>& DomainBase::get<Amplitude>(
const unsigned T) {
return get_amplitude(
T); }
522template<>
inline const shared_ptr<Expression>& DomainBase::get<Expression>(
const unsigned T) {
return get_expression(
T); }
524template<>
inline const shared_ptr<Constraint>& DomainBase::get<Constraint>(
const unsigned T) {
return get_constraint(
T); }
526template<>
inline const shared_ptr<Converger>& DomainBase::get<Converger>(
const unsigned T) {
return get_converger(
T); }
528template<>
inline const shared_ptr<Criterion>& DomainBase::get<Criterion>(
const unsigned T) {
return get_criterion(
T); }
530template<>
inline const shared_ptr<Database>& DomainBase::get<Database>(
const unsigned T) {
return get_database(
T); }
532template<>
inline const shared_ptr<Element>& DomainBase::get<Element>(
const unsigned T) {
return get_element(
T); }
534template<>
inline const shared_ptr<Group>& DomainBase::get<Group>(
const unsigned T) {
return get_group(
T); }
536template<>
inline const shared_ptr<Integrator>& DomainBase::get<Integrator>(
const unsigned T) {
return get_integrator(
T); }
538template<>
inline const shared_ptr<Load>& DomainBase::get<Load>(
const unsigned T) {
return get_load(
T); }
540template<>
inline const shared_ptr<Material>& DomainBase::get<Material>(
const unsigned T) {
return get_material(
T); }
542template<>
inline const shared_ptr<Modifier>& DomainBase::get<Modifier>(
const unsigned T) {
return get_modifier(
T); }
544template<>
inline const shared_ptr<Node>& DomainBase::get<Node>(
const unsigned T) {
return get_node(
T); }
546template<>
inline const shared_ptr<Orientation>& DomainBase::get<Orientation>(
const unsigned T) {
return get_orientation(
T); }
548template<>
inline const shared_ptr<Recorder>& DomainBase::get<Recorder>(
const unsigned T) {
return get_recorder(
T); }
550template<>
inline const shared_ptr<Section>& DomainBase::get<Section>(
const unsigned T) {
return get_section(
T); }
552template<>
inline const shared_ptr<Solver>& DomainBase::get<Solver>(
const unsigned T) {
return get_solver(
T); }
554template<>
inline const shared_ptr<Step>& DomainBase::get<Step>(
const unsigned T) {
return get_step(
T); }
556template<
typename T>
const std::vector<shared_ptr<T>>&
DomainBase::get_pool() {
throw invalid_argument(
"unsupported"); }
558template<>
inline const std::vector<shared_ptr<Amplitude>>& DomainBase::get_pool<Amplitude>() {
return get_amplitude_pool(); }
560template<>
inline const std::vector<shared_ptr<Expression>>& DomainBase::get_pool<Expression>() {
return get_expression_pool(); }
562template<>
inline const std::vector<shared_ptr<Constraint>>& DomainBase::get_pool<Constraint>() {
return get_constraint_pool(); }
564template<>
inline const std::vector<shared_ptr<Converger>>& DomainBase::get_pool<Converger>() {
return get_converger_pool(); }
566template<>
inline const std::vector<shared_ptr<Criterion>>& DomainBase::get_pool<Criterion>() {
return get_criterion_pool(); }
568template<>
inline const std::vector<shared_ptr<Database>>& DomainBase::get_pool<Database>() {
return get_database_pool(); }
570template<>
inline const std::vector<shared_ptr<Element>>& DomainBase::get_pool<Element>() {
return get_element_pool(); }
572template<>
inline const std::vector<shared_ptr<Group>>& DomainBase::get_pool<Group>() {
return get_group_pool(); }
574template<>
inline const std::vector<shared_ptr<Integrator>>& DomainBase::get_pool<Integrator>() {
return get_integrator_pool(); }
576template<>
inline const std::vector<shared_ptr<Load>>& DomainBase::get_pool<Load>() {
return get_load_pool(); }
578template<>
inline const std::vector<shared_ptr<Material>>& DomainBase::get_pool<Material>() {
return get_material_pool(); }
580template<>
inline const std::vector<shared_ptr<Modifier>>& DomainBase::get_pool<Modifier>() {
return get_modifier_pool(); }
582template<>
inline const std::vector<shared_ptr<Node>>& DomainBase::get_pool<Node>() {
return get_node_pool(); }
584template<>
inline const std::vector<shared_ptr<Orientation>>& DomainBase::get_pool<Orientation>() {
return get_orientation_pool(); }
586template<>
inline const std::vector<shared_ptr<Recorder>>& DomainBase::get_pool<Recorder>() {
return get_recorder_pool(); }
588template<>
inline const std::vector<shared_ptr<Section>>& DomainBase::get_pool<Section>() {
return get_section_pool(); }
590template<>
inline const std::vector<shared_ptr<Solver>>& DomainBase::get_pool<Solver>() {
return get_solver_pool(); }
592template<
typename T>
size_t DomainBase::get() {
throw invalid_argument(
"unsupported"); }
594template<>
inline size_t DomainBase::get<Amplitude>() {
return get_amplitude(); }
596template<>
inline size_t DomainBase::get<Expression>() {
return get_expression(); }
598template<>
inline size_t DomainBase::get<Constraint>() {
return get_constraint(); }
600template<>
inline size_t DomainBase::get<Converger>() {
return get_converger(); }
602template<>
inline size_t DomainBase::get<Criterion>() {
return get_criterion(); }
604template<>
inline size_t DomainBase::get<Database>() {
return get_database(); }
606template<>
inline size_t DomainBase::get<Element>() {
return get_element(); }
608template<>
inline size_t DomainBase::get<Group>() {
return get_group(); }
610template<>
inline size_t DomainBase::get<Integrator>() {
return get_integrator(); }
612template<>
inline size_t DomainBase::get<Load>() {
return get_load(); }
614template<>
inline size_t DomainBase::get<Material>() {
return get_material(); }
616template<>
inline size_t DomainBase::get<Modifier>() {
return get_modifier(); }
618template<>
inline size_t DomainBase::get<Node>() {
return get_node(); }
622template<>
inline size_t DomainBase::get<Recorder>() {
return get_recorder(); }
624template<>
inline size_t DomainBase::get<Section>() {
return get_section(); }
626template<>
inline size_t DomainBase::get<Solver>() {
return get_solver(); }
628template<>
inline size_t DomainBase::get<Step>() {
return get_step(); }
630template<
typename T>
bool DomainBase::find(
unsigned) {
throw invalid_argument(
"unsupported"); }
632template<
typename T>
bool DomainBase::find(uword) {
throw invalid_argument(
"unsupported"); }
635 for(
auto I :
P)
if(!find<T>(I))
return false;
640template<>
inline bool DomainBase::find<Amplitude>(
const uword
T) {
return find_amplitude(
static_cast<unsigned>(
T)); }
642template<>
inline bool DomainBase::find<Expression>(
const uword
T) {
return find_expression(
static_cast<unsigned>(
T)); }
644template<>
inline bool DomainBase::find<Constraint>(
const uword
T) {
return find_constraint(
static_cast<unsigned>(
T)); }
646template<>
inline bool DomainBase::find<Converger>(
const uword
T) {
return find_converger(
static_cast<unsigned>(
T)); }
648template<>
inline bool DomainBase::find<Criterion>(
const uword
T) {
return find_criterion(
static_cast<unsigned>(
T)); }
650template<>
inline bool DomainBase::find<Database>(
const uword
T) {
return find_database(
static_cast<unsigned>(
T)); }
652template<>
inline bool DomainBase::find<Element>(
const uword
T) {
return find_element(
static_cast<unsigned>(
T)); }
654template<>
inline bool DomainBase::find<Group>(
const uword
T) {
return find_group(
static_cast<unsigned>(
T)); }
656template<>
inline bool DomainBase::find<Integrator>(
const uword
T) {
return find_integrator(
static_cast<unsigned>(
T)); }
658template<>
inline bool DomainBase::find<Load>(
const uword
T) {
return find_load(
static_cast<unsigned>(
T)); }
660template<>
inline bool DomainBase::find<Material>(
const uword
T) {
return find_material(
static_cast<unsigned>(
T)); }
662template<>
inline bool DomainBase::find<Modifier>(
const uword
T) {
return find_modifier(
static_cast<unsigned>(
T)); }
664template<>
inline bool DomainBase::find<Node>(
const uword
T) {
return find_node(
static_cast<unsigned>(
T)); }
666template<>
inline bool DomainBase::find<Orientation>(
const uword
T) {
return find_orientation(
static_cast<unsigned>(
T)); }
668template<>
inline bool DomainBase::find<Recorder>(
const uword
T) {
return find_recorder(
static_cast<unsigned>(
T)); }
670template<>
inline bool DomainBase::find<Section>(
const uword
T) {
return find_section(
static_cast<unsigned>(
T)); }
672template<>
inline bool DomainBase::find<Solver>(
const uword
T) {
return find_solver(
static_cast<unsigned>(
T)); }
674template<>
inline bool DomainBase::find<Step>(
const uword
T) {
return find_step(
static_cast<unsigned>(
T)); }
676template<>
inline bool DomainBase::find<Amplitude>(
const unsigned T) {
return find_amplitude(
T); }
678template<>
inline bool DomainBase::find<Expression>(
const unsigned T) {
return find_expression(
T); }
680template<>
inline bool DomainBase::find<Constraint>(
const unsigned T) {
return find_constraint(
T); }
682template<>
inline bool DomainBase::find<Converger>(
const unsigned T) {
return find_converger(
T); }
684template<>
inline bool DomainBase::find<Criterion>(
const unsigned T) {
return find_criterion(
T); }
686template<>
inline bool DomainBase::find<Database>(
const unsigned T) {
return find_database(
T); }
688template<>
inline bool DomainBase::find<Element>(
const unsigned T) {
return find_element(
T); }
690template<>
inline bool DomainBase::find<Group>(
const unsigned T) {
return find_group(
T); }
692template<>
inline bool DomainBase::find<Integrator>(
const unsigned T) {
return find_integrator(
T); }
694template<>
inline bool DomainBase::find<Load>(
const unsigned T) {
return find_load(
T); }
696template<>
inline bool DomainBase::find<Material>(
const unsigned T) {
return find_material(
T); }
698template<>
inline bool DomainBase::find<Modifier>(
const unsigned T) {
return find_modifier(
T); }
700template<>
inline bool DomainBase::find<Node>(
const unsigned T) {
return find_node(
T); }
702template<>
inline bool DomainBase::find<Orientation>(
const unsigned T) {
return find_orientation(
T); }
704template<>
inline bool DomainBase::find<Recorder>(
const unsigned T) {
return find_recorder(
T); }
706template<>
inline bool DomainBase::find<Section>(
const unsigned T) {
return find_section(
T); }
708template<>
inline bool DomainBase::find<Solver>(
const unsigned T) {
return find_solver(
T); }
710template<>
inline bool DomainBase::find<Step>(
const unsigned T) {
return find_step(
T); }
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
friend shared_ptr< Load > & get_load(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:74
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
friend shared_ptr< Step > & get_step(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:90
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
friend shared_ptr< Element > & get_element(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:68
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:422
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
friend shared_ptr< Modifier > & get_modifier(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:78
virtual void update_current_inertial_force() const =0
double stats() const
Definition DomainBase.h:424
virtual bool erase_recorder(unsigned)=0
friend shared_ptr< Node > & get_node(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:80
virtual const IntegratorQueue & get_integrator_pool() const =0
friend shared_ptr< Group > & get_group(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:70
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 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 unsigned get_current_integrator_tag()=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
friend shared_ptr< Orientation > & get_orientation(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:82
friend shared_ptr< Material > & get_material(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:76
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
friend shared_ptr< Expression > & get_expression(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:58
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
friend shared_ptr< Section > & get_section(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:86
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 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
friend shared_ptr< Recorder > & get_recorder(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:84
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
friend shared_ptr< Converger > & get_converger(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:62
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 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
friend shared_ptr< Criterion > & get_criterion(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:64
friend shared_ptr< Amplitude > & get_amplitude(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:56
virtual void set_factory(const shared_ptr< LongFactory > &)=0
virtual void update_current_damping_force() const =0
friend shared_ptr< Constraint > & get_constraint(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:60
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 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 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 enable_orientation(unsigned)=0
virtual int process_criterion()=0
virtual bool erase_section(unsigned)=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
friend shared_ptr< Integrator > & get_integrator(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:72
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 unsigned get_current_converger_tag()=0
virtual void assemble_initial_mass() const =0
virtual int update_current_status() const =0
virtual bool insert(const shared_ptr< Converger > &)=0
virtual int assign_color()=0
virtual const MaterialQueue & get_material_pool() const =0
virtual size_t get_section() const =0
friend shared_ptr< Solver > & get_solver(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:88
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 unsigned get_current_solver_tag()=0
virtual size_t get_criterion() const =0
virtual bool is_sparse() const =0
virtual void disable_orientation(unsigned)=0
virtual bool erase_amplitude(unsigned)=0
virtual void enable_modifier(unsigned)=0
virtual void disable_integrator(unsigned)=0
virtual int process_constraint(bool)=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
friend shared_ptr< Database > & get_database(const shared_ptr< DomainBase > &, unsigned)
Definition DomainHelper.cpp:66
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 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:106
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:102
A Modifier class.
Definition Modifier.h:36
The Node class holds the number of DoFs, coordinate, displacement, velocity and acceleration.
Definition Node.h:77
A Orientation class.
Definition Orientation.h:40
A Recorder class.
Definition Recorder.h:35
A Section class.
Definition Section.h:73
A Solver class defines solvers used in analysis.
Definition Solver.h:38
A Step class.
Definition Step.h:39
A base Tag class.
Definition Tag.h:38
ColorMethod
Definition DomainBase.h: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:556
size_t get()
Definition DomainBase.h:592
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:433
bool find(unsigned)
Definition DomainBase.h:630
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