!                    *************************
                     SUBROUTINE BORD_TIDE_MISC
!                    *************************
!
     &(ZF,NBOR,LIHBOR,LIUBOR,NPOIN,NPTFR,TEMPS,DT,
     & NUMLIQ,KENT,KENTU,TIDALTYPE,CTIDE,MSL,
     & CTIDEV,NODALCORR,NFOT,
     & BOUNDARY_COLOUR,HBTIDE,UBTIDE,VBTIDE,NUMTIDE,ICALHW,
     & MARDAT,MARTIM)
!
!***********************************************************************
! TELEMAC2D   V7P0                                   08/01/2014
!***********************************************************************
!
! Intégration de la surcote directement à partir du fichier atmosphérique
! via la variable PATMOS.
! Modification de la lecture du fichier des constantes harmoniques.
!
!***********************************************************************
!
!brief    MODIFIES THE BOUNDARY CONDITIONS ARRAYS FOR TIDES
!+                WHEN THEY VARY IN TIME.
!+
!
!history  C-T PHAM (LNHE)
!+        12/01/2012
!+        V6P2
!+
!
!history  C-T PHAM (LNHE)
!+        08/01/2014
!+        V7P0
!+   Change of the name BORD_TIDE_LEGOS to BORD_TIDE_MISC
!+   (e.g. LEGOS-NEA, Previmer, FES).
!+   Adding 7 extra harmonic constituents.
!
!history  C-T PHAM (LNHE)
!+        30/06/2015
!+        V7P1
!+   Schematic tides
!
!history  C-T PHAM (LNHE)
!+        13/07/2017
!+        V7P3
!+   Adding 7 extra harmonic constituents, for FES2014 (L.LEBALLEUR).
!+   Because of the addition of M3 between M2 and M4, OMEGA_BTM cannot
!+   taken for index 19 for quarter diurnal constituents
!
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!| BOUNDARY_COLOUR|-->| AN INTEGER LINKED TO BOUNDARY POINTS
!|                |   | BY DEFAULT THE LAST LINE OF BOUNDARY CONDITIONS
!|                |   | FILE, HENCE THE GLOBAL BOUNDARY NUMBER, BUT CAN
!|                |   | BE CHANGED BY USER.
!| CTIDE          |-->| COEFFICIENT TO CALIBRATE THE TIDAL RANGE
!| CTIDEV         |-->| COEFFICIENT TO CALIBRATE THE VELOCITIES
!| DT             |-->| TIME STEP
!| HBTIDE         |<->| WATER DEPTH ON TIDAL BOUNDARY CONDITIONS
!| ICALHW         |<->| NUMBER THAT MAY BE CHOSEN BY THE USER
!|                |   | TO CALIBRATE HIGH WATER OR AUTOMATICALLY CHOSEN
!|                |   | IN CASE OF THE MODELLING OF A SCHEMATIC TIDE
!| KENT           |-->| CONVENTION FOR LIQUID INPUT WITH PRESCRIBED VALUE
!| KENTU          |-->| CONVENTION FOR LIQUID INPUT WITH PRESCRIBED VELOCITY
!| LIHBOR         |-->| TYPE OF BOUNDARY CONDITIONS ON DEPTH
!| LIUBOR         |-->| TYPE OF BOUNDARY CONDITIONS ON VELOCITY
!| MARDAT         |-->| DATE (YEAR,MONTH,DAY)
!| MARTIM         |-->| TIME (HOUR,MINUTE,SECOND)
!| MSL            |-->| COEFFICIENT TO CALIBRATE THE SEA LEVEL
!| NBOR           |-->| GLOBAL NUMBER OF BOUNDARY POINTS
!| NFOT           |-->| LOGICAL UNIT OF HARMONIC CONSTANTS FILE
!| NODALCORR      |-->| OPTION FOR CALCULATION OF NODAL FACTOR CORRECTION F
!| NPOIN          |-->| NUMBER OF POINTS
!| NPTFR          |-->| NUMBER OF BOUNDARY POINTS
!| NUMLIQ         |-->| LIQUID BOUNDARY NUMBER OF BOUNDARY POINTS
!| NUMTIDE        |<->| NUMBER OF THE TIDAL BOUNDARY
!|                |   | ASSOCIATED TO EACH POINT OF THE BOUNDARY
!| TEMPS          |-->| TIME IN SECONDS
!| TIDALTYPE      |-->| TYPE OF TIDE TO MODEL
!| UBTIDE         |<->| VELOCITY ON TIDAL BOUNDARY CONDITIONS
!| VBTIDE         |<->| VELOCITY ON TIDAL BOUNDARY CONDITIONS
!| ZF             |-->| BOTTOM TOPOGRAPHY
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
      USE BIEF
      USE INTERFACE_TELEMAC2D, EX_BORD_TIDE_MISC => BORD_TIDE_MISC
      USE DECLARATIONS_TELEMAC2D, ONLY : DEJA_BTM,MISC_NCMX_BTM,
     &                 NTIDE_BTM,NPTFRL_BTM,NWAVES_BTM,FIRSTTIDE_BTM,
     &                 LASTTIDE_BTM,SHIFTTIDE_BTM,INDW_BTM,
     &                 NAMEWAVE_BTM,AH_BTM,PH_BTM,AU_BTM,PU_BTM,
     &                 AV_BTM,PV_BTM,LON_BTM,LAT_BTM,UPV_BTM,FF_BTM,
     &                 OMEGA_BTM,PHCALHW_BTM,MISC_CONSTID_BTM,
     &                 INDW2_BTM,INDW3_BTM,NWAVES2_BTM,
     &                 T2DFO1,T2D_FILES
!
! *** Modif EPO ********************************************************
! Importation de la valeur instantanée de la Patm
!
      USE METEO_TELEMAC, ONLY : PATMOS,CST_PATMOS
!	  
! *** Fin Modif EPO ****************************************************
!
      USE DECLARATIONS_SPECIAL
!	   USE DECLARATIONS_TELEMAC3D, ONLY : T3DFO1, T3D_FILES
      IMPLICIT NONE
!
!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!
      INTEGER, INTENT(IN)             :: NPOIN,NPTFR,NFOT
      INTEGER, INTENT(IN)             :: KENT,KENTU,NODALCORR
      INTEGER, INTENT(IN)             :: LIHBOR(NPTFR),LIUBOR(NPTFR)
      INTEGER, INTENT(IN)             :: NUMLIQ(NPTFR),NBOR(NPTFR)
      INTEGER, INTENT(IN)             :: TIDALTYPE,MARDAT(3),MARTIM(3)
      INTEGER, INTENT(INOUT)          :: ICALHW
      DOUBLE PRECISION, INTENT(IN)    :: TEMPS,CTIDE,MSL,CTIDEV,DT
      DOUBLE PRECISION, INTENT(IN)    :: ZF(NPOIN)
      TYPE(BIEF_OBJ), INTENT(IN)      :: BOUNDARY_COLOUR
      TYPE(BIEF_OBJ), INTENT(INOUT)   :: NUMTIDE,UBTIDE,VBTIDE,HBTIDE
!
!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!
      INTEGER K,IERR,I,J,J2,J3
!
!-----------------------------------------------------------------------
!
      INTEGER IPTFR,IPTFRL
!
      DOUBLE PRECISION PI,DTR
      DOUBLE PRECISION SUMH,SUMU,SUMV
!	   DOUBLE PRECISION, ALLOCATABLE :: MSLV(:)
!
!      CHARACTER(LEN=4) TEXT
	        DOUBLE PRECISION :: MSLG0
      DOUBLE PRECISION :: MSLG7,MSLG8,MSLG9,MSLG10,MSLG11
      
      DOUBLE PRECISION :: ATi,DZ0i,DZ1i,DZ2i,DZ3i,DZ4i,DZ5i,DZ6i,DZ7i
      DOUBLE PRECISION :: DZ8i,DZ9i,DZ10i,DZ11i
      
      DOUBLE PRECISION :: ATj,DZ0j,DZ1j,DZ2j,DZ3j,DZ4j,DZ5j,DZ6j
      DOUBLE PRECISION :: DZ7j,DZ8j,DZ9j,DZ10j,DZ11j
      
      DOUBLE PRECISION :: DD1,DD2,DDT
      DOUBLE PRECISION :: DZP0,DZP1,DZP2,DZP3,DZP4,DZP5,DZP6 
      DOUBLE PRECISION :: DZP7,DZP8,DZP9,DZP10,DZP11
      
      DOUBLE PRECISION :: X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12
      DOUBLE PRECISION :: Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,Y10,Y11,Y12
      
      DOUBLE PRECISION :: COEF,COEF0,COEF1,COEF2,COEF3,COEF4
      DOUBLE PRECISION :: COEF5,COEF6,COEF7,COEF8,COEF9,COEF10
	      INTEGER NFO1
		    SAVE
!
      CHARACTER(LEN=4) TEXT
!
!
!-----------------------------------------------------------------------
!	  
      PI  = ATAN(1.D0)*4.D0
      DTR = PI/180.D0

!	  NFO1=T3D_FILES(T3DFO1)%LU
!
!  TEST TO CHECK CORRECT VALUES FOR TIDALTYPE
!
      IF(.NOT.DEJA_BTM) THEN
        IF(TIDALTYPE.LT.1.OR.TIDALTYPE.GT.6) THEN
          WRITE(LU,*) 'UNEXPECTED VALUE FOR TIDALTYPE=',TIDALTYPE
          WRITE(LU,*) 'IT MUST BE CHOSEN BETWEEN 1 AND 6'
          WRITE(LU,*) 'CURRENTLY'
          WRITE(LU,*) 'WITH MISC TIDAL DATA BASES'
          CALL PLANTE(1)
          STOP
        ENDIF
!		 READ(NFO1,*) ATi,DZ0i
     
!        READ(NFO1,*) ATj,DZ0j
      ENDIF
!	     IF(TEMPS.GE.ATi.AND.TEMPS.LT.ATj) THEN
!          IF(ATj-ATi.GT.1.D-6) THEN
!           COEF=(TEMPS-ATi)/(ATj-ATi)
!           ELSE
!           COEF=0.D0
!           ENDIF
!   >>> modified here to interpolate all the variables for the four points
!         DZP0=DZ0i+COEF*(DZ0j-DZ0i)
!		    ELSE
!         ATi=ATj
!         DZ0i=DZ0j
!		  READ(NFO1,*) ATj,DZ0j
!		    ENDIF
!      ENDIF
!
! *** Modif EPO ********************************************************
! On remplace la lecture du fichier surcote par son calcul direct via la
! variable PATMOS, constante sur le domaine, sous hypothèse d'une 
! pression atmosphérique définie dans le .cas.
!
	  !DZP0 = 0.D0
      DZP0 = (CST_PATMOS*1.D-2-PATMOS%R(1))*1.D-2
	  !write(LU,*) PATMOS%R(1),CST_PATMOS,DZP0
!	  
! *** Fin Modif EPO ****************************************************
!
!  MAGNITUDES AND PHASES ARE READ IN TIDAL FILE
!  TIDAL FILE IS OBTAINED FROM THE TIDAL TOOL BOX (LEGOS)
!
!  NTIDE_BTM:  NUMBER OF THE TIDAL BOUNDARIES
!  NPTFRL_BTM: NUMBERS OF BOUNDARY POINTS WHERE TIDE IS PRESCRIBED
!
      IF(.NOT.DEJA_BTM) THEN
!
        REWIND NFOT
!
        READ(NFOT,*,END=2) NTIDE_BTM
		print *, 'L1',NTIDE_BTM
!        DO K=1,NTIDE_BTM
!          READ(NFOT,*,END=2)
!        ENDDO
!
        READ(NFOT,*,END=2) NPTFRL_BTM,NWAVES_BTM
		 print *, 'L2', NPTFRL_BTM,NWAVES_BTM
!
        IF(NWAVES_BTM.GT.MISC_NCMX_BTM) THEN
          WRITE(LU,*) 'NUMBER OF WAVES IN THE HARMONIC CONSTITUENTS'
          WRITE(LU,*) 'FILE GREATER THAN',MISC_NCMX_BTM
          WRITE(LU,*) 'SOME WAVES ARE NOT EXPECTED. THE FILE IS TO'
          WRITE(LU,*) 'BE ADJUSTED'
          CALL PLANTE(1)
          STOP
        ENDIF
!
      ENDIF
!
2     CONTINUE
!
      IF(.NOT.DEJA_BTM) THEN
        ALLOCATE(FIRSTTIDE_BTM(NTIDE_BTM),STAT=IERR)
        ALLOCATE(LASTTIDE_BTM(NTIDE_BTM), STAT=IERR)
        ALLOCATE(SHIFTTIDE_BTM(NTIDE_BTM),STAT=IERR)
!
        ALLOCATE(AH_BTM(NPTFRL_BTM,NWAVES_BTM),STAT=IERR)
        ALLOCATE(PH_BTM(NPTFRL_BTM,NWAVES_BTM),STAT=IERR)
        ALLOCATE(AU_BTM(NPTFRL_BTM,NWAVES_BTM),STAT=IERR)
        ALLOCATE(PU_BTM(NPTFRL_BTM,NWAVES_BTM),STAT=IERR)
        ALLOCATE(AV_BTM(NPTFRL_BTM,NWAVES_BTM),STAT=IERR)
        ALLOCATE(PV_BTM(NPTFRL_BTM,NWAVES_BTM),STAT=IERR)
        ALLOCATE(LON_BTM(NPTFRL_BTM,NWAVES_BTM),STAT=IERR)
        ALLOCATE(LAT_BTM(NPTFRL_BTM,NWAVES_BTM),STAT=IERR)
        ALLOCATE(NAMEWAVE_BTM(NWAVES_BTM),STAT=IERR)
        ALLOCATE(INDW_BTM(NWAVES_BTM),STAT=IERR)
        IF(TIDALTYPE.GE.2.AND.TIDALTYPE.LE.6) THEN
          ALLOCATE(PHCALHW_BTM(NWAVES_BTM),STAT=IERR)
        ENDIF
        ALLOCATE(UPV_BTM(MISC_NCMX_BTM),STAT=IERR)
        ALLOCATE(FF_BTM(MISC_NCMX_BTM),STAT=IERR)
        ALLOCATE(OMEGA_BTM(MISC_NCMX_BTM),STAT=IERR)
      ENDIF
!
!  COMPUTE THE FIRST AND LAST INDICES OF THE OPEN LIQUID BOUNDARY WITH TIDE TO PRESCRIBE
!
      IF(.NOT.DEJA_BTM) THEN
!        REWIND NFOT
!
!        READ(NFOT,*,END=2) NTIDE_BTM
!        READ(NFOT,*,END=2) NPTFRL_BTM,NWAVES_BTM
		print *,NPTFRL_BTM,NWAVES_BTM
        DO I=1,NTIDE_BTM
          READ(NFOT,*,END=4) FIRSTTIDE_BTM(I),LASTTIDE_BTM(I)
!		   print *,'debut fin',I, FIRSTTIDE_BTM(I),LASTTIDE_BTM(I)
        ENDDO
4       CONTINUE
!
!  SHIFTS WHEN CHANGING TIDAL BOUNDARY
!
        SHIFTTIDE_BTM(1) = 0
!
        DO I=2,NTIDE_BTM
          SHIFTTIDE_BTM(I) = LASTTIDE_BTM(I-1) - FIRSTTIDE_BTM(I-1) + 1
     &                 + SHIFTTIDE_BTM(I-1)
        ENDDO
!
!        READ(NFOT,*) NPTFRL_BTM,NWAVES_BTM,TEXT
!
!  READING OF TIDAL DATA AT THE FIRST TIME STEP
!
        DO I=1,NWAVES_BTM
          READ(NFOT,*)NAMEWAVE_BTM(I)
		    print *, NAMEWAVE_BTM(I)
			print *, NPTFRL_BTM
          DO IPTFRL = 1,NPTFRL_BTM
            READ(NFOT,*) AH_BTM(IPTFRL,I),PH_BTM(IPTFRL,I),
     &                   AU_BTM(IPTFRL,I),PU_BTM(IPTFRL,I),
     &                   AV_BTM(IPTFRL,I),PV_BTM(IPTFRL,I)
!	       print *, IPTFRL,AH_BTM(IPTFRL,I),PH_BTM(IPTFRL,I),
! !    &                   AU_BTM(IPTFRL,I),PU_BTM(IPTFRL,I),
! !    &                   AV_BTM(IPTFRL,I),PV_BTM(IPTFRL,I)
          ENDDO
        ENDDO
!
        IF(TIDALTYPE.EQ.1) THEN
          DO K = 1,NWAVES_BTM
            INDW_BTM(K) = 0
            DO I = 1,MISC_NCMX_BTM
              IF(NAMEWAVE_BTM(K).EQ.MISC_CONSTID_BTM(I)) THEN
                INDW_BTM(K) = I
                EXIT
              ENDIF
            ENDDO
            IF(INDW_BTM(K).EQ.0) THEN
              WRITE(LU,*) 'MISC : WARNING:' //
     &         'CONSTITUENT ID ',NAMEWAVE_BTM(K),' IS NOT ALLOWED'
              CALL PLANTE(1)
              STOP
            ENDIF
          ENDDO
        ELSEIF(TIDALTYPE.GE.2.AND.TIDALTYPE.LE.6) THEN
!  BEGINNING: SAME AS FOR TIDALTYPE = 1
!  TO BE SURE THAT EVERY CONSTITUENT IS ALLOWED
          DO K = 1,NWAVES_BTM
            INDW_BTM(K) = 0
            DO I = 1,MISC_NCMX_BTM
              IF(NAMEWAVE_BTM(K).EQ.MISC_CONSTID_BTM(I)) THEN
                INDW_BTM(K) = I
                EXIT
              ENDIF
            ENDDO
            IF(INDW_BTM(K).EQ.0) THEN
              WRITE(LU,*) 'MISC : WARNING:' //
     &         'CONSTITUENT ID ',NAMEWAVE_BTM(K),' IS NOT ALLOWED'
              CALL PLANTE(1)
              STOP
            ENDIF
          ENDDO
!
!  TREATMENTS FOR SCHEMATIC TIDES
!
          I = 0
          WRITE(LU,*) 'AVAILABLE CONSTITUENTS FOR SCHEMATIC TIDES:'
!
          IF(TIDALTYPE.EQ.2.OR.TIDALTYPE.EQ.6) THEN
            DO K = 1,NWAVES_BTM
              IF(NAMEWAVE_BTM(K)(2:2).EQ.'1'
     &       .OR.NAMEWAVE_BTM(K)(3:3).EQ.'1'
     &       .OR.NAMEWAVE_BTM(K)(4:4).EQ.'1'
     &       .OR.NAMEWAVE_BTM(K)(2:2).EQ.'2'
     &       .OR.NAMEWAVE_BTM(K)(3:3).EQ.'2'
     &       .OR.NAMEWAVE_BTM(K)(4:4).EQ.'2'
     &       .OR.NAMEWAVE_BTM(K)(2:2).EQ.'4'
     &       .OR.NAMEWAVE_BTM(K)(3:3).EQ.'4'
     &       .OR.NAMEWAVE_BTM(K)(4:4).EQ.'4') THEN
                I = I + 1
                WRITE(LU,*) 'NAMEWAVE_BTM(',K,') = ',NAMEWAVE_BTM(K)
              ENDIF
            ENDDO
          ELSEIF(TIDALTYPE.EQ.3.OR.TIDALTYPE.EQ.5) THEN
            DO K = 1,NWAVES_BTM
              IF(NAMEWAVE_BTM(K)(1:2).EQ.'M2'
     &       .OR.NAMEWAVE_BTM(K)(1:2).EQ.'S2'
     &       .OR.NAMEWAVE_BTM(K)(1:2).EQ.'M4') THEN
                I = I + 1
                WRITE(LU,*) 'NAMEWAVE_BTM(',K,') = ',NAMEWAVE_BTM(K)
              ENDIF
            ENDDO
          ELSEIF(TIDALTYPE.EQ.4) THEN
            DO K = 1,NWAVES_BTM
              IF(NAMEWAVE_BTM(K)(1:2).EQ.'M2'
     &       .OR.NAMEWAVE_BTM(K)(1:2).EQ.'M4')
     &        THEN
                I = I + 1
                WRITE(LU,*) 'NAMEWAVE_BTM(',K,') = ',NAMEWAVE_BTM(K)
              ENDIF
            ENDDO
          ENDIF
          NWAVES2_BTM = I
          WRITE(LU,*) 'AVAILABLE CONSTITUENTS ' //
     &                'FOR SCHEMATIC TIDES:',NWAVES2_BTM
!  INDW2_BTM: INDICES IN MISC_CONSTID_BTM NUMBER (POSSIBLE CONSTITUENTS)
!  INDW3_BTM: INDICES IN THE HARMONIC CONSTANTS FILE NUMBER
          ALLOCATE(INDW2_BTM(NWAVES2_BTM))
          ALLOCATE(INDW3_BTM(NWAVES2_BTM))
!
          J = 1
!
          IF(TIDALTYPE.EQ.2.OR.TIDALTYPE.EQ.6) THEN
            DO K = 1,NWAVES_BTM
              IF(NAMEWAVE_BTM(K)(2:2).EQ.'1'
     &       .OR.NAMEWAVE_BTM(K)(3:3).EQ.'1'
     &       .OR.NAMEWAVE_BTM(K)(4:4).EQ.'1'
     &       .OR.NAMEWAVE_BTM(K)(2:2).EQ.'2'
     &       .OR.NAMEWAVE_BTM(K)(3:3).EQ.'2'
     &       .OR.NAMEWAVE_BTM(K)(4:4).EQ.'2'
     &       .OR.NAMEWAVE_BTM(K)(2:2).EQ.'4'
     &       .OR.NAMEWAVE_BTM(K)(3:3).EQ.'4'
     &       .OR.NAMEWAVE_BTM(K)(4:4).EQ.'4') THEN
                INDW3_BTM(J) = K
                DO I = 1,MISC_NCMX_BTM
                  IF(NAMEWAVE_BTM(K).EQ.MISC_CONSTID_BTM(I)) THEN
                    INDW2_BTM(J) = I
                    EXIT
                  ENDIF
                ENDDO
                J = J+1
              ENDIF
            ENDDO
          ELSEIF(TIDALTYPE.EQ.3.OR.TIDALTYPE.EQ.5) THEN
            DO K = 1,NWAVES_BTM
              IF(NAMEWAVE_BTM(K)(1:2).EQ.'M2'
     &          .OR.NAMEWAVE_BTM(K)(1:2).EQ.'S2'
     &          .OR.NAMEWAVE_BTM(K)(1:2).EQ.'M4') THEN
                INDW3_BTM(J) = K
                DO I = 1,MISC_NCMX_BTM
                  IF(NAMEWAVE_BTM(K).EQ.MISC_CONSTID_BTM(I)) THEN
                    INDW2_BTM(J) = I
                    EXIT
                  ENDIF
                ENDDO
                J = J+1
              ENDIF
            ENDDO
          ELSEIF(TIDALTYPE.EQ.4) THEN
            DO K = 1,NWAVES_BTM
              IF(NAMEWAVE_BTM(K)(1:2).EQ.'M2'
     &           .OR.NAMEWAVE_BTM(K)(1:2).EQ.'M4')
     &        THEN
                INDW3_BTM(J) = K
                DO I = 1,MISC_NCMX_BTM
                  IF(NAMEWAVE_BTM(K).EQ.MISC_CONSTID_BTM(I)) THEN
                    INDW2_BTM(J) = I
                    EXIT
                  ENDIF
                ENDDO
                J = J+1
              ENDIF
            ENDDO
          ENDIF
!
        ENDIF
!
!       POTENTIAL SPECIFIC TREATMENTS
!
        IF(TIDALTYPE.EQ.1) THEN
!
!         DEGREES TO RADIANS CONVERSIONS
          DO I=1,NWAVES_BTM
            DO IPTFRL = 1,NPTFRL_BTM
              PH_BTM(IPTFRL,I) = PH_BTM(IPTFRL,I)*DTR
              PU_BTM(IPTFRL,I) = PU_BTM(IPTFRL,I)*DTR
              PV_BTM(IPTFRL,I) = PV_BTM(IPTFRL,I)*DTR
            ENDDO
          ENDDO
!
        ELSEIF(TIDALTYPE.GE.2.AND.TIDALTYPE.LE.6) THEN
!
!         ARBITRARY CHOICE
          IF(ICALHW.EQ.0) ICALHW = NPTFRL_BTM/2
!
!  CALIBRATION WITH RESPECT TO HIGH WATER!!!
!  PHASES FOR HEIGHTS ARE READ IN TIDAL FILE
!  EXCEPT M4: 2*PHM2 MOD 360 IS APPLIED
! --------------------------------------------------
!
          DO I=1,NWAVES_BTM
            PHCALHW_BTM(I) = PH_BTM(ICALHW,I)
            DO IPTFRL = 1,NPTFRL_BTM
              PH_BTM(IPTFRL,I) = (PH_BTM(IPTFRL,I) - PHCALHW_BTM(I))*DTR
              PU_BTM(IPTFRL,I) = (PU_BTM(IPTFRL,I) - PHCALHW_BTM(I))*DTR
              PV_BTM(IPTFRL,I) = (PV_BTM(IPTFRL,I) - PHCALHW_BTM(I))*DTR
            ENDDO
          ENDDO
!
        ENDIF
!
!  NUMBER OF THE TIDAL BOUNDARY ASSOCIATED TO EACH POINT OF THE BOUNDARY
!  REMAINS 0 IF POINT IS NOT ON AN OPEN BOUNDARY WITH TIDE
!
        DO K=1,NPTFR
          NUMTIDE%I(K) = 0
          IPTFR=BOUNDARY_COLOUR%I(K)
          DO I=1,NTIDE_BTM
            IF(IPTFR.GE.FIRSTTIDE_BTM(I)
     &         .AND.IPTFR.LE.LASTTIDE_BTM(I)) THEN
              NUMTIDE%I(K) = I
            ENDIF
          ENDDO
        ENDDO
!
!  FOR THE SIMULATION OF REAL TIDES, NODAL FACTOR CORRECTIONS ARE COMPUTED
!  WITH SCHUREMAN FORMULAE
!  SCHUREMAN P. (1971). MANUAL OF HARMONIC ANALYSIS AND PREDICTION OF TIDES
!
        IF(TIDALTYPE.EQ.1) THEN
!
          CALL NODALUPV_SCHUREMAN(UPV_BTM,OMEGA_BTM,MARDAT,MARTIM)
!  TEMPS-DT RATHER THAN TEMPS BECAUSE THE FIRST CALL TO BORD_TIDE_MISC
!  IS AT THE FIRST TIME STEP
          CALL NODALF_SCHUREMAN(FF_BTM,TEMPS-DT,DEJA_BTM,
     &                          MARDAT,MARTIM)
!
!  JUST TO COMPUTE OMEGA_BTM FOR EVERY WAVE FOR SCHEMATIC TIDES ONLY
!  BEWARE!!! 18 IS FOR M2. BE CAREFUL IF AN EXTRA CONSTITUENT IS
!  INTRODUCED BEFORE M2
!
        ELSEIF(TIDALTYPE.GE.2.AND.TIDALTYPE.LE.6) THEN
          CALL NODALUPV_SCHUREMAN(UPV_BTM,OMEGA_BTM,MARDAT,MARTIM)
          DO I = 1,MISC_NCMX_BTM
            IF(    MISC_CONSTID_BTM(I)(2:2).EQ.'2'
     &         .OR.MISC_CONSTID_BTM(I)(3:3).EQ.'2'
     &         .OR.MISC_CONSTID_BTM(I)(4:4).EQ.'2') THEN
              OMEGA_BTM(I) = OMEGA_BTM(18)
            ELSEIF(    MISC_CONSTID_BTM(I)(2:2).EQ.'4'
     &             .OR.MISC_CONSTID_BTM(I)(3:3).EQ.'4'
     &             .OR.MISC_CONSTID_BTM(I)(4:4).EQ.'4') THEN
              OMEGA_BTM(I) = OMEGA_BTM(18)*2.D0
            ELSEIF(    MISC_CONSTID_BTM(I)(2:2).EQ.'1'
     &             .OR.MISC_CONSTID_BTM(I)(3:3).EQ.'1'
     &             .OR.MISC_CONSTID_BTM(I)(4:4).EQ.'1') THEN
              OMEGA_BTM(I) = OMEGA_BTM(18)*0.5D0
            ENDIF
          ENDDO
        ENDIF
!
        DEJA_BTM = .TRUE.
!
      ENDIF
!
      IF(TIDALTYPE.EQ.1.AND.NODALCORR.EQ.0) THEN
        CALL NODALF_SCHUREMAN(FF_BTM,TEMPS,DEJA_BTM,
     &                        MARDAT,MARTIM)
      ENDIF
!
!  LOOP ON ALL BOUNDARY POINTS
!
      DO K=1,NPTFR
!
        IPTFR=BOUNDARY_COLOUR%I(K)
!
!     LEVEL IMPOSED WITH VALUE GIVEN IN THE CAS FILE (NCOTE0)
!
        IF(LIHBOR(K).EQ.KENT) THEN
!         BEGINNING OF PRESCRIBED DEPTHS
          IF(NUMTIDE%I(K).GT.0) THEN
            IPTFRL=IPTFR-FIRSTTIDE_BTM(NUMTIDE%I(K))+1
     &                  +SHIFTTIDE_BTM(NUMTIDE%I(K))
!
!  TYPE OF TIDE TO MODEL
!  1: REAL TIDE (RECOMMENDED METHODOLOGY)
!  2: ASTRONOMICAL TIDE      (COEF. NEARLY 120)
!  3: MEAN SPRING TIDE       (COEF. NEARLY 95)
!  4: MEAN TIDE              (COEF. NEARLY 70)
!  5: MEAN NEAP TIDE         (COEF. NEARLY 45)
!  6: ASTRONOMICAL NEAP TIDE (COEF. NEARLY 20)
!
            IF(TIDALTYPE.EQ.1) THEN
              SUMH = 0.D0
              DO I=1,NWAVES_BTM
                J = INDW_BTM(I)
                IF(J.NE.0) THEN
                  SUMH = SUMH + FF_BTM(J)*AH_BTM(IPTFRL,I)
     &                         *COS( TEMPS*OMEGA_BTM(J)
     &                               -PH_BTM(IPTFRL,I)+UPV_BTM(J))
                ENDIF
              ENDDO
            ELSEIF(TIDALTYPE.GE.2.AND.TIDALTYPE.LE.4) THEN
              SUMH = 0.D0
              DO I=1,NWAVES2_BTM
                J2 = INDW2_BTM(I)
                J3 = INDW3_BTM(I)
                IF(J2.NE.0.AND.J3.NE.0) THEN
                  SUMH = SUMH + AH_BTM(IPTFRL,J3)
     &                         *COS(TEMPS*OMEGA_BTM(J2)
     &                              -PH_BTM(IPTFRL,J3))
                ENDIF
              ENDDO
            ELSEIF(TIDALTYPE.EQ.5) THEN
              SUMH = 0.D0
              DO I=1,NWAVES2_BTM
                J2 = INDW2_BTM(I)
                J3 = INDW3_BTM(I)
                IF(J2.NE.0.AND.J3.NE.0) THEN
                  IF(MISC_CONSTID_BTM(J2).NE.'S2  ') THEN
                    SUMH = SUMH + AH_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PH_BTM(IPTFRL,J3))
                  ELSE
                    SUMH = SUMH - AH_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PH_BTM(IPTFRL,J3))
                  ENDIF
                ENDIF
              ENDDO
            ELSEIF(TIDALTYPE.EQ.6) THEN
              SUMH = 0.D0
              DO I=1,NWAVES2_BTM
                J2 = INDW2_BTM(I)
                J3 = INDW3_BTM(I)
                IF(J2.NE.0.AND.J3.NE.0) THEN
                  IF(    MISC_CONSTID_BTM(J2).EQ.'M2  '
     &               .OR.MISC_CONSTID_BTM(J2).EQ.'K2  '
     &               .OR.MISC_CONSTID_BTM(J2).EQ.'M4  ') THEN
                    SUMH = SUMH + AH_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PH_BTM(IPTFRL,J3))
                  ELSE
                    SUMH = SUMH - AH_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PH_BTM(IPTFRL,J3))
                  ENDIF
                ENDIF
              ENDDO
            ENDIF
!
 !           HBTIDE%R(K) = -ZF(NBOR(K)) + CTIDE*SUMH + MSL
!				print *, DZP0
           HBTIDE%R(K) = -ZF(NBOR(K)) + CTIDE*SUMH + MSL+DZP0
!			HBTIDE%R(K) = -ZF(NBOR(K)) + CTIDE*SUMH + MSL
          ENDIF
!         ELSE HBOR TAKEN IN BOUNDARY CONDITIONS FILE
        ENDIF
!
!  VELOCITY IMPOSED: ONE USES THE OUTGOING DIRECTION
!                    PROVIDED BY THE USER.
!
      IF(LIUBOR(K).EQ.KENTU) THEN
!
!       POINTS ON WEIRS HAVE NUMLIQ(K)=0
        IF(NUMLIQ(K).GT.0) THEN
!
!         BEGINNING OF PRESCRIBED VELOCITIES
!
          IF(NUMTIDE%I(K).GT.0) THEN
            IPTFRL=IPTFR-FIRSTTIDE_BTM(NUMTIDE%I(K))+1
     &                  +SHIFTTIDE_BTM(NUMTIDE%I(K))
!
!  TYPE OF TIDE TO MODEL
!  1: REAL TIDE (RECOMMENDED METHODOLOGY)
!  2: ASTRONOMICAL TIDE      (COEF. NEARLY 120)
!  3: MEAN SPRING TIDE       (COEF. NEARLY 95)
!  4: MEAN TIDE              (COEF. NEARLY 70)
!  5: MEAN NEAP TIDE         (COEF. NEARLY 45)
!  6: ASTRONOMICAL NEAP TIDE (COEF. NEARLY 20)
!
            IF(TIDALTYPE.EQ.1) THEN
              SUMU = 0.D0
              SUMV = 0.D0
              DO I=1,NWAVES_BTM
                J = INDW_BTM(I)
                IF(J.NE.0) THEN
                  SUMU = SUMU + FF_BTM(J)*AU_BTM(IPTFRL,I)
     &                         *COS( TEMPS*OMEGA_BTM(J)
     &                               -PU_BTM(IPTFRL,I)+UPV_BTM(J))
                  SUMV = SUMV + FF_BTM(J)*AV_BTM(IPTFRL,I)
     &                         *COS( TEMPS*OMEGA_BTM(J)
     &                               -PV_BTM(IPTFRL,I)+UPV_BTM(J))
                ENDIF
              ENDDO
            ELSEIF(TIDALTYPE.GE.2.AND.TIDALTYPE.LE.4) THEN
              SUMU = 0.D0
              SUMV = 0.D0
              DO I=1,NWAVES2_BTM
                J2 = INDW2_BTM(I)
                J3 = INDW3_BTM(I)
                IF(J2.NE.0.AND.J3.NE.0) THEN
                  SUMU = SUMU + AU_BTM(IPTFRL,J3)
     &                         *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PU_BTM(IPTFRL,J3))
                  SUMV = SUMV + AV_BTM(IPTFRL,J3)
     &                         *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PV_BTM(IPTFRL,J3))
                ENDIF
              ENDDO
            ELSEIF(TIDALTYPE.EQ.5) THEN
              SUMU = 0.D0
              SUMV = 0.D0
              DO I=1,NWAVES2_BTM
                J2 = INDW2_BTM(I)
                J3 = INDW3_BTM(I)
                IF(J2.NE.0.AND.J3.NE.0) THEN
                  IF(MISC_CONSTID_BTM(J2).NE.'S2  ') THEN
                    SUMU = SUMU + AU_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PU_BTM(IPTFRL,J3))
                    SUMV = SUMV + AV_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PV_BTM(IPTFRL,J3))
                  ELSE
                    SUMU = SUMU - AU_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PU_BTM(IPTFRL,J3))
                    SUMV = SUMV - AV_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PV_BTM(IPTFRL,J3))
                  ENDIF
                ENDIF
              ENDDO
            ELSEIF(TIDALTYPE.EQ.6) THEN
              SUMU = 0.D0
              SUMV = 0.D0
              DO I=1,NWAVES2_BTM
                J2 = INDW2_BTM(I)
                J3 = INDW3_BTM(I)
                IF(J2.NE.0.AND.J3.NE.0) THEN
                  IF(    MISC_CONSTID_BTM(J2).EQ.'M2  '
     &               .OR.MISC_CONSTID_BTM(J2).EQ.'K2  '
     &               .OR.MISC_CONSTID_BTM(J2).EQ.'M4  ') THEN
                    SUMU = SUMU + AU_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PU_BTM(IPTFRL,J3))
                    SUMV = SUMV + AV_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PV_BTM(IPTFRL,J3))
                  ELSE
                    SUMU = SUMU - AU_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PU_BTM(IPTFRL,J3))
                    SUMV = SUMV - AV_BTM(IPTFRL,J3)
     &                           *COS(TEMPS*OMEGA_BTM(J2)
     &                                -PV_BTM(IPTFRL,J3))
                  ENDIF
                ENDIF
              ENDDO
            ENDIF
!
            UBTIDE%R(K) = CTIDEV*SUMU
            VBTIDE%R(K) = CTIDEV*SUMV
          ENDIF
        ENDIF
      ENDIF
!
      ENDDO
!
!-----------------------------------------------------------------------
!
      RETURN
      END