New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 15500 for NEMO/branches/UKMO – NEMO

Changeset 15500 for NEMO/branches/UKMO


Ignore:
Timestamp:
2021-11-12T19:02:10+01:00 (3 years ago)
Author:
hadjt
Message:

diaharm_fast.F90

Found an important bug. it wasn't set up for monthly cycles, so was only reseting the "seconds of the day" count once a month. Therefore, the v0tide was introducing a jump every day, so was fitting poorly.

It is still not working properly, as the amplitudes output are too high, and the phase maps are not correct.

Location:
NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/DIA/diaharm_fast.F90

    r15491 r15500  
    134134      INTEGER  :: jh, i1, i2, jgrid 
    135135      INTEGER  :: j2d, j3d 
    136       REAL(WP) :: sec2start 
     136      REAL(WP) :: sec2start,sec2start_old 
    137137      CHARACTER (len=40) :: tmp_name 
    138138      !!-------------------------------------------------------------------- 
     
    144144 
    145145      IF ( ln_diaharm_update_nodal_daily ) THEN 
    146          IF (MOD(kt,nint(86400./rdt)) == 0) THEN 
     146         !IF (MOD(kt,nint(86400./rdt)) == 0) THEN 
     147 
     148 
     149         IF( nsec_day == NINT(0.5_wp * rdt) .OR. kt == nit000 ) THEN       
    147150            DO jh = 1, nb_ana 
     151               !JT anau(jh) = 3.141579*utide ( ntide_sub(jh) )/180. 
     152               !JT anav(jh) = 3.141579*v0tide( ntide_sub(jh) )/180. 
    148153               anau(jh) = utide ( ntide_sub(jh) ) 
    149154               anav(jh) = v0tide( ntide_sub(jh) ) 
     
    194199          c(1) = 1.0 
    195200 
    196           sec2start = nint( (fjulday-fjulday_startharm)*86400._wp )  
     201          sec2start_old = nint( (fjulday-fjulday_startharm)*86400._wp )  
     202          sec2start = nsec_day - NINT(0.5_wp * rdt) 
    197203          !IF(lwp) WRITE(numout,*) "ztime NEW", kt, sec2start, fjulday_startharm 
    198204 
     
    200206             c(2*jh  ) = anaf(jh)*cos( sec2start*om_tide(jh) + anau(jh) + anav(jh) ) 
    201207             c(2*jh+1) = anaf(jh)*sin( sec2start*om_tide(jh) + anau(jh) + anav(jh) ) 
     208              
     209             IF(lwp) WRITE(numout,*) 'diaharm_fast: analwave,',kt,tname(jh),sec2start,sec2start/3600.,sec2start_old,sec2start_old/3600,c(2*jh),c(2*jh+1),om_tide(jh),anau(jh),anav(jh) 
    202210          ENDDO  
    203211 
     
    378386      lk_diaharm_3D    = .TRUE.   ! to run 3d 
    379387 
     388      ln_diaharm_store = .TRUE. 
     389 
    380390      IF(lwp) WRITE(numout,*) 
    381391      IF(lwp) WRITE(numout,*) 'harm_init : initialization of harmonic analysis of tides' 
     
    449459 
    450460      ! JT 
    451  
    452461 
    453462 
     
    622631 
    623632                fjulday_startharm=fjulday !Set this at very start and store 
     633                !JT this is a mistake - only works on daily cycles, should use fjulnsec_dayday 
    624634 
    625635                IF (lwp) THEN 
     
    629639                   WRITE(numout,*) 'ANA U', anau 
    630640                   WRITE(numout,*) 'ANA V', anav 
    631                    WRITE(numout,*) fjulday_startharm 
     641                   WRITE(numout,*) 'fjulday',fjulday 
     642                   WRITE(numout,*) 'fjulday_startharm',fjulday_startharm 
     643                   WRITE(numout,*) 'nsec_day',nsec_day 
     644                   WRITE(numout,*) 'kt',kt 
    632645                   WRITE(numout,*) '--------------------------' 
    633646                ENDIF 
     
    779792             IF( iom_use(TRIM(tmp_name)) )  THEN 
    780793                IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name),'; shape = ', SHAPE(h_out2D) 
     794                IF(lwp) WRITE(numout,*) "harm_ana_out_names", tmp_name,tname(jh),' ',om_tide(jh), (2*rpi/3600.)/om_tide(jh),"hr" 
    781795                CALL iom_put( TRIM(tmp_name), h_out2D(:,:) ) 
    782796             ELSE 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/SBC/tide_mod.F90

    r15490 r15500  
    2121   PUBLIC   tide_harmo       ! called by tideini and diaharm modules 
    2222   PUBLIC   tide_init_Wave   ! called by tideini and diaharm modules 
     23   PUBLIC   tide_init_calendar_options   ! called by tideini and diaharm modules 
    2324 
    2425   ! davbyr: increase maximum number of harmonics from 19 to 34 
     
    4041   REAL(wp) ::   sh_I, sh_x1ra, sh_N                       ! 
    4142 
     43 
     44   !JT origin angles 
     45   REAL(wp) ::   sh_T_o, sh_s_o, sh_h_o, sh_p_o, sh_p1_o, sh_N_o                ! astronomic angles 
     46   !REAL(wp) ::   sh_xi_o, sh_nu_o, sh_nuprim_o, sh_nusec_o, sh_R_o   ! 
     47   !REAL(wp) ::   sh_I_o, sh_x1ra_o                    ! 
     48   !JT origin angles 
     49 
    4250   !!JT 
    4351   INTEGER(KIND=8)  ::  days_since_origin 
     
    6371 
    6472 
    65    SUBROUTINE tide_harmo( pomega, pvt, put , pcor, ktide ,kc) 
    66  
    67       !! Externally called by sbctide.F90/sbc_tide 
    68       !! Externally named: omega_tide, v0tide, utide, ftide, ntide, nb_harmo 
    69       !!---------------------------------------------------------------------- 
    70       !!---------------------------------------------------------------------- 
    71       INTEGER , DIMENSION(kc), INTENT(in ) ::   ktide            ! Indice of tidal constituents 
    72       INTEGER                , INTENT(in ) ::   kc               ! Total number of tidal constituents 
    73       REAL(wp), DIMENSION(kc), INTENT(out) ::   pomega           ! pulsation in radians/s 
    74       REAL(wp), DIMENSION(kc), INTENT(out) ::   pvt, put, pcor   ! 
    75       !!---------------------------------------------------------------------- 
    76       ! 
     73   SUBROUTINE tide_init_calendar_options 
    7774 
    7875      INTEGER                              ::   ios 
     
    143140      ENDIF 
    144141 
     142      IF ( ln_tide_compress   )  CALL astronomic_angle_origin 
     143 
     144   END SUBROUTINE tide_init_calendar_options 
     145 
     146 
     147   SUBROUTINE tide_harmo( pomega, pvt, put , pcor, ktide ,kc) 
     148 
     149      !! Externally called by sbctide.F90/sbc_tide 
     150      !! Externally named: omega_tide, v0tide, utide, ftide, ntide, nb_harmo 
     151      !!---------------------------------------------------------------------- 
     152      !!---------------------------------------------------------------------- 
     153      INTEGER , DIMENSION(kc), INTENT(in ) ::   ktide            ! Indice of tidal constituents 
     154      INTEGER                , INTENT(in ) ::   kc               ! Total number of tidal constituents 
     155      REAL(wp), DIMENSION(kc), INTENT(out) ::   pomega           ! pulsation in radians/s 
     156      REAL(wp), DIMENSION(kc), INTENT(out) ::   pvt, put, pcor   ! 
     157      !!---------------------------------------------------------------------- 
     158      ! 
     159 
     160!      INTEGER                              ::   ios 
     161 
     162 
     163!      ln_tide_drift = .FALSE. 
     164!      ln_tide_compress = .FALSE. 
     165 
     166!      NAMELIST/nam_tides360/ ln_tide_drift,ln_tide_compress,ln_astro_verbose,& 
     167!        & nn_tide_orig_yr,nn_tide_orig_mn,nn_tide_orig_dy 
     168 
     169!      ! read in Namelist.  
     170!      !!---------------------------------------------------------------------- 
     171!      ! 
     172!      REWIND ( numnam_ref )              ! Read Namelist nam_diatmb in referdiatmbence namelist : TMB diagnostics 
     173!      READ   ( numnam_ref, nam_tides360, IOSTAT=ios, ERR= 901 ) 
     174!901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tides360 in reference namelist' ) 
     175 
     176!      REWIND( numnam_cfg )              ! Namelist nam_diatmb in configuration namelist  TMB diagnostics 
     177!      READ  ( numnam_cfg, nam_tides360, IOSTAT = ios, ERR = 902 ) 
     178!902   IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_tides360 in configuration namelist' ) 
     179!      IF(lwm) WRITE ( numond, nam_tides360 ) 
     180 
     181 
     182!      IF( lwp ) THEN 
     183!        WRITE(numout,*) " " 
     184!        WRITE(numout,*) "tide_harmo: nam_tides360 - 360 day tides " 
     185!        WRITE(numout,*) "~~~~~~~~~~~~~~~~~~~~~" 
     186!        WRITE(numout,*) "       tides360: allow tides to drift through year: ln_tide_drift = ",ln_tide_drift 
     187!        WRITE(numout,*) "       tides360: Compress tides, so around a 360 day year: ln_tide_compress = ",ln_tide_compress 
     188!        WRITE(numout,*) "       tides360:           USE ln_tide_compress  WITH CARE. INCOMPLETE." 
     189!        WRITE(numout,*) "       tides360: Increase output verbosity: ln_astro_verbose = ",ln_astro_verbose 
     190!        !WRITE(numout,*) "       tides360: Calculate time between origin and gregorian and 360 manually: ln_tide_drift_time_cont_manual = ",ln_tide_drift_time_cont_manual 
     191!        WRITE(numout,*) "       tides360: 360 day origin date year: nn_tide_orig_yr = ",nn_tide_orig_yr 
     192!        WRITE(numout,*) "       tides360: 360 day origin date month: nn_tide_orig_mn = ",nn_tide_orig_mn 
     193!        WRITE(numout,*) "       tides360: 360 day origin date day: nn_tide_orig_dy = ",nn_tide_orig_dy 
     194!        WRITE(numout,*) " " 
     195!      ENDIF 
     196 
     197!  
     198!      IF( nleapy == 30 ) THEN 
     199!          IF ( ln_tide_drift .AND. ln_tide_compress ) THEN 
     200!              CALL ctl_stop( 'tide_harmo: nam_tides360: if 360 day calendar ln_tide_drift and ln_tide_compress cannot be true' ) 
     201!          ENDIF 
     202!           
     203 
     204!          IF ( ln_tide_drift   ) THEN 
     205!              WRITE(numout,*) "       tides360: Tides continuous so equinoctal tides drift through the year," 
     206!              WRITE(numout,*) "                 as the S2-K2 beating occurs 5 days later every year." 
     207!          ENDIF 
     208 
     209!          IF ( ln_tide_compress   ) THEN 
     210!              WRITE(numout,*) "       tides360: The Tropical Year (and so some tidal periods) are compressed," 
     211!              WRITE(numout,*) "                 so the tides repeat with an annual cycle, so the " 
     212!              WRITE(numout,*) "                 the S2-K2 beating is fixed relative to the calendar, but the " 
     213!              WRITE(numout,*) "                 M2 period varies slightly." 
     214!              WRITE(numout,*) "                 Use with care, as this requires more work." 
     215!          ENDIF 
     216 
     217!          IF ( ( .NOT. ln_tide_drift  ) .AND. ( .NOT. ln_tide_compress ) ) THEN 
     218!              WRITE(numout,*) "       tides360: Use the default NEMO tide code, where the tides are reset " 
     219!              WRITE(numout,*) "                 at the beginning of each month, leading to a slight discontinuity" 
     220!              WRITE(numout,*) "                 in the tides, and making tidal analysis difficult." 
     221!          ENDIF 
     222 
     223!      ELSE         
     224!          WRITE(numout,*) "       tides360: Gregorian calendar so using standard tides" 
     225!      ENDIF 
     226     
    145227      CALL astronomic_angle 
    146228      CALL tide_pulse( pomega, ktide ,kc ) 
    147229      CALL tide_vuf  ( pvt, put, pcor, ktide ,kc ) 
     230 
    148231      ! 
    149232   END SUBROUTINE tide_harmo 
     
    263346      INTEGER  ::  init_doy_inc_l,yg_is_leap_mod,doy_grg 
    264347      INTEGER,DIMENSION(12) ::  idayt, idays 
    265       INTEGER  ::   inc, ji 
    266       INTEGER  ::   ios 
    267  
    268  
    269       INTEGER  ::   yr_grg_2, mn_grg_2, dy_grg_2 
    270       REAL(wp) ::   sec_grg_2 
    271       REAL(wp) ::   fjulday_org       !: current julian day  
     348      !INTEGER  ::    ji 
     349 
     350      !REAL(wp) ::   fjulday_org       !: current julian day  
    272351      ! REAL(wp) ::   days_since_origin_ymds2ju 
    273352      INTEGER(KIND=8) ::   days_since_origin_ymds2ju_int 
    274353 
    275       REAL(wp) ::   current_one_year 
    276       REAL(wp) ::   tmpju 
    277354 
    278355 
     
    554631 
    555632         
    556         IF (ln_tide_compress) THEN         
    557             yr_wrk = nyear 
    558             mn_wrk = nmonth 
    559             dy_wrk = nday 
    560         ENDIF 
     633        !IF (ln_tide_compress) THEN         
     634        !    yr_wrk = nyear 
     635        !    mn_wrk = nmonth 
     636        !    dy_wrk = nday 
     637        !ENDIF 
    561638 
    562639      ELSE 
     
    671748 
    672749 
     750 
     751 
     752 
     753 
     754   SUBROUTINE astronomic_angle_origin 
     755      !!---------------------------------------------------------------------- 
     756      !!  tj is time elapsed since 1st January 1900, 0 hour, counted in julian 
     757      !!  century (e.g. time in days divide by 36525) 
     758      !!---------------------------------------------------------------------- 
     759      REAL(wp) ::   cosI, p, q, t2, t4, sin2I, s2, tgI2, P1, sh_tgn2, at1, at2 
     760      REAL(wp) ::   zqy , zsy, zday, zdj, zhfrac 
     761 
     762       
     763     
     764    
     765 
     766    ! New variables defined for new code 
     767      INTEGER  ::   yr_wrk,mn_wrk,dy_wrk            !JT 
     768 
     769     
     770 
     771      ! for gregorian calendars, work with the model gregorian dates 
     772      yr_wrk = nn_tide_orig_yr 
     773      mn_wrk = nn_tide_orig_mn 
     774      dy_wrk = nn_tide_orig_dy 
     775 
     776 
     777      ! 
     778      zqy = AINT( (yr_wrk-1901.)/4. )        ! leap years since 1901 
     779      zsy = yr_wrk - 1900.                   ! years since 1900 
     780      ! 
     781      zdj  = dayjul( yr_wrk, mn_wrk, dy_wrk )  ! day number of year 
     782      zday = zdj + zqy - 1.                 ! day number of year + No of leap yrs 
     783                                            ! i.e. what would doy if every year = 365 day?? 
     784      ! 
     785      zhfrac = nsec_day / 3600.             ! The seconds of the day/3600 
     786 
     787        
     788      ! 
     789      !---------------------------------------------------------------------- 
     790      !  Sh_n Longitude of ascending lunar node 
     791      !---------------------------------------------------------------------- 
     792      sh_N_o=(259.1560564-19.328185764*zsy-.0529539336*zday-.0022064139*zhfrac)*rad 
     793      !---------------------------------------------------------------------- 
     794      ! T mean solar angle (Greenwhich time) 
     795      !---------------------------------------------------------------------- 
     796      sh_T_o=(180.+zhfrac*(360./24.))*rad 
     797      !---------------------------------------------------------------------- 
     798      ! h mean solar Longitude 
     799      !---------------------------------------------------------------------- 
     800      sh_h_o=(280.1895014-.238724988*zsy+.9856473288*zday+.0410686387*zhfrac)*rad 
     801      !---------------------------------------------------------------------- 
     802      ! s mean lunar Longitude 
     803      !---------------------------------------------------------------------- 
     804      sh_s_o=(277.0256206+129.38482032*zsy+13.176396768*zday+.549016532*zhfrac)*rad 
     805      !---------------------------------------------------------------------- 
     806      ! p1 Longitude of solar perigee 
     807      !---------------------------------------------------------------------- 
     808      sh_p1_o=(281.2208569+.01717836*zsy+.000047064*zday+.000001961*zhfrac)*rad 
     809      !---------------------------------------------------------------------- 
     810      ! p Longitude of lunar perigee 
     811      !---------------------------------------------------------------------- 
     812      sh_p_o=(334.3837214+40.66246584*zsy+.111404016*zday+.004641834*zhfrac)*rad 
     813 
     814 
     815 
     816      IF(ln_astro_verbose .AND. lwp) THEN 
     817          WRITE(numout,*) 
     818          WRITE(numout,*) 'tide_mod_astro_ang_orig,yr_wrk,mn_wrk,dy_wrk,nsec_day,=',yr_wrk,mn_wrk,dy_wrk,nsec_day 
     819          WRITE(numout,*) 'tide_mod_astro_ang_orig,sh_N_o,sh_T_o,sh_h_o,sh_s_o,sh_p1_o,sh_p_o,', sh_N_o,sh_T_o,sh_h_o,sh_s_o,sh_p1_o,sh_p_o 
     820          WRITE(numout,*) 'tide_mod_astro_ang_orig,zqy ,zdj,zsy,zday,zhfrac,rad,', zqy ,zdj,zsy,zday,zhfrac,rad 
     821 
     822          WRITE(numout,*) '~~~~~~~~~~~~~~ ' 
     823      ENDIF 
     824 
     825 
     826 
     827      sh_N_o = MOD( sh_N_o ,2*rpi ) 
     828      sh_s_o = MOD( sh_s_o ,2*rpi ) 
     829      sh_h_o = MOD( sh_h_o, 2*rpi ) 
     830      sh_p_o = MOD( sh_p_o, 2*rpi ) 
     831      sh_p1_o= MOD( sh_p1_o,2*rpi ) 
     832 
     833 
     834!      cosI = 0.913694997 -0.035692561 *cos(sh_N_o) 
     835! 
     836! 
     837! 
     838!!      REAL(wp) ::   cosI, p, q, t2, t4, sin2I, s2, tgI2, P1, sh_tgn2, at1, at2 
     839!!      REAL(wp) ::   zqy , zsy, zday, zdj, zhfrac 
     840! 
     841! 
     842!      sh_I_o = ACOS( cosI ) 
     843! 
     844!      sin2I   = sin(sh_I_o) 
     845!      sh_tgn2 = tan(sh_N_o/2.0) 
     846! 
     847!      at1=atan(1.01883*sh_tgn2) 
     848!      at2=atan(0.64412*sh_tgn2) 
     849! 
     850!      sh_xi_o=-at1-at2+sh_N 
     851! 
     852!      IF( sh_N_o > rpi )   sh_xi_o=sh_xi_o-2.0*rpi 
     853! 
     854!      sh_nu_o = at1 - at2 
     855! 
     856!      !---------------------------------------------------------------------- 
     857!      ! For constituents l2 k1 k2 
     858!      !---------------------------------------------------------------------- 
     859! 
     860!      tgI2 = tan(sh_I_o/2.0) 
     861!      P1   = sh_p_o-sh_xi_o 
     862! 
     863!      t2 = tgI2*tgI2 
     864!      t4 = t2*t2 
     865!      sh_x1ra_o = sqrt( 1.0-12.0*t2*cos(2.0*P1)+36.0*t4 ) 
     866! 
     867!      p = sin(2.0*P1) 
     868!      q = 1.0/(6.0*t2)-cos(2.0*P1) 
     869!      sh_R = atan(p/q) 
     870! 
     871!      p = sin(2.0*sh_I)*sin(sh_nu) 
     872!      q = sin(2.0*sh_I)*cos(sh_nu)+0.3347 
     873!      sh_nuprim_o = atan(p/q) 
     874! 
     875!      s2 = sin(sh_I_o)*sin(sh_I_o) 
     876!      p  = s2*sin(2.0*sh_nu_o) 
     877!      q  = s2*cos(2.0*sh_nu_o)+0.0727 
     878!      sh_nusec_o = 0.5*atan(p/q) 
     879 
     880 
     881 
     882      ! 
     883   END SUBROUTINE astronomic_angle_origin 
     884 
     885 
     886 
     887 
     888 
     889 
     890 
     891 
     892 
     893 
     894 
     895 
     896 
     897 
     898 
    673899   SUBROUTINE tide_pulse( pomega, ktide ,kc ) 
    674900      !!---------------------------------------------------------------------- 
     
    763989 
    764990 
    765         !offset(1) = 0.10789890_wp 
    766         !offset(2) = 1.10897897_wp 
    767         !offset(3) = 2.11005903_wp 
    768         !offset(4) = 0.00000000_wp 
    769         !offset(5) = 3.47632710_wp 
    770         !offset(6) = 0.16751976_wp 
    771         !offset(7) = -0.05503165_wp 
    772         !offset(8) = 0.94604842_wp 
    773         !offset(9) = 6.10534877_wp 
    774         !offset(10) = 0.21579780_wp 
    775         !offset(11) = 0.00000000_wp 
    776         !offset(12) = 0.00000000_wp 
    777         !offset(13) = 0.00000000_wp 
    778         !offset(14) = 0.00000000_wp 
    779         !offset(15) = 3.14159265_wp 
    780         !offset(16) = 0.21833313_wp 
    781         !offset(17) = 5.50043837_wp 
    782         !offset(18) = 2.24841149_wp 
    783         !offset(19) = 0.01800173_wp 
    784  
    785         !v0linearintercept(1) = 0.11044027_wp 
    786         !v0linearintercept(2) = 1.11152799_wp 
    787         !v0linearintercept(3) = 2.11261570_wp 
    788         !v0linearintercept(4) = 0.00000000_wp 
    789         !v0linearintercept(5) = 3.49727335_wp 
    790         !v0linearintercept(6) = 0.17784035_wp 
    791         !v0linearintercept(7) = 6.21578523_wp 
    792         !v0linearintercept(8) = 0.93368764_wp 
    793         !v0linearintercept(9) = 6.10534496_wp 
    794         !v0linearintercept(10) = 0.22088055_wp 
    795         !v0linearintercept(11) = 0.00000000_wp 
    796         !v0linearintercept(12) = 0.00000000_wp 
    797         !v0linearintercept(13) = 0.00000000_wp 
    798         !v0linearintercept(14) = 0.00000000_wp 
    799         !v0linearintercept(15) = 3.14159265_wp 
    800  
    801         !v0linearintercept(1) = v0linearintercept(1) - 0.000000_wp 
    802         !v0linearintercept(2) = v0linearintercept(2) - 0.000000_wp 
    803         !v0linearintercept(3) = v0linearintercept(3) - 0_wp 
    804         !v0linearintercept(4) = v0linearintercept(4) - 0.165795_wp 
    805         !v0linearintercept(5) = v0linearintercept(5) + 2.821252_wp 
    806         !v0linearintercept(6) = v0linearintercept(6) + 0.479504_wp 
    807         !v0linearintercept(7) = v0linearintercept(7) - 2.175621_wp 
    808         !v0linearintercept(8) = v0linearintercept(8) + 1.900267_wp 
    809         !v0linearintercept(9) = v0linearintercept(9) + 0.107633_wp 
    810         !v0linearintercept(10) = v0linearintercept(10) - 0.000000_wp 
    811         !v0linearintercept(11) = v0linearintercept(11) - 0.000000_wp 
    812         !v0linearintercept(12) = v0linearintercept(12) - 0.225730_wp 
    813         !v0linearintercept(13) = v0linearintercept(13) - 0.238641_wp 
    814         !v0linearintercept(14) = v0linearintercept(14) - 3.005851_wp 
    815         !v0linearintercept(15) = v0linearintercept(15) - 0.000000_wp 
    816  
    817         !v0linearintercept(1) =   0.11044026999999999_wp 
    818         !v0linearintercept(2) =   1.11152798999999990_wp 
    819         !v0linearintercept(3) =   2.11261570000000010_wp 
    820         !v0linearintercept(4) =  -0.16579500000000000_wp 
    821         !v0linearintercept(5) =   6.31852534999999980_wp 
    822         !v0linearintercept(6) =   0.65734435000000002_wp 
    823         !v0linearintercept(7) =   4.04016423000000020_wp 
    824         !v0linearintercept(8) =   2.83395464000000000_wp 
    825         !v0linearintercept(9) =   6.21297795999999990_wp 
    826         !v0linearintercept(10) =  0.22088055000000001_wp 
    827         !v0linearintercept(11) =  0.00000000000000000_wp 
    828         !v0linearintercept(12) = -0.22572999999999999_wp 
    829         !v0linearintercept(13) = -0.23864099999999999_wp 
    830         !v0linearintercept(14) = -3.00585099999999980_wp 
    831         !v0linearintercept(15) =  3.14159265000000020_wp 
    832  
    833         v0linearintercept( 1) =   0.2208805500_wp   -  (rpi* 68.0_wp/180.0_wp) !   M2  1 
    834         v0linearintercept( 2) =   3.1186126191_wp  !   N2  2 
    835         v0linearintercept( 3) =   0.9305155436_wp  !  2N2  3 
    836         v0linearintercept( 4) =   0.0194858941_wp  !   S2  4 
    837         v0linearintercept( 5) =  -2.5213114949_wp  !   K2  5 
    838         v0linearintercept( 6) =   6.5970532125_wp  !   K1  6 
    839         v0linearintercept( 7) =   1.1115279900_wp  !   O1  7 
    840         v0linearintercept( 8) =   0.1104402700_wp  !   Q1  8 
    841         !     v0linearintercept( 9) =   4.2269096542_wp  !   P1  9 
    842         !v0linearintercept( 9) =  -2.0351042402_wp  !   P1  9  compress3 
    843         !v0linearintercept( 9) =  -2.0351042402_wp  - 2.6179938779914944 !   P1  9  compress4 
    844  
    845         v0linearintercept( 9) =   rpi* 345.0_wp/180.0_wp -  (rpi* 140.0_wp/180.0_wp) !   P1  9  compress4 
    846  
    847         v0linearintercept(10) =   3.1415926500_wp  !   M4 10 
    848         v0linearintercept(11) =   0.0000000000_wp  !   Mf 11 
    849         v0linearintercept(12) =   0.0000000000_wp  !   Mm 12 
    850         v0linearintercept(13) =   0.0000000000_wp  ! Msqm 13 
    851         v0linearintercept(14) =   0.0000000000_wp  !  Mtm 14 
    852         v0linearintercept(15) =  -0.0230244122_wp  !   S1 15 
    853         v0linearintercept(16) =   4.2565208698_wp  !  MU2 16 
    854         v0linearintercept(17) =   6.5001767059_wp  !  NU2 17 
    855         v0linearintercept(18) =   0.0000000000_wp    -  (rpi* 113.0_wp/180.0_wp) !   L2 18 
    856         v0linearintercept(19) =   0.0092971808_wp  !   T2 19  + rpi/2. 
    857  
    858         !v0linearintercept(1) = v0linearintercept(1) - 0.034975_wp    ! M2 
    859         !v0linearintercept(2) = v0linearintercept(2) - 0.030244_wp    ! N2 
    860         !v0linearintercept(3) = v0linearintercept(3) - 0.036046_wp    ! 2N2 
    861         !v0linearintercept(4) = v0linearintercept(4) + 0.002092_wp    ! S2 
    862         !v0linearintercept(5) = v0linearintercept(5) - 0.273826_wp    ! K2 
    863         !v0linearintercept(6) = v0linearintercept(6) - 0.144677_wp    ! K1 
    864         !v0linearintercept(7) = v0linearintercept(7) + 0.031938_wp    ! O1 
    865         !v0linearintercept(8) = v0linearintercept(8) - 0.812030_wp    ! Q1 
    866         !v0linearintercept(9) = v0linearintercept(9) + 2.109118_wp    ! P1 
    867         !v0linearintercept(10) = v0linearintercept(10) + 0.070021_wp    ! M4 
    868         !v0linearintercept(11) = v0linearintercept(11) - 0.000000_wp    ! Mf 
    869         !v0linearintercept(12) = v0linearintercept(12) - 0.000000_wp    ! Mm 
    870         !v0linearintercept(13) = v0linearintercept(13) - 0.000000_wp    ! Msqm 
    871         !v0linearintercept(14) = v0linearintercept(14) - 0.000000_wp    ! Mtm 
    872         !v0linearintercept(15) = v0linearintercept(15) - 0.035676_wp    ! S1 
    873         !v0linearintercept(16) = v0linearintercept(16) + 0.007598_wp    ! MU2 
    874         !v0linearintercept(17) = v0linearintercept(17) - 0.043060_wp    ! NU2 
    875         !v0linearintercept(18) = v0linearintercept(18) + 0.023561_wp    ! L2 
    876         !v0linearintercept(19) = v0linearintercept(19) + 0.025624_wp    ! T2 
    877  
    878         v0linearintercept(1) = v0linearintercept(1) - (rpi*2.003909_wp/180.0_wp)    ! M2 
    879         v0linearintercept(2) = v0linearintercept(2) - (rpi*1.732874_wp/180.0_wp)    ! N2 
    880         v0linearintercept(3) = v0linearintercept(3) - (rpi*2.065265_wp/180.0_wp)    ! 2N2 
    881         v0linearintercept(4) = v0linearintercept(4) + (rpi*0.119842_wp/180.0_wp)    ! S2 
    882         v0linearintercept(5) = v0linearintercept(5) - (rpi*15.689068_wp/180.0_wp)    ! K2 
    883         v0linearintercept(6) = v0linearintercept(6) - (rpi*8.289390_wp/180.0_wp)    ! K1 
    884         v0linearintercept(7) = v0linearintercept(7) + (rpi*1.829931_wp/180.0_wp)    ! O1 
    885         v0linearintercept(8) = v0linearintercept(8) - (rpi*46.525902_wp/180.0_wp)    ! Q1 
    886         v0linearintercept(9) = v0linearintercept(9) + (rpi*120.843575_wp/180.0_wp)    ! P1 
    887         v0linearintercept(10) = v0linearintercept(10) + (rpi*4.011896_wp/180.0_wp)    ! M4 
    888         v0linearintercept(11) = v0linearintercept(11) - (rpi*0.000000_wp/180.0_wp)    ! Mf 
    889         v0linearintercept(12) = v0linearintercept(12) - (rpi*0.000000_wp/180.0_wp)    ! Mm 
    890         v0linearintercept(13) = v0linearintercept(13) - (rpi*0.000000_wp/180.0_wp)    ! Msqm 
    891         v0linearintercept(14) = v0linearintercept(14) - (rpi*0.000000_wp/180.0_wp)    ! Mtm 
    892         v0linearintercept(15) = v0linearintercept(15) - (rpi*2.044069_wp/180.0_wp)    ! S1 
    893         v0linearintercept(16) = v0linearintercept(16) + (rpi*0.435315_wp/180.0_wp)    ! MU2 
    894         v0linearintercept(17) = v0linearintercept(17) - (rpi*2.467160_wp/180.0_wp)    ! NU2 
    895         v0linearintercept(18) = v0linearintercept(18) + (rpi*1.349939_wp/180.0_wp)    ! L2 
    896         v0linearintercept(19) = v0linearintercept(19) + (rpi*1.468170_wp/180.0_wp)    ! T2 
    897  
    898  
    899         ! wave data. 
    900  
    901         !Wave( 1) = tide(  'M2'     , 0.242297 ,    2   ,  2 , -2 ,  2 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
    902         !Wave( 2) = tide(  'N2'     , 0.046313 ,    2   ,  2 , -3 ,  2 ,  1 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
    903         !Wave( 3) = tide( '2N2'     , 0.006184 ,    2   ,  2 , -4 ,  2 ,  2 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
    904         !Wave( 4) = tide(  'S2'     , 0.113572 ,    2   ,  2 ,  0 ,  0 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,     0   ) 
    905         !Wave( 5) = tide(  'K2'     , 0.030875 ,    2   ,  2 ,  0 ,  2 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   , -2   , 0 ,   235   ) 
    906         !!              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
    907         !Wave( 6) = tide(  'K1'     , 0.142408 ,    1   ,  1 ,  0 ,  1 ,  0 ,  0  ,  -90  ,  0   ,  0   , -1   ,  0   , 0 ,   227   ) 
    908         !Wave( 7) = tide(  'O1'     , 0.101266 ,    1   ,  1 , -2 ,  1 ,  0 ,  0  ,  +90  ,  2   , -1   ,  0   ,  0   , 0 ,    75   ) 
    909         !Wave( 8) = tide(  'Q1'     , 0.019387 ,    1   ,  1 , -3 ,  1 ,  1 ,  0  ,  +90  ,  2   , -1   ,  0   ,  0   , 0 ,    75   ) 
    910         !Wave( 9) = tide(  'P1'     , 0.047129 ,    1   ,  1 ,  0 , -1 ,  0 ,  0  ,  +90  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    ) 
    911         !!              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
    912         !Wave(10) = tide(  'M4'     , 0.000000 ,    4   ,  4 , -4 ,  4 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    1    ) 
    913         !!              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
    914         !Wave(11) = tide(  'Mf'     , 0.042017 ,    0   ,  0 ,  2 ,  0 ,  0 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
    915         !Wave(12) = tide(  'Mm'     , 0.022191 ,    0   ,  0 ,  1 ,  0 , -1 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,   73    ) 
    916         !Wave(13) = tide(  'Msqm'   , 0.000667 ,    0   ,  0 ,  4 , -2 ,  0 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
    917         !Wave(14) = tide(  'Mtm'    , 0.008049 ,    0   ,  0 ,  3 ,  0 , -1 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
    918         !!              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
    919         !Wave(15) = tide(  'S1'     , 0.000000 ,    1   ,  1 ,  0 ,  0 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    )    
    920         !Wave(16) = tide(  'MU2'    , 0.005841 ,    2   ,  2 , -4 ,  4 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,   78    ) 
    921         !Wave(17) = tide(  'NU2'    , 0.009094 ,    2   ,  2 , -3 ,  4 , -1 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,   78    )  
    922         !Wave(18) = tide(  'L2'     , 0.006694 ,    2   ,  2 , -1 ,  2 , -1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,  215    ) 
    923         !Wave(19) = tide(  'T2'     , 0.006614 ,    2   ,  2 ,  0 , -1 ,  0 ,  1  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    ) 
    924  
    925         !name list 
    926         !  clname(1)='Q1' 
    927         !  clname(2)='O1' 
    928         !  clname(3)='P1' 
    929         !  clname(4)='S1' 
    930         !  clname(5)='K1' 
    931         !  clname(6)='2N2' 
    932         !  clname(7)='MU2' 
    933         !  clname(8)='N2' 
    934         !  clname(9)='NU2' 
    935         !  clname(10)='M2' 
    936         !  clname(11)='L2' 
    937         !  clname(12)='T2' 
    938         !  clname(13)='S2' 
    939         !  clname(14)='K2' 
    940         !  clname(15)='M4' 
    941  
    942         ! ktide 8,7,9,15 
    943  
    944         !ktide =  
    945         !8 
    946         !7 
    947         !9 
    948         !15 
    949         !6 
    950         !3 
    951         !16 
    952         !2 
    953         !17 
    954         !1 
    955         !18 
    956         !19 
    957         !4 
    958         !5 
    959         !10 
    960  
    961  
    962  
    963  
    964  
    965  
    966  
    967  
    968  
    969  
    970  
    971  
    972         !NEMO4 
    973  
    974 !        clname(1)='Q1' 
    975 !        clname(2)='O1' 
    976 !        clname(3)='P1' 
    977 !        clname(4)='S1' 
    978 !        clname(5)='K1' 
    979 !        clname(6)='2N2' 
    980 !        clname(7)='MU2' 
    981 !        clname(8)='N2' 
    982 !        clname(9)='NU2' 
    983 !        clname(10)='M2' 
    984 !        clname(11)='L2' 
    985 !        clname(12)='T2' 
    986 !        clname(13)='S2' 
    987 !        clname(14)='K2' 
    988 !        clname(15)='M4' 
    989 !        ktide = [10,9,11,12,8,23,21,15,22,14,18,19,16,17,28] 
    990  
    991  
    992         v0linearintercept( 1) =   0.1104402700_wp  !   Q1  8 
    993         v0linearintercept( 2) =   1.1115279900_wp  !   O1  7 
    994         v0linearintercept( 3) =   rpi* 345.0_wp/180.0_wp -  (rpi* 140.0_wp/180.0_wp) !   P1  9  compress4 
    995         v0linearintercept( 4) =  -0.0230244122_wp  !   S1 15 
    996         v0linearintercept( 5) =   6.5970532125_wp  !   K1  6 
    997         v0linearintercept( 6) =   0.9305155436_wp  !  2N2  3 
    998         v0linearintercept( 7) =   4.2565208698_wp  !  MU2 16 
    999         v0linearintercept( 8) =   3.1186126191_wp  !   N2  2 
    1000         v0linearintercept( 9) =   6.5001767059_wp  !  NU2 17 
    1001         v0linearintercept(10) =   0.2208805500_wp   -  (rpi* 68.0_wp/180.0_wp) !   M2  1 
    1002         v0linearintercept(11) =   0.0000000000_wp    -  (rpi* 113.0_wp/180.0_wp) !   L2 18 
    1003         v0linearintercept(12) =   0.0092971808_wp  !   T2 19  + rpi/2. 
    1004         v0linearintercept(13) =   0.0194858941_wp  !   S2  4 
    1005         v0linearintercept(14) =  -2.5213114949_wp  !   K2  5 
    1006         v0linearintercept(15) =   3.1415926500_wp  !   M4 10 
    1007  
    1008  
    1009  
    1010         v0linearintercept( 1) = v0linearintercept( 1) - (rpi*46.525902_wp/180.0_wp)   ! Q1 
    1011         v0linearintercept( 2) = v0linearintercept( 2) + (rpi*1.829931_wp/180.0_wp)    ! O1 
    1012         v0linearintercept( 3) = v0linearintercept( 3) + (rpi*120.843575_wp/180.0_wp)  ! P1 
    1013         v0linearintercept( 4) = v0linearintercept( 4) - (rpi*2.044069_wp/180.0_wp)    ! S1 
    1014         v0linearintercept( 5) = v0linearintercept( 5) - (rpi*8.289390_wp/180.0_wp)    ! K1 
    1015         v0linearintercept( 6) = v0linearintercept( 6) - (rpi*2.065265_wp/180.0_wp)    ! 2N2 
    1016         v0linearintercept( 7) = v0linearintercept( 7) + (rpi*0.435315_wp/180.0_wp)    ! MU2 
    1017         v0linearintercept( 8) = v0linearintercept( 8) - (rpi*1.732874_wp/180.0_wp)    ! N2 
    1018         v0linearintercept( 9) = v0linearintercept( 9) - (rpi*2.467160_wp/180.0_wp)    ! NU2 
    1019         v0linearintercept(10) = v0linearintercept(10) - (rpi*2.003909_wp/180.0_wp)    ! M2 
    1020         v0linearintercept(11) = v0linearintercept(11) + (rpi*1.349939_wp/180.0_wp)    ! L2 
    1021         v0linearintercept(12) = v0linearintercept(12) + (rpi*1.468170_wp/180.0_wp)    ! T2 
    1022         v0linearintercept(13) = v0linearintercept(13) + (rpi*0.119842_wp/180.0_wp)    ! S2 
    1023         v0linearintercept(14) = v0linearintercept(14) - (rpi*15.689068_wp/180.0_wp)   ! K2 
    1024         v0linearintercept(14) = v0linearintercept(15) + (rpi*4.011896_wp/180.0_wp)    ! M4 
     991!        !offset(1) = 0.10789890_wp 
     992!        !offset(2) = 1.10897897_wp 
     993!        !offset(3) = 2.11005903_wp 
     994!        !offset(4) = 0.00000000_wp 
     995!        !offset(5) = 3.47632710_wp 
     996!        !offset(6) = 0.16751976_wp 
     997!        !offset(7) = -0.05503165_wp 
     998!        !offset(8) = 0.94604842_wp 
     999!        !offset(9) = 6.10534877_wp 
     1000!        !offset(10) = 0.21579780_wp 
     1001!        !offset(11) = 0.00000000_wp 
     1002!        !offset(12) = 0.00000000_wp 
     1003!        !offset(13) = 0.00000000_wp 
     1004!        !offset(14) = 0.00000000_wp 
     1005!        !offset(15) = 3.14159265_wp 
     1006!        !offset(16) = 0.21833313_wp 
     1007!        !offset(17) = 5.50043837_wp 
     1008!        !offset(18) = 2.24841149_wp 
     1009!        !offset(19) = 0.01800173_wp 
     1010 
     1011!        !v0linearintercept(1) = 0.11044027_wp 
     1012!        !v0linearintercept(2) = 1.11152799_wp 
     1013!        !v0linearintercept(3) = 2.11261570_wp 
     1014!        !v0linearintercept(4) = 0.00000000_wp 
     1015!        !v0linearintercept(5) = 3.49727335_wp 
     1016!        !v0linearintercept(6) = 0.17784035_wp 
     1017!        !v0linearintercept(7) = 6.21578523_wp 
     1018!        !v0linearintercept(8) = 0.93368764_wp 
     1019!        !v0linearintercept(9) = 6.10534496_wp 
     1020!        !v0linearintercept(10) = 0.22088055_wp 
     1021!        !v0linearintercept(11) = 0.00000000_wp 
     1022!        !v0linearintercept(12) = 0.00000000_wp 
     1023!        !v0linearintercept(13) = 0.00000000_wp 
     1024!        !v0linearintercept(14) = 0.00000000_wp 
     1025!        !v0linearintercept(15) = 3.14159265_wp 
     1026 
     1027!        !v0linearintercept(1) = v0linearintercept(1) - 0.000000_wp 
     1028!        !v0linearintercept(2) = v0linearintercept(2) - 0.000000_wp 
     1029!        !v0linearintercept(3) = v0linearintercept(3) - 0_wp 
     1030!        !v0linearintercept(4) = v0linearintercept(4) - 0.165795_wp 
     1031!        !v0linearintercept(5) = v0linearintercept(5) + 2.821252_wp 
     1032!        !v0linearintercept(6) = v0linearintercept(6) + 0.479504_wp 
     1033!        !v0linearintercept(7) = v0linearintercept(7) - 2.175621_wp 
     1034!        !v0linearintercept(8) = v0linearintercept(8) + 1.900267_wp 
     1035!        !v0linearintercept(9) = v0linearintercept(9) + 0.107633_wp 
     1036!        !v0linearintercept(10) = v0linearintercept(10) - 0.000000_wp 
     1037!        !v0linearintercept(11) = v0linearintercept(11) - 0.000000_wp 
     1038!        !v0linearintercept(12) = v0linearintercept(12) - 0.225730_wp 
     1039!        !v0linearintercept(13) = v0linearintercept(13) - 0.238641_wp 
     1040!        !v0linearintercept(14) = v0linearintercept(14) - 3.005851_wp 
     1041!        !v0linearintercept(15) = v0linearintercept(15) - 0.000000_wp 
     1042 
     1043!        !v0linearintercept(1) =   0.11044026999999999_wp 
     1044!        !v0linearintercept(2) =   1.11152798999999990_wp 
     1045!        !v0linearintercept(3) =   2.11261570000000010_wp 
     1046!        !v0linearintercept(4) =  -0.16579500000000000_wp 
     1047!        !v0linearintercept(5) =   6.31852534999999980_wp 
     1048!        !v0linearintercept(6) =   0.65734435000000002_wp 
     1049!        !v0linearintercept(7) =   4.04016423000000020_wp 
     1050!        !v0linearintercept(8) =   2.83395464000000000_wp 
     1051!        !v0linearintercept(9) =   6.21297795999999990_wp 
     1052!        !v0linearintercept(10) =  0.22088055000000001_wp 
     1053!        !v0linearintercept(11) =  0.00000000000000000_wp 
     1054!        !v0linearintercept(12) = -0.22572999999999999_wp 
     1055!        !v0linearintercept(13) = -0.23864099999999999_wp 
     1056!        !v0linearintercept(14) = -3.00585099999999980_wp 
     1057!        !v0linearintercept(15) =  3.14159265000000020_wp 
     1058 
     1059!        v0linearintercept( 1) =   0.2208805500_wp   -  (rpi* 68.0_wp/180.0_wp) !   M2  1 
     1060!        v0linearintercept( 2) =   3.1186126191_wp  !   N2  2 
     1061!        v0linearintercept( 3) =   0.9305155436_wp  !  2N2  3 
     1062!        v0linearintercept( 4) =   0.0194858941_wp  !   S2  4 
     1063!        v0linearintercept( 5) =  -2.5213114949_wp  !   K2  5 
     1064!        v0linearintercept( 6) =   6.5970532125_wp  !   K1  6 
     1065!        v0linearintercept( 7) =   1.1115279900_wp  !   O1  7 
     1066!        v0linearintercept( 8) =   0.1104402700_wp  !   Q1  8 
     1067!        !     v0linearintercept( 9) =   4.2269096542_wp  !   P1  9 
     1068!        !v0linearintercept( 9) =  -2.0351042402_wp  !   P1  9  compress3 
     1069!        !v0linearintercept( 9) =  -2.0351042402_wp  - 2.6179938779914944 !   P1  9  compress4 
     1070 
     1071!        v0linearintercept( 9) =   rpi* 345.0_wp/180.0_wp -  (rpi* 140.0_wp/180.0_wp) !   P1  9  compress4 
     1072 
     1073!        v0linearintercept(10) =   3.1415926500_wp  !   M4 10 
     1074!        v0linearintercept(11) =   0.0000000000_wp  !   Mf 11 
     1075!        v0linearintercept(12) =   0.0000000000_wp  !   Mm 12 
     1076!        v0linearintercept(13) =   0.0000000000_wp  ! Msqm 13 
     1077!        v0linearintercept(14) =   0.0000000000_wp  !  Mtm 14 
     1078!        v0linearintercept(15) =  -0.0230244122_wp  !   S1 15 
     1079!        v0linearintercept(16) =   4.2565208698_wp  !  MU2 16 
     1080!        v0linearintercept(17) =   6.5001767059_wp  !  NU2 17 
     1081!        v0linearintercept(18) =   0.0000000000_wp    -  (rpi* 113.0_wp/180.0_wp) !   L2 18 
     1082!        v0linearintercept(19) =   0.0092971808_wp  !   T2 19  + rpi/2. 
     1083 
     1084!        !v0linearintercept(1) = v0linearintercept(1) - 0.034975_wp    ! M2 
     1085!        !v0linearintercept(2) = v0linearintercept(2) - 0.030244_wp    ! N2 
     1086!        !v0linearintercept(3) = v0linearintercept(3) - 0.036046_wp    ! 2N2 
     1087!        !v0linearintercept(4) = v0linearintercept(4) + 0.002092_wp    ! S2 
     1088!        !v0linearintercept(5) = v0linearintercept(5) - 0.273826_wp    ! K2 
     1089!        !v0linearintercept(6) = v0linearintercept(6) - 0.144677_wp    ! K1 
     1090!        !v0linearintercept(7) = v0linearintercept(7) + 0.031938_wp    ! O1 
     1091!        !v0linearintercept(8) = v0linearintercept(8) - 0.812030_wp    ! Q1 
     1092!        !v0linearintercept(9) = v0linearintercept(9) + 2.109118_wp    ! P1 
     1093!        !v0linearintercept(10) = v0linearintercept(10) + 0.070021_wp    ! M4 
     1094!        !v0linearintercept(11) = v0linearintercept(11) - 0.000000_wp    ! Mf 
     1095!        !v0linearintercept(12) = v0linearintercept(12) - 0.000000_wp    ! Mm 
     1096!        !v0linearintercept(13) = v0linearintercept(13) - 0.000000_wp    ! Msqm 
     1097!        !v0linearintercept(14) = v0linearintercept(14) - 0.000000_wp    ! Mtm 
     1098!        !v0linearintercept(15) = v0linearintercept(15) - 0.035676_wp    ! S1 
     1099!        !v0linearintercept(16) = v0linearintercept(16) + 0.007598_wp    ! MU2 
     1100!        !v0linearintercept(17) = v0linearintercept(17) - 0.043060_wp    ! NU2 
     1101!        !v0linearintercept(18) = v0linearintercept(18) + 0.023561_wp    ! L2 
     1102!        !v0linearintercept(19) = v0linearintercept(19) + 0.025624_wp    ! T2 
     1103 
     1104!        v0linearintercept(1) = v0linearintercept(1) - (rpi*2.003909_wp/180.0_wp)    ! M2 
     1105!        v0linearintercept(2) = v0linearintercept(2) - (rpi*1.732874_wp/180.0_wp)    ! N2 
     1106!        v0linearintercept(3) = v0linearintercept(3) - (rpi*2.065265_wp/180.0_wp)    ! 2N2 
     1107!        v0linearintercept(4) = v0linearintercept(4) + (rpi*0.119842_wp/180.0_wp)    ! S2 
     1108!        v0linearintercept(5) = v0linearintercept(5) - (rpi*15.689068_wp/180.0_wp)    ! K2 
     1109!        v0linearintercept(6) = v0linearintercept(6) - (rpi*8.289390_wp/180.0_wp)    ! K1 
     1110!        v0linearintercept(7) = v0linearintercept(7) + (rpi*1.829931_wp/180.0_wp)    ! O1 
     1111!        v0linearintercept(8) = v0linearintercept(8) - (rpi*46.525902_wp/180.0_wp)    ! Q1 
     1112!        v0linearintercept(9) = v0linearintercept(9) + (rpi*120.843575_wp/180.0_wp)    ! P1 
     1113!        v0linearintercept(10) = v0linearintercept(10) + (rpi*4.011896_wp/180.0_wp)    ! M4 
     1114!        v0linearintercept(11) = v0linearintercept(11) - (rpi*0.000000_wp/180.0_wp)    ! Mf 
     1115!        v0linearintercept(12) = v0linearintercept(12) - (rpi*0.000000_wp/180.0_wp)    ! Mm 
     1116!        v0linearintercept(13) = v0linearintercept(13) - (rpi*0.000000_wp/180.0_wp)    ! Msqm 
     1117!        v0linearintercept(14) = v0linearintercept(14) - (rpi*0.000000_wp/180.0_wp)    ! Mtm 
     1118!        v0linearintercept(15) = v0linearintercept(15) - (rpi*2.044069_wp/180.0_wp)    ! S1 
     1119!        v0linearintercept(16) = v0linearintercept(16) + (rpi*0.435315_wp/180.0_wp)    ! MU2 
     1120!        v0linearintercept(17) = v0linearintercept(17) - (rpi*2.467160_wp/180.0_wp)    ! NU2 
     1121!        v0linearintercept(18) = v0linearintercept(18) + (rpi*1.349939_wp/180.0_wp)    ! L2 
     1122!        v0linearintercept(19) = v0linearintercept(19) + (rpi*1.468170_wp/180.0_wp)    ! T2 
     1123 
     1124 
     1125!        ! wave data. 
     1126 
     1127!        !Wave( 1) = tide(  'M2'     , 0.242297 ,    2   ,  2 , -2 ,  2 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     1128!        !Wave( 2) = tide(  'N2'     , 0.046313 ,    2   ,  2 , -3 ,  2 ,  1 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     1129!        !Wave( 3) = tide( '2N2'     , 0.006184 ,    2   ,  2 , -4 ,  2 ,  2 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     1130!        !Wave( 4) = tide(  'S2'     , 0.113572 ,    2   ,  2 ,  0 ,  0 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,     0   ) 
     1131!        !Wave( 5) = tide(  'K2'     , 0.030875 ,    2   ,  2 ,  0 ,  2 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   , -2   , 0 ,   235   ) 
     1132!        !!              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
     1133!        !Wave( 6) = tide(  'K1'     , 0.142408 ,    1   ,  1 ,  0 ,  1 ,  0 ,  0  ,  -90  ,  0   ,  0   , -1   ,  0   , 0 ,   227   ) 
     1134!        !Wave( 7) = tide(  'O1'     , 0.101266 ,    1   ,  1 , -2 ,  1 ,  0 ,  0  ,  +90  ,  2   , -1   ,  0   ,  0   , 0 ,    75   ) 
     1135!        !Wave( 8) = tide(  'Q1'     , 0.019387 ,    1   ,  1 , -3 ,  1 ,  1 ,  0  ,  +90  ,  2   , -1   ,  0   ,  0   , 0 ,    75   ) 
     1136!        !Wave( 9) = tide(  'P1'     , 0.047129 ,    1   ,  1 ,  0 , -1 ,  0 ,  0  ,  +90  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    ) 
     1137!        !!              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
     1138!        !Wave(10) = tide(  'M4'     , 0.000000 ,    4   ,  4 , -4 ,  4 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    1    ) 
     1139!        !!              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
     1140!        !Wave(11) = tide(  'Mf'     , 0.042017 ,    0   ,  0 ,  2 ,  0 ,  0 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
     1141!        !Wave(12) = tide(  'Mm'     , 0.022191 ,    0   ,  0 ,  1 ,  0 , -1 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,   73    ) 
     1142!        !Wave(13) = tide(  'Msqm'   , 0.000667 ,    0   ,  0 ,  4 , -2 ,  0 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
     1143!        !Wave(14) = tide(  'Mtm'    , 0.008049 ,    0   ,  0 ,  3 ,  0 , -1 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
     1144!        !!              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
     1145!        !Wave(15) = tide(  'S1'     , 0.000000 ,    1   ,  1 ,  0 ,  0 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    )    
     1146!        !Wave(16) = tide(  'MU2'    , 0.005841 ,    2   ,  2 , -4 ,  4 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,   78    ) 
     1147!        !Wave(17) = tide(  'NU2'    , 0.009094 ,    2   ,  2 , -3 ,  4 , -1 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,   78    )  
     1148!        !Wave(18) = tide(  'L2'     , 0.006694 ,    2   ,  2 , -1 ,  2 , -1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,  215    ) 
     1149!        !Wave(19) = tide(  'T2'     , 0.006614 ,    2   ,  2 ,  0 , -1 ,  0 ,  1  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    ) 
     1150 
     1151!        !name list 
     1152!        !  clname(1)='Q1' 
     1153!        !  clname(2)='O1' 
     1154!        !  clname(3)='P1' 
     1155!        !  clname(4)='S1' 
     1156!        !  clname(5)='K1' 
     1157!        !  clname(6)='2N2' 
     1158!        !  clname(7)='MU2' 
     1159!        !  clname(8)='N2' 
     1160!        !  clname(9)='NU2' 
     1161!        !  clname(10)='M2' 
     1162!        !  clname(11)='L2' 
     1163!        !  clname(12)='T2' 
     1164!        !  clname(13)='S2' 
     1165!        !  clname(14)='K2' 
     1166!        !  clname(15)='M4' 
     1167 
     1168!        ! ktide 8,7,9,15 
     1169 
     1170!        !ktide =  
     1171!        !8 
     1172!        !7 
     1173!        !9 
     1174!        !15 
     1175!        !6 
     1176!        !3 
     1177!        !16 
     1178!        !2 
     1179!        !17 
     1180!        !1 
     1181!        !18 
     1182!        !19 
     1183!        !4 
     1184!        !5 
     1185!        !10 
     1186 
     1187 
     1188 
     1189 
     1190 
     1191 
     1192 
     1193 
     1194 
     1195 
     1196 
     1197 
     1198!        !NEMO4 
     1199 
     1200!!        clname(1)='Q1' 
     1201!!        clname(2)='O1' 
     1202!!        clname(3)='P1' 
     1203!!        clname(4)='S1' 
     1204!!        clname(5)='K1' 
     1205!!        clname(6)='2N2' 
     1206!!        clname(7)='MU2' 
     1207!!        clname(8)='N2' 
     1208!!        clname(9)='NU2' 
     1209!!        clname(10)='M2' 
     1210!!        clname(11)='L2' 
     1211!!        clname(12)='T2' 
     1212!!        clname(13)='S2' 
     1213!!        clname(14)='K2' 
     1214!!        clname(15)='M4' 
     1215!!        ktide = [10,9,11,12,8,23,21,15,22,14,18,19,16,17,28] 
     1216 
     1217 
     1218!        v0linearintercept( 1) =   0.1104402700_wp  !   Q1  8 
     1219!        v0linearintercept( 2) =   1.1115279900_wp  !   O1  7 
     1220!        v0linearintercept( 3) =   rpi* 345.0_wp/180.0_wp -  (rpi* 140.0_wp/180.0_wp) !   P1  9  compress4 
     1221!        v0linearintercept( 4) =  -0.0230244122_wp  !   S1 15 
     1222!        v0linearintercept( 5) =   6.5970532125_wp  !   K1  6 
     1223!        v0linearintercept( 6) =   0.9305155436_wp  !  2N2  3 
     1224!        v0linearintercept( 7) =   4.2565208698_wp  !  MU2 16 
     1225!        v0linearintercept( 8) =   3.1186126191_wp  !   N2  2 
     1226!        v0linearintercept( 9) =   6.5001767059_wp  !  NU2 17 
     1227!        v0linearintercept(10) =   0.2208805500_wp   -  (rpi* 68.0_wp/180.0_wp) !   M2  1 
     1228!        v0linearintercept(11) =   0.0000000000_wp    -  (rpi* 113.0_wp/180.0_wp) !   L2 18 
     1229!        v0linearintercept(12) =   0.0092971808_wp  !   T2 19  + rpi/2. 
     1230!        v0linearintercept(13) =   0.0194858941_wp  !   S2  4 
     1231!        v0linearintercept(14) =  -2.5213114949_wp  !   K2  5 
     1232!        v0linearintercept(15) =   3.1415926500_wp  !   M4 10 
     1233 
     1234 
     1235 
     1236!        v0linearintercept( 1) = v0linearintercept( 1) - (rpi*46.525902_wp/180.0_wp)   ! Q1 
     1237!        v0linearintercept( 2) = v0linearintercept( 2) + (rpi*1.829931_wp/180.0_wp)    ! O1 
     1238!        v0linearintercept( 3) = v0linearintercept( 3) + (rpi*120.843575_wp/180.0_wp)  ! P1 
     1239!        v0linearintercept( 4) = v0linearintercept( 4) - (rpi*2.044069_wp/180.0_wp)    ! S1 
     1240!        v0linearintercept( 5) = v0linearintercept( 5) - (rpi*8.289390_wp/180.0_wp)    ! K1 
     1241!        v0linearintercept( 6) = v0linearintercept( 6) - (rpi*2.065265_wp/180.0_wp)    ! 2N2 
     1242!        v0linearintercept( 7) = v0linearintercept( 7) + (rpi*0.435315_wp/180.0_wp)    ! MU2 
     1243!        v0linearintercept( 8) = v0linearintercept( 8) - (rpi*1.732874_wp/180.0_wp)    ! N2 
     1244!        v0linearintercept( 9) = v0linearintercept( 9) - (rpi*2.467160_wp/180.0_wp)    ! NU2 
     1245!        v0linearintercept(10) = v0linearintercept(10) - (rpi*2.003909_wp/180.0_wp)    ! M2 
     1246!        v0linearintercept(11) = v0linearintercept(11) + (rpi*1.349939_wp/180.0_wp)    ! L2 
     1247!        v0linearintercept(12) = v0linearintercept(12) + (rpi*1.468170_wp/180.0_wp)    ! T2 
     1248!        v0linearintercept(13) = v0linearintercept(13) + (rpi*0.119842_wp/180.0_wp)    ! S2 
     1249!        v0linearintercept(14) = v0linearintercept(14) - (rpi*15.689068_wp/180.0_wp)   ! K2 
     1250!        v0linearintercept(14) = v0linearintercept(15) + (rpi*4.011896_wp/180.0_wp)    ! M4 
    10251251 
    10261252 
     
    10501276         IF ( ln_tide_compress ) THEN 
    10511277 
    1052              pvt(jh) = mod(  ( (v0linearslope(jh)*days_since_origin) + v0linearintercept(  ktide(jh)  ) ),  2*rpi)-(2*rpi) 
     1278            v0linearintercept(jh) = sh_T_o * Wave( ktide(jh) )%nT    & 
     1279                &    + sh_s_o * Wave( ktide(jh) )%ns    & 
     1280                &    + sh_h_o * Wave( ktide(jh) )%nh    & 
     1281                &    + sh_p_o * Wave( ktide(jh) )%np    & 
     1282                &    + sh_p1_o* Wave( ktide(jh) )%np1   & 
     1283                &    +          Wave( ktide(jh) )%shift * rad 
     1284 
     1285 
     1286 
     1287             !JT pvt(jh) = mod(  ( (v0linearslope(jh)*days_since_origin) + v0linearintercept(  ktide(jh)  ) ),  2*rpi)-(2*rpi) 
     1288             pvt(jh) = mod(  ( (v0linearslope(jh)*days_since_origin) + v0linearintercept(  jh  ) ),  2*rpi)-(2*rpi) 
    10531289         ELSE 
    10541290             pvt(jh) = sh_T * Wave( ktide(jh) )%nT    & 
     
    10591295                &    +        Wave( ktide(jh) )%shift * rad 
    10601296         ENDIF 
     1297 
     1298          
     1299          
    10611300         ! 
    10621301         !  Phase correction u due to nodal motion. Units are radian: 
     
    10681307            &    + sh_R      * Wave( ktide(jh) )%R 
    10691308 
     1309 
     1310 
     1311 
     1312 
     1313         !JT 
     1314         pvt(jh) = mod( pvt(jh),  2*rpi) 
     1315         put(jh) = mod( put(jh),  2*rpi) 
     1316         !JT 
     1317 
     1318 
    10701319         !  Nodal correction factor: 
    10711320         pcor(jh) = nodal_factort( Wave( ktide(jh) )%nformula ) 
     
    10771326      IF(ln_astro_verbose .AND. lwp) THEN 
    10781327          DO jh = 1, kc 
    1079               WRITE(numout,*) 'astro tide_vuf 3:',jh,pvt(jh), put(jh), pcor(jh)       
     1328              WRITE(numout,*) 'astro tide_vuf 3,',jh,Wave(ktide(jh))%cname_tide, pomega(jh),2*rpi/(3600.0_wp*pomega(jh)),pvt(jh), put(jh), pcor(jh), mod(pvt(jh),2*rpi), mod(put(jh),2*rpi), 2*rpi 
    10801329          END DO 
    10811330      ENDIF 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/SBC/tideini.F90

    r14266 r15500  
    9696      ! 
    9797      CALL tide_init_Wave 
     98      ! JT Read namelist for 360 day tides, and calc astro angles for origin if using tide compress option 
     99      CALL tide_init_calendar_options 
     100      ! JT 
    98101      ! 
    99102      nb_harmo=0 
Note: See TracChangeset for help on using the changeset viewer.