dynamics_truss_elements Module

Two-node, axial-only planar and spatial truss elements. Each node carries only translational degrees of freedom. The global stiffness of a member of length L and unit direction n is

The inherited mass matrix uses consistent linear interpolation, giving rhoAL/6 times [[2I,I],[I,2I]]. Neither element resists bending or has nodal rotational degrees of freedom.



Contents


Interfaces

public interface truss_element_2d

  • private pure function t2d_init(mat, area, nd1, nd2) result(rst)

    Initializes a [[truss_element_2d]].

    Arguments

    Type IntentOptional Attributes Name
    class(material), intent(in) :: mat

    The elastic material and density.

    real(kind=real64), intent(in) :: area

    The cross-sectional area.

    class(node), intent(in) :: nd1

    The first and second truss nodes.

    class(node), intent(in) :: nd2

    The first and second truss nodes.

    Return Value type(truss_element_2d)

    The initialized planar truss element.

public interface truss_element_3d

  • private pure function t3d_init(mat, area, nd1, nd2) result(rst)

    Initializes a [[truss_element_3d]].

    Arguments

    Type IntentOptional Attributes Name
    class(material), intent(in) :: mat

    The elastic material and density.

    real(kind=real64), intent(in) :: area

    The cross-sectional area.

    class(node), intent(in) :: nd1

    The first and second truss nodes.

    class(node), intent(in) :: nd2

    The first and second truss nodes.

    Return Value type(truss_element_3d)

    The initialized spatial truss element.


Derived Types

type, public, extends(line_element) ::  truss_element_2d

Defines a pin-jointed 2D bar with x and y translations per node. Use the parent mass_matrix and the global axial stiffness override.

Components

Type Visibility Attributes Name Initial
real(kind=real64), public :: area

The element cross-sectional area.

type(material), public :: material

The material.

type(node), public :: node_1

The node at natural coordinate s = -1.

type(node), public :: node_2

The node at natural coordinate s = 1.

Constructor

private pure function t2d_init (mat, area, nd1, nd2)

Initializes a [[truss_element_2d]].

Type-Bound Procedures

procedure , public :: constitutive_matrix => t2d_constitutive_matrix Function
procedure , public :: evaluate_shape_function => t2d_shape_function Function
procedure , public :: external_force_vector => le_ext_force_vector Function
procedure , public :: get_dimensionality => t2d_dimensionality Function
procedure , public :: get_dof_per_node => t2d_dof_per_node Function
procedure , public :: get_node => t2d_get_node Function
procedure , public :: get_node_count => t2d_node_count Function
procedure , public :: get_node_natural_coordinates => le_get_node_natural_coordinates Function
procedure , public :: get_terminal_nodes => t2d_terminal_nodes Subroutine
procedure , public :: jacobian => t2d_jacobian Function
procedure , public :: length => le_length Function
procedure , public :: mass_matrix => le_mass_matrix Function
procedure , public :: rotation_matrix => t2d_rotation_matrix Function
procedure , public :: shape_function_matrix => t2d_shape_matrix Function
procedure , public :: stiffness_matrix => t2d_stiffness_matrix Function
procedure , public :: strain => le_strain Function
procedure , public :: strain_displacement_matrix => t2d_strain_matrix Function
procedure , public :: stress => le_stress Function

type, public, extends(line_element) ::  truss_element_3d

Defines a pin-jointed 3D bar with three translations per node. The local transverse axes are arbitrary; only the longitudinal direction influences axial strain and stiffness.

Components

Type Visibility Attributes Name Initial
real(kind=real64), public :: area

The element cross-sectional area.

type(material), public :: material

The material.

type(node), public :: node_1

The node at natural coordinate s = -1.

type(node), public :: node_2

The node at natural coordinate s = 1.

Constructor

private pure function t3d_init (mat, area, nd1, nd2)

Initializes a [[truss_element_3d]].

Type-Bound Procedures

procedure , public :: constitutive_matrix => t3d_constitutive_matrix Function
procedure , public :: evaluate_shape_function => t3d_shape_function Function
procedure , public :: external_force_vector => le_ext_force_vector Function
procedure , public :: get_dimensionality => t3d_dimensionality Function
procedure , public :: get_dof_per_node => t3d_dof_per_node Function
procedure , public :: get_node => t3d_get_node Function
procedure , public :: get_node_count => t3d_node_count Function
procedure , public :: get_node_natural_coordinates => le_get_node_natural_coordinates Function
procedure , public :: get_terminal_nodes => t3d_terminal_nodes Subroutine
procedure , public :: jacobian => t3d_jacobian Function
procedure , public :: length => le_length Function
procedure , public :: mass_matrix => le_mass_matrix Function
procedure , public :: rotation_matrix => t3d_rotation_matrix Function
procedure , public :: shape_function_matrix => t3d_shape_matrix Function
procedure , public :: stiffness_matrix => t3d_stiffness_matrix Function
procedure , public :: strain => le_strain Function
procedure , public :: strain_displacement_matrix => t3d_strain_matrix Function
procedure , public :: stress => le_stress Function