SUBROUTINE ReadTopOpt( TopOpt, BC, AttenUnit, FileRoot )
CHARACTER (LEN= 6), INTENT( OUT ) :: TopOpt
CHARACTER (LEN= 1), INTENT( OUT ) :: BC ! Boundary condition type
CHARACTER (LEN= 2), INTENT( OUT ) :: AttenUnit
CHARACTER (LEN=80), INTENT( IN ) :: FileRoot
INTEGER :: iostat
TopOpt = ' ' ! initialize to blanks
READ( ENVFile, * ) TopOpt
WRITE( PRTFile, * )
SSP%Type = TopOpt( 1 : 1 )
BC = TopOpt( 2 : 2 )
AttenUnit = TopOpt( 3 : 4 )
SSP%AttenUnit = AttenUnit
! SSP approximation options
SELECT CASE ( SSP%Type )
CASE ( 'N' )
WRITE( PRTFile, * ) ' N2-linear approximation to SSP'
CASE ( 'C' )
WRITE( PRTFile, * ) ' C-linear approximation to SSP'
CASE ( 'P' )
WRITE( PRTFile, * ) ' PCHIP approximation to SSP'
CASE ( 'S' )
WRITE( PRTFile, * ) ' Spline approximation to SSP'
CASE ( 'Q' )
WRITE( PRTFile, * ) ' Quad approximation to SSP'
OPEN ( FILE = TRIM( FileRoot ) // '.ssp', UNIT = SSPFile, FORM = 'FORMATTED', STATUS = 'OLD', IOSTAT = iostat )
IF ( IOSTAT /= 0 ) THEN ! successful open?
WRITE( PRTFile, * ) 'SSPFile = ', TRIM( FileRoot ) // '.ssp'
CALL ERROUT( 'BELLHOP - READIN', 'Unable to open the SSP file' )
END IF
CASE ( 'H' )
WRITE( PRTFile, * ) ' Hexahedral approximation to SSP'
OPEN ( FILE = TRIM( FileRoot ) // '.ssp', UNIT = SSPFile, FORM = 'FORMATTED', STATUS = 'OLD', IOSTAT = iostat )
IF ( IOSTAT /= 0 ) THEN ! successful open?
WRITE( PRTFile, * ) 'SSPFile = ', TRIM( FileRoot ) // '.ssp'
CALL ERROUT( 'BELLHOP - READIN', 'Unable to open the SSP file' )
END IF
CASE ( 'A' )
WRITE( PRTFile, * ) ' Analytic SSP option'
CASE DEFAULT
CALL ERROUT( 'READIN', 'Unknown option for SSP approximation' )
END SELECT
! Attenuation options
SELECT CASE ( AttenUnit( 1 : 1 ) )
CASE ( 'N' )
WRITE( PRTFile, * ) ' Attenuation units: nepers/m'
CASE ( 'F' )
WRITE( PRTFile, * ) ' Attenuation units: dB/mkHz'
CASE ( 'M' )
WRITE( PRTFile, * ) ' Attenuation units: dB/m'
CASE ( 'W' )
WRITE( PRTFile, * ) ' Attenuation units: dB/wavelength'
CASE ( 'Q' )
WRITE( PRTFile, * ) ' Attenuation units: Q'
CASE ( 'L' )
WRITE( PRTFile, * ) ' Attenuation units: Loss parameter'
CASE DEFAULT
CALL ERROUT( 'READIN', 'Unknown attenuation units' )
END SELECT
! optional addition of volume attenuation using standard formulas
SELECT CASE ( AttenUnit( 2 : 2 ) )
CASE ( 'T' )
WRITE( PRTFile, * ) ' THORP volume attenuation added'
CASE ( 'F' )
WRITE( PRTFile, * ) ' Francois-Garrison volume attenuation added'
READ( ENVFile, * ) T, Salinity, pH, z_bar
WRITE( PRTFile, "( ' T = ', G11.4, 'degrees S = ', G11.4, ' psu pH = ', G11.4, ' z_bar = ', G11.4, ' m' )" ) &
T, Salinity, pH, z_bar
CASE ( 'B' )
WRITE( PRTFile, * ) ' Biological attenaution'
READ( ENVFile, * ) NBioLayers
WRITE( PRTFile, * ) ' Number of Bio Layers = ', NBioLayers
DO iBio = 1, NBioLayers
READ( ENVFile, * ) bio( iBio )%Z1, bio( iBio )%Z2, bio( iBio )%f0, bio( iBio )%Q, bio( iBio )%a0
WRITE( PRTFile, * ) ' Top of layer = ', bio( iBio )%Z1, ' m'
WRITE( PRTFile, * ) ' Bottom of layer = ', bio( iBio )%Z2, ' m'
WRITE( PRTFile, * ) ' Resonance frequency = ', bio( iBio )%f0, ' Hz'
WRITE( PRTFile, * ) ' Q = ', bio( iBio )%Q
WRITE( PRTFile, * ) ' a0 = ', bio( iBio )%a0
END DO
CASE ( ' ' )
CASE DEFAULT
CALL ERROUT( 'READIN', 'Unknown top option letter in fourth position' )
END SELECT
SELECT CASE ( TopOpt( 5 : 5 ) )
CASE ( '~', '*' )
WRITE( PRTFile, * ) ' Altimetry file selected'
CASE ( '-', '_', ' ' )
CASE DEFAULT
CALL ERROUT( 'READIN', 'Unknown top option letter in fifth position' )
END SELECT
SELECT CASE ( TopOpt( 6 : 6 ) )
CASE ( 'I' )
WRITE( PRTFile, * ) ' Development options enabled'
CASE ( ' ' )
CASE DEFAULT
CALL ERROUT( 'READIN', 'Unknown top option letter in sixth position' )
END SELECT
END SUBROUTINE ReadTopOpt