ReadRcvrBearings Subroutine

public subroutine ReadRcvrBearings()

Arguments

None

Calls

proc~~readrcvrbearings~~CallsGraph proc~readrcvrbearings ReadRcvrBearings interface~monotonic monotonic proc~readrcvrbearings->interface~monotonic proc~errout ERROUT proc~readrcvrbearings->proc~errout proc~readvector ReadVector proc~readrcvrbearings->proc~readvector proc~monotonic_dble monotonic_dble interface~monotonic->proc~monotonic_dble proc~monotonic_sngl monotonic_sngl interface~monotonic->proc~monotonic_sngl proc~readvector->proc~errout interface~sort Sort proc~readvector->interface~sort interface~subtab SubTab proc~readvector->interface~subtab proc~sort_cmplx Sort_cmplx interface~sort->proc~sort_cmplx proc~sort_dble Sort_dble interface~sort->proc~sort_dble proc~sort_sngl Sort_sngl interface~sort->proc~sort_sngl proc~subtab_dble SubTab_dble interface~subtab->proc~subtab_dble proc~subtab_sngl SubTab_sngl interface~subtab->proc~subtab_sngl

Called by

proc~~readrcvrbearings~~CalledByGraph proc~readrcvrbearings ReadRcvrBearings proc~readenvironment ReadEnvironment proc~readenvironment->proc~readrcvrbearings program~bellhop BELLHOP program~bellhop->proc~readenvironment program~bellhop3d BELLHOP3D program~bellhop3d->proc~readenvironment

Source Code

  SUBROUTINE ReadRcvrBearings

    CALL ReadVector( Pos%Ntheta, Pos%theta, 'Receiver bearings, theta', 'degrees' )

    ! full 360-degree sweep? remove duplicate angle
    IF ( Pos%Ntheta > 1 ) THEN
       IF ( ABS( MOD( Pos%theta( Pos%Ntheta ) - Pos%theta( 1 ), 360.0 ) ) < 10.0 * TINY( 1.0D0 ) ) &
          Pos%Ntheta = Pos%Ntheta - 1
    END IF

    ! calculate angular spacing
    Pos%Delta_theta = 0.0
    IF ( Pos%Ntheta /= 1 ) Pos%Delta_theta = Pos%theta( Pos%Ntheta ) - Pos%theta( Pos%Ntheta - 1 )

    IF ( .NOT. monotonic( Pos%theta, Pos%Ntheta ) ) THEN
       CALL ERROUT( 'ReadRcvrBearings', 'Receiver bearings are not monotonically increasing' )
    END IF

    RETURN
  END SUBROUTINE ReadRcvrBearings