SUBROUTINE WriteHeader( FileName, Title, theta, Ntheta, sx, Nsx, sy, Nsy, sd, Nsd, rd, Nrd, r, Nr, Freq, Atten, PlotType ) ! Write header to disk file IMPLICIT NONE INTEGER, PARAMETER :: SHDFile = 25 INTEGER, INTENT( IN ) :: Ntheta, Nsx, Nsy, Nsd, Nrd, Nr ! Number of angles, source depths, receiver depths, and receiver ranges REAL, INTENT( IN ) :: sx( Nsx ), sy( Nsy ) ! Source x, y coordinates REAL, INTENT( IN ) :: theta( Ntheta ) ! bearing angles REAL, INTENT( IN ) :: r( Nr ) ! receiver ranges REAL, INTENT( IN ) :: rd( Nrd ), sd( Nsd ) ! receiver depths, source depths REAL, INTENT( IN ) :: Freq, Atten ! Source frequency and stabilizing attenuation (for wavenumber integration only) CHARACTER, INTENT( IN ) :: FileName*( * ) ! Name of the file (could be a shade file or a Green's function file) CHARACTER, INTENT( IN ) :: Title*( * ) ! Arbitrary title CHARACTER, INTENT( IN ) :: PlotType*( 10 ) ! INTEGER LRecl LRecl = MAX( 40, Ntheta, Nsd, Nrd, 2 * Nr ) ! words/record (Nr doubled for complex pressure storage) OPEN ( FILE = FileName, UNIT = SHDFile, STATUS = 'UNKNOWN', ACCESS = 'DIRECT', RECL = 4 * LRecl, FORM = 'UNFORMATTED') WRITE( SHDFile, REC = 1 ) LRecl, Title( 1 : 80 ) WRITE( SHDFile, REC = 2 ) PlotType WRITE( SHDFile, REC = 3 ) Freq, Ntheta, Nsx, Nsy, Nsd, Nrd, Nr, atten WRITE( *, * ) Freq, Ntheta, Nsx, Nsy, Nsd, Nrd, Nr, atten WRITE( SHDFile, REC = 4 ) theta WRITE( SHDFile, REC = 5 ) sx WRITE( SHDFile, REC = 6 ) sy WRITE( SHDFile, REC = 7 ) sd WRITE( SHDFile, REC = 8 ) rd WRITE( SHDFile, REC = 9 ) r END SUBROUTINE WriteHeader !**********************************************************************! SUBROUTINE WriteField( P, Nrd, Nr, IRec ) ! Write the field to disk IMPLICIT NONE INTEGER, PARAMETER :: SHDFile = 25 INTEGER, INTENT( IN ) :: Nrd, Nr ! Number of receiver depths, ranges INTEGER, INTENT( INOUT ) :: IRec ! last record read INTEGER :: ird COMPLEX, INTENT( IN ) :: P( Nrd, Nr ) ! Pressure field DO ird = 1, Nrd IRec = IRec + 1 WRITE( SHDFile, REC = IRec ) P( ird, : ) END DO END SUBROUTINE WriteField