ReadHeader Subroutine

public subroutine ReadHeader(FileName, Title, atten, PlotType)

Arguments

Type IntentOptional Attributes Name
character(len=80), intent(out) :: FileName
character(len=80), intent(out) :: Title
real, intent(out) :: atten
character(len=10), intent(out) :: PlotType

Calls

proc~~readheader~~CallsGraph proc~readheader ReadHeader proc~errout ERROUT proc~readheader->proc~errout

Source Code

  SUBROUTINE ReadHeader( FileName, Title, atten, PlotType )

    ! Read header from disk file
    ! This is not used anywhere in the Fortran code for the Acoustics Toolbox, since Matlab is used to process SHDFiles

    ! FileName is a SHDFIL for complex pressure or a GRNFIL for a Green's function
    ! Title   arbitrary title

    INTEGER, PARAMETER                :: PRTFile = 6
    REAL,               INTENT( OUT ) :: atten           ! stabilizing attenuation for SCOOTER FFP runs
    CHARACTER (LEN=80), INTENT( OUT ) :: Title, FileName
    CHARACTER (LEN=10), INTENT( OUT ) :: PlotType
    INTEGER                           :: IAllocStat, IOStat

    ! Open file, read header
    IF ( FileName( 1 : 1 ) == ' ' ) FileName = 'SHDFIL'

    ! INQUIRE( FILE = FileName, RECL = IRECL )
    OPEN( UNIT = SHDFile,   FILE = FileName, STATUS = 'OLD', ACCESS = 'DIRECT', FORM = 'UNFORMATTED', RECL = 4, &
         IOSTAT = IOStaT, ACTION = 'READ' )
    IF ( IOStat /= 0 ) CALL ERROUT( 'ReadHeader', 'Unable to open shade file' )

    READ( SHDFile, REC = 1 ) LRecl
    CLOSE( UNIT = SHDFile )
    OPEN(  UNIT = SHDFile,   FILE = FileName, STATUS = 'OLD', ACCESS = 'DIRECT', FORM = 'UNFORMATTED', RECL = 4 * LRecl )

    READ( SHDFile, REC = 1  ) LRecl, Title
    READ( SHDFile, REC = 2  ) PlotType
    READ( SHDFile, REC = 3  ) Nfreq, Pos%Ntheta, Pos%NSx, Pos%NSy, Pos%NSz, Pos%NRz, Pos%NRr, atten

    ALLOCATE( freqVec( Nfreq ), Pos%Sz( Pos%NSz ), Pos%Rz( Pos%NRz ), Pos%Rr( Pos%NRr ), &
            & Pos%theta( Pos%Ntheta ), Stat = IAllocStat )
    IF ( IAllocStat /= 0 ) CALL ERROUT( 'ReadHeader', 'Too many source/receiver combinations' )

    READ( SHDFile, REC = 4  ) freqVec
    READ( SHDFile, REC = 5  ) Pos%theta
    READ( SHDFile, REC = 6  ) Pos%Sx
    READ( SHDFile, REC = 7  ) Pos%Sy
    READ( SHDFile, REC = 8  ) Pos%Sz
    READ( SHDFile, REC = 9  ) Pos%Rz
    READ( SHDFile, REC = 10 ) Pos%Rr

    ! Pos%deltaR = Pos%r( Pos%NRr ) - Pos%r( Pos%NRr - 1 )

  END SUBROUTINE ReadHeader