SUBROUTINE ReadVector( Nx, x, Description, Units )
! Read a vector x
! Description is something like 'receiver ranges'
! Units is something like 'km'
INTEGER, INTENT( OUT ) :: Nx
REAL, ALLOCATABLE, INTENT( OUT ) :: x( : )
CHARACTER, INTENT( IN ) :: Description*( * ), Units*( * )
INTEGER :: ix
WRITE( PRTFile, * )
WRITE( PRTFile, * ) '__________________________________________________________________________'
WRITE( PRTFile, * )
READ( ENVFile, * ) Nx
WRITE( PRTFile, * ) ' Number of ' // Description // ' = ', Nx
IF ( Nx <= 0 ) CALL ERROUT( 'ReadVector', 'Number of ' // Description // 'must be positive' )
IF ( ALLOCATED( x ) ) DEALLOCATE( x )
ALLOCATE( x( MAX( 3, Nx ) ), Stat = IAllocStat )
IF ( IAllocStat /= 0 ) CALL ERROUT( 'ReadVector', 'Too many ' // Description )
WRITE( PRTFile, * ) ' ', Description // ' (' // Units // ')'
x( 3 ) = -999.9
READ( ENVFile, * ) x( 1 : Nx )
CALL SubTab( x, Nx )
CALL Sort( x, Nx )
WRITE( PRTFile, "( 5G14.6 )" ) ' ', ( x( ix ), ix = 1, MIN( Nx, Number_to_Echo ) )
IF ( Nx > Number_to_Echo ) WRITE( PRTFile, "( G14.6 )" ) ' ... ', x( Nx )
WRITE( PRTFile, * )
! Vectors in km should be converted to m for internal use
IF ( LEN_TRIM( Units ) >= 2 ) THEN
IF ( Units( 1 : 2 ) == 'km' ) x = 1000.0 * x
END IF
END SUBROUTINE ReadVector