suanPan
Mass Class Referencefinal

The Mass class represents the point mass applied at unique points. More...

#include <Mass.h>

Inheritance diagram for Mass:
Collaboration diagram for Mass:

Public Member Functions

 Mass (unsigned, unsigned, double, uvec &&)
 
int initialize (const shared_ptr< DomainBase > &) override
 
int update_status () override
 
int commit_status () override
 
int clear_status () override
 
int reset_status () override
 
void print () override
 
- Public Member Functions inherited from Element
 Element (unsigned, unsigned, unsigned, uvec &&, std::vector< DOF > &&)
 
 Element (unsigned, unsigned, unsigned, uvec &&, uvec &&, bool, MaterialType, std::vector< DOF > &&)
 
 Element (unsigned, unsigned, unsigned, uvec &&, uvec &&, bool, SectionType, std::vector< DOF > &&)
 
 Element (unsigned, unsigned, uvec &&)
 
 Element (unsigned, unsigned, unsigned, unsigned)
 
 Element (const Element &)=delete
 
 Element (Element &&)=delete
 
Elementoperator= (const Element &)=delete
 
Elementoperator= (Element &&)=delete
 
 ~Element () override
 
int initialize_base (const shared_ptr< DomainBase > &) final
 
void set_initialized (bool) const override
 
void set_symmetric (bool) const override
 
bool is_initialized () const override
 
bool is_symmetric () const override
 
bool is_nlgeom () const override
 
void update_dof_encoding () override
 
bool if_update_mass () const override
 
bool if_update_damping () const override
 
bool if_update_stiffness () const override
 
bool if_update_geometry () const override
 
const uvec & get_dof_encoding () const override
 
const uvec & get_node_encoding () const override
 
const uvec & get_material_tag () const override
 
const uvec & get_section_tag () const override
 
unsigned get_dof_number () const override
 
unsigned get_node_number () const override
 
unsigned get_total_number () const override
 
void clear_node_ptr () override
 
const std::vector< weak_ptr< Node > > & get_node_ptr () const override
 
const vec & get_trial_resistance () const override
 
const vec & get_current_resistance () const override
 
const vec & get_trial_damping_force () const override
 
const vec & get_current_damping_force () const override
 
const vec & get_trial_inertial_force () override
 
const vec & get_current_inertial_force () override
 
const vec & get_trial_body_force () const override
 
const vec & get_current_body_force () const override
 
const vec & get_trial_traction () const override
 
const vec & get_current_traction () const override
 
const mat & get_trial_mass () const override
 
const mat & get_trial_damping () const override
 
const mat & get_trial_stiffness () const override
 
const mat & get_trial_geometry () const override
 
const mat & get_trial_secant () const override
 
const mat & get_current_mass () const override
 
const mat & get_current_damping () const override
 
const mat & get_current_stiffness () const override
 
const mat & get_current_geometry () const override
 
const mat & get_current_secant () const override
 
const mat & get_initial_mass () const override
 
const mat & get_initial_damping () const override
 
const mat & get_initial_stiffness () const override
 
const mat & get_initial_geometry () const override
 
const mat & get_initial_secant () const override
 
const vec & update_body_force (const vec &) override
 
const vec & update_traction (const vec &) override
 
std::vector< vec > record (OutputType) override
 
double get_strain_energy () const override
 
double get_complementary_energy () const override
 
double get_kinetic_energy () const override
 
double get_viscous_energy () const override
 
const vec & get_momentum () const override
 
double get_momentum_component (DOF) const override
 
double get_characteristic_length () const override
 
mat compute_shape_function (const mat &, unsigned) const override
 
- Public Member Functions inherited from ElementBase
 ElementBase (const unsigned T)
 
 ElementBase (const ElementBase &)=delete
 
 ElementBase (ElementBase &&)=delete
 
ElementBaseoperator= (const ElementBase &)=delete
 
ElementBaseoperator= (ElementBase &&)=delete
 
 ~ElementBase () override=default
 
- Public Member Functions inherited from Tag
 Tag (unsigned=0)
 
 Tag (const Tag &)=default
 
 Tag (Tag &&)=default
 
Tagoperator= (const Tag &)=delete
 
Tagoperator= (Tag &&)=delete
 
virtual ~Tag ()=default
 
void set_tag (unsigned) const
 
unsigned get_tag () const
 
void enable ()
 
void disable ()
 
void guard ()
 
void unguard ()
 
bool is_active () const
 
bool is_guarded () const
 

Additional Inherited Members

- Protected Member Functions inherited from Element
mat get_coordinate (unsigned) const override
 generate a matrix that contains coordinates of connected nodes More...
 
vec get_incre_displacement () const override
 
vec get_incre_velocity () const override
 
vec get_incre_acceleration () const override
 
vec get_trial_displacement () const override
 
vec get_trial_velocity () const override
 
vec get_trial_acceleration () const override
 
vec get_current_displacement () const override
 
vec get_current_velocity () const override
 
vec get_current_acceleration () const override
 
vec get_node_incre_resistance () const override
 
vec get_node_trial_resistance () const override
 
vec get_node_current_resistance () const override
 
std::vector< shared_ptr< Material > > get_material (const shared_ptr< DomainBase > &) const override
 
std::vector< shared_ptr< Section > > get_section (const shared_ptr< DomainBase > &) const override
 
 ElementBase (const unsigned T)
 
 ElementBase (const ElementBase &)=delete
 
 ElementBase (ElementBase &&)=delete
 
ElementBaseoperator= (const ElementBase &)=delete
 
ElementBaseoperator= (ElementBase &&)=delete
 
 ~ElementBase () override=default
 
- Protected Member Functions inherited from Tag
 Tag (unsigned=0)
 
 Tag (const Tag &)=default
 
 Tag (Tag &&)=default
 
Tagoperator= (const Tag &)=delete
 
Tagoperator= (Tag &&)=delete
 
virtual ~Tag ()=default
 
void set_tag (unsigned) const
 
unsigned get_tag () const
 
void enable ()
 
void disable ()
 
void guard ()
 
void unguard ()
 
bool is_active () const
 
bool is_guarded () const
 
- Protected Attributes inherited from Element
std::vector< weak_ptr< Node > > node_ptr
 
- Protected Attributes inherited from DataElement
const uvec node_encoding
 
const uvec material_tag
 
const uvec section_tag
 
const bool nlgeom = false
 
bool update_mass = true
 
bool update_damping = true
 
bool update_stiffness = true
 
bool update_geometry = true
 
uvec dof_encoding
 
mat initial_mass {}
 
mat initial_damping {}
 
mat initial_stiffness {}
 
mat initial_geometry {}
 
mat trial_mass {}
 
mat trial_damping {}
 
mat trial_stiffness {}
 
mat trial_geometry {}
 
mat current_mass {}
 
mat current_damping {}
 
mat current_stiffness {}
 
mat current_geometry {}
 
vec trial_resistance {}
 
vec current_resistance {}
 
vec trial_damping_force {}
 
vec current_damping_force {}
 
vec trial_inertial_force {}
 
vec current_inertial_force {}
 
vec trial_body_force {}
 
vec current_body_force {}
 
vec trial_traction {}
 
vec current_traction {}
 
mat body_force {}
 
mat traction {}
 
double strain_energy = 0.
 
double kinetic_energy = 0.
 
double viscous_energy = 0.
 
double complementary_energy = 0.
 
vec momentum {}
 
const double characteristic_length = 1.
 

Detailed Description

The Mass class represents the point mass applied at unique points.

There are many different treatments to apply point mass to the system, for example, it can be deemed as external load, or could be an attribute of the target node.

The first method is a common way, the acceleration can be converted to D'Alembert force then added to the right hand side of the system.

But before applying the acceleration, the mass matrix should be formed. As the acceleration is also treated as external loads, and the program has no idea about the order of the loads. This simply means, the acceleration load can be applied before the mass load. This can only be resolved if the storage is ordered and the mass load is defined before acceleration load in the input file. Even though, in general, there is no neat way to identify which load should be applied first.

Or it can be treated as a node attribute. It is not consistent with the logic concepts. Nodes are simply abstract points in space. It is alright to associate displacement, velocity, etc. with the node but the mass is a physical concept thus should be handle by the element.

Here we define mass as a special element, that only has mass matrix and optional damping matrix but no stiffness matrix, in consistent with the definition of point mass element in ABAQUS. By such the matrices are formed readily before applying any external constraints or loads.

Author
tlc
Date
06/10/2017
Version
0.1.0

Constructor & Destructor Documentation

◆ Mass()

Mass::Mass ( unsigned  T,
unsigned  NT,
double  MA,
uvec &&  DT 
)

Member Function Documentation

◆ clear_status()

int Mass::clear_status ( )
overridevirtual

Implements Element.

◆ commit_status()

int Mass::commit_status ( )
overridevirtual

Implements Element.

◆ initialize()

int Mass::initialize ( const shared_ptr< DomainBase > &  )
overridevirtual

Implements ElementBase.

◆ print()

void Mass::print ( )
overridevirtual

Reimplemented from Tag.

Here is the call graph for this function:

◆ reset_status()

int Mass::reset_status ( )
overridevirtual

Implements Element.

◆ update_status()

int Mass::update_status ( )
overridevirtual

Implements ElementBase.


The documentation for this class was generated from the following files: