SeismicAnalysisClass Module


Uses


Contents


Variables

TypeVisibility AttributesNameInitial
integer(kind=int32), public :: WAVE_DISP =1
integer(kind=int32), public :: WAVE_VELOCITY =2
integer(kind=int32), public :: WAVE_ACCEL =3

Derived Types

type, public :: SeismicAnalysis_

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
procedure, public :: fixDisplacement => fixDisplacementSeismicAnalysis
procedure, public :: updateWave => updateWaveSeismicAnalysis
procedure, public :: run => runSeismicAnalysis
procedure, public :: LinearReyleighNewmark => LinearReyleighNewmarkSeismicAnalysis
procedure, public :: recordMaxValues => recordMaxValuesSeismicAnalysis
procedure, public :: save => saveSeismicAnalysis
procedure, public :: getNewmarkBetaMatrix => getNewmarkBetaMatrixSeismicAnalysis
procedure, public :: getNewmarkBetaVector => getNewmarkBetaVectorSeismicAnalysis
procedure, public :: updateVelocityNewmarkBeta => updateVelocityNewmarkBetaSeismicAnalysis
procedure, public :: updateAccelNewmarkBeta => updateAccelNewmarkBetaSeismicAnalysis

Functions

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, (:,:)

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, (:)

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, (:)

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, (:)


Subroutines

public subroutine initSeismicAnalysis(obj)

Arguments

Type IntentOptional AttributesName
class(SeismicAnalysis_), intent(inout) :: obj

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

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

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

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

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

public subroutine LinearReyleighNewmarkSeismicAnalysis(obj, TOL)

Arguments

Type IntentOptional AttributesName
class(SeismicAnalysis_), intent(inout) :: obj
real(kind=real64), intent(in), optional :: TOL

public subroutine recordMaxValuesSeismicAnalysis(Obj)

Arguments

Type IntentOptional AttributesName
class(SeismicAnalysis_), intent(inout) :: Obj