linear_damper Derived Type

type, public, extends(axial_force_element) :: linear_damper

Defines a linear viscous damper acting only along the element axis.


Contents


Components

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

The one-based body index for the first attachment point, or zero for a ground point.

integer(kind=int32), public :: body_2 = 0

The one-based body index for the second attachment point, or zero for a ground point.

real(kind=real64), public :: damping = 0.0d0

The force per unit axial relative velocity.

real(kind=real64), public, dimension(3) :: point_1 = 0.0d0

The first attachment point in body_1 coordinates, or in world coordinates when body_1 is zero.

real(kind=real64), public, dimension(3) :: point_2 = 0.0d0

The second attachment point in body_2 coordinates, or in world coordinates when body_2 is zero.


Type-Bound Procedures

procedure, public :: evaluate_force => linear_damper_force

  • private pure function linear_damper_force(this, length, length_rate) result(rst)

    Evaluates the signed force produced by a linear axial damper.

    Arguments

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

    The damper whose damping coefficient defines the force law.

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

    The current element length and the relative rate of separation of the two attachment points. The length is unused by this law.

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

    The current element length and the relative rate of separation of the two attachment points. The length is unused by this law.

    Return Value real(kind=real64)

    The signed damping force, positive in the element's point-1 to point-2 direction.