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 6012 for branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2015-12-07T16:11:45+01:00 (8 years ago)
Author:
mathiot
Message:

merge MetO branch with dev_r5151_UKMO_ISF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r5930 r6012  
    145145      INTEGER  ::   ji, jj, jk, jn        ! dummy loop indices 
    146146      INTEGER  ::   ikbu, ikbv, noffset      ! local integers 
     147      INTEGER  ::   iktu, iktv               ! local integers 
    147148      REAL(wp) ::   zraur, z1_2dt_b, z2dt_bf    ! local scalars 
    148149      REAL(wp) ::   zx1, zy1, zx2, zy2          !   -      - 
     
    384385      DO jj = 2, jpjm1                          ! Remove coriolis term (and possibly spg) from barotropic trend 
    385386         DO ji = fs_2, fs_jpim1 
    386              zu_frc(ji,jj) = zu_frc(ji,jj) - zu_trd(ji,jj) * umask(ji,jj,1) 
    387              zv_frc(ji,jj) = zv_frc(ji,jj) - zv_trd(ji,jj) * vmask(ji,jj,1) 
     387             zu_frc(ji,jj) = zu_frc(ji,jj) - zu_trd(ji,jj) * ssumask(ji,jj) 
     388             zv_frc(ji,jj) = zv_frc(ji,jj) - zv_trd(ji,jj) * ssvmask(ji,jj) 
    388389          END DO 
    389390      END DO  
     
    413414      zu_frc(:,:) = zu_frc(:,:) + hur(:,:) * bfrua(:,:) * zwx(:,:) 
    414415      zv_frc(:,:) = zv_frc(:,:) + hvr(:,:) * bfrva(:,:) * zwy(:,:) 
     416      !        
     417      !                                         ! Add top stress contribution from baroclinic velocities:       
     418      IF (ln_bt_fw) THEN 
     419         DO jj = 2, jpjm1 
     420            DO ji = fs_2, fs_jpim1   ! vector opt. 
     421               iktu = miku(ji,jj) 
     422               iktv = mikv(ji,jj) 
     423               zwx(ji,jj) = un(ji,jj,iktu) - un_b(ji,jj) ! NOW top baroclinic velocities 
     424               zwy(ji,jj) = vn(ji,jj,iktv) - vn_b(ji,jj) 
     425            END DO 
     426         END DO 
     427      ELSE 
     428         DO jj = 2, jpjm1 
     429            DO ji = fs_2, fs_jpim1   ! vector opt. 
     430               iktu = miku(ji,jj) 
     431               iktv = mikv(ji,jj) 
     432               zwx(ji,jj) = ub(ji,jj,iktu) - ub_b(ji,jj) ! BEFORE top baroclinic velocities 
     433               zwy(ji,jj) = vb(ji,jj,iktv) - vb_b(ji,jj) 
     434            END DO 
     435         END DO 
     436      ENDIF 
     437      ! 
     438      ! Note that the "unclipped" top friction parameter is used even with explicit drag 
     439      zu_frc(:,:) = zu_frc(:,:) + hur(:,:) * tfrua(:,:) * zwx(:,:) 
     440      zv_frc(:,:) = zv_frc(:,:) + hvr(:,:) * tfrva(:,:) * zwy(:,:) 
    415441      !        
    416442      IF (ln_bt_fw) THEN                        ! Add wind forcing 
     
    544570            DO jj = 2, jpjm1                                    ! Sea Surface Height at u- & v-points 
    545571               DO ji = 2, fs_jpim1   ! Vector opt. 
    546                   zwx(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e1e2u(ji,jj)     & 
     572                  zwx(ji,jj) = z1_2 * ssumask(ji,jj)  * r1_e1e2u(ji,jj)     & 
    547573                     &              * ( e1e2t(ji  ,jj) * zsshp2_e(ji  ,jj)  & 
    548574                     &              +   e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj) ) 
    549                   zwy(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e1e2v(ji,jj)     & 
     575                  zwy(ji,jj) = z1_2 * ssvmask(ji,jj)  * r1_e1e2v(ji,jj)     & 
    550576                     &              * ( e1e2t(ji,jj  ) * zsshp2_e(ji,jj  )  & 
    551577                     &              +   e1e2t(ji,jj+1) * zsshp2_e(ji,jj+1) ) 
     
    607633            END DO 
    608634         END DO 
    609          ssha_e(:,:) = (  sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) )  ) * tmask(:,:,1) 
     635         ssha_e(:,:) = (  sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) )  ) * ssmask(:,:) 
    610636         CALL lbc_lnk( ssha_e, 'T',  1._wp ) 
    611637 
     
    622648            DO jj = 2, jpjm1 
    623649               DO ji = 2, jpim1      ! NO Vector Opt. 
    624                   zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e1e2u(ji,jj)  & 
    625                      &              * ( e1e2t(ji  ,jj  ) * ssha_e(ji  ,jj  ) & 
    626                      &              +   e1e2t(ji+1,jj  ) * ssha_e(ji+1,jj  ) ) 
    627                   zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e1e2v(ji,jj)  & 
    628                      &              * ( e1e2t(ji  ,jj  ) * ssha_e(ji  ,jj  ) & 
    629                      &              +   e1e2t(ji  ,jj+1) * ssha_e(ji  ,jj+1) ) 
     650                  zsshu_a(ji,jj) = z1_2 * ssumask(ji,jj) * r1_e1e2u(ji,jj)    & 
     651                     &              * ( e1e2t(ji  ,jj  )  * ssha_e(ji  ,jj  ) & 
     652                     &              +   e1e2t(ji+1,jj  )  * ssha_e(ji+1,jj  ) ) 
     653                  zsshv_a(ji,jj) = z1_2 * ssvmask(ji,jj) * r1_e1e2v(ji,jj)    & 
     654                     &              * ( e1e2t(ji  ,jj  )  * ssha_e(ji  ,jj  ) & 
     655                     &              +   e1e2t(ji  ,jj+1)  * ssha_e(ji  ,jj+1) ) 
    630656               END DO 
    631657            END DO 
     
    661687            DO jj = 2, jpjm1                             
    662688               DO ji = 2, jpim1 
    663                   zx1 = z1_2 * umask(ji  ,jj,1) *  r1_e1e2u(ji  ,jj)    & 
     689                  zx1 = z1_2 * ssumask(ji  ,jj) *  r1_e1e2u(ji  ,jj)    & 
    664690                     &      * ( e1e2t(ji  ,jj  ) * zsshp2_e(ji  ,jj)    & 
    665691                     &      +   e1e2t(ji+1,jj  ) * zsshp2_e(ji+1,jj  ) ) 
    666                   zy1 = z1_2 * vmask(ji  ,jj,1) *  r1_e1e2v(ji  ,jj  )  & 
     692                  zy1 = z1_2 * ssvmask(ji  ,jj) *  r1_e1e2v(ji  ,jj  )  & 
    667693                     &       * ( e1e2t(ji ,jj  ) * zsshp2_e(ji  ,jj  )  & 
    668694                     &       +   e1e2t(ji ,jj+1) * zsshp2_e(ji  ,jj+1) ) 
     
    736762         zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 
    737763         ! 
     764         ! Add top stresses: 
     765         zu_trd(:,:) = zu_trd(:,:) + tfrua(:,:) * un_e(:,:) * hur_e(:,:) 
     766         zv_trd(:,:) = zv_trd(:,:) + tfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 
     767         ! 
    738768         ! Surface pressure trend: 
    739769         DO jj = 2, jpjm1 
     
    755785                            &                                 + zu_trd(ji,jj)   & 
    756786                            &                                 + zu_frc(ji,jj) ) &  
    757                             &   ) * umask(ji,jj,1) 
     787                            &   ) * ssumask(ji,jj) 
    758788 
    759789                  va_e(ji,jj) = (                                 vn_e(ji,jj)   & 
     
    761791                            &                                 + zv_trd(ji,jj)   & 
    762792                            &                                 + zv_frc(ji,jj) ) & 
    763                             &   ) * vmask(ji,jj,1) 
    764                END DO 
    765             END DO 
    766  
    767          ELSE                 ! Flux form 
     793                            &   ) * ssvmask(ji,jj) 
     794               END DO 
     795            END DO 
     796 
     797         ELSE                                         ! Flux form 
    768798            DO jj = 2, jpjm1 
    769799               DO ji = fs_2, fs_jpim1   ! vector opt. 
    770800 
    771                   zhura = umask(ji,jj,1)/(hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - umask(ji,jj,1)) 
    772                   zhvra = vmask(ji,jj,1)/(hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - vmask(ji,jj,1)) 
     801                  zhura = ssumask(ji,jj)/(hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - ssumask(ji,jj)) 
     802                  zhvra = ssvmask(ji,jj)/(hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - ssvmask(ji,jj)) 
    773803 
    774804                  ua_e(ji,jj) = (                hu_e(ji,jj)  *   un_e(ji,jj)   &  
     
    791821            hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
    792822            hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 
    793             hur_e(:,:) = umask(:,:,1) / ( hu_e(:,:) + 1._wp - umask(:,:,1) ) 
    794             hvr_e(:,:) = vmask(:,:,1) / ( hv_e(:,:) + 1._wp - vmask(:,:,1) ) 
     823            hur_e(:,:) = ssumask(:,:) / ( hu_e(:,:) + 1._wp - ssumask(:,:) ) 
     824            hvr_e(:,:) = ssvmask(:,:) / ( hv_e(:,:) + 1._wp - ssvmask(:,:) ) 
    795825            ! 
    796826         ENDIF 
     
    827857            ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:)  
    828858            va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:)  
    829          ELSE                                ! Sum transports 
     859         ELSE                                              ! Sum transports 
    830860            ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:) * hu_e (:,:) 
    831861            va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:) * hv_e (:,:) 
     
    881911         END DO 
    882912         ! Save barotropic velocities not transport: 
    883          ua_b  (:,:) =  ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - umask(:,:,1) ) 
    884          va_b  (:,:) =  va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - vmask(:,:,1) ) 
     913         ua_b  (:,:) =  ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 
     914         va_b  (:,:) =  va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 
    885915      ENDIF 
    886916      ! 
     
    897927      ! 
    898928      IF ( (.NOT.Agrif_Root()).AND.(ln_bt_fw) ) THEN 
    899          IF ( Agrif_NbStepint().EQ.0 ) THEN 
     929         IF ( Agrif_NbStepint() == 0 ) THEN 
    900930            ub2_i_b(:,:) = 0.e0 
    901931            vb2_i_b(:,:) = 0.e0 
Note: See TracChangeset for help on using the changeset viewer.