WaveKernel_ Derived Type

type, public :: WaveKernel_


Components

Type Visibility Attributes Name Initial
type(CRS_), public :: OmegaSqMatrix
real(kind=Real64), public, allocatable :: Mmatrix_diag(:)
real(kind=Real64), public, allocatable :: DampingRatio(:)
real(kind=real64), public :: tol = dble(1.0e-25)
real(kind=real64), public, allocatable :: v_in1(:)
real(kind=real64), public, allocatable :: v_in2(:)
real(kind=real64), public, allocatable :: v_out1(:)
real(kind=real64), public, allocatable :: v_out2(:)
real(kind=real64), public, allocatable :: u_in1(:)
real(kind=real64), public, allocatable :: u_in2(:)
real(kind=real64), public, allocatable :: u_out1(:)
real(kind=real64), public, allocatable :: u_out2(:)
real(kind=real64), public, allocatable :: hanning_buffer(:,:)
integer(kind=int32), public :: itrmax = 100
integer(kind=int32), public :: EbO_Algorithm = FEMDomain_Overset_GPP
real(kind=real64), public :: EbO_relative_penalty = 1000.0d0

Type-Bound Procedures

procedure, public, pass :: initWaveKernel

  • public subroutine initWaveKernel(this, FEMDomain, DOF, YoungModulus, PoissonRatio, DampingRatio, Density)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    type(FEMDomain_), intent(inout) :: FEMDomain
    integer(kind=int32), intent(in) :: DOF
    real(kind=real64), intent(in) :: YoungModulus(:)
    real(kind=real64), intent(in), optional :: PoissonRatio(:)
    real(kind=real64), intent(in), optional :: DampingRatio(:)
    real(kind=real64), intent(in) :: Density(:)

procedure, public, pass :: init_by_femdomain_pointers_WK

  • public subroutine init_by_femdomain_pointers_WK(this, FEMDomainPointers, DOF, YoungModulus, PoissonRatio, DampingRatio, Density)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    type(FEMDomainp_), intent(inout) :: FEMDomainPointers(:)
    integer(kind=int32), intent(in) :: DOF
    real(kind=real64), intent(in) :: YoungModulus(:)
    real(kind=real64), intent(in), optional :: PoissonRatio(:)
    real(kind=real64), intent(in), optional :: DampingRatio(:)
    real(kind=real64), intent(in) :: Density(:)

generic, public :: init => initWaveKernel, init_by_femdomain_pointers_WK

  • public subroutine initWaveKernel(this, FEMDomain, DOF, YoungModulus, PoissonRatio, DampingRatio, Density)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    type(FEMDomain_), intent(inout) :: FEMDomain
    integer(kind=int32), intent(in) :: DOF
    real(kind=real64), intent(in) :: YoungModulus(:)
    real(kind=real64), intent(in), optional :: PoissonRatio(:)
    real(kind=real64), intent(in), optional :: DampingRatio(:)
    real(kind=real64), intent(in) :: Density(:)
  • public subroutine init_by_femdomain_pointers_WK(this, FEMDomainPointers, DOF, YoungModulus, PoissonRatio, DampingRatio, Density)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    type(FEMDomainp_), intent(inout) :: FEMDomainPointers(:)
    integer(kind=int32), intent(in) :: DOF
    real(kind=real64), intent(in) :: YoungModulus(:)
    real(kind=real64), intent(in), optional :: PoissonRatio(:)
    real(kind=real64), intent(in), optional :: DampingRatio(:)
    real(kind=real64), intent(in) :: Density(:)

procedure, public :: setLPF => setLPF_WaveKernel

  • public subroutine setLPF_WaveKernel(this, weights)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(in) :: weights(:)

procedure, public :: bandpass => bandpass_WaveKernel

  • public subroutine bandpass_WaveKernel(this, u_n, v_n, freq_range, dt, fix_idx)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(inout) :: u_n(:)
    real(kind=real64), intent(inout) :: v_n(:)
    real(kind=real64), intent(in) :: freq_range(1:2)
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional :: fix_idx(:)

procedure, public :: lowpass => lowpass_WaveKernel

  • public subroutine lowpass_WaveKernel(this, u_n, v_n, cutoff_frequency, dt, fix_idx)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(inout) :: u_n(:)
    real(kind=real64), intent(inout) :: v_n(:)
    real(kind=real64), intent(in) :: cutoff_frequency
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional :: fix_idx(:)

procedure, public :: movingAverage => movingAverage_WaveKernel

  • public subroutine movingAverage_WaveKernel(this, u_n, v_n, fix_idx)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(inout) :: u_n(:)
    real(kind=real64), intent(inout) :: v_n(:)
    integer(kind=int32), intent(in), optional :: fix_idx(:)

procedure, public, pass :: getDisplacement_and_Velocity_WaveKernel

  • public subroutine getDisplacement_and_Velocity_WaveKernel(this, u_n, v_n, dt, fix_idx, cutoff_frequency, debug_mode, u, v, RHS)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(in) :: u_n(:)
    real(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional, allocatable :: fix_idx(:)
    real(kind=real64), intent(in), optional :: cutoff_frequency
    logical, intent(in), optional :: debug_mode
    real(kind=real64), allocatable :: u(:)
    real(kind=real64), allocatable :: v(:)
    real(kind=real64), intent(in), optional :: RHS(:)

procedure, public, pass :: getDisplacement_and_Velocity_MPI_WaveKernel

  • public subroutine getDisplacement_and_Velocity_MPI_WaveKernel(this, u_n, v_n, dt, fix_idx, cutoff_frequency, debug_mode, u, v, RHS, MPID, FEMDomain)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(in) :: u_n(:)
    real(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional, allocatable :: fix_idx(:)
    real(kind=real64), intent(in) :: cutoff_frequency
    logical, intent(in), optional :: debug_mode
    real(kind=real64), allocatable :: u(:)
    real(kind=real64), allocatable :: v(:)
    real(kind=real64), intent(in), optional :: RHS(:)
    type(MPI_), intent(inout) :: MPID
    type(FEMDomain_), intent(inout) :: FEMDomain

procedure, public, pass :: getDisplacement_and_Velocity_complex64_WaveKernel

  • public subroutine getDisplacement_and_Velocity_complex64_WaveKernel(this, u_n, v_n, dt, fix_idx, cutoff_frequency, debug_mode, u, v, RHS)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    complex(kind=real64), intent(in) :: u_n(:)
    complex(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional, allocatable :: fix_idx(:)
    real(kind=real64), intent(in), optional :: cutoff_frequency
    logical, intent(in), optional :: debug_mode
    complex(kind=real64), allocatable :: u(:)
    complex(kind=real64), allocatable :: v(:)
    real(kind=real64), intent(in), optional :: RHS(:)
  • public subroutine getDisplacement_and_Velocity_WaveKernel(this, u_n, v_n, dt, fix_idx, cutoff_frequency, debug_mode, u, v, RHS)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(in) :: u_n(:)
    real(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional, allocatable :: fix_idx(:)
    real(kind=real64), intent(in), optional :: cutoff_frequency
    logical, intent(in), optional :: debug_mode
    real(kind=real64), allocatable :: u(:)
    real(kind=real64), allocatable :: v(:)
    real(kind=real64), intent(in), optional :: RHS(:)
  • public subroutine getDisplacement_and_Velocity_complex64_WaveKernel(this, u_n, v_n, dt, fix_idx, cutoff_frequency, debug_mode, u, v, RHS)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    complex(kind=real64), intent(in) :: u_n(:)
    complex(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional, allocatable :: fix_idx(:)
    real(kind=real64), intent(in), optional :: cutoff_frequency
    logical, intent(in), optional :: debug_mode
    complex(kind=real64), allocatable :: u(:)
    complex(kind=real64), allocatable :: v(:)
    real(kind=real64), intent(in), optional :: RHS(:)
  • public subroutine getDisplacement_and_Velocity_MPI_WaveKernel(this, u_n, v_n, dt, fix_idx, cutoff_frequency, debug_mode, u, v, RHS, MPID, FEMDomain)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(in) :: u_n(:)
    real(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional, allocatable :: fix_idx(:)
    real(kind=real64), intent(in) :: cutoff_frequency
    logical, intent(in), optional :: debug_mode
    real(kind=real64), allocatable :: u(:)
    real(kind=real64), allocatable :: v(:)
    real(kind=real64), intent(in), optional :: RHS(:)
    type(MPI_), intent(inout) :: MPID
    type(FEMDomain_), intent(inout) :: FEMDomain

procedure, public :: getDisplacement => getDisplacementWaveKernel

  • public function getDisplacementWaveKernel(this, u_n, v_n, dt, fix_idx, cutoff_frequency, debug_mode, RHS, gain) result(u)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(in) :: u_n(:)
    real(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional :: fix_idx(:)
    real(kind=real64), intent(in), optional :: cutoff_frequency
    logical, intent(in), optional :: debug_mode
    real(kind=real64), intent(in), optional :: RHS(:)
    real(kind=real64), intent(in), optional :: gain

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

procedure, public :: getVelocity => getVelocityWaveKernel

  • public function getVelocityWaveKernel(this, u_n, v_n, RHS, dt, fix_idx, cutoff_frequency, debug_mode, gain) result(v)

    Arguments

    Type IntentOptional Attributes Name
    class(WaveKernel_), intent(inout) :: this
    real(kind=real64), intent(in) :: u_n(:)
    real(kind=real64), intent(in) :: v_n(:)
    real(kind=real64), intent(in), optional :: RHS(:)
    real(kind=real64), intent(in) :: dt
    integer(kind=int32), intent(in), optional :: fix_idx(:)
    real(kind=real64), intent(in), optional :: cutoff_frequency
    logical, intent(in), optional :: debug_mode
    real(kind=real64), intent(in), optional :: gain

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