ObserverClass Derived Type

type, public :: ObserverClass


Components

Type Visibility Attributes Name Initial
integer, public :: ID
real(kind=RP), public, dimension(NDIM) :: x
integer, public :: numberOfFaces
class(ObserverSourcePairClass), public, dimension(:), allocatable :: sourcePair
real(kind=RP), public, dimension(:,:), allocatable :: Pac
real(kind=RP), public :: tDelay
real(kind=RP), public :: tDelayMax
logical, public :: active
character(len=STR_LEN_OBSERVER), public :: observerName
character(len=STR_LEN_OBSERVER), public :: fileName

Type-Bound Procedures

procedure, public :: construct => ObserverConstruct

  • public subroutine ObserverConstruct(self, sourceZone, mesh, ID, solution_file, FirstCall, interpolate, totalNumberOfFaces, elementSide)

    Arguments

    Type IntentOptional Attributes Name
    class(ObserverClass) :: self
    class(Zone_t), intent(in) :: sourceZone
    class(HexMesh), intent(in) :: mesh
    integer, intent(in) :: ID
    character(len=*), intent(in) :: solution_file
    logical, intent(in) :: FirstCall
    logical, intent(in) :: interpolate
    integer, intent(in) :: totalNumberOfFaces
    integer, intent(in), dimension(:) :: elementSide

procedure, public :: destruct => ObserverDestruct

procedure, public :: update => ObserverUpdate

  • public subroutine ObserverUpdate(self, mesh, isSolid, bufferPosition, interpolate)

    Arguments

    Type IntentOptional Attributes Name
    class(ObserverClass) :: self
    class(HexMesh), intent(in) :: mesh
    logical, intent(in) :: isSolid
    integer, intent(in), optional :: bufferPosition
    logical, intent(in) :: interpolate

procedure, public :: writeToFile => ObserverWriteToFile

  • public subroutine ObserverWriteToFile(self, iter, tsource, no_of_lines)

    Arguments

    Type IntentOptional Attributes Name
    class(ObserverClass) :: self
    integer, dimension(:) :: iter
    real(kind=RP), dimension(:) :: tsource
    integer :: no_of_lines

procedure, public :: updateTdelay => ObserverUpdateTdelay

  • public subroutine ObserverUpdateTdelay(self, totalNumberOfFaces)

    Arguments

    Type IntentOptional Attributes Name
    class(ObserverClass) :: self
    integer, intent(in) :: totalNumberOfFaces

procedure, public :: interpolateSol => ObserverInterpolateSol

  • public subroutine ObserverInterpolateSol(self, tsource, no_of_lines)

    Arguments

    Type IntentOptional Attributes Name
    class(ObserverClass) :: self
    real(kind=RP), intent(in), dimension(:) :: tsource
    integer, intent(in) :: no_of_lines

procedure, public :: sumIntegrals => ObserverSumIntegrals

  • public subroutine ObserverSumIntegrals(self, nDiscard, N, startIndex, no_of_lines)

    Arguments

    Type IntentOptional Attributes Name
    class(ObserverClass) :: self
    integer, intent(in), dimension(self % numberOfFaces) :: nDiscard
    integer, intent(in) :: N
    integer, intent(in) :: startIndex
    integer, intent(in) :: no_of_lines

procedure, public :: updateOneStep => ObserverUpdateOneStep

  • public subroutine ObserverUpdateOneStep(self, mesh, bufferPosition, isSolid, tsource)

    Arguments

    Type IntentOptional Attributes Name
    class(ObserverClass) :: self
    class(HexMesh), intent(in) :: mesh
    integer, intent(in) :: bufferPosition
    logical, intent(in) :: isSolid
    real(kind=RP), intent(in) :: tsource

Source Code

   type ObserverClass

       integer                                                         :: ID
       real(kind=RP), dimension(NDIM)                                  :: x        ! position of the observer at global coordinates
       integer                                                         :: numberOfFaces
       class(ObserverSourcePairClass), dimension(:), allocatable       :: sourcePair
       real(kind=RP), dimension(:,:), allocatable                      :: Pac      ! acoustic pressure, two components and the total (sum)
       real(kind=RP)                                                   :: tDelay
       real(kind=RP)                                                   :: tDelayMax
       logical                                                         :: active
       character(len=STR_LEN_OBSERVER)                                 :: observerName
       character(len=STR_LEN_OBSERVER)                                 :: fileName

       contains

           procedure :: construct      => ObserverConstruct
           procedure :: destruct       => ObserverDestruct
           procedure :: update         => ObserverUpdate
           procedure :: writeToFile    => ObserverWriteToFile
           procedure :: updateTdelay   => ObserverUpdateTdelay
           procedure :: interpolateSol => ObserverInterpolateSol
           procedure :: sumIntegrals   => ObserverSumIntegrals
           procedure :: updateOneStep  => ObserverUpdateOneStep

   end type ObserverClass