55 const bool nlgeom =
false;
57 bool update_mass =
true;
58 bool update_viscous =
true;
59 bool update_nonviscous =
true;
60 bool update_stiffness =
true;
61 bool update_geometry =
true;
63 bool modify_mass =
true;
64 bool modify_viscous =
true;
65 bool modify_nonviscous =
true;
70 mat initial_viscous{};
71 mat initial_nonviscous{};
72 mat initial_stiffness{};
73 mat initial_geometry{};
77 mat trial_nonviscous{};
78 mat trial_stiffness{};
82 mat current_viscous{};
83 mat current_nonviscous{};
84 mat current_stiffness{};
85 mat current_geometry{};
87 vec trial_resistance{};
88 vec current_resistance{};
89 vec trial_viscous_force{};
90 vec current_viscous_force{};
91 cx_mat trial_nonviscous_force{};
92 cx_mat current_nonviscous_force{};
93 vec trial_inertial_force{};
94 vec current_inertial_force{};
96 vec trial_body_force{};
97 vec current_body_force{};
99 vec current_traction{};
104 mat stiffness_container{};
105 mat mass_container{};
107 double strain_energy = 0.;
108 double kinetic_energy = 0.;
109 double viscous_energy = 0.;
110 double nonviscous_energy = 0.;
111 double complementary_energy = 0.;
114 const double characteristic_length = 1.;
118 const unsigned num_node;
119 const unsigned num_dof;
120 const unsigned num_size = num_dof * num_node;
122 const bool initialized =
false;
123 const bool symmetric =
false;
124 const bool use_group =
false;
125 const unsigned use_other = 0;
130 const std::vector<DOF> dof_identifier;
132 std::vector<MappingDOF> dof_mapping;
139 void update_strain_energy()
override;
140 void update_kinetic_energy()
override;
141 void update_viscous_energy()
override;
142 void update_nonviscous_energy()
override;
143 void update_complementary_energy()
override;
144 void update_momentum()
override;
155 [[nodiscard]] std::vector<shared_ptr<Material>>
get_material(
const shared_ptr<DomainBase>&)
const override;
156 [[nodiscard]] std::vector<shared_ptr<Section>>
get_section(
const shared_ptr<DomainBase>&)
const override;
210 [[nodiscard]]
bool is_nlgeom()
const override;
227 [[nodiscard]]
const std::vector<MappingDOF>&
get_dof_mapping()
const override;
237 [[nodiscard]]
const std::vector<weak_ptr<Node>>&
get_node_ptr()
const override;
309 std::vector<vec>&
append_to(std::vector<vec>&, std::vector<vec>&&);
OutputType
Definition: OutputType.h:23
A ElementBase class.
Definition: ElementBase.h:42
A Element class.
Definition: Element.h:117
friend void ConstantGeometry(DataElement *)
Definition: Element.cpp:637
std::vector< shared_ptr< Section > > get_section(const shared_ptr< DomainBase > &) const override
Definition: Element.cpp:248
const vec & get_current_resistance() const override
Definition: Element.cpp:448
Element(const Element &)=delete
mat get_coordinate(unsigned) const override
generate a matrix that contains coordinates of connected nodes
Definition: Element.cpp:75
void update_dof_encoding() override
Definition: Element.cpp:394
std::vector< shared_ptr< Material > > get_material(const shared_ptr< DomainBase > &) const override
Definition: Element.cpp:242
unsigned get_dof_number() const override
Definition: Element.cpp:436
const mat & get_initial_mass() const override
Definition: Element.cpp:500
unsigned get_node_number() const override
Definition: Element.cpp:438
const mat & get_current_viscous() const override
Definition: Element.cpp:490
bool allow_modify_nonviscous() const override
Definition: Element.cpp:424
const uvec & get_node_encoding() const override
Definition: Element.cpp:428
const vec & get_current_traction() const override
Definition: Element.cpp:474
Element(unsigned, unsigned, unsigned, uvec &&, std::vector< DOF > &&)
Definition: Element.cpp:254
const std::vector< weak_ptr< Node > > & get_node_ptr() const override
Definition: Element.cpp:444
const uvec & get_dof_encoding() const override
Definition: Element.cpp:426
const vec & get_current_inertial_force() override
Definition: Element.cpp:463
void clear_node_ptr() override
Definition: Element.cpp:442
~Element() override=default
const vec & get_trial_body_force() const override
Definition: Element.cpp:468
vec get_node_current_resistance() const override
Definition: Element.cpp:229
const mat & get_trial_stiffness() const override
Definition: Element.cpp:482
const vec & get_current_damping_force() const override
Definition: Element.cpp:452
friend void ConstantDamping(DataElement *)
Definition: Element.cpp:625
vec get_current_velocity() const override
Definition: Element.cpp:177
vec get_trial_velocity() const override
Definition: Element.cpp:138
const mat & get_stiffness_container() const override
Definition: Element.cpp:514
Element & operator=(Element &&)=delete
vec get_current_acceleration() const override
Definition: Element.cpp:190
const mat & get_initial_stiffness() const override
Definition: Element.cpp:506
const vec & get_current_body_force() const override
Definition: Element.cpp:470
double get_characteristic_length() const override
Definition: Element.cpp:610
const vec & get_trial_inertial_force() override
Definition: Element.cpp:458
Element & operator=(const Element &)=delete
bool if_update_viscous() const override
Definition: Element.cpp:412
double get_momentum_component(DOF) const override
Definition: Element.cpp:599
const cx_mat & get_trial_nonviscous_force() const override
Definition: Element.cpp:454
vec get_incre_acceleration() const override
Definition: Element.cpp:112
bool is_symmetric() const override
Definition: Element.cpp:390
bool if_update_stiffness() const override
Definition: Element.cpp:416
int initialize_base(const shared_ptr< DomainBase > &) final
Definition: Element.cpp:295
const std::vector< MappingDOF > & get_dof_mapping() const override
Definition: Element.cpp:430
const vec & get_momentum() const override
Definition: Element.cpp:597
const vec & get_trial_damping_force() const override
Definition: Element.cpp:450
vec get_current_displacement() const override
Definition: Element.cpp:164
friend void ConstantMass(DataElement *)
Definition: Element.cpp:619
std::vector< weak_ptr< Node > > node_ptr
Definition: Element.h:147
const mat & get_initial_secant() const override
Definition: Element.cpp:510
double get_nonviscous_energy() const override
Definition: Element.cpp:595
const mat & get_current_geometry() const override
Definition: Element.cpp:496
const mat & get_initial_viscous() const override
Definition: Element.cpp:502
bool is_nlgeom() const override
Definition: Element.cpp:392
const mat & get_current_mass() const override
Definition: Element.cpp:488
vec get_trial_acceleration() const override
Definition: Element.cpp:151
unsigned get_total_number() const override
Definition: Element.cpp:440
const mat & get_trial_geometry() const override
Definition: Element.cpp:484
int reset_status() override=0
Definition: Element.cpp:567
Element(Element &&)=delete
bool allow_modify_viscous() const override
Definition: Element.cpp:422
const mat & get_trial_nonviscous() const override
Definition: Element.cpp:480
vec get_trial_displacement() const override
Definition: Element.cpp:125
double get_viscous_energy() const override
Definition: Element.cpp:593
friend void ConstantStiffness(DataElement *)
Definition: Element.cpp:631
const mat & get_trial_secant() const override
Definition: Element.cpp:486
vec get_incre_velocity() const override
Definition: Element.cpp:99
const vec & update_body_force(const vec &) override
Definition: Element.cpp:581
int clear_status() override=0
Definition: Element.cpp:516
double get_strain_energy() const override
Definition: Element.cpp:587
const mat & get_initial_nonviscous() const override
Definition: Element.cpp:504
bool if_update_mass() const override
Definition: Element.cpp:410
void set_initialized(bool) const override
Definition: Element.cpp:384
const vec & get_trial_resistance() const override
Definition: Element.cpp:446
vec get_node_trial_resistance() const override
Definition: Element.cpp:216
bool allow_modify_mass() const override
Definition: Element.cpp:420
bool is_initialized() const override
Definition: Element.cpp:388
const mat & get_trial_mass() const override
Definition: Element.cpp:476
const cx_mat & get_current_nonviscous_force() const override
Definition: Element.cpp:456
const uvec & get_material_tag() const override
Definition: Element.cpp:432
vec get_incre_displacement() const override
Definition: Element.cpp:86
double get_complementary_energy() const override
Definition: Element.cpp:589
vec get_node_incre_resistance() const override
Definition: Element.cpp:203
const mat & get_current_nonviscous() const override
Definition: Element.cpp:492
const mat & get_trial_viscous() const override
Definition: Element.cpp:478
const vec & get_trial_traction() const override
Definition: Element.cpp:472
const mat & get_initial_geometry() const override
Definition: Element.cpp:508
const mat & get_current_stiffness() const override
Definition: Element.cpp:494
int commit_status() override=0
Definition: Element.cpp:547
const mat & get_current_secant() const override
Definition: Element.cpp:498
mat compute_shape_function(const mat &, unsigned) const override
Definition: Element.cpp:612
std::vector< vec > record(OutputType) override
Definition: Element.cpp:585
double get_kinetic_energy() const override
Definition: Element.cpp:591
bool if_update_nonviscous() const override
Definition: Element.cpp:414
bool if_update_geometry() const override
Definition: Element.cpp:418
const mat & get_mass_container() const override
Definition: Element.cpp:512
const uvec & get_section_tag() const override
Definition: Element.cpp:434
void set_symmetric(bool) const override
Definition: Element.cpp:386
const vec & update_traction(const vec &) override
Definition: Element.cpp:583
std::vector< vec > & append_to(std::vector< vec > &, std::vector< vec > &&)
Definition: Element.cpp:614
MaterialType
Definition: Material.h:34
SectionType
Definition: Section.h:33
const uvec section_tag
Definition: Element.h:53
const uvec node_encoding
Definition: Element.h:51
const uvec material_tag
Definition: Element.h:52