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 11613 for NEMO/branches/UKMO/NEMO_4.0_momentum_trends/src/OCE/DYN/dynzdf.F90 – NEMO

Ignore:
Timestamp:
2019-09-30T11:07:57+02:00 (5 years ago)
Author:
davestorkey
Message:

UKMO/NEMO_4.0_momentum_trends branch : first set of code changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0_momentum_trends/src/OCE/DYN/dynzdf.F90

    r10888 r11613  
    2525   ! 
    2626   USE in_out_manager ! I/O manager 
     27   USE iom             ! IOM library 
    2728   USE lib_mpp        ! MPP library 
    2829   USE prtctl         ! Print control 
     
    6970      INTEGER  ::   ji, jj, jk         ! dummy loop indices 
    7071      INTEGER  ::   iku, ikv           ! local integers 
     72      INTEGER  ::   ikbu, ikbv         ! local integers 
    7173      REAL(wp) ::   zzwi, ze3ua, zdt   ! local scalars 
    7274      REAL(wp) ::   zzws, ze3va        !   -      - 
     
    99101      ! 
    100102      ! 
    101       IF( l_trddyn )   THEN         !* temporary save of ta and sa trends 
    102          ALLOCATE( ztrdu(jpi,jpj,jpk), ztrdv(jpi,jpj,jpk) )  
    103          ztrdu(:,:,:) = ua(:,:,:) 
    104          ztrdv(:,:,:) = va(:,:,:) 
    105       ENDIF 
    106       ! 
    107103      !              !==  RHS: Leap-Frog time stepping on all trends but the vertical mixing  ==!   (put in ua,va) 
    108104      ! 
     
    131127            va(:,:,jk) = ( va(:,:,jk) - va_b(:,:) ) * vmask(:,:,jk) 
    132128         END DO 
     129         IF( l_trddyn )   THEN         !* temporary save of ta and sa trends 
     130            ALLOCATE( ztrdu(jpi,jpj,jpk), ztrdv(jpi,jpj,jpk) )  
     131            ztrdu(:,:,:) = ua(:,:,:) 
     132            ztrdv(:,:,:) = va(:,:,:) 
     133         ENDIF 
    133134         DO jj = 2, jpjm1        ! Add bottom/top stress due to barotropic component only 
    134135            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    141142            END DO 
    142143         END DO 
     144         IF( l_trddyn )   THEN                      ! save explicit part of bottom friction trends 
     145            ztrdu(:,:,:) = ( ua(:,:,:) - ztrdu(:,:,:) ) / r2dt  
     146            ztrdv(:,:,:) = ( va(:,:,:) - ztrdv(:,:,:) ) / r2dt  
     147            CALL trd_dyn( ztrdu, ztrdv, jpdyn_bfr, kt ) 
     148         ENDIF 
    143149         IF( ln_isfcav ) THEN    ! Ocean cavities (ISF) 
    144150            DO jj = 2, jpjm1         
     
    153159            END DO 
    154160         END IF 
     161      ENDIF 
     162      ! 
     163      IF( l_trddyn )   THEN         !* temporary save of ta and sa trends 
     164         IF( .NOT. ALLOCATED(ztrdu) ) ALLOCATE( ztrdu(jpi,jpj,jpk), ztrdv(jpi,jpj,jpk) )  
     165         ztrdu(:,:,:) = ua(:,:,:) 
     166         ztrdv(:,:,:) = va(:,:,:) 
    155167      ENDIF 
    156168      ! 
     
    486498      ! 
    487499      IF( l_trddyn )   THEN                      ! save the vertical diffusive trends for further diagnostics 
    488          ztrdu(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) / r2dt - ztrdu(:,:,:) 
    489          ztrdv(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) / r2dt - ztrdv(:,:,:) 
     500 
     501         ztrdu(:,:,:) = ( ua(:,:,:) - ztrdu(:,:,:) ) / r2dt  
     502         ztrdv(:,:,:) = ( va(:,:,:) - ztrdv(:,:,:) ) / r2dt  
    490503         CALL trd_dyn( ztrdu, ztrdv, jpdyn_zdf, kt ) 
     504         ! 
     505         IF( ln_drgimp ) THEN 
     506            ztrdu(:,:,:) = 0._wp    ;   ztrdv(:,:,:) = 0._wp 
     507            DO jk = 1, jpkm1 
     508               DO jj = 2, jpjm1 
     509                  DO ji = 2, jpim1 
     510                     ikbu = mbku(ji,jj)          ! deepest ocean u- & v-levels 
     511                     ikbv = mbkv(ji,jj) 
     512                     ztrdu(ji,jj,jk) = 0.5 * ( rCdU_bot(ji+1,jj) + rCdU_bot(ji,jj) )  &  
     513     &                               * un(ji,jj,ikbu) / e3u_n(ji,jj,ikbu) 
     514                     ztrdv(ji,jj,jk) = 0.5 * ( rCdU_bot(ji,jj+1) + rCdU_bot(ji,jj) )  & 
     515     &                               * vn(ji,jj,ikbv) / e3v_n(ji,jj,ikbv) 
     516                  END DO 
     517               END DO 
     518            END DO 
     519            CALL trd_dyn( ztrdu, ztrdv, jpdyn_bfri, kt ) 
     520         ENDIF 
     521         ! 
    491522         DEALLOCATE( ztrdu, ztrdv )  
    492523      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.