SeismicAnalysis_ Derived Type

type, public :: SeismicAnalysis_


Components

Type Visibility Attributes Name Initial
type(FEMDomain_), public, pointer :: femdomain
type(FEMSolver_), public :: femsolver
type(CRS_), public :: M_matrix
type(CRS_), public :: K_matrix
type(ModalAnalysis_), public :: modal
real(kind=real64), public, allocatable :: da(:)
real(kind=real64), public, allocatable :: a_ext(:)
real(kind=real64), public, allocatable :: a_ext_n(:)
real(kind=real64), public, allocatable :: a(:)
real(kind=real64), public, allocatable :: a_half(:)
real(kind=real64), public, allocatable :: a_n(:)
real(kind=real64), public, allocatable :: v(:)
real(kind=real64), public, allocatable :: v_half(:)
real(kind=real64), public, allocatable :: v_n(:)
real(kind=real64), public, allocatable :: u(:)
real(kind=real64), public, allocatable :: u_n(:)
complex(kind=real64), public, allocatable :: u_p(:)
complex(kind=real64), public, allocatable :: u_m(:)
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(:)
real(kind=real64), public, allocatable :: FixNodeList_Disp(:)
integer(kind=int32), public, allocatable :: num_nodes_in_domains(:)
real(kind=real64), public, allocatable :: Traction(:)
integer(kind=int32), public, allocatable :: absorbingBoundary_x(:)
integer(kind=int32), public, allocatable :: absorbingBoundary_y(:)
integer(kind=int32), public, allocatable :: absorbingBoundary_z(:)
integer(kind=int32), public, allocatable :: absorbingBoundary_xyz(:)
real(kind=real64), public :: absorbingBoundary_elasticity = 0.0d0
real(kind=real64), public :: absorbingBoundary_viscosity = 0.0d0
real(kind=real64), public, allocatable :: Frequency(:)
real(kind=real64), public, allocatable :: ModeVectors(:,:)
integer(kind=int32), public, allocatable :: NodeID_range(:,:)
integer(kind=int32), public, allocatable :: ElementID_range(:,:)
character(len=1), public :: wavedirection = "z"
integer(kind=int32), public :: wavetype = 0
real(kind=real64), public :: dt = 1.0d0
real(kind=real64), public :: error = dble(1.0e-14)
real(kind=real64), public :: tolerance = dble(1.0e-14)
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 :: damping_ratio_h = 0.010d0
real(kind=real64), public :: Newmark_beta = 0.250d0
real(kind=real64), public :: Newmark_gamma = 0.50d0
real(kind=real64), public :: boundary_dumping_ratio = 1.0d0
logical, public :: restart = .False.
logical, public :: debug = .False.
logical, public :: multi_domain_mode = .false.
real(kind=real64), public :: overset_penalty = 1000.0d0*1000.0d0

Type-Bound Procedures

procedure, public :: init => initSeismicAnalysis

procedure, public :: setMaterial => setMaterialSeismicAnalysis

  • public subroutine setMaterialSeismicAnalysis(this, DomainID, Density, YoungModulus, PoissonRatio)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: this
    integer(kind=int32), intent(in) :: DomainID
    real(kind=real64), intent(in) :: Density(:)
    real(kind=real64), intent(in) :: YoungModulus(:)
    real(kind=real64), intent(in) :: PoissonRatio(:)

procedure, public :: setBoundary => setBoundarySeismicAnalysis

  • public subroutine setBoundarySeismicAnalysis(this, DomainID, NodeList, condition, boundaryValue, overwrite)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: this
    integer(kind=int32), intent(in) :: DomainID
    integer(kind=int32), intent(in) :: NodeList(:)
    character(len=*), intent(in) :: condition
    real(kind=real64), intent(in) :: boundaryValue(:)
    logical, intent(in), optional :: overwrite

procedure, public :: setSolverParameters => setSolverParametersSeismicAnalysis

  • public subroutine setSolverParametersSeismicAnalysis(this, error, debug)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: this
    real(kind=real64), intent(in), optional :: error
    logical, intent(in), optional :: debug

procedure, public, pass :: runSeismicAnalysis_user_function

  • public subroutine runSeismicAnalysis_user_function(obj, t0, timestep, wave, AccelLimit, disp_magnify_ratio, use_same_stiffness, dt, timeIntegral, use_same_matrix, LinearSolver)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: t0
    integer(kind=int32), intent(in), optional :: 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
    logical, intent(in), optional :: use_same_stiffness
    real(kind=real64), intent(in), optional :: dt
    character(len=*), intent(in) :: timeIntegral
    logical, intent(in), optional :: use_same_matrix
    public subroutine LinearSolver(row_ptr, col_idx, val, rhs, x)
    Arguments
    Type IntentOptional Attributes Name
    integer(kind=int64), intent(in) :: row_ptr(:)
    integer(kind=int32), intent(in) :: col_idx(:)
    real(kind=real64), intent(in) :: val(:)
    real(kind=real64), intent(in) :: rhs(:)
    real(kind=real64), intent(inout) :: x(:)

procedure, public, pass :: runSeismicAnalysis

  • public subroutine runSeismicAnalysis(obj, t0, timestep, wave, AccelLimit, disp_magnify_ratio, use_same_stiffness, dt, timeIntegral, use_same_matrix, preconditioning)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: t0
    integer(kind=int32), intent(in), optional :: 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
    logical, intent(in), optional :: use_same_stiffness
    real(kind=real64), intent(in), optional :: dt
    character(len=*), intent(in) :: timeIntegral
    logical, intent(in), optional :: use_same_matrix
    character(len=*), intent(in), optional :: preconditioning
  • public subroutine runSeismicAnalysis(obj, t0, timestep, wave, AccelLimit, disp_magnify_ratio, use_same_stiffness, dt, timeIntegral, use_same_matrix, preconditioning)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: t0
    integer(kind=int32), intent(in), optional :: 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
    logical, intent(in), optional :: use_same_stiffness
    real(kind=real64), intent(in), optional :: dt
    character(len=*), intent(in) :: timeIntegral
    logical, intent(in), optional :: use_same_matrix
    character(len=*), intent(in), optional :: preconditioning
  • public subroutine runSeismicAnalysis_user_function(obj, t0, timestep, wave, AccelLimit, disp_magnify_ratio, use_same_stiffness, dt, timeIntegral, use_same_matrix, LinearSolver)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: t0
    integer(kind=int32), intent(in), optional :: 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
    logical, intent(in), optional :: use_same_stiffness
    real(kind=real64), intent(in), optional :: dt
    character(len=*), intent(in) :: timeIntegral
    logical, intent(in), optional :: use_same_matrix
    public subroutine LinearSolver(row_ptr, col_idx, val, rhs, x)
    Arguments
    Type IntentOptional Attributes Name
    integer(kind=int64), intent(in) :: row_ptr(:)
    integer(kind=int32), intent(in) :: col_idx(:)
    real(kind=real64), intent(in) :: val(:)
    real(kind=real64), intent(in) :: rhs(:)
    real(kind=real64), intent(inout) :: x(:)

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 Attributes Name
    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 Attributes Name
    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 Attributes Name
    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, use_same_stiffness, dt, timeIntegral, use_same_matrix, preconditioning)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: t0
    integer(kind=int32), intent(in), optional :: 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
    logical, intent(in), optional :: use_same_stiffness
    real(kind=real64), intent(in), optional :: dt
    character(len=*), intent(in) :: timeIntegral
    logical, intent(in), optional :: use_same_matrix
    character(len=*), intent(in), optional :: preconditioning
  • public subroutine runSeismicAnalysis_user_function(obj, t0, timestep, wave, AccelLimit, disp_magnify_ratio, use_same_stiffness, dt, timeIntegral, use_same_matrix, LinearSolver)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: t0
    integer(kind=int32), intent(in), optional :: 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
    logical, intent(in), optional :: use_same_stiffness
    real(kind=real64), intent(in), optional :: dt
    character(len=*), intent(in) :: timeIntegral
    logical, intent(in), optional :: use_same_matrix
    public subroutine LinearSolver(row_ptr, col_idx, val, rhs, x)
    Arguments
    Type IntentOptional Attributes Name
    integer(kind=int64), intent(in) :: row_ptr(:)
    integer(kind=int32), intent(in) :: col_idx(:)
    real(kind=real64), intent(in) :: val(:)
    real(kind=real64), intent(in) :: rhs(:)
    real(kind=real64), intent(inout) :: x(:)

procedure, public :: LinearReyleighNewmark => LinearReyleighNewmarkSeismicAnalysis

procedure, public :: recordMaxValues => recordMaxValuesSeismicAnalysis

procedure, public :: save => saveSeismicAnalysis

  • public subroutine saveSeismicAnalysis(obj, name, ratio)

    Arguments

    Type IntentOptional Attributes Name
    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 Attributes Name
    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 Attributes Name
    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 Attributes Name
    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 Attributes Name
    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 :: remove => removeSeismicAnalysis

procedure, public :: absorbingBoundary => absorbingBoundarySeismicAnalysis

  • public subroutine absorbingBoundarySeismicAnalysis(obj, x_min, x_max, y_min, y_max, z_min, z_max, direction, dumping_ratio)

    Arguments

    Type IntentOptional Attributes Name
    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) :: direction
    real(kind=real64), intent(in), optional :: dumping_ratio

procedure, public :: getAbsorbingBoundaryForce => getAbsorbingBoundaryForceSeismicAnalysis

procedure, public :: velocity => velocitySeismicAnalysis

  • public function velocitySeismicAnalysis(this, DomainID, Direction) result(v)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(in) :: this
    integer(kind=int32), intent(in) :: DomainID
    integer(kind=int32), intent(in) :: Direction

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

procedure, public, pass :: modalAnalysisSeismicAnalysis_single_domain

  • public subroutine modalAnalysisSeismicAnalysis_single_domain(this, femdomain, YoungModulus, PoissonRatio, Density, fix_node_list_x, fix_node_list_y, fix_node_list_z)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: this
    type(FEMDomain_), intent(inout), target :: femdomain
    real(kind=real64), intent(in) :: YoungModulus(:)
    real(kind=real64), intent(in) :: PoissonRatio(:)
    real(kind=real64), intent(in) :: Density(:)
    integer(kind=int32), intent(in), optional, allocatable :: fix_node_list_x(:)
    integer(kind=int32), intent(in), optional, allocatable :: fix_node_list_y(:)
    integer(kind=int32), intent(in), optional, allocatable :: fix_node_list_z(:)

procedure, public, pass :: modalAnalysisSeismicAnalysis_multi_domain

  • public subroutine modalAnalysisSeismicAnalysis_multi_domain(this, femdomains, connectivity, YoungModulus, PoissonRatio, Density, fix_node_list_x, fix_node_list_y, fix_node_list_z, overset_algorithm, penalty)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: this
    type(FEMDomain_), intent(inout) :: femdomains(:)
    integer(kind=int32), intent(in) :: connectivity(:,:)
    real(kind=real64), intent(in) :: YoungModulus(:)
    real(kind=real64), intent(in) :: PoissonRatio(:)
    real(kind=real64), intent(in) :: Density(:)
    integer(kind=int32), intent(in), optional :: fix_node_list_x(:)
    integer(kind=int32), intent(in), optional :: fix_node_list_y(:)
    integer(kind=int32), intent(in), optional :: fix_node_list_z(:)
    integer(kind=int32), intent(in) :: overset_algorithm
    real(kind=real64), intent(in), optional :: penalty
  • public subroutine modalAnalysisSeismicAnalysis_single_domain(this, femdomain, YoungModulus, PoissonRatio, Density, fix_node_list_x, fix_node_list_y, fix_node_list_z)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: this
    type(FEMDomain_), intent(inout), target :: femdomain
    real(kind=real64), intent(in) :: YoungModulus(:)
    real(kind=real64), intent(in) :: PoissonRatio(:)
    real(kind=real64), intent(in) :: Density(:)
    integer(kind=int32), intent(in), optional, allocatable :: fix_node_list_x(:)
    integer(kind=int32), intent(in), optional, allocatable :: fix_node_list_y(:)
    integer(kind=int32), intent(in), optional, allocatable :: fix_node_list_z(:)
  • public subroutine modalAnalysisSeismicAnalysis_multi_domain(this, femdomains, connectivity, YoungModulus, PoissonRatio, Density, fix_node_list_x, fix_node_list_y, fix_node_list_z, overset_algorithm, penalty)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(inout) :: this
    type(FEMDomain_), intent(inout) :: femdomains(:)
    integer(kind=int32), intent(in) :: connectivity(:,:)
    real(kind=real64), intent(in) :: YoungModulus(:)
    real(kind=real64), intent(in) :: PoissonRatio(:)
    real(kind=real64), intent(in) :: Density(:)
    integer(kind=int32), intent(in), optional :: fix_node_list_x(:)
    integer(kind=int32), intent(in), optional :: fix_node_list_y(:)
    integer(kind=int32), intent(in), optional :: fix_node_list_z(:)
    integer(kind=int32), intent(in) :: overset_algorithm
    real(kind=real64), intent(in), optional :: penalty

procedure, public :: getModeVector => getModeVectorSeismicAnalysis

  • public function getModeVectorSeismicAnalysis(this, domainID, ModeID) result(mode_vector)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(in) :: this
    integer(kind=int32), intent(in) :: domainID
    integer(kind=int32), intent(in) :: ModeID

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

procedure, public :: exportModeShape => exportModeShapeSeismicAnalysis

  • public subroutine exportModeShapeSeismicAnalysis(this, domainID, femdomain, name, MAX_MODE_NUM, amp)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(in) :: this
    integer(kind=int32), intent(in) :: domainID
    type(FEMDomain_), intent(inout) :: femdomain
    character(len=*), intent(in) :: name
    integer(kind=int32), intent(in), optional :: MAX_MODE_NUM
    real(kind=real64), intent(in), optional :: amp

procedure, public :: vtk => vtkSeismicAnalysis

  • public subroutine vtkSeismicAnalysis(this, name, num_mode, amp, scalar_field, with_stress)

    Arguments

    Type IntentOptional Attributes Name
    class(SeismicAnalysis_), intent(in) :: this
    character(len=*), intent(in) :: name
    integer(kind=int32), intent(in) :: num_mode
    real(kind=real64), intent(in) :: amp
    real(kind=real64), intent(in), optional :: scalar_field(:)
    integer(kind=int32), intent(in), optional :: with_stress(1:2)