dynamics_structural Module



Contents


Variables

Type Visibility Attributes Name Initial
integer(kind=int32), public, parameter :: DYN_FOUR_POINT_INTEGRATION_RULE = 4

Defines a four-point integration rule.

integer(kind=int32), public, parameter :: DYN_ONE_POINT_INTEGRATION_RULE = 1

Defines a single-point integration rule.

integer(kind=int32), public, parameter :: DYN_THREE_POINT_INTEGRATION_RULE = 3

Defines a three-point integration rule.

integer(kind=int32), public, parameter :: DYN_TWO_POINT_INTEGRATION_RULE = 2

Defines a two-point integration rule.


Interfaces

public interface apply_boundary_conditions

  • private function apply_boundary_conditions_mtx(gdof, x, err) result(rst)

    Applies boundary conditions to a matrix by removal of the appropriate rows and columns.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout), dimension(:) :: gdof

    An array of the global degrees of freedom to restrain. The array is sorted into ascending order on output.

    real(kind=real64), intent(in), dimension(:,:) :: x

    The matrix to constrain.

    class(errors), intent(inout), optional, target :: err

    An optional error handling object.

    Return Value real(kind=real64), allocatable, dimension(:,:)

    The altered matrix.

  • private function apply_boundary_conditions_vec(gdof, x, err) result(rst)

    Applies boundary conditions to a vector by removal of the appropriate items.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout), dimension(:) :: gdof

    An array of the global degrees of freedom to restrain. The array is sorted into ascending order on output.

    real(kind=real64), intent(in), dimension(:) :: x

    The vector to constrain.

    class(errors), intent(inout), optional, target :: err

    An optional error handling object.

    Return Value real(kind=real64), allocatable, dimension(:)

    The altered vector.


Derived Types

type, public, extends(line_element) ::  beam_element_2d

Defines a two-dimensional Bernoulli-Euler beam element.

Components

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

The element cross-sectional area.

type(material), public :: material

The material.

real(kind=real64), public :: moment_of_inertia

The beam moment of inertia (second moment of area).

type(node), public :: node_1

The first node of the element (s = -1).

type(node), public :: node_2

The second node of the element (s = 1).

Type-Bound Procedures

procedure , public :: constitutive_matrix => b2d_constitutive_matrix Function
procedure , public :: evaluate_shape_function => b2d_shape_function Function
procedure , public :: external_force_vector => le_ext_force_vector Function
procedure , public :: get_dimensionality => b2d_dimensionality Function
procedure , public :: get_dof_per_node => b2d_dof_per_node Function
procedure , public :: get_node => b2d_get_node Function
procedure , public :: get_node_count => b2d_get_node_count Function
procedure , public :: get_terminal_nodes => b2d_terminal_nodes Subroutine
procedure , public :: jacobian => b2d_jacobian Function
procedure , public :: length => le_length Function
procedure , public :: mass_matrix => b2d_mass_matrix Function
procedure , public :: rotation_matrix => b2d_rotation_matrix Function
procedure , public :: shape_function_matrix => b2d_shape_function_matrix_2d Function
procedure , public :: stiffness_matrix => b2d_stiffness_matrix Function
procedure , public :: strain_displacement_matrix => b2d_strain_disp_matrix_2d Function

type, public, extends(line_element) ::  beam_element_3d

Defines a three-dimensional Bernoulli-Euler beam element.

Components

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

The beam moment of inertia about the element x-axis.

real(kind=real64), public :: Iyy

The beam moment of inertia about the element y-axis.

real(kind=real64), public :: Izz

The beam moment of inertia about the element z-axis.

real(kind=real64), public :: area

The element cross-sectional area.

type(material), public :: material

The material.

type(node), public :: node_1

The first node of the element (s = -1).

type(node), public :: node_2

The second node of the element (s = 1).

type(point), public :: orientation_point

A point used to determine the orientation of the beam in 3D space. The orientation point is measured relative to the first node in the element. Specifically, the element z axis is assumed to be defined by the location of this point relative to the location of node 1.

Type-Bound Procedures

procedure , public :: constitutive_matrix => b3d_constitutive_matrix Function
procedure , public :: evaluate_shape_function => b3d_shape_function Function
procedure , public :: external_force_vector => le_ext_force_vector Function
procedure , public :: get_dimensionality => b3d_dimensionality Function
procedure , public :: get_dof_per_node => b3d_dof_per_node Function
procedure , public :: get_node => b3d_get_node Function
procedure , public :: get_node_count => b3d_get_node_count Function
procedure , public :: get_terminal_nodes => b3d_terminal_nodes Subroutine
procedure , public :: jacobian => b3d_jacobian Function
procedure , public :: length => le_length Function
procedure , public :: mass_matrix => b3d_mass_matrix Function
procedure , public :: rotation_matrix => b3d_rotation_matrix Function
procedure , public :: shape_function_matrix => b3d_shape_function_matrix_3d Function
procedure , public :: stiffness_matrix => b3d_stiffness_matrix Function
procedure , public :: strain_displacement_matrix => b3d_strain_disp_matrix_3d Function

type, public ::  element

Defines an element.

Components

Type Visibility Attributes Name Initial
type(material), public :: material

The material.

Type-Bound Procedures

procedure (element_const_matrix_function) , public , pass :: constitutive_matrix
procedure (element_shape_function) , public , pass :: evaluate_shape_function
procedure , public :: external_force_vector => e_ext_force_vector Function
procedure (element_query) , public , pass :: get_dimensionality
procedure (element_query) , public , pass :: get_dof_per_node
procedure (element_get_node) , public , pass :: get_node
procedure (element_query) , public , pass :: get_node_count
procedure (element_matrix_function) , public , pass :: jacobian
procedure , public :: mass_matrix => e_mass_matrix Function
procedure (element_matrix_function) , public , pass :: shape_function_matrix
procedure , public :: stiffness_matrix => e_stiffness_matrix Function
procedure (element_matrix_function) , public , pass :: strain_displacement_matrix

type, public, extends(element) ::  line_element

Defines a line element type.

Components

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

The element cross-sectional area.

type(material), public :: material

The material.

Type-Bound Procedures

procedure (element_const_matrix_function) , public , pass :: constitutive_matrix
procedure (element_shape_function) , public , pass :: evaluate_shape_function
procedure , public :: external_force_vector => le_ext_force_vector Function
procedure (element_query) , public , pass :: get_dimensionality
procedure (element_query) , public , pass :: get_dof_per_node
procedure (element_get_node) , public , pass :: get_node
procedure (element_query) , public , pass :: get_node_count
procedure (line_element_get_terminal) , public , pass :: get_terminal_nodes
procedure (element_matrix_function) , public , pass :: jacobian
procedure , public :: length => le_length Function
procedure , public :: mass_matrix => le_mass_matrix Function
procedure (line_element_const_matrix_function) , public , pass :: rotation_matrix
procedure (element_matrix_function) , public , pass :: shape_function_matrix
procedure , public :: stiffness_matrix => le_stiffness_matrix Function
procedure (element_matrix_function) , public , pass :: strain_displacement_matrix

type, public ::  material

Defines a linear-elastic-isotropic material.

Components

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

The density of the material.

real(kind=real64), public :: modulus

The modulus of elasticity of the material.

real(kind=real64), public :: poissons_ratio

The Poisson's ratio of the material.

type, public, extends(point) ::  node

Defines a node.

Components

Type Visibility Attributes Name Initial
integer(kind=int32), public :: dof

The number of degrees of freeedom associated with this node.

integer(kind=int32), public :: index

The global index of the node.

real(kind=real64), public :: x

The x-coordinate.

real(kind=real64), public :: y

The y-coordinate.

real(kind=real64), public :: z

The z-coordinate.

type, public ::  point

Defines a point in 3D, Cartesian space.

Components

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

The x-coordinate.

real(kind=real64), public :: y

The y-coordinate.

real(kind=real64), public :: z

The z-coordinate.


Functions

public function create_connectivity_matrix(gdof, e, nodes, err) result(rst)

Creates a connectivity matrix for the element.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: gdof

The number of global degrees of freedom.

class(element), intent(in) :: e

The element.

class(node), intent(in), dimension(:) :: nodes

The global node list.

class(errors), intent(inout), optional, target :: err

An optional error handling object.

Return Value real(kind=real64), allocatable, dimension(:,:)

The resulting matrix.

public function restore_constrained_values(gdof, x, err) result(rst)

Restores the constrained degrees-of-freedom from the boundary conditions applied by apply_boundary_conditions.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(inout), dimension(:) :: gdof

An array of the global degrees of freedom to restrain. The array is sorted into ascending order on output.

real(kind=real64), intent(in), dimension(:) :: x

The constrained vector.

class(errors), intent(inout), optional, target :: err

An optional error handling object.

Return Value real(kind=real64), allocatable, dimension(:)

The altered vector.

public pure function shape_function_derivative(index, elem, s, i) result(rst)

Computes the derivative of the shape function with respect to the natural coordinate specified.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: index

The index of the shape function to evaluate.

class(element), intent(in) :: elem

The element object.

real(kind=real64), intent(in), dimension(:) :: s

The natural coordinate at which to evaluate the derivative.

integer(kind=int32), intent(in) :: i

The index of the natural coordinate to with which the derivative is to be computed.

Return Value real(kind=real64)

The result.

public pure function shape_function_second_derivative(index, elem, s, i) result(rst)

Computes the second derivative of the shape function with respect to the natural coordinate specified.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: index

The index of the shape function to evaluate.

class(element), intent(in) :: elem

The element object.

real(kind=real64), intent(in), dimension(:) :: s

The natural coordinate at which to evaluate the derivative.

integer(kind=int32), intent(in) :: i

The index of the natural coordinate to with which the derivative is to be computed.

Return Value real(kind=real64)

The result.


Subroutines

public subroutine apply_displacement_constraint(dof, val, k, f)

Applies a displacement constraint to the specified degree of freedom.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: dof

The global degree-of-freedom to which the constraint should be applied.

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

The value of the displacement constraint.

real(kind=real64), intent(inout), dimension(:,:) :: k

The stiffness matrix to which the constraint should be applied.

real(kind=real64), intent(inout), dimension(:) :: f

The external force vector to which the constraint should be applied.