Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Node Class Reference

Class for creating a node in space that handles coordinates, state variables, free and total degrees-of-freedom numbering. More...

#include <Node.hpp>

Collaboration diagram for Node:

Public Member Functions

 Node (unsigned int numberDofs, Eigen::VectorXd coordinates, bool isFixed)
 Creates a Node in a finite element Mesh. More...
 
 ~Node ()
 Destroys this Node object. More...
 
bool IsFixed () const
 Whether the node is fixed or free. More...
 
void InitialState ()
 Set all node variables to be zero. More...
 
void SetMass (Eigen::VectorXd &mass)
 Set the node's mass at each degree of freedom. More...
 
void SetAsFixed (bool isFixed)
 Set the node's restrain condition. More...
 
void SetReaction (Eigen::VectorXd &reaction)
 Sets the current reaction force of this node. More...
 
void SetProgressiveForces (Eigen::VectorXd &force)
 Sets the external force from previous analysis. More...
 
void SetCoordinates (Eigen::VectorXd &coordinates)
 Set the node's position in a finite element Mesh. More...
 
void SetFreeDegreeOfFreedom (std::vector< int > &freeDOF)
 Set the free degree of freedom number list for this Node. More...
 
void SetTotalDegreeOfFreedom (std::vector< int > &totalDOF)
 Set the global degree of freedom number list for this Node. More...
 
void SetDisplacements (Eigen::VectorXd &Uo)
 Sets the vector of displacement associated with this Node. More...
 
void SetVelocities (Eigen::VectorXd &Vo)
 Sets the current velocity state associated with this Node. More...
 
void SetAccelerations (Eigen::VectorXd &Ao)
 Sets the current acceleration state associated with this Node. More...
 
void SetIncrementalDisplacements (Eigen::VectorXd &dU)
 Sets the current incremental displacement associated with this Node. More...
 
void SetDomainReductionMotion (Eigen::MatrixXd &Uo)
 Sets the domain-reduction nodal displacements. More...
 
void SetPMLVector (Eigen::VectorXd &Ub)
 Sets the vector of absorbent integrated history values. More...
 
void SetSupportMotion (unsigned int k, std::vector< double > &Uo)
 Sets the displacements support motion associated with this Node. More...
 
void DelSupportMotion ()
 Remove the displacements support motion associated with this Node. More...
 
Eigen::VectorXd GetMass () const
 Gets the node's mass as a vector. More...
 
Eigen::VectorXd GetReaction () const
 Gets the node reaction force. More...
 
const Eigen::VectorXd & GetCoordinates () const
 Gets the node's coordinate as a vector. More...
 
const Eigen::VectorXd & GetDisplacements () const
 Gets the current displacement state of this node. More...
 
const Eigen::VectorXd & GetVelocities () const
 Gets the current velocity state of this node. More...
 
const Eigen::VectorXd & GetAccelerations () const
 Gets the current acceleration state of this node. More...
 
Eigen::VectorXd GetInertialForces () const
 Returns the inertial forces associated to this node. More...
 
const Eigen::VectorXd & GetProgressiveForces () const
 Returns the external force from previous analysis. More...
 
const Eigen::VectorXd & GetPMLVector () const
 Gets the current PML history vector of this node. More...
 
const Eigen::VectorXd & GetIncrementalDisplacements () const
 Gets the current incremental displacement of this node. More...
 
Eigen::VectorXd GetDomainReductionMotion (unsigned int k) const
 Gets the current domain reduction displacements, velocities and accelerations. More...
 
Eigen::VectorXd GetSupportMotion (unsigned int k)
 Gets the nodal support motion displacement of this node. More...
 
unsigned int GetNumberOfSupportMotion ()
 Gets the number of degree-of-freedom with support motion in this node. More...
 
unsigned int GetNumberOfDegreeOfFreedom () const
 Gets the number of degree-of-freedom of this node. More...
 
const std::vector< int > & GetFreeDegreeOfFreedom () const
 Gets the node's restrained degree of freedom as a vector. More...
 
const std::vector< int > & GetTotalDegreeOfFreedom () const
 Gets the node's total degree of freedom as a vector. More...
 

Private Attributes

bool Fixed
 
unsigned int NumberOfDegreeOfFreedom
 Number of Degree of Freedom: More...
 
Eigen::VectorXd Coordinates
 The location of this node within the Mesh.. More...
 
Eigen::VectorXd Displacements
 The current displacement vector of this Node. More...
 
Eigen::VectorXd Velocities
 The current velocity vector of this Node. More...
 
Eigen::VectorXd Accelerations
 The current acceleration vectors of this Node. More...
 
Eigen::VectorXd IncrementalDisplacements
 The current incremental displacement vector of Node. More...
 
Eigen::MatrixXd DomainReductionMotion
 The imposed domain-reduction nodal displacements, velocity and acceleration. More...
 
Eigen::VectorXd Mass
 The applied mass of this Node. More...
 
Eigen::VectorXd Reaction
 The reaction forces of this node. More...
 
Eigen::VectorXd CumulatedForce
 The external force from previous analysis. More...
 
Eigen::VectorXd PMLIntegratedVector
 The 3D perfectly-matched history vector. More...
 
std::vector< int > FreeDegreeOfFreedom
 The free-degree-of-freedom list. More...
 
std::vector< int > TotalDegreeOfFreedom
 The total-degree-of-freedom list. More...
 
std::map< unsigned int, std::vector< double > > SupportMotion
 The imposed nodal support motion displacements. More...
 

Detailed Description

Class for creating a node in space that handles coordinates, state variables, free and total degrees-of-freedom numbering.

See also
Mesh.hpp

Constructor & Destructor Documentation

◆ Node()

Node::Node ( unsigned int  numberDofs,
Eigen::VectorXd  coordinates,
bool  isFixed 
)

Creates a Node in a finite element Mesh.

Parameters
numberDofsNumber of degree-of-freedom for this node.
coordinatesMatrix that specifies the coordinates of this node.
isFixedWhether the node is fixed or free.
isAbsorbentWhether the node is belongs is absorbent (PML 3D).
Note
More details can be found at Node.
See also
Node::Coordinates Node::NumberOfDegreeOfFreedom.

◆ ~Node()

Node::~Node ( )

Destroys this Node object.

Member Function Documentation

◆ DelSupportMotion()

void Node::DelSupportMotion ( )

Remove the displacements support motion associated with this Node.

See also
Node::SupportMotion.

◆ GetAccelerations()

const Eigen::VectorXd& Node::GetAccelerations ( ) const

Gets the current acceleration state of this node.

Returns
Vector with the accelerations for each degree-of-freedom.
See also
Node::Accelerations.

◆ GetCoordinates()

const Eigen::VectorXd& Node::GetCoordinates ( ) const

Gets the node's coordinate as a vector.

Returns
Vector with the coordinates or position of this node.
Note
More details can be found at Node.
See also
Node::Coordinates.

◆ GetDisplacements()

const Eigen::VectorXd& Node::GetDisplacements ( ) const

Gets the current displacement state of this node.

Returns
Vector with the displacements for each degree-of-freedom.
See also
Node::Displacements.

◆ GetDomainReductionMotion()

Eigen::VectorXd Node::GetDomainReductionMotion ( unsigned int  k) const

Gets the current domain reduction displacements, velocities and accelerations.

Parameters
kTime step at which the domain reduction information is retrieved.
Returns
Vector with the domain reduction information for computing forces.
Note
More details can be found at Node, and Load.
See also
Node::DomainReductionMotion.

◆ GetFreeDegreeOfFreedom()

const std::vector<int>& Node::GetFreeDegreeOfFreedom ( ) const

Gets the node's restrained degree of freedom as a vector.

Returns
Array of integers with the free degree-of-freedom numbering.
Note
More details can be found at Node.
See also
Node::FreeDegreeOfFreedom.

◆ GetIncrementalDisplacements()

const Eigen::VectorXd& Node::GetIncrementalDisplacements ( ) const

Gets the current incremental displacement of this node.

Returns
Vector with the incremental displacements for each degree-of-freedom.
See also
Node::IncrementalDisplacements.

◆ GetInertialForces()

Eigen::VectorXd Node::GetInertialForces ( ) const

Returns the inertial forces associated to this node.

Returns
Vector with the inertial forces for each degree-of-freedom.
See also
Node::Mass.

◆ GetMass()

Eigen::VectorXd Node::GetMass ( ) const

Gets the node's mass as a vector.

Returns
Vector with the mass at each degree-of-freedom.
Note
More details can be found at Node, and Mass.
See also
Node::Mass.

◆ GetNumberOfDegreeOfFreedom()

unsigned int Node::GetNumberOfDegreeOfFreedom ( ) const

Gets the number of degree-of-freedom of this node.

Returns
Integer that represents the number of degree-of-freedom.
See also
Node::TotalDegreeOfFreedom.

◆ GetNumberOfSupportMotion()

unsigned int Node::GetNumberOfSupportMotion ( )

Gets the number of degree-of-freedom with support motion in this node.

Returns
Integer that represents the number of support motion applied to this node.
See also
Node::SupportMotion.

◆ GetPMLVector()

const Eigen::VectorXd& Node::GetPMLVector ( ) const

Gets the current PML history vector of this node.

Returns
Vector with the integrated PML states at each degree-of-freedom.
See also
Node::PMLIntegratedVector Node::SetPMLVector.

◆ GetProgressiveForces()

const Eigen::VectorXd& Node::GetProgressiveForces ( ) const

Returns the external force from previous analysis.

Returns
Vector with the external forces for each degree-of-freedom.
See also
Node::Force.

◆ GetReaction()

Eigen::VectorXd Node::GetReaction ( ) const

Gets the node reaction force.

Returns
Vector with the reaction at each degree-of-freedom.
See also
Node::Reaction.

◆ GetSupportMotion()

Eigen::VectorXd Node::GetSupportMotion ( unsigned int  k)

Gets the nodal support motion displacement of this node.

Parameters
kDegree-of-freedom at which the displacement supports are retrieved.
Returns
Vector with the associated support displacements.
See also
Node::SupportMotion.

◆ GetTotalDegreeOfFreedom()

const std::vector<int>& Node::GetTotalDegreeOfFreedom ( ) const

Gets the node's total degree of freedom as a vector.

Returns
Array of integers with the total degree-of-freedom numbering.
Note
More details can be found at Node.
See also
Node::TotalDegreeOfFreedom.

◆ GetVelocities()

const Eigen::VectorXd& Node::GetVelocities ( ) const

Gets the current velocity state of this node.

Returns
Vector with the velocities for each degree-of-freedom.
See also
Node::Velocities.

◆ InitialState()

void Node::InitialState ( )

Set all node variables to be zero.

◆ IsFixed()

bool Node::IsFixed ( ) const

Whether the node is fixed or free.

See also
Node::Fixed.

◆ SetAccelerations()

void Node::SetAccelerations ( Eigen::VectorXd &  Ao)

Sets the current acceleration state associated with this Node.

Parameters
AoVector of accelertions.
See also
Node::Accelerations.

◆ SetAsFixed()

void Node::SetAsFixed ( bool  isFixed)

Set the node's restrain condition.

Parameters
isFixedwhether the node is fixed or free.
Returns
Nothing.
See also
Node::Fixed.

◆ SetCoordinates()

void Node::SetCoordinates ( Eigen::VectorXd &  coordinates)

Set the node's position in a finite element Mesh.

Parameters
coordinatesVector of coordinates or position.
Note
More details can be found at Node.
See also
Node::Coordinates.

◆ SetDisplacements()

void Node::SetDisplacements ( Eigen::VectorXd &  Uo)

Sets the vector of displacement associated with this Node.

Parameters
UoVector of displacement.
See also
Node::Displacements.

◆ SetDomainReductionMotion()

void Node::SetDomainReductionMotion ( Eigen::MatrixXd &  Uo)

Sets the domain-reduction nodal displacements.

Parameters
UoMatrix of displacements, velocities, and accelerations.
See also
Node::DomainReductionMotion.

◆ SetFreeDegreeOfFreedom()

void Node::SetFreeDegreeOfFreedom ( std::vector< int > &  freeDOF)

Set the free degree of freedom number list for this Node.

Parameters
freeDOFVector of integers with the 'free' degree-of-freedom numbering.
Note
More details can be found at Node.
See also
Node::FreeDegreeOfFreedom.

◆ SetIncrementalDisplacements()

void Node::SetIncrementalDisplacements ( Eigen::VectorXd &  dU)

Sets the current incremental displacement associated with this Node.

Parameters
dUVector of incremental displacements.
Returns
Nothing.
See also
Node::IncrementalDisplacements.

◆ SetMass()

void Node::SetMass ( Eigen::VectorXd &  mass)

Set the node's mass at each degree of freedom.

Parameters
massVector of masses.
Returns
Nothing.
See also
Node::Mass.

◆ SetPMLVector()

void Node::SetPMLVector ( Eigen::VectorXd &  Ub)

Sets the vector of absorbent integrated history values.

Parameters
UbVector of integrated (states) history values.
See also
Node::PMLIntegratedVector Node::GetPMLVector.

◆ SetProgressiveForces()

void Node::SetProgressiveForces ( Eigen::VectorXd &  force)

Sets the external force from previous analysis.

Parameters
forceVector of forces.
See also
Node::Force.

◆ SetReaction()

void Node::SetReaction ( Eigen::VectorXd &  reaction)

Sets the current reaction force of this node.

Parameters
massVector of masses.
Returns
Nothing.
See also
Node::Reaction.

◆ SetSupportMotion()

void Node::SetSupportMotion ( unsigned int  k,
std::vector< double > &  Uo 
)

Sets the displacements support motion associated with this Node.

Parameters
kInteger that represents the degree-of-freedom where the displacement is imposed.
UoVector of displacements in time.
See also
Node::SupportMotion.

◆ SetTotalDegreeOfFreedom()

void Node::SetTotalDegreeOfFreedom ( std::vector< int > &  totalDOF)

Set the global degree of freedom number list for this Node.

Parameters
totalDOFVector of integers with the 'total' degree-of-freedom numbering.
Note
More details can be found at Node.
See also
Node::TotalDegreeOfFreedom.

◆ SetVelocities()

void Node::SetVelocities ( Eigen::VectorXd &  Vo)

Sets the current velocity state associated with this Node.

Parameters
VoVector of velocities.
See also
Node::Velocities.

Member Data Documentation

◆ Accelerations

Eigen::VectorXd Node::Accelerations
private

The current acceleration vectors of this Node.

◆ Coordinates

Eigen::VectorXd Node::Coordinates
private

The location of this node within the Mesh..

◆ CumulatedForce

Eigen::VectorXd Node::CumulatedForce
private

The external force from previous analysis.

◆ Displacements

Eigen::VectorXd Node::Displacements
private

The current displacement vector of this Node.

◆ DomainReductionMotion

Eigen::MatrixXd Node::DomainReductionMotion
private

The imposed domain-reduction nodal displacements, velocity and acceleration.

◆ Fixed

bool Node::Fixed
private

◆ FreeDegreeOfFreedom

std::vector<int> Node::FreeDegreeOfFreedom
private

The free-degree-of-freedom list.

◆ IncrementalDisplacements

Eigen::VectorXd Node::IncrementalDisplacements
private

The current incremental displacement vector of Node.

◆ Mass

Eigen::VectorXd Node::Mass
private

The applied mass of this Node.

◆ NumberOfDegreeOfFreedom

unsigned int Node::NumberOfDegreeOfFreedom
private

Number of Degree of Freedom:

◆ PMLIntegratedVector

Eigen::VectorXd Node::PMLIntegratedVector
private

The 3D perfectly-matched history vector.

◆ Reaction

Eigen::VectorXd Node::Reaction
private

The reaction forces of this node.

◆ SupportMotion

std::map<unsigned int, std::vector<double> > Node::SupportMotion
private

The imposed nodal support motion displacements.

◆ TotalDegreeOfFreedom

std::vector<int> Node::TotalDegreeOfFreedom
private

The total-degree-of-freedom list.

◆ Velocities

Eigen::VectorXd Node::Velocities
private

The current velocity vector of this Node.