C   REVIEW.FOR

      SUBROUTINE REVIEW( MREF, IBASE, MRH0, MRH1, FREQ )

      DOUBLE PRECISION H0, H1, DZMAX, FREQ

      INTEGER MREF(*)

      COMMON /APM/ NSMPL, NSMDEF
      COMMON /G/ H0, H1
      COMMON /LUNIT/ LUPLP, LUPLT, LUPRT
      COMMON /MESH/ DZH0, DZH1, INPDZ, FIXDZ    
      COMMON /NORM/ N12221, N14241
      COMMON /PARAM3/ IMESH, NMESH, MSHRAT, OPTMZ
      COMMON /PARAM4/ MESHI, MESHN

  200 FORMAT(1X,//'  *** WARNING FROM SUB REVIEW: ',/,
     & 5X,' TO MEET DEFAULT ACCURACY CRITERIA ON MODE AMPLITUDES ',/,
     & 5X,' WE CHOOSE TO USE THEM ON MESH No.',I2,'.',/,
     & 5X,' (Standard choice is on MESH No. 1).',/) 



C  THIS CHECK IS APPLIED ONLY WHEN NONE OF THE RELEVANT "DEFAULT" PARAMETERS 
C  HAS BEEN REDEFINED IN THE INPUT DATA FILE (See "CHANGING DEFAULT PARAMETERS"
C  in the manual for C-SNAP).

      IF( (MESHI .NE. 1) .OR. (MESHN  .NE. 4) .OR.
     &    (MSHRAT .NE. 0) .OR. (INPDZ .GT. 0) .OR.
     &    (FIXDZ .GT. 0) .OR. (NSMPL .NE. NSMDEF) )    RETURN

C      MAXMSH= 12

C  DZMAX IS MAXIMUM ACCEPTABLE VERTICAL GRID SIZE FOR ACCURACY CRITERIA.
C  THIS WILL GUARANTEE THAT NO SOURCE/RECEIVER DEPTH CAN BE MORE THAN 
C  1/6th OF A WAVELENGTH AWAY FROM A COMPUTED MODE AMPLITUDE VALUE.
      DZMAX= 1500.0/(3.0*FREQ)


      IF( H0 .GT. 0.0 )   THEN
        NPH0= ANINT(H0/DZMAX)
        IF(N14241 .EQ. 1)   NPH0= NPH0 + MOD(NPH0,2)
C       WOULD ANY OF THE SPECIFIED MESHES SOLVE THE PROBLEM ?
        DO 2000 I= MESHI, MESHN
        IF( MRH0*MREF(IBASE + I-1) .GE. NPH0 )   GO TO 2600
 2000   CONTINUE
C       NO MESH SATISFIES THE CRITERIA
C       WHAT SHOULD "MRH0" BE ON THE LAST MESH ?
        MRH0= NPH0/MREF(IBASE + MESHN -1) + 1
        IF(MESHN  .GT. 1)   THEN
         MESHI= MESHN
         PRINT 200, MESHN
        END IF
        GO TO 2800
 2600   CONTINUE
        IF( I .NE. MESHI )   THEN
          MESHI= I
          PRINT 200, MESHI
        END IF
 2800   CONTINUE
      END IF

      IF( H1 .GT. 0.0 )   THEN
        NPH1= H1/DZMAX
        IF(N14241 .EQ. 1)   NPH1= NPH1 + MOD(NPH1,2)
C       WOULD ANY OF THE SPECIFIED MESHES SOLVE THE PROBLEM ?
        DO 3000 I= MESHI, MESHN
        IF( MRH1*MREF(IBASE + I-1) .GE. NPH1 )   GO TO 3600
 3000   CONTINUE
C       NO MESH SATISFIES THE CRITERIA
C       WHAT SHOULD "MRH1" BE ON THE LAST MESH ?
        MRH1= NPH1/MREF(IBASE + MESHN -1) + 1
        IF(MESHN  .GT. 1)   THEN
         MESHI= MESHN
         PRINT 200, MESHI
        END IF
        GO TO 3800
 3600   CONTINUE
        IF( I .NE. MESHI )   THEN
          MESHI= I
          PRINT 200, MESHI
        END IF
 3800   CONTINUE
      END IF

      RETURN
      END