line_element Derived Type

type, public, abstract, extends(element) :: line_element

Defines a line element type.


Contents


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, deferred, pass :: constitutive_matrix

  • pure function element_const_matrix_function(this) result(rst) Prototype

    Defines the signature of a routine for returning a matrix associated with the element.

    Arguments

    Type IntentOptional Attributes Name
    class(element), intent(in) :: this

    The element object.

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

    The resulting matrix.

procedure(element_shape_function), public, deferred, pass :: evaluate_shape_function

  • pure function element_shape_function(this, i, s) result(rst) Prototype

    Defines the signature of a routine for computing the value of the i-th element shape function at natural coordinate.

    Arguments

    Type IntentOptional Attributes Name
    class(element), intent(in) :: this

    The element object.

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

    The index of the shape function to evaluate.

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

    The value of the natural coordinates at which to evaluate the shape function.

    Return Value real(kind=real64)

    The value of the i-th shape function at s.

procedure, public :: external_force_vector => le_ext_force_vector

  • private pure function le_ext_force_vector(this, q, rule) result(rst)

    Computes the mass matrix for the element.

    Arguments

    Type IntentOptional Attributes Name
    class(line_element), intent(in) :: this

    The line_element object.

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

    The surface traction forces vector or body force vector.
    For instance, a 2D problem this vector would look like [qx, qy]**T.

    integer(kind=int32), intent(in), optional :: rule

    The integration rule. The rule must be one of the following:

    • DYN_ONE_POINT_INTEGRATION_RULE

    • DYN_TWO_POINT_INTEGRATION_RULE

    • DYN_THREE_POINT_INTEGRATION_RULE

    • DYN_FOUR_POINT_INTEGRATION_RULE

    The default integration rule is DYN_TWO_POINT_INTEGRATION_RULE.

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

    The resulting vector.

procedure(element_query), public, deferred, pass :: get_dimensionality

  • pure function element_query(this) result(rst) Prototype

    Defines the signature of a function performing a query on an integer-valued property of a element type.

    Arguments

    Type IntentOptional Attributes Name
    class(element), intent(in) :: this

    The element object.

    Return Value integer(kind=int32)

    The resulting value.

procedure(element_query), public, deferred, pass :: get_dof_per_node

  • pure function element_query(this) result(rst) Prototype

    Defines the signature of a function performing a query on an integer-valued property of a element type.

    Arguments

    Type IntentOptional Attributes Name
    class(element), intent(in) :: this

    The element object.

    Return Value integer(kind=int32)

    The resulting value.

procedure(element_get_node), public, deferred, pass :: get_node

  • pure function element_get_node(this, i) result(rst) Prototype

    Defines the signature of a function for retrieving the requested node from the element.

    Arguments

    Type IntentOptional Attributes Name
    class(element), intent(in) :: this

    The element object.

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

    The local index of the node to retrieve.

    Return Value type(node)

    The node.

procedure(element_query), public, deferred, pass :: get_node_count

  • pure function element_query(this) result(rst) Prototype

    Defines the signature of a function performing a query on an integer-valued property of a element type.

    Arguments

    Type IntentOptional Attributes Name
    class(element), intent(in) :: this

    The element object.

    Return Value integer(kind=int32)

    The resulting value.

procedure(line_element_get_terminal), public, deferred, pass :: get_terminal_nodes

  • pure subroutine line_element_get_terminal(this, i1, i2) Prototype

    Defines the signature of a routine for returning the terminal node numbers.

    Arguments

    Type IntentOptional Attributes Name
    class(line_element), intent(in) :: this

    The line_element object.

    integer(kind=int32), intent(out) :: i1

    The index of the node at the head of the element.

    integer(kind=int32), intent(out) :: i2

    The index of the node at the tail of the element.

procedure(element_matrix_function), public, deferred, pass :: jacobian

  • pure function element_matrix_function(this, s) result(rst) Prototype

    Defines the signature of a routine for returning a matrix associated with the element.

    Arguments

    Type IntentOptional Attributes Name
    class(element), intent(in) :: this

    The element object.

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

    The value of the natural coordinates at which the matrix should be evaluated.

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

    The resulting matrix.

procedure, public :: length => le_length

  • private pure function le_length(this) result(rst)

    Computes the length of the line_element.

    Arguments

    Type IntentOptional Attributes Name
    class(line_element), intent(in) :: this

    The line_element object.

    Return Value real(kind=real64)

    The length of the line element.

procedure, public :: mass_matrix => le_mass_matrix

  • private pure function le_mass_matrix(this, rule) result(rst)

    Computes the mass matrix for the element.

    Arguments

    Type IntentOptional Attributes Name
    class(line_element), intent(in) :: this

    The line_element object.

    integer(kind=int32), intent(in), optional :: rule

    The integration rule. The rule must be one of the following:

    • MECH_ONE_POINT_INTEGRATION_RULE

    • MECH_TWO_POINT_INTEGRATION_RULE

    • MECH_THREE_POINT_INTEGRATION_RULE

    • MECH_FOUR_POINT_INTEGRATION_RULE

    The default integration rule is MECH_TWO_POINT_INTEGRATION_RULE.

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

    The resulting matrix.

procedure(line_element_const_matrix_function), public, deferred, pass :: rotation_matrix

  • pure function line_element_const_matrix_function(this) result(rst) Prototype

    Defines the signature of a routine for returning a matrix associated with the line_element.

    Arguments

    Type IntentOptional Attributes Name
    class(line_element), intent(in) :: this

    The line_element object.

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

    The resulting matrix.

procedure(element_matrix_function), public, deferred, pass :: shape_function_matrix

  • pure function element_matrix_function(this, s) result(rst) Prototype

    Defines the signature of a routine for returning a matrix associated with the element.

    Arguments

    Type IntentOptional Attributes Name
    class(element), intent(in) :: this

    The element object.

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

    The value of the natural coordinates at which the matrix should be evaluated.

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

    The resulting matrix.

procedure, public :: stiffness_matrix => le_stiffness_matrix

  • private pure function le_stiffness_matrix(this, rule) result(rst)

    Computes the stiffness matrix for the element.

    Arguments

    Type IntentOptional Attributes Name
    class(line_element), intent(in) :: this

    The line_element object.

    integer(kind=int32), intent(in), optional :: rule

    The integration rule. The rule must be one of the following:

    • MECH_ONE_POINT_INTEGRATION_RULE

    • MECH_TWO_POINT_INTEGRATION_RULE

    • MECH_THREE_POINT_INTEGRATION_RULE

    • MECH_FOUR_POINT_INTEGRATION_RULE

    The default integration rule is MECH_TWO_POINT_INTEGRATION_RULE.

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

    The resulting matrix.

procedure(element_matrix_function), public, deferred, pass :: strain_displacement_matrix

  • pure function element_matrix_function(this, s) result(rst) Prototype

    Defines the signature of a routine for returning a matrix associated with the element.

    Arguments

    Type IntentOptional Attributes Name
    class(element), intent(in) :: this

    The element object.

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

    The value of the natural coordinates at which the matrix should be evaluated.

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

    The resulting matrix.