SeismicAnalysis_ Derived Type

type, public :: SeismicAnalysis_


Contents


Components

TypeVisibility AttributesNameInitial
type(FEMDomain_), public, pointer:: femdomain
real(kind=real64), public, allocatable:: da(:)
real(kind=real64), public, allocatable:: a(:)
real(kind=real64), public, allocatable:: a_ext(:)
real(kind=real64), public, allocatable:: a_ext_n(:)
real(kind=real64), public, allocatable:: v(:)
real(kind=real64), public, allocatable:: u(:)
real(kind=real64), public, allocatable:: du(:)
real(kind=real64), public, allocatable:: wave(:,:)
real(kind=real64), public, allocatable:: dwave(:,:)
real(kind=real64), public, allocatable:: Density(:)
real(kind=real64), public, allocatable:: YoungModulus(:)
real(kind=real64), public, allocatable:: PoissonRatio(:)
real(kind=real64), public :: MaxA(3) =0.0d0
real(kind=real64), public :: MaxV(3) =0.0d0
real(kind=real64), public :: MaxU(3) =0.0d0
integer(kind=int32), public, allocatable:: WaveNodeList(:)
integer(kind=int32), public, allocatable:: FixNodeList_x(:)
integer(kind=int32), public, allocatable:: FixNodeList_y(:)
integer(kind=int32), public, allocatable:: FixNodeList_z(:)
real(kind=real64), public, allocatable:: FixNodeList_Disp_x(:)
real(kind=real64), public, allocatable:: FixNodeList_Disp_y(:)
real(kind=real64), public, allocatable:: FixNodeList_Disp_z(:)
character(len=1), public :: wavedirection ="z"
integer(kind=int32), public :: wavetype =0
real(kind=real64), public :: dt =1.0d0
real(kind=real64), public :: error =0.0d0
real(kind=real64), public :: t =0.0d0
integer(kind=int32), public :: step =0
real(kind=real64), public :: alpha =0.52400d0
real(kind=real64), public :: beta =0.00129d0
real(kind=real64), public :: Newmark_beta =0.250d0
real(kind=real64), public :: Newmark_gamma =0.50d0
logical, public :: restart =.False.

Type-Bound Procedures

procedure, public :: init => initSeismicAnalysis

procedure, public :: loadWave => loadWaveSeismicAnalysis

  • public subroutine loadWaveSeismicAnalysis(obj, x_min, x_max, y_min, y_max, z_min, z_max, direction, wavetype)

    Arguments

    Type IntentOptional AttributesName
    class(SeismicAnalysis_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: x_min
    real(kind=real64), intent(in), optional :: x_max
    real(kind=real64), intent(in), optional :: y_min
    real(kind=real64), intent(in), optional :: y_max
    real(kind=real64), intent(in), optional :: z_min
    real(kind=real64), intent(in), optional :: z_max
    character(len=1), intent(in), optional :: direction
    integer(kind=int32), intent(in) :: wavetype

procedure, public :: fixDisplacement => fixDisplacementSeismicAnalysis

  • public subroutine fixDisplacementSeismicAnalysis(obj, x_min, x_max, y_min, y_max, z_min, z_max, displacement, direction, release)

    Arguments

    Type IntentOptional AttributesName
    class(SeismicAnalysis_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: x_min
    real(kind=real64), intent(in), optional :: x_max
    real(kind=real64), intent(in), optional :: y_min
    real(kind=real64), intent(in), optional :: y_max
    real(kind=real64), intent(in), optional :: z_min
    real(kind=real64), intent(in), optional :: z_max
    real(kind=real64), intent(in), optional :: displacement
    character(len=*), intent(in), optional :: direction
    character(len=*), intent(in), optional :: release

procedure, public :: updateWave => updateWaveSeismicAnalysis

  • public subroutine updateWaveSeismicAnalysis(obj, timestep, direction)

    Arguments

    Type IntentOptional AttributesName
    class(SeismicAnalysis_), intent(inout) :: obj
    integer(kind=int32), intent(in) :: timestep
    character(len=1), intent(in), optional :: direction

procedure, public :: run => runSeismicAnalysis

  • public subroutine runSeismicAnalysis(obj, t0, timestep, wave, AccelLimit, disp_magnify_ratio)

    Arguments

    Type IntentOptional AttributesName
    class(SeismicAnalysis_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: t0
    integer(kind=int32), intent(in) :: timestep(2)
    real(kind=real64), intent(in), optional :: wave(:,:)
    real(kind=real64), intent(in), optional :: AccelLimit
    real(kind=real64), intent(in), optional :: disp_magnify_ratio

procedure, public :: LinearReyleighNewmark => LinearReyleighNewmarkSeismicAnalysis

procedure, public :: recordMaxValues => recordMaxValuesSeismicAnalysis

procedure, public :: save => saveSeismicAnalysis

  • public subroutine saveSeismicAnalysis(obj, name, ratio)

    Arguments

    Type IntentOptional AttributesName
    class(SeismicAnalysis_), intent(inout) :: obj
    character(len=*), intent(in) :: name
    real(kind=real64), intent(in), optional :: ratio

procedure, public :: getNewmarkBetaMatrix => getNewmarkBetaMatrixSeismicAnalysis

  • public function getNewmarkBetaMatrixSeismicAnalysis(obj, M, C, K, beta, gamma, dt) result(ret)

    Arguments

    Type IntentOptional AttributesName
    class(SeismicAnalysis_), intent(in) :: obj
    real(kind=real64), intent(in) :: M(:,:)
    real(kind=real64), intent(in) :: C(:,:)
    real(kind=real64), intent(in) :: K(:,:)
    real(kind=real64), intent(in) :: beta
    real(kind=real64), intent(in) :: gamma
    real(kind=real64), intent(in) :: dt

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

procedure, public :: getNewmarkBetaVector => getNewmarkBetaVectorSeismicAnalysis

  • public function getNewmarkBetaVectorSeismicAnalysis(obj, u_n, v_n, a_n, force, beta, gamma, M, C, dt) result(ret)

    Arguments

    Type IntentOptional AttributesName
    class(SeismicAnalysis_), intent(in) :: obj
    real(kind=real64), intent(in) :: u_n(:)
    real(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: a_n(:)
    real(kind=real64), intent(in) :: force(:)
    real(kind=real64), intent(in) :: beta
    real(kind=real64), intent(in) :: gamma
    real(kind=real64), intent(in) :: M(:,:)
    real(kind=real64), intent(in) :: C(:,:)
    real(kind=real64), intent(in) :: dt

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

procedure, public :: updateVelocityNewmarkBeta => updateVelocityNewmarkBetaSeismicAnalysis

  • public function updateVelocityNewmarkBetaSeismicAnalysis(obj, u, u_n, v_n, a_n, gamma, beta, dt) result(ret)

    Arguments

    Type IntentOptional AttributesName
    class(SeismicAnalysis_), intent(in) :: obj
    real(kind=real64), intent(in) :: u(:)
    real(kind=real64), intent(in) :: u_n(:)
    real(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: a_n(:)
    real(kind=real64), intent(in) :: gamma
    real(kind=real64), intent(in) :: beta
    real(kind=real64), intent(in) :: dt

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

procedure, public :: updateAccelNewmarkBeta => updateAccelNewmarkBetaSeismicAnalysis

  • public function updateAccelNewmarkBetaSeismicAnalysis(obj, u, u_n, v_n, a_n, gamma, beta, dt) result(ret)

    Arguments

    Type IntentOptional AttributesName
    class(SeismicAnalysis_), intent(in) :: obj
    real(kind=real64), intent(in) :: u(:)
    real(kind=real64), intent(in) :: u_n(:)
    real(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: a_n(:)
    real(kind=real64), intent(in) :: gamma
    real(kind=real64), intent(in) :: beta
    real(kind=real64), intent(in) :: dt

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