94#ifndef CONDITIONALMODIFIER_H
95#define CONDITIONALMODIFIER_H
104 const unsigned amplitude_tag;
106 bool initialized =
false;
112 const std::vector<Node::DOF> dof_component;
125 [[nodiscard]]
double get_amplitude(
const shared_ptr<DomainBase>&)
const;
134 [[nodiscard]]
bool validate_node(
const shared_ptr<DomainBase>&)
const;
143 std::vector<Node::DOF>&&,
144 std::vector<Node::DOF>&&
147 virtual int initialize(
const shared_ptr<DomainBase>&);
156 virtual int process(
const shared_ptr<DomainBase>&) = 0;
173 virtual void stage(
const shared_ptr<DomainBase>&) {}
207 [[nodiscard]]
bool validate_step(
const shared_ptr<DomainBase>&)
const;
226std::vector<Node::DOF>
parse_dof(std::string_view);
Abstract base for node/element-scoped, step-conditional modifiers (constraints and loads).
Definition ConditionalModifier.h:103
virtual int process(const shared_ptr< DomainBase > &)=0
Process and update both stiffness and resistance.
double get_amplitude(const shared_ptr< DomainBase > &) const
Definition ConditionalModifier.cpp:75
unsigned get_end_step() const
Definition ConditionalModifier.cpp:133
virtual int initialize(const shared_ptr< DomainBase > &)
Definition ConditionalModifier.cpp:85
virtual void update_status(const vec &)
Definition ConditionalModifier.h:210
void deinitialize()
Definition ConditionalModifier.cpp:120
uvec target_element
Definition ConditionalModifier.h:123
void set_end_step(unsigned)
Definition ConditionalModifier.cpp:131
std::set< uword > get_involving_nodes(const shared_ptr< DomainBase > &) const
Return a set of all nodes involved.
Definition ConditionalModifier.cpp:104
bool validate_element(const shared_ptr< DomainBase > &) const
Definition ConditionalModifier.cpp:40
uvec target_node
Definition ConditionalModifier.h:123
bool is_initialized() const
Definition ConditionalModifier.cpp:122
uvec collect_node_dof(const shared_ptr< DomainBase > &) const
Definition ConditionalModifier.cpp:55
const std::vector< Node::DOF > dof_order
Definition ConditionalModifier.h:121
virtual void stage(const shared_ptr< DomainBase > &)
Some algorithms need to manually modify some variables after solving.
Definition ConditionalModifier.h:173
virtual void commit_status()
Definition ConditionalModifier.h:212
void set_start_step(unsigned)
Definition ConditionalModifier.cpp:124
virtual void clear_status()
Definition ConditionalModifier.h:211
bool validate_step(const shared_ptr< DomainBase > &) const
Validate itself against the current active step to see if itself needs to be applied.
Definition ConditionalModifier.cpp:135
const std::vector< Node::DOF > & get_dof_component() const
Return the DoF components, falls back to the DoF order.
Definition ConditionalModifier.cpp:77
const uvec & get_node_dof() const
Definition ConditionalModifier.cpp:118
virtual void reset_status()
Definition ConditionalModifier.h:213
virtual int process_resistance(const shared_ptr< DomainBase > &)
Process and update resistance.
Definition ConditionalModifier.cpp:102
unsigned get_start_step() const
Definition ConditionalModifier.cpp:129
uvec target_dof
Definition ConditionalModifier.h:123
bool validate_node(const shared_ptr< DomainBase > &) const
Definition ConditionalModifier.cpp:25
virtual bool is_connected() const
Indicate if this modifier can be deemed as an element that needs to account for connectivity.
Definition ConditionalModifier.h:202
unsigned end_step
Definition ConditionalModifier.h:115
unsigned start_step
Definition ConditionalModifier.h:115
Definition ConditionalModifier.h:216
uvec update_object_tag(const shared_ptr< DomainBase > &) const
Definition ConditionalModifier.cpp:143
Definition ResourceHolder.h:32
Label objects that cannot be copied.
Definition Tag.h:88
std::vector< Node::DOF > parse_dof(std::string_view)
Definition ConditionalModifier.cpp:145