41 const bool nlgeom =
false;
43 bool update_mass =
true;
44 bool update_damping =
true;
45 bool update_stiffness =
true;
46 bool update_geometry =
true;
51 mat initial_damping{};
52 mat initial_stiffness{};
53 mat initial_geometry{};
57 mat trial_stiffness{};
61 mat current_damping{};
62 mat current_stiffness{};
63 mat current_geometry{};
65 vec trial_resistance{};
66 vec current_resistance{};
67 vec trial_damping_force{};
68 vec current_damping_force{};
69 vec trial_inertial_force{};
70 vec current_inertial_force{};
72 vec trial_body_force{};
73 vec current_body_force{};
75 vec current_traction{};
80 double strain_energy = 0.;
81 double kinetic_energy = 0.;
82 double viscous_energy = 0.;
83 double complementary_energy = 0.;
86 const double characteristic_length = 1.;
90 const unsigned num_node;
91 const unsigned num_dof;
92 const unsigned num_size = num_dof * num_node;
94 const bool initialized =
false;
95 const bool symmetric =
false;
96 const bool use_group =
false;
97 const unsigned use_other = 0;
102 std::vector<DOF> dof_identifier;
109 void update_strain_energy()
override;
110 void update_kinetic_energy()
override;
111 void update_viscous_energy()
override;
112 void update_complementary_energy()
override;
113 void update_momentum()
override;
130 [[nodiscard]] vec get_node_incre_resistance()
const override;
131 [[nodiscard]] vec get_node_trial_resistance()
const override;
132 [[nodiscard]] vec get_node_current_resistance()
const override;
134 [[nodiscard]] std::vector<shared_ptr<Material>>
get_material(
const shared_ptr<DomainBase>&)
const override;
135 [[nodiscard]] std::vector<shared_ptr<Section>>
get_section(
const shared_ptr<DomainBase>&)
const override;
178 int initialize_base(
const shared_ptr<DomainBase>&)
final;
180 void set_initialized(
bool)
const override;
181 void set_symmetric(
bool)
const override;
182 [[nodiscard]]
bool is_initialized()
const override;
183 [[nodiscard]]
bool is_symmetric()
const override;
184 [[nodiscard]]
bool is_nlgeom()
const override;
186 void update_dof_encoding()
override;
188 [[nodiscard]]
bool if_update_mass()
const override;
189 [[nodiscard]]
bool if_update_damping()
const override;
190 [[nodiscard]]
bool if_update_stiffness()
const override;
191 [[nodiscard]]
bool if_update_geometry()
const override;
193 [[nodiscard]]
const uvec& get_dof_encoding()
const override;
194 [[nodiscard]]
const uvec& get_node_encoding()
const override;
196 [[nodiscard]]
const uvec& get_material_tag()
const override;
197 [[nodiscard]]
const uvec& get_section_tag()
const override;
199 [[nodiscard]]
unsigned get_dof_number()
const override;
200 [[nodiscard]]
unsigned get_node_number()
const override;
201 [[nodiscard]]
unsigned get_total_number()
const override;
203 void clear_node_ptr()
override;
204 [[nodiscard]]
const std::vector<weak_ptr<Node>>& get_node_ptr()
const override;
213 [[nodiscard]]
const vec& get_trial_body_force()
const override;
214 [[nodiscard]]
const vec& get_current_body_force()
const override;
215 [[nodiscard]]
const vec& get_trial_traction()
const override;
216 [[nodiscard]]
const vec& get_current_traction()
const override;
218 [[nodiscard]]
const mat& get_trial_mass()
const override;
219 [[nodiscard]]
const mat& get_trial_damping()
const override;
220 [[nodiscard]]
const mat& get_trial_stiffness()
const override;
221 [[nodiscard]]
const mat& get_trial_geometry()
const override;
222 [[nodiscard]]
const mat& get_trial_secant()
const override;
224 [[nodiscard]]
const mat& get_current_mass()
const override;
225 [[nodiscard]]
const mat& get_current_damping()
const override;
226 [[nodiscard]]
const mat& get_current_stiffness()
const override;
227 [[nodiscard]]
const mat& get_current_geometry()
const override;
228 [[nodiscard]]
const mat& get_current_secant()
const override;
230 [[nodiscard]]
const mat& get_initial_mass()
const override;
231 [[nodiscard]]
const mat& get_initial_damping()
const override;
232 [[nodiscard]]
const mat& get_initial_stiffness()
const override;
233 [[nodiscard]]
const mat& get_initial_geometry()
const override;
234 [[nodiscard]]
const mat& get_initial_secant()
const override;
236 int clear_status()
override = 0;
237 int commit_status()
override = 0;
238 int reset_status()
override = 0;
240 const vec& update_body_force(
const vec&)
override;
241 const vec& update_traction(
const vec&)
override;
245 [[nodiscard]]
double get_strain_energy()
const override;
246 [[nodiscard]]
double get_complementary_energy()
const override;
247 [[nodiscard]]
double get_kinetic_energy()
const override;
248 [[nodiscard]]
double get_viscous_energy()
const override;
249 [[nodiscard]]
const vec& get_momentum()
const override;
250 [[nodiscard]]
double get_momentum_component(
DOF)
const override;
252 [[nodiscard]]
double get_characteristic_length()
const override;
254 [[nodiscard]] mat compute_shape_function(
const mat&,
unsigned)
const override;
void ConstantDamping(DataElement *E)
Definition: Element.cpp:584
A Element class.
Definition: Element.h:89
Col< T > & get_current_acceleration(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:163
Col< T > & get_trial_damping_force(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:111
Col< T > & get_trial_inertial_force(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:113
shared_ptr< Section > & get_section(const shared_ptr< Domain > &D, const unsigned T)
Definition: DomainHelper.cpp:48
Col< T > & get_trial_resistance(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:109
shared_ptr< Material > & get_material(const shared_ptr< Domain > &D, const unsigned T)
Definition: DomainHelper.cpp:38
OutputType
Definition: OutputType.h:21
Col< T > & get_current_displacement(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:159
Col< T > & get_trial_velocity(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:117
MaterialType
Definition: Material.h:34
const uvec section_tag
Definition: Element.h:39
Col< T > & get_current_velocity(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:161
Col< T > & get_current_damping_force(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:155
void ConstantMass(DataElement *E)
Definition: Element.cpp:578
uvec dof_encoding
Definition: Element.h:48
mat get_coordinate(const ElementBase *const E, const unsigned N)
Definition: Element.cpp:602
Col< T > & get_incre_velocity(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:139
std::vector< weak_ptr< Node > > node_ptr
Definition: Element.h:116
SectionType
Definition: Section.h:34
Col< T > & get_current_inertial_force(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:157
Col< T > & get_incre_acceleration(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:141
Col< T > & get_trial_displacement(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:115
const uvec material_tag
Definition: Element.h:38
void ConstantStiffness(DataElement *E)
Definition: Element.cpp:590
Col< T > & get_current_resistance(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:153
Col< T > & get_trial_acceleration(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:119
Col< T > & get_incre_displacement(const shared_ptr< Factory< T >> &W)
Definition: FactoryHelper.hpp:137
const uvec node_encoding
Definition: Element.h:37
A ElementBase class.
Definition: ElementBase.h:41
void ConstantGeometry(DataElement *E)
Definition: Element.cpp:596