suanPan
Element Class Referenceabstract

A Element class. More...

#include <Element.h>

Inheritance diagram for Element:
Collaboration diagram for Element:

Public Member Functions

 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 mat & get_mass_container () const override
 
const mat & get_stiffness_container () const override
 
int clear_status () override=0
 
int commit_status () override=0
 
int reset_status () override=0
 
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
 
virtual int initialize (const shared_ptr< DomainBase > &)=0
 
virtual int update_status ()=0
 
- 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
 
virtual void print ()
 

Protected Member Functions

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
 
virtual int initialize (const shared_ptr< DomainBase > &)=0
 
virtual int update_status ()=0
 
- 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
 
virtual void print ()
 

Protected Attributes

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 {}
 
mat stiffness_container {}
 
mat mass_container {}
 
double strain_energy = 0.
 
double kinetic_energy = 0.
 
double viscous_energy = 0.
 
double complementary_energy = 0.
 
vec momentum {}
 
const double characteristic_length = 1.
 

Friends

void ConstantMass (DataElement *)
 
void ConstantDamping (DataElement *)
 
void ConstantStiffness (DataElement *)
 
void ConstantGeometry (DataElement *)
 

Detailed Description

A Element class.

Author
tlc
Date
12/01/2020
Version
0.3.0

Constructor & Destructor Documentation

◆ Element() [1/7]

Element::Element ( unsigned  T,
unsigned  NN,
unsigned  ND,
uvec &&  NT,
std::vector< DOF > &&  DI 
)

◆ Element() [2/7]

Element::Element ( unsigned  T,
unsigned  NN,
unsigned  ND,
uvec &&  NT,
uvec &&  MT,
bool  F,
MaterialType  MTP,
std::vector< DOF > &&  DI 
)

◆ Element() [3/7]

Element::Element ( unsigned  T,
unsigned  NN,
unsigned  ND,
uvec &&  NT,
uvec &&  ST,
bool  F,
SectionType  STP,
std::vector< DOF > &&  DI 
)

◆ Element() [4/7]

Element::Element ( unsigned  T,
unsigned  ND,
uvec &&  GT 
)

◆ Element() [5/7]

Element::Element ( unsigned  T,
unsigned  ND,
unsigned  ET,
unsigned  NT 
)

◆ Element() [6/7]

Element::Element ( const Element )
delete

◆ Element() [7/7]

Element::Element ( Element &&  )
delete

◆ ~Element()

Element::~Element ( )
override
Here is the call graph for this function:

Member Function Documentation

◆ clear_node_ptr()

void Element::clear_node_ptr ( )
overridevirtual

Implements ElementBase.

◆ clear_status()

◆ commit_status()

◆ compute_shape_function()

mat Element::compute_shape_function ( const mat &  ,
unsigned   
) const
overridevirtual

Implements ElementBase.

Reimplemented in PCPE8UC, PCPE8DC, PCPE4UC, PCPE4DC, CP8, CP7, CP5, CP4I, CP4, QE2, PS, SGCMQ, GQ12, GCMQ, CSMQ8, CSMQ4, and CSMQ.

◆ get_characteristic_length()

double Element::get_characteristic_length ( ) const
overridevirtual

Implements ElementBase.

◆ get_complementary_energy()

double Element::get_complementary_energy ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_coordinate()

mat Element::get_coordinate ( unsigned  num_dim) const
overrideprotectedvirtual

generate a matrix that contains coordinates of connected nodes

Parameters
num_dimnumber of dimension required
Returns
a matrix of following form | x_1 y_1 z_1 ... | | x_2 y_2 z_2 ... | | x_3 y_3 z_3 ... |

Implements ElementBase.

Here is the caller graph for this function:

◆ get_current_acceleration()

vec Element::get_current_acceleration ( ) const
overrideprotectedvirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_current_body_force()

const vec & Element::get_current_body_force ( ) const
overridevirtual

Implements ElementBase.

◆ get_current_damping()

const mat & Element::get_current_damping ( ) const
overridevirtual

Implements ElementBase.

◆ get_current_damping_force()

const vec & Element::get_current_damping_force ( ) const
overridevirtual

Implements ElementBase.

◆ get_current_displacement()

vec Element::get_current_displacement ( ) const
overrideprotectedvirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_current_geometry()

const mat & Element::get_current_geometry ( ) const
overridevirtual

Implements ElementBase.

◆ get_current_inertial_force()

const vec & Element::get_current_inertial_force ( )
overridevirtual

Implements ElementBase.

Here is the call graph for this function:

◆ get_current_mass()

const mat & Element::get_current_mass ( ) const
overridevirtual

Implements ElementBase.

◆ get_current_resistance()

const vec & Element::get_current_resistance ( ) const
overridevirtual

Implements ElementBase.

◆ get_current_secant()

const mat & Element::get_current_secant ( ) const
overridevirtual

Implements ElementBase.

Here is the call graph for this function:

◆ get_current_stiffness()

const mat & Element::get_current_stiffness ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_current_traction()

const vec & Element::get_current_traction ( ) const
overridevirtual

Implements ElementBase.

◆ get_current_velocity()

vec Element::get_current_velocity ( ) const
overrideprotectedvirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_dof_encoding()

const uvec & Element::get_dof_encoding ( ) const
overridevirtual

Implements ElementBase.

◆ get_dof_number()

unsigned Element::get_dof_number ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_incre_acceleration()

vec Element::get_incre_acceleration ( ) const
overrideprotectedvirtual

Implements ElementBase.

◆ get_incre_displacement()

vec Element::get_incre_displacement ( ) const
overrideprotectedvirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_incre_velocity()

vec Element::get_incre_velocity ( ) const
overrideprotectedvirtual

Implements ElementBase.

◆ get_initial_damping()

const mat & Element::get_initial_damping ( ) const
overridevirtual

Implements ElementBase.

◆ get_initial_geometry()

const mat & Element::get_initial_geometry ( ) const
overridevirtual

Implements ElementBase.

◆ get_initial_mass()

const mat & Element::get_initial_mass ( ) const
overridevirtual

Implements ElementBase.

◆ get_initial_secant()

const mat & Element::get_initial_secant ( ) const
overridevirtual

Implements ElementBase.

Here is the call graph for this function:

◆ get_initial_stiffness()

const mat & Element::get_initial_stiffness ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_kinetic_energy()

double Element::get_kinetic_energy ( ) const
overridevirtual

Implements ElementBase.

◆ get_mass_container()

const mat & Element::get_mass_container ( ) const
overridevirtual

Implements ElementBase.

◆ get_material()

std::vector< shared_ptr< Material > > Element::get_material ( const shared_ptr< DomainBase > &  D) const
overrideprotectedvirtual

Implements ElementBase.

◆ get_material_tag()

const uvec & Element::get_material_tag ( ) const
overridevirtual

Implements ElementBase.

◆ get_momentum()

const vec & Element::get_momentum ( ) const
overridevirtual

Implements ElementBase.

◆ get_momentum_component()

double Element::get_momentum_component ( DOF  D) const
overridevirtual

Implements ElementBase.

Here is the call graph for this function:

◆ get_node_current_resistance()

vec Element::get_node_current_resistance ( ) const
overrideprotectedvirtual

Implements ElementBase.

◆ get_node_encoding()

const uvec & Element::get_node_encoding ( ) const
overridevirtual

Implements ElementBase.

◆ get_node_incre_resistance()

vec Element::get_node_incre_resistance ( ) const
overrideprotectedvirtual

Implements ElementBase.

◆ get_node_number()

unsigned Element::get_node_number ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_node_ptr()

const std::vector< weak_ptr< Node > > & Element::get_node_ptr ( ) const
overridevirtual

Implements ElementBase.

◆ get_node_trial_resistance()

vec Element::get_node_trial_resistance ( ) const
overrideprotectedvirtual

Implements ElementBase.

◆ get_section()

std::vector< shared_ptr< Section > > Element::get_section ( const shared_ptr< DomainBase > &  D) const
overrideprotectedvirtual

Implements ElementBase.

◆ get_section_tag()

const uvec & Element::get_section_tag ( ) const
overridevirtual

Implements ElementBase.

◆ get_stiffness_container()

const mat & Element::get_stiffness_container ( ) const
overridevirtual

Implements ElementBase.

◆ get_strain_energy()

double Element::get_strain_energy ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_total_number()

unsigned Element::get_total_number ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_trial_acceleration()

vec Element::get_trial_acceleration ( ) const
overrideprotectedvirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_trial_body_force()

const vec & Element::get_trial_body_force ( ) const
overridevirtual

Implements ElementBase.

◆ get_trial_damping()

const mat & Element::get_trial_damping ( ) const
overridevirtual

Implements ElementBase.

◆ get_trial_damping_force()

const vec & Element::get_trial_damping_force ( ) const
overridevirtual

Implements ElementBase.

◆ get_trial_displacement()

vec Element::get_trial_displacement ( ) const
overrideprotectedvirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_trial_geometry()

const mat & Element::get_trial_geometry ( ) const
overridevirtual

Implements ElementBase.

◆ get_trial_inertial_force()

const vec & Element::get_trial_inertial_force ( )
overridevirtual

Implements ElementBase.

Here is the call graph for this function:

◆ get_trial_mass()

const mat & Element::get_trial_mass ( ) const
overridevirtual

Implements ElementBase.

◆ get_trial_resistance()

const vec & Element::get_trial_resistance ( ) const
overridevirtual

Implements ElementBase.

◆ get_trial_secant()

const mat & Element::get_trial_secant ( ) const
overridevirtual

Implements ElementBase.

Here is the call graph for this function:

◆ get_trial_stiffness()

const mat & Element::get_trial_stiffness ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_trial_traction()

const vec & Element::get_trial_traction ( ) const
overridevirtual

Implements ElementBase.

◆ get_trial_velocity()

vec Element::get_trial_velocity ( ) const
overrideprotectedvirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ get_viscous_energy()

double Element::get_viscous_energy ( ) const
overridevirtual

Implements ElementBase.

◆ if_update_damping()

bool Element::if_update_damping ( ) const
overridevirtual

Implements ElementBase.

◆ if_update_geometry()

bool Element::if_update_geometry ( ) const
overridevirtual

Implements ElementBase.

◆ if_update_mass()

bool Element::if_update_mass ( ) const
overridevirtual

Implements ElementBase.

◆ if_update_stiffness()

bool Element::if_update_stiffness ( ) const
overridevirtual

Implements ElementBase.

◆ initialize_base()

int Element::initialize_base ( const shared_ptr< DomainBase > &  D)
finalvirtual

Implements ElementBase.

Here is the call graph for this function:

◆ is_initialized()

bool Element::is_initialized ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ is_nlgeom()

bool Element::is_nlgeom ( ) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ is_symmetric()

bool Element::is_symmetric ( ) const
overridevirtual

Implements ElementBase.

◆ operator=() [1/2]

Element& Element::operator= ( const Element )
delete

◆ operator=() [2/2]

Element& Element::operator= ( Element &&  )
delete

◆ record()

std::vector< vec > Element::record ( OutputType  OutputType)
overridevirtual

◆ reset_status()

◆ set_initialized()

void Element::set_initialized ( bool  F) const
overridevirtual

Implements ElementBase.

Here is the caller graph for this function:

◆ set_symmetric()

void Element::set_symmetric ( bool  F) const
overridevirtual

Implements ElementBase.

◆ update_body_force()

const vec & Element::update_body_force ( const vec &  load_factor)
overridevirtual

Implements ElementBase.

◆ update_dof_encoding()

void Element::update_dof_encoding ( )
overridevirtual

Implements ElementBase.

◆ update_traction()

const vec & Element::update_traction ( const vec &  load_factor)
overridevirtual

Implements ElementBase.

Friends And Related Function Documentation

◆ ConstantDamping

void ConstantDamping ( DataElement E)
friend

◆ ConstantGeometry

void ConstantGeometry ( DataElement E)
friend

◆ ConstantMass

void ConstantMass ( DataElement E)
friend

◆ ConstantStiffness

void ConstantStiffness ( DataElement E)
friend

Member Data Documentation

◆ node_ptr

std::vector<weak_ptr<Node> > Element::node_ptr
protected

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