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 15784 – NEMO

Changeset 15784


Ignore:
Timestamp:
2022-04-21T12:19:38+02:00 (2 years ago)
Author:
jmedwards01
Message:

Added NEMO_4.0.4_CO9_package_tides. This is not consistent with tides in the RCS.
Fix this next.

Location:
NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/BDY/bdy_oce.F90

    r14075 r15784  
    4343      INTEGER          , DIMENSION(2)   ::  nread 
    4444      LOGICAL                           ::  lneed_ssh 
     45      !--- davbyr 
     46      LOGICAL                           ::  lforced_ssh  
     47     !--- END davbyr 
    4548      LOGICAL                           ::  lneed_dyn2d 
    4649      LOGICAL                           ::  lneed_dyn3d 
     
    117120   REAL(wp), DIMENSION(jp_bdy) ::   rice_hpnd               !: pond thick. of incoming sea ice 
    118121   REAL(wp), DIMENSION(jp_bdy) ::   rice_hlid               !: pond lid thick. of incoming sea ice 
     122    
     123   !  davbyr  
     124   LOGICAL, DIMENSION(jp_bdy) ::   ln_ssh_bdy               !: =T USE SSH BDY - name list switch 
     125   REAL(wp), DIMENSION(jp_bdy) ::  rn_ssh_shift             !: =F SHIFT SSH AT A BORDER BY rn_ssh_shift m_ 
     126   !  END davbyr 
    119127   ! 
    120128   !!---------------------------------------------------------------------- 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/BDY/bdydta.F90

    r14075 r15784  
    362362         ENDIF 
    363363      ENDIF 
     364       
     365      ! davbyr - add a shift to the boundary + free elevation Enda, JT from NEMO RAN 3.6 
     366      DO jbdy = 1, nb_bdy 
     367         IF( dta_bdy(jbdy)%lneed_ssh ) THEN 
     368            igrd  = 1 
     369            DO ib = 1, idx_bdy(jbdy)%nblenrim(igrd)   ! ssh is used only on the rim 
     370                ii = idx_bdy(jbdy)%nbi(ib,igrd) 
     371                ij = idx_bdy(jbdy)%nbj(ib,igrd) 
     372                dta_bdy(jbdy)%ssh(ib) = dta_bdy(jbdy)%ssh(ib) + rn_ssh_shift(jbdy) * tmask(ii,ij,1) 
     373                IF( .NOT. dta_bdy(jbdy)%lforced_ssh ) dta_bdy(jbdy)%ssh(ib) = sshn(ii,ij) * tmask(ii,ij,1) 
     374             END DO 
     375         END IF 
     376      END DO 
     377      !--- END davbyr 
     378       
    364379      ! 
    365380      IF( ln_timing )   CALL timing_stop('bdy_dta') 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/BDY/bdyini.F90

    r15783 r15784  
    6969         &             ln_vol, nn_volctl, nn_rimwidth 
    7070         ! 
     71!     davbyr Propagating ENDA's stuff from 3.6 
     72      NAMELIST/nambdy_ssh/ ln_ssh_bdy, rn_ssh_shift 
     73      INTEGER  ::   ib_bdy 
     74!     END davbyr 
    7175      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    7276      !!---------------------------------------------------------------------- 
     
    97101902   IF( ios >  0 )   CALL ctl_nam ( ios , 'nambdy in configuration namelist' ) 
    98102      IF(lwm) WRITE ( numond, nambdy ) 
     103       
     104      ! davbyr Propagating ENDA's stuff from 3.6 
     105      REWIND( numnam_ref )              ! Namelist nambdy in reference namelist :Unstructured open boundaries 
     106      READ  ( numnam_ref, nambdy_ssh, IOSTAT = ios, ERR = 905) 
     107905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_ssh in reference namelist' ) 
     108 
     109      REWIND( numnam_cfg )              ! Namelist nambdy in configuration namelist :Unstructured open boundaries 
     110      READ  ( numnam_cfg, nambdy_ssh, IOSTAT = ios, ERR = 906) 
     111906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_ssh in configuration namelist' ) 
     112      IF(lwm) WRITE ( numond, nambdy_ssh ) 
     113 
     114      IF(lwp) WRITE(numout,*) 
     115      IF(lwp) WRITE(numout,*) 'nambdy_ssh : use of ssh boundaries' 
     116      IF(lwp) WRITE(numout,*) '~~~~~~~~' 
     117      IF(lwp) WRITE(numout,*) '      ln_ssh_bdy: ' 
     118      DO ib_bdy = 1,nb_bdy 
     119        IF(lwp) WRITE(numout,*) '      ln_ssh_bdy  (',ib_bdy,'): ',ln_ssh_bdy(ib_bdy) 
     120      IF(lwp) WRITE(numout,*) '      rn_ssh_shift: ' 
     121      ENDDO 
     122      DO ib_bdy = 1,nb_bdy 
     123        IF(lwp) WRITE(numout,*) '      rn_ssh_shift(',ib_bdy,'): ',rn_ssh_shift(ib_bdy) 
     124      ENDDO 
     125      IF(lwp) WRITE(numout,*) '~~~~~~~~' 
     126      IF(lwp) WRITE(numout,*) 
     127!     END davbyr 
    99128 
    100129      IF( .NOT. Agrif_Root() ) ln_bdy = .FALSE.   ! forced for Agrif children 
     
    201230         dta_bdy(ib_bdy)%lneed_ssh   = cn_dyn2d(ib_bdy) == 'flather' 
    202231         dta_bdy(ib_bdy)%lneed_dyn2d = cn_dyn2d(ib_bdy) /= 'none' 
     232 
     233       ! davbyr propagating JT override dta_bdy(ib_bdy)%ll_ssh with namelist value (ln_ssh_bdy) 
     234         dta_bdy(ib_bdy)%lforced_ssh = ln_ssh_bdy(ib_bdy) 
     235         IF(lwp) WRITE(numout,*) 'nambdy_ssh : use of ssh boundaries' 
     236         IF(lwp) WRITE(numout,*) '~~~~~~~~' 
     237         IF(lwp) WRITE(numout,*) '      ib_bdy: ',ib_bdy 
     238         IF(lwp) WRITE(numout,*) '      dta_bdy(ib_bdy)%lneed_ssh  : ',dta_bdy(ib_bdy)%lneed_ssh 
     239         IF(lwp) WRITE(numout,*) '      dta_bdy(ib_bdy)%lforced_ssh: ',dta_bdy(ib_bdy)%lforced_ssh 
     240         IF(lwp) WRITE(numout,*) '~~~~~~~~' 
     241         ! END davbyr 
    203242 
    204243         IF( lwp .AND. dta_bdy(ib_bdy)%lneed_dyn2d ) THEN 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/DOM/dom_oce.F90

    r14075 r15784  
    152152   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::           r1_hv_b , r1_hv_n , r1_hv_a   !: inverse of v-depth [1/m] 
    153153 
     154!CEOD Scale of water column down to shallowest of neighbourinbg points over total 
     155!water depth 
     156   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: scaled_e3t_0_ik   , scaled_e3t_0_jk 
     157   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: scaled_e3t_0_ip1k , scaled_e3t_0_jp1k 
     158!CEOD 
    154159   INTEGER, PUBLIC ::   nla10              !: deepest    W level Above  ~10m (nlb10 - 1) 
    155160   INTEGER, PUBLIC ::   nlb10              !: shallowest W level Bellow ~10m (nla10 + 1)  
     
    294299         ! 
    295300      ALLOCATE( wmask(jpi,jpj,jpk) , wumask(jpi,jpj,jpk), wvmask(jpi,jpj,jpk) , STAT=ierr(12) ) 
     301!CEOD  
     302      ALLOCATE(  scaled_e3t_0_ik  (jpi,jpj) , scaled_e3t_0_jk  (jpi,jpj) ,      &  
     303         &       scaled_e3t_0_ip1k(jpi,jpj) , scaled_e3t_0_jp1k(jpi,jpj) ,  STAT=ierr(13) ) 
     304         ! 
    296305      ! 
    297306      dom_oce_alloc = MAXVAL(ierr) 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/DOM/domain.F90

    r15783 r15784  
    7979      INTEGER , DIMENSION(jpi,jpj) ::   ik_top , ik_bot       ! top and bottom ocean level 
    8080      REAL(wp), DIMENSION(jpi,jpj) ::   z1_hu_0, z1_hv_0 
     81!CEOD 
     82      REAL(wp), DIMENSION(jpi,jpj) ::  k_bot_i_min, k_bot_j_min 
     83      REAL(wp), DIMENSION(jpi,jpj) :: sum_e3t_0_min_ik 
     84      REAL(wp), DIMENSION(jpi,jpj) :: sum_e3t_0_min_jk 
     85      REAL(wp), DIMENSION(jpi,jpj) :: sum_e3t_0_min_ip1k 
     86      REAL(wp), DIMENSION(jpi,jpj) :: sum_e3t_0_min_jp1k 
    8187      !!---------------------------------------------------------------------- 
    8288      ! 
     
    155161         hv_0(:,:) = hv_0(:,:) + e3v_0(:,:,jk) * vmask(:,:,jk) 
    156162      END DO 
     163!CEOD Here we need to work out which is the shallowest point in terms of k 
     164! levels at neighbouring points in i and j directions. 
     165! Then we need to work out the proportion of the water column down to ht_0 that 
     166! that level is for both i points. 
     167! e.g. point i could say go down to level 10 but point i+1 only level 5 
     168! then work out depth of bottom of level 5 at point i over depth at point i to 
     169! level 10 
     170! This is needed later to work out where a u point depth should be when using 
     171! enveloping coordinates, as it will be 1/2 depth at t point at level 5 for i,i+1 
     172! points Because level 5 at i can change in time, thus u bed can change in time! 
     173! What about under ice shelves? Need rto return to that later 
     174 
     175! 1) get the shallowest k level at neighbouring i and j points store in ! k_bot_i_min 
     176 
     177         DO jj = 1, jpjm1 
     178            DO ji = 1, jpim1                ! SPG with the application of W/D gravity filters 
     179                 k_bot_i_min(ji,jj) = MIN( ik_bot(ji,jj), ik_bot(ji+1,jj  )) 
     180                 k_bot_j_min(ji,jj) = MIN( ik_bot(ji,jj), ik_bot(ji,  jj+1)) 
     181            ENDDO 
     182        ENDDO 
     183! 2) Work out the depth down to the shallowest k level both at point i and i+1 
     184! (likewise for j)  
     185 
     186        sum_e3t_0_min_ik(:,:) = 0 
     187        sum_e3t_0_min_jk(:,:) = 0 
     188        sum_e3t_0_min_ip1k(:,:) = 0 
     189        sum_e3t_0_min_jp1k(:,:) = 0 
     190 
     191        !Get sum of e3t_0s down to local min 
     192        DO jj = 1, jpjm1 
     193           DO ji = 1, jpim1                
     194             DO jk = 1, k_bot_i_min(ji,jj) 
     195  
     196                sum_e3t_0_min_ik  (ji,jj) =  sum_e3t_0_min_ik  (ji,jj) + e3t_0(ji  ,jj,jk)*tmask(ji,jj,jk) 
     197                sum_e3t_0_min_ip1k(ji,jj) =  sum_e3t_0_min_ip1k(ji,jj) + e3t_0(ji+1,jj,jk)*tmask(ji+1,jj,jk) 
     198             ENDDO 
     199            
     200             DO jk = 1, k_bot_j_min(ji,jj) 
     201                sum_e3t_0_min_jk  (ji,jj) =  sum_e3t_0_min_jk  (ji,jj) + e3t_0(ji,jj  ,jk)*tmask(ji,jj,jk) 
     202                sum_e3t_0_min_jp1k(ji,jj) =  sum_e3t_0_min_jp1k(ji,jj) + e3t_0(ji,jj+1,jk)*tmask(ji,jj+1,jk) 
     203             ENDDO 
     204! 3)  Then work out what fraction of the at rest water column that is, we later 
     205! multiply the now water depth by this scale to work out the bottom of the kth 
     206! level at time now in dynspg_ts  
     207             scaled_e3t_0_ik  (ji,jj) = sum_e3t_0_min_ik  (ji,jj)/( ht_0(ji  ,jj  ) + 1._wp - ssmask(ji,jj)) 
     208             scaled_e3t_0_jk  (ji,jj) = sum_e3t_0_min_jk  (ji,jj)/( ht_0(ji  ,jj  ) + 1._wp - ssmask(ji,jj)) 
     209             scaled_e3t_0_ip1k(ji,jj) = sum_e3t_0_min_ip1k(ji,jj)/( ht_0(ji+1,jj  ) + 1._wp - ssmask(ji+1,jj)) 
     210             scaled_e3t_0_jp1k(ji,jj) = sum_e3t_0_min_jp1k(ji,jj)/( ht_0(ji  ,jj+1) + 1._wp - ssmask(ji,jj+1)) 
     211          ENDDO 
     212       ENDDO 
    157213      ! 
    158214      !           !==  time varying part of coordinate system  ==! 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/DOM/dtatsd.F90

    r14075 r15784  
    179179      ptsd(:,:,:,jp_sal) = sf_tsd(jp_sal)%fnow(:,:,:)  
    180180      ! 
    181       IF( ln_sco ) THEN                   !==   s- or mixed s-zps-coordinate   ==! 
    182          ! 
    183          IF( kt == nit000 .AND. lwp )THEN 
    184             WRITE(numout,*) 
    185             WRITE(numout,*) 'dta_tsd: interpolates T & S data onto the s- or mixed s-z-coordinate mesh' 
    186          ENDIF 
    187          ! 
    188          DO jj = 1, jpj                         ! vertical interpolation of T & S 
    189             DO ji = 1, jpi 
    190                DO jk = 1, jpk                        ! determines the intepolated T-S profiles at each (i,j) points 
    191                   zl = gdept_0(ji,jj,jk) 
    192                   IF(     zl < gdept_1d(1  ) ) THEN          ! above the first level of data 
    193                      ztp(jk) =  ptsd(ji,jj,1    ,jp_tem) 
    194                      zsp(jk) =  ptsd(ji,jj,1    ,jp_sal) 
    195                   ELSEIF( zl > gdept_1d(jpk) ) THEN          ! below the last level of data 
    196                      ztp(jk) =  ptsd(ji,jj,jpkm1,jp_tem) 
    197                      zsp(jk) =  ptsd(ji,jj,jpkm1,jp_sal) 
    198                   ELSE                                      ! inbetween : vertical interpolation between jkk & jkk+1 
    199                      DO jkk = 1, jpkm1                                  ! when  gdept(jkk) < zl < gdept(jkk+1) 
    200                         IF( (zl-gdept_1d(jkk)) * (zl-gdept_1d(jkk+1)) <= 0._wp ) THEN 
    201                            zi = ( zl - gdept_1d(jkk) ) / (gdept_1d(jkk+1)-gdept_1d(jkk)) 
    202                            ztp(jk) = ptsd(ji,jj,jkk,jp_tem) + ( ptsd(ji,jj,jkk+1,jp_tem) - ptsd(ji,jj,jkk,jp_tem) ) * zi  
    203                            zsp(jk) = ptsd(ji,jj,jkk,jp_sal) + ( ptsd(ji,jj,jkk+1,jp_sal) - ptsd(ji,jj,jkk,jp_sal) ) * zi 
    204                         ENDIF 
    205                      END DO 
    206                   ENDIF 
    207                END DO 
    208                DO jk = 1, jpkm1 
    209                   ptsd(ji,jj,jk,jp_tem) = ztp(jk) * tmask(ji,jj,jk)     ! mask required for mixed zps-s-coord 
    210                   ptsd(ji,jj,jk,jp_sal) = zsp(jk) * tmask(ji,jj,jk) 
    211                END DO 
    212                ptsd(ji,jj,jpk,jp_tem) = 0._wp 
    213                ptsd(ji,jj,jpk,jp_sal) = 0._wp 
    214             END DO 
    215          END DO 
    216          !  
    217       ELSE                                !==   z- or zps- coordinate   ==! 
     181!CEOD, We think this is incorrect we dont want to do this. 
    218182         !                              
    219183         ptsd(:,:,:,jp_tem) = ptsd(:,:,:,jp_tem) * tmask(:,:,:)    ! Mask 
     
    239203         ENDIF 
    240204         ! 
    241       ENDIF 
     205!CEOD 
    242206      ! 
    243207      IF( .NOT.ln_tsd_dmp ) THEN                   !==   deallocate T & S structure   ==!  
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/DYN/dynspg_ts.F90

    r14075 r15784  
    150150      REAL(wp) ::   r1_2dt_b, z1_hu, z1_hv          ! local scalars 
    151151      REAL(wp) ::   za0, za1, za2, za3              !   -      - 
     152      REAL(wp), DIMENSION(jpi,jpj) :: zdep_u, zdep_v 
    152153      REAL(wp) ::   zztmp, zldg               !   -      - 
    153154      REAL(wp) ::   zhu_bck, zhv_bck, zhdiv         !   -      - 
     
    459460            DO jj = 1, jpj 
    460461               DO ji = 1, jpim1   ! not jpi-column 
    461                   zhup2_e(ji,jj) = hu_0(ji,jj) + r1_2 * r1_e1e2u(ji,jj)                        & 
    462                        &                              * (  e1e2t(ji  ,jj) * zsshp2_e(ji  ,jj)  & 
    463                        &                                 + e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj)  ) * ssumask(ji,jj) 
     462                  zhup2_e(ji,jj) = r1_2 * r1_e1e2u(ji,jj) * ( e1e2t(ji  ,jj) * zhtp2_e(ji  ,jj)*scaled_e3t_0_ik  (ji,jj) & 
     463                                                 &         +  e1e2t(ji+1,jj) * zhtp2_e(ji+1,jj)*scaled_e3t_0_ip1k(ji,jj) ) *ssumask(ji,jj) 
    464464               END DO 
    465465            END DO 
    466466            DO jj = 1, jpjm1        ! not jpj-row 
    467467               DO ji = 1, jpi 
    468                   zhvp2_e(ji,jj) = hv_0(ji,jj) + r1_2 * r1_e1e2v(ji,jj)                        & 
    469                        &                              * (  e1e2t(ji,jj  ) * zsshp2_e(ji,jj  )  & 
    470                        &                                 + e1e2t(ji,jj+1) * zsshp2_e(ji,jj+1)  ) * ssvmask(ji,jj) 
     468                  zhvp2_e(ji,jj) = r1_2 * r1_e1e2v(ji,jj) * ( e1e2t(ji,jj  ) * zhtp2_e(ji,  jj)*scaled_e3t_0_jk  (ji,jj) & 
     469                                                     &     +  e1e2t(ji,jj+1) * zhtp2_e(ji,jj+1)*scaled_e3t_0_jp1k(ji,jj) ) *ssvmask(ji,jj) 
    471470               END DO 
    472471            END DO 
     
    647646                  !                    ! hu_e, hv_e hold depth at jn,  zhup2_e, zhvp2_e hold extrapolated depth at jn+1/2 
    648647                  !                    ! backward interpolated depth used in spg terms at jn+1/2 
    649                   zhu_bck = hu_0(ji,jj) + r1_2*r1_e1e2u(ji,jj) * (  e1e2t(ji  ,jj) * zsshp2_e(ji  ,jj)    & 
    650                        &                                          + e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj)  ) * ssumask(ji,jj) 
    651                   zhv_bck = hv_0(ji,jj) + r1_2*r1_e1e2v(ji,jj) * (  e1e2t(ji,jj  ) * zsshp2_e(ji,jj  )    & 
    652                        &                                          + e1e2t(ji,jj+1) * zsshp2_e(ji,jj+1)  ) * ssvmask(ji,jj) 
    653                   !                    ! inverse depth at jn+1 
    654                   z1_hu = ssumask(ji,jj) / ( hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - ssumask(ji,jj) ) 
    655                   z1_hv = ssvmask(ji,jj) / ( hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    656                   ! 
     648                  zhu_bck = r1_2 * r1_e1e2u(ji,jj) * ( e1e2t(ji  ,jj)*(ht_0(ji  ,jj) + zsshp2_e(ji  ,jj))*scaled_e3t_0_ik  (ji,jj) & 
     649                           &                         + e1e2t(ji+1,jj)*(ht_0(ji+1,jj) + zsshp2_e(ji+1,jj))*scaled_e3t_0_ip1k(ji,jj) & 
     650                           &        ) * ssumask(ji,jj)  
     651 
     652                  zhv_bck = r1_2 * r1_e1e2v(ji,jj) * ( e1e2t(ji,jj  )*(ht_0(ji,jj  ) + zsshp2_e(ji,jj  ))*scaled_e3t_0_jk  (ji,jj) & 
     653                           &                         + e1e2t(ji,jj+1)*(ht_0(ji,jj+1) + zsshp2_e(ji,jj+1))*scaled_e3t_0_jp1k(ji,jj) & 
     654                           &        ) * ssvmask(ji,jj)  
     655 
     656                  z1_hu = ssumask(ji,jj) / ( r1_2 * r1_e1e2u(ji,jj) *(e1e2t(ji  ,jj)*(ht_0(ji,jj)   + ssha_e(ji,jj)  )*scaled_e3t_0_ik(ji  ,jj) & 
     657                                            &      +e1e2t(ji+1,jj)*(ht_0(ji+1,jj) + ssha_e(ji+1,jj))*scaled_e3t_0_ip1k(ji,jj)) + 1._wp - ssumask(ji,jj) ) 
     658 
     659                  z1_hv = ssvmask(ji,jj) / ( r1_2 * r1_e1e2v(ji,jj)* ( e1e2t(ji,jj  )*(ht_0(ji,jj)   + ssha_e(ji,jj)  )*scaled_e3t_0_jk(ji  ,jj) &  
     660                                            &      + e1e2t(ji,jj+1)* (ht_0(ji,jj+1) + ssha_e(ji,jj+1))*scaled_e3t_0_jp1k(ji,jj)) + 1._wp - ssvmask(ji,jj) ) 
     661 
     662 
    657663                  ua_e(ji,jj) = (               hu_e  (ji,jj) *   un_e (ji,jj)      &  
    658664                       &            + rdtbt * (  zhu_bck        * zu_spg (ji,jj)  &   ! 
     
    678684        
    679685         IF( .NOT.ln_linssh ) THEN   !* Update ocean depth (variable volume case only) 
    680             hu_e (2:jpim1,2:jpjm1) = hu_0(2:jpim1,2:jpjm1) + zsshu_a(2:jpim1,2:jpjm1) 
     686         DO jj = 1, jpjm1 
     687            DO ji = 1, jpim1      ! NO Vector Opt. 
     688               zdep_u(ji,jj) = r1_2 * r1_e1e2u(ji,jj) * ( e1e2t(ji,jj  ) * (ssha_e(ji,  jj)+ht_0(ji,  jj))*scaled_e3t_0_ik  (ji,jj) & 
     689                                                 &     +  e1e2t(ji+1,jj) * (ssha_e(ji+1,jj)+ht_0(ji+1,jj))*scaled_e3t_0_ip1k(ji,jj) )*ssumask(ji,jj) 
     690               zdep_v(ji,jj) = r1_2 * r1_e1e2v(ji,jj) * ( e1e2t(ji,jj  ) * (ssha_e(ji,  jj)+ht_0(ji,  jj))*scaled_e3t_0_jk  (ji,jj  ) & 
     691                                                 &     +  e1e2t(ji,jj+1) * (ssha_e(ji,jj+1)+ht_0(ji,jj+1))*scaled_e3t_0_jp1k(ji,jj) )*ssvmask(ji,jj) 
     692            ENDDO 
     693        ENDDO 
     694         CALL lbc_lnk_multi( 'dynspg_ts', zdep_u, 'U', -1._wp ) 
     695         CALL lbc_lnk_multi( 'dynspg_ts', zdep_v, 'V', -1._wp ) 
     696 
     697            hu_e (2:jpim1,2:jpjm1) = zdep_u(2:jpim1,2:jpjm1)  
    681698            hur_e(2:jpim1,2:jpjm1) = ssumask(2:jpim1,2:jpjm1) / ( hu_e(2:jpim1,2:jpjm1) + 1._wp - ssumask(2:jpim1,2:jpjm1) ) 
    682             hv_e (2:jpim1,2:jpjm1) = hv_0(2:jpim1,2:jpjm1) + zsshv_a(2:jpim1,2:jpjm1) 
     699            hv_e (2:jpim1,2:jpjm1) = zdep_v(2:jpim1,2:jpjm1) 
    683700            hvr_e(2:jpim1,2:jpjm1) = ssvmask(2:jpim1,2:jpjm1) / ( hv_e(2:jpim1,2:jpjm1) + 1._wp - ssvmask(2:jpim1,2:jpjm1) ) 
    684701            CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  & 
     
    778795                  &              * ( e1e2t(ji,jj  ) * ssha(ji,jj  )      & 
    779796                  &              +   e1e2t(ji,jj+1) * ssha(ji,jj+1) ) 
    780             END DO 
    781          END DO 
     797               zdep_u(ji,jj) = r1_2 * r1_e1e2u(ji,jj) * ( e1e2t(ji,jj  ) * (ssha(ji,  jj)+ht_0(ji,  jj))*scaled_e3t_0_ik(ji  ,jj) & 
     798                                                 &     +  e1e2t(ji+1,jj) * (ssha(ji+1,jj)+ht_0(ji+1,jj))*scaled_e3t_0_ip1k(ji,jj) ) 
     799               zdep_v(ji,jj) = r1_2 * r1_e1e2v(ji,jj) * ( e1e2t(ji,jj  ) * (ssha(ji,  jj)+ht_0(ji,  jj))*scaled_e3t_0_jk(ji,jj  ) & 
     800                                                 &     +  e1e2t(ji,jj+1) * (ssha(ji,jj+1)+ht_0(ji,jj+1))*scaled_e3t_0_jp1k(ji,jj) ) 
     801            END DO 
     802         END DO 
     803         CALL lbc_lnk_multi( 'dynspg_ts', zdep_u, 'U', -1._wp ) 
     804         CALL lbc_lnk_multi( 'dynspg_ts', zdep_v, 'V', -1._wp ) 
     805 
    782806         CALL lbc_lnk_multi( 'dynspg_ts', zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 
    783807         ! 
     
    787811         END DO 
    788812         ! Save barotropic velocities not transport: 
    789          ua_b(:,:) =  ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 
    790          va_b(:,:) =  va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 
     813         ua_b(:,:) =  ua_b(:,:) / ( zdep_u(:,:) + 1._wp - ssumask(:,:) ) 
     814         va_b(:,:) =  va_b(:,:) / ( zdep_v(:,:) + 1._wp - ssvmask(:,:) ) 
    791815      ENDIF 
    792816 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/SBC/sbctide.F90

    r14075 r15784  
    1616   USE ioipsl         ! NetCDF IPSL library 
    1717   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     18 
     19   USE bdytides ! davbyr - Access to love number 
    1820 
    1921   IMPLICIT NONE 
     
    108110 
    109111      DO jk = 1, nb_harmo 
    110          zcons = 0.7_wp * Wave(ntide(jk))%equitide * ftide(jk) 
     112         ! davbyr - Insert variable Love number where once was 0.7 
     113         zcons = dn_love_number * Wave(ntide(jk))%equitide * ftide(jk) 
     114         ! END davbyr 
    111115         DO ji = 1, jpi 
    112116            DO jj = 1, jpj 
     
    119123               IF    ( Wave(ntide(jk))%nutide == 1 )  THEN  ;  zcs = zcons * SIN( 2._wp*zlat ) 
    120124               ELSEIF( Wave(ntide(jk))%nutide == 2 )  THEN  ;  zcs = zcons * COS( zlat )**2 
     125               ! davbyr - Include long period tidal forcing 
     126               ELSEIF( Wave(ntide(jk))%nutide == 0 )  THEN  ;  zcs = zcons * (0.5_wp-1.5_wp*SIN(zlat)**2._wp) 
     127               ! END - davbyr 
    121128               ELSE                                         ;  zcs = 0._wp 
    122129               ENDIF 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/SBC/tide.h90

    r15783 r15784  
    22   !! History :  3.2  !  2007  (O. Le Galloudec)  Original code 
    33   !!---------------------------------------------------------------------- 
    4  
     4   !! TIDES ADDED  ! 2017 (Nico Bruneau)  
     5   !! Following this document that seems to match implemented code  
     6   !!    https://docs.lib.noaa.gov/rescue/cgs_specpubs/QB275U35no981924.pdf 
     7   !! see page 189 for some proposed values 
     8   !! 
     9   !! The convention which seems to have been chosen is the Shureman one and  
     10   !! not the Cartwright and Tayer (1971) 
     11   !! This is probably due to the fact the Schureman has a solar calendar  
     12   !! while Cartwright and Tayer is based on a lunar calendar 
     13   !! 
     14   !! Therefore the coefficient are not the Doodson number but the one  
     15   !! defined by Schureman. For example : 
     16   !! M2 : Doodson   : 2  0 0 0 0 0 
     17   !!      Schureman : 2 -2 2 0 0 0 
     18   !! 
     19   !! Components 1-34 are for FES 2014 
     20   !! Components >= 35 are the one that were initially present in NEMO and not in FES14 
     21   !!                  keep in mind than equitide coefficient have been ajusted for the 
     22   !!                  34 FES 2014 constituents 
     23   !!  
     24   !! The different coefficient are as follows 
     25   !!   - nt   = T  = Number of Julian centuries (36625 days) from Greenwich mean noon on December 31, 1899. 
     26   !!               = Hour angle of mean sun 
     27   !!   - ns   = s  = mean longitude of the moon 
     28   !!   - nh   = h  = mean longitude of the sun 
     29   !!   - np   = p  = mean longitude of the lunar perigee 
     30   !!   - np1  = p1 = mean longitude of the solar perigee 
     31   !!   - shift appears in table as a bias in degree 
     32   !!   - nksi Coefficient for the longitude in moon's orbit of lunar intersection 
     33   !!   - nu0 Coefficient for the right ascension of lunar intersection 
     34   !!   - nu1 Coefficient for the term in argument of lunisolar constituent K1 
     35   !!   - nu2 Coefficient for the term in argument of lunisolar constituent K2 
     36   !!   - R = ???  
     37   !!   - Formula = Nodal factor function; see the table of Schureman. Implemented in tide_mod.F90  
     38   !!  
     39   !! The equitide parameter seems to be the equilibrium tide amplitude corrected 
     40   !! with the C_n^m coefficient: see Cartwright and Tayer (1971) equation 12  
     41   !! and Table 2 
     42   !! As an example in their Table 4c (p66), M2 (200000) has an amplitude of  
     43   !! around 0.63186 m 
     44   !! Table 2, give us a correction of m = 2, n = 2 (semi-diurnal) 
     45   !! 0.63186*3*sqrt( 5 / 96 / pi ) = 0.24407  
     46   !! very close to the one define originally here : 0.242297 
     47   !! Third order terms are neglected 
     48   !! 
     49   !! So to correct (to match what is implemented in sbctide.F90 - take care CT71 uses co-latitude): 
     50   !!    - long wave : Amplitude from CT71 * [ -1   * sqrt( 5 /  4 / pi ) ] 
     51   !!    - diurnal   : Amplitude from CT71 * [ -3/2 * sqrt( 5 / 24 / pi ) ] 
     52   !!    - semi-diur : Amplitude from CT71 * [  3   * sqrt( 5 / 96 / pi ) ] 
     53   !! 
     54   !! ATTENTION: convention seems to be to have a positive coefficient and a 180 shift to  
     55   !!            represent negative value. to be confirmed though. 
     56   !! 
     57   !! All equtide were computed using the last epocs from Cartwright and Tayer (1971) multiply by 
     58   !! the corresponding coefficient of their table 2 
     59   !!  
     60   !! nutide is used to compute tide potential - it uses a different formulation depending of nutide 
     61   !! see sbctide.F90 in function tide_init_potential 
     62   !! 
     63   !! Some random note 
     64   !! in cnes fes tool: 
     65   !!        Msf has nksi = 2 and nnu0 = -2 which is reverse from Schureman (I kept the Schureman one) 
     66   !! 
     67   !!---------------------------------------------------------------------- 
     68   ! 
    569   !             !! name_tide , equitide , nutide , nt , ns , nh , np , np1 , shift , nksi , nnu0 , nnu1 , nnu2 , R , formula !! 
    670   !             !!           !          !        !    !    !    !    !     !       !      !      !      !      !   !         !! 
    7    Wave( 1) = tide(  'M2'     , 0.242297 ,    2   ,  2 , -2 ,  2 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
    8    Wave( 2) = tide(  'N2'     , 0.046313 ,    2   ,  2 , -3 ,  2 ,  1 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
    9    Wave( 3) = tide( '2N2'     , 0.006184 ,    2   ,  2 , -4 ,  2 ,  2 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
    10    Wave( 4) = tide(  'S2'     , 0.113572 ,    2   ,  2 ,  0 ,  0 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,     0   ) 
    11    Wave( 5) = tide(  'K2'     , 0.030875 ,    2   ,  2 ,  0 ,  2 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   , -2   , 0 ,   235   ) 
    12    !              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
    13    Wave( 6) = tide(  'K1'     , 0.142408 ,    1   ,  1 ,  0 ,  1 ,  0 ,  0  ,  -90  ,  0   ,  0   , -1   ,  0   , 0 ,   227   ) 
    14    Wave( 7) = tide(  'O1'     , 0.101266 ,    1   ,  1 , -2 ,  1 ,  0 ,  0  ,  +90  ,  2   , -1   ,  0   ,  0   , 0 ,    75   ) 
    15    Wave( 8) = tide(  'Q1'     , 0.019387 ,    1   ,  1 , -3 ,  1 ,  1 ,  0  ,  +90  ,  2   , -1   ,  0   ,  0   , 0 ,    75   ) 
    16    Wave( 9) = tide(  'P1'     , 0.047129 ,    1   ,  1 ,  0 , -1 ,  0 ,  0  ,  +90  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    ) 
    17    !              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
    18    Wave(10) = tide(  'M4'     , 0.000000 ,    4   ,  4 , -4 ,  4 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    1    ) 
    19    !              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
    20    Wave(11) = tide(  'Mf'     , 0.042017 ,    0   ,  0 ,  2 ,  0 ,  0 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
    21    Wave(12) = tide(  'Mm'     , 0.022191 ,    0   ,  0 ,  1 ,  0 , -1 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,   73    ) 
    22    Wave(13) = tide(  'Msqm'   , 0.000667 ,    0   ,  0 ,  4 , -2 ,  0 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
    23    Wave(14) = tide(  'Mtm'    , 0.008049 ,    0   ,  0 ,  3 ,  0 , -1 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
    24    !              !           !          !        !    !    !    !    !     !       !      !      !      !      !   !         ! 
    25    Wave(15) = tide(  'S1'     , 0.000000 ,    1   ,  1 ,  0 ,  0 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    )    
    26    Wave(16) = tide(  'MU2'    , 0.005841 ,    2   ,  2 , -4 ,  4 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,   78    ) 
    27    Wave(17) = tide(  'NU2'    , 0.009094 ,    2   ,  2 , -3 ,  4 , -1 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,   78    )  
    28    Wave(18) = tide(  'L2'     , 0.006694 ,    2   ,  2 , -1 ,  2 , -1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,  215    ) 
    29    Wave(19) = tide(  'T2'     , 0.006614 ,    2   ,  2 ,  0 , -1 ,  0 ,  1  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    ) 
    3071   ! 
    31    !             !! name_tide , equitide , nutide , nt , ns , nh , np , np1 , shift , nksi , nnu0 , nnu1 , nnu2 , R , formula !! 
    32    Wave(20) = tide(  'MNS2'   , 0.000000 ,    2   ,  2 , -5 ,  4 ,  1 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    6    ) 
    33    Wave(21) = tide(  'Lam2'   , 0.001760 ,    2   ,  2 , -1 ,  0 ,  1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,   78    ) 
    34    Wave(22) = tide(  'MSN2'   , 0.000000 ,    2   ,  2 ,  1 ,  0 ,  1 ,  0  ,    0  ,  2   , -2   ,  0   ,  2   , 0 ,    6    ) 
    35    Wave(23) = tide(  '2SM2'   , 0.000000 ,    2   ,  2 ,  2 , -2 ,  0 ,  0  ,    0  , -2   ,  2   ,  0   ,  0   , 0 ,   16    ) 
    36    Wave(24) = tide(  'MO3'    , 0.000000 ,    3   ,  3 , -4 ,  1 ,  0 ,  0  ,  +90  ,  2   , -2   ,  0   ,  0   , 0 ,   13    ) 
    37    Wave(25) = tide(  'MK3'    , 0.000000 ,    3   ,  3 , -2 ,  3 ,  0 ,  0  ,  -90  ,  2   , -2   , -1   ,  0   , 0 ,   10    ) 
    38    Wave(26) = tide(  'MN4'    , 0.000000 ,    4   ,  4 , -5 ,  4 ,  1 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    1    ) 
    39    Wave(27) = tide(  'MS4'    , 0.000000 ,    4   ,  4 , -2 ,  2 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    2    ) 
    40    Wave(28) = tide(  'M6'     , 0.000000 ,    6   ,  6 , -6 ,  6 ,  0 ,  0  ,    0  ,  6   , -6   ,  0   ,  0   , 0 ,    4    ) 
    41    Wave(29) = tide(  '2MS6'   , 0.000000 ,    6   ,  6 , -4 ,  4 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    6    ) 
    42    Wave(30) = tide(  '2MK6'   , 0.000000 ,    6   ,  6 , -4 ,  6 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   , -2   , 0 ,    5    ) 
    43    Wave(31) = tide(  '3M2S2'  , 0.000000 ,    2   , 2  , -6 ,  6 ,  0 ,  0  ,    0  ,  6   , -6   ,  0   ,  0   , 0 ,   12    ) 
     72   ! Long Period Tides 
     73   Wave( 1) = tide(  'SA'     , 0.003103 ,    0   ,  0 ,  0 ,  1 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    ) 
     74   Wave( 2) = tide(  'SSA'    , 0.019523 ,    0   ,  0 ,  0 ,  2 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    ) 
     75   Wave( 3) = tide(  'MM'     , 0.022191 ,    0   ,  0 ,  1 ,  0 , -1 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,   73    ) 
     76   Wave( 4) = tide(  'MF'     , 0.042023 ,    0   ,  0 ,  2 ,  0 ,  0 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
     77   Wave( 5) = tide(  'MTM'    , 0.008042 ,    0   ,  0 ,  3 ,  0 , -1 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
     78   Wave( 6) = tide(  'MSF'    , 0.003671 ,    0   ,  0 ,  2 , -2 ,  0 ,  0  ,    0  , -2   ,  2   ,  0   ,  0   , 0 ,   78    ) 
     79   Wave( 7) = tide(  'MSQM'   , 0.001293 ,    0   ,  0 ,  4 , -2 ,  0 ,  0  ,    0  , -2   ,  0   ,  0   ,  0   , 0 ,   74    ) 
     80   ! 
     81   ! Diurnal Tides 
     82   Wave( 8) = tide(  'K1'     , 0.142442 ,    1   ,  1 ,  0 ,  1 ,  0 ,  0  ,  -90  ,  0   ,  0   , -1   ,  0   , 0 ,   227   ) 
     83   Wave( 9) = tide(  'O1'     , 0.101277 ,    1   ,  1 , -2 ,  1 ,  0 ,  0  ,  +90  ,  2   , -1   ,  0   ,  0   , 0 ,    75   ) 
     84   Wave(10) = tide(  'Q1'     , 0.019383 ,    1   ,  1 , -3 ,  1 ,  1 ,  0  ,  +90  ,  2   , -1   ,  0   ,  0   , 0 ,    75   ) 
     85   Wave(11) = tide(  'P1'     , 0.047145 ,    1   ,  1 ,  0 , -1 ,  0 ,  0  ,  +90  ,  0   ,  0   ,  0   ,  0   , 0 ,     0   ) 
     86   Wave(12) = tide(  'S1'     ,-0.001116 ,    1   ,  1 ,  0 ,  0 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,     0   ) 
     87   Wave(13) = tide(  'J1'     ,-0.007961 ,    1   ,  1 ,  1 ,  1 , -1 ,  0  ,  -90  ,  0   , -1   ,  0   ,  0   , 0 ,    76   ) 
     88   ! 
     89   ! Semi-Diurnal Tides 
     90   Wave(14) = tide(  'M2'     , 0.244083 ,    2   ,  2 , -2 ,  2 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     91   Wave(15) = tide(  'N2'     , 0.046720 ,    2   ,  2 , -3 ,  2 ,  1 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     92   Wave(16) = tide(  'S2'     , 0.113565 ,    2   ,  2 ,  0 ,  0 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,     0   ) 
     93   Wave(17) = tide(  'K2'     , 0.030875 ,    2   ,  2 ,  0 ,  2 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   , -2   , 0 ,   235   ) 
     94   Wave(18) = tide(  'L2'     , 0.006903 ,    2   ,  2 , -1 ,  2 , -1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,   215   ) 
     95   Wave(19) = tide(  'T2'     , 0.006644 ,    2   ,  2 ,  0 , -1 ,  0 ,  1  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,     0   ) 
     96   Wave(20) = tide(  'R2'     , 0.000950 ,    2   ,  2 ,  0 ,  1 ,  0 , -1  , +180  ,  2   ,  0   ,  0   ,  0   , 0 ,     0   ) 
     97   ! 
     98   Wave(21) = tide(  'MU2'    , 0.007451 ,    2   ,  2 , -4 ,  4 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     99   Wave(22) = tide(  'NU2'    , 0.008873 ,    2   ,  2 , -3 ,  4 , -1 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     100   Wave(23) = tide( '2N2'     , 0.006176 ,    2   ,  2 , -4 ,  2 ,  2 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     101   Wave(24) = tide(  'MKS2'   , 0.000000 ,    2   ,  2 , -2 ,  4 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   , -2   , 0 ,     4   ) 
     102   Wave(25) = tide(  'LA2'    , 0.001800 ,    2   ,  2 , -1 ,  0 ,  1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     103   Wave(26) = tide(  'EPS2'   , 0.001796 ,    2   ,  2 , -5 ,  4 ,  1 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     104   ! 
     105   ! Harmonic and others 
     106   Wave(27) = tide(  'M3'     , 0.000000 ,    3   ,  3 , -3 ,  3 ,  0 ,  0  ,    0  ,  3   , -3   ,  0   ,  0   , 0 ,   149   ) 
     107   Wave(28) = tide(  'M4'     , 0.000000 ,    4   ,  4 , -4 ,  4 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,     1   ) 
     108   Wave(29) = tide(  'M6'     , 0.000000 ,    6   ,  6 , -6 ,  6 ,  0 ,  0  ,    0  ,  6   , -6   ,  0   ,  0   , 0 ,    18   ) 
     109   Wave(30) = tide(  'M8'     , 0.000000 ,    8   ,  8 , -8 ,  8 ,  0 ,  0  ,    0  ,  8   , -8   ,  0   ,  0   , 0 ,    20   ) 
     110   Wave(31) = tide(  'N4'     , 0.000000 ,    4   ,  4 , -6 ,  4 ,  2 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,     1   ) 
     111   Wave(32) = tide(  'S4'     , 0.000000 ,    4   ,  4 ,  0 ,  0 ,  0 ,  0  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,     0   ) 
     112   Wave(33) = tide(  'MN4'    , 0.000000 ,    4   ,  4 , -5 ,  4 ,  1 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,     1   ) 
     113   Wave(34) = tide(  'MS4'    , 0.000000 ,    4   ,  4 , -2 ,  2 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    78   ) 
     114   !  
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/SBC/tide_mod.F90

    r15783 r15784  
    1616   PUBLIC   tide_init_Wave   ! called by tideini and diaharm modules 
    1717 
    18    INTEGER, PUBLIC, PARAMETER ::   jpmax_harmo = 31   !: maximum number of harmonic 
     18   ! davbyr: increase maximum number of harmonics from 19 to 34 
     19   INTEGER, PUBLIC, PARAMETER ::   jpmax_harmo = 34   !: maximum number of harmonic 
    1920 
    2021   TYPE, PUBLIC ::    tide 
     
    331332         zf = zf * zf1 * zf1 
    332333         ! 
     334          
     335      !--- davbyr 11/2017 
     336      CASE( 20 )                 !==  formule 20,  compound waves ( 78 x 78 x 78 x 78 ) 
     337         zf1 = nodal_factort(78) 
     338         zf  = zf1 * zf1 * zf1 * zf1 
     339      !--- END davbyr 
    333340      CASE( 73 )                 !==  formule 73 
    334341         zs = sin(sh_I) 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_wadcpl/src/OCE/SBC/tideini.F90

    r14075 r15784  
    3434   REAL(wp), PUBLIC ::   rdttideramp     !: 
    3535   REAL(wp), PUBLIC ::   rn_scal_load    !: 
     36   ! davbyr - read love number from namelist 
     37   REAL(wp), PUBLIC ::   dn_love_number  !: 
     38   ! END davbyr 
    3639   CHARACTER(lc), PUBLIC ::   cn_tide_load   !:  
    3740 
     
    5457      ! 
    5558      NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_scal_load, ln_read_load, cn_tide_load, & 
    56                   &     ln_tide_ramp, rn_scal_load, rdttideramp, clname 
     59                  &     ln_tide_ramp, rn_scal_load, rdttideramp, dn_love_number, clname 
    5760      !!---------------------------------------------------------------------- 
    5861      ! 
     
    8083            WRITE(numout,*) '         Fraction of SSH used in scal. approx.   rn_scal_load = ', rn_scal_load 
    8184            WRITE(numout,*) '         Duration (days) of ramp                 rdttideramp  = ', rdttideramp 
     85            ! davbyr - Love number (one line) 
     86            WRITE(numout,*) '         Love Number                             dn_love_number = ', dn_love_number 
    8287         ENDIF 
    8388      ELSE 
Note: See TracChangeset for help on using the changeset viewer.