dynamics_modal_analysis Module



Contents


Interfaces

public interface modal_response

  • private pure subroutine modal_response_dense(mass, stiff, freqs, modeshapes)

    Computes the modal frequencies and modes shapes for multi-degree-of-freedom system. The generalized eigenproblem is

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in), dimension(:,:) :: mass

    The N-by-N mass matrix for the system. This matrix must be symmetric.

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

    The N-by-N stiffness matrix for the system. This matrix must be symmetric.

    real(kind=real64), intent(out), allocatable, dimension(:) :: freqs

    An allocatable N-element array where the modal frequencies will be returned in ascending order with units of rad/s.

    real(kind=real64), intent(out), optional, allocatable, dimension(:,:) :: modeshapes

    An optional, allocatable N-by-N matrix where the N mode shapes for the system will be returned. The mode shapes are stored in columns.

  • private subroutine modal_response_sparse(mass, stiff, nmodes, freqs, modeshapes)

    Computes selected modal frequencies and mode shapes for a multi-degree-of-freedom system using CSR sparse matrices. The generalized eigenproblem is

    Arguments

    Type IntentOptional Attributes Name
    type(csr_matrix), intent(in) :: mass

    The N-by-N symmetric positive-definite mass matrix.

    type(csr_matrix), intent(in) :: stiff

    The N-by-N symmetric stiffness matrix.

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

    The number of lowest-frequency modes to compute. This value must be greater than zero and less than N.

    real(kind=real64), intent(out), allocatable, dimension(:) :: freqs

    An allocatable NMODES-element array containing the modal frequencies in ascending order with units of rad/s.

    real(kind=real64), intent(out), optional, allocatable, dimension(:,:) :: modeshapes

    An optional, allocatable N-by-NMODES matrix containing one mode shape per column.


Functions

public pure elemental function compute_modal_damping(lambda, alpha, beta) result(rst)

Computes the modal damping factors given the proportional damping terms and where , , and is the eigenvalue of the system. Equivalently, .

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: lambda

The square of the modal frequency - the eigen value.

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

The mass damping factor, .

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

The stiffness damping factor, .

Return Value real(kind=real64)

The modal damping parameter.


Subroutines

public pure subroutine normalize_mode_shapes(x)

Normalizes mode shape vectors such that the largest magnitude value in the vector is one. For each column , the operation is

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(inout), dimension(:,:) :: x

The matrix of mode shape vectors with one vector per column.