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 1756 for trunk/NEMO/OPA_SRC/TRA/traldf_iso.F90 – NEMO

Ignore:
Timestamp:
2009-11-25T15:15:20+01:00 (15 years ago)
Author:
smasson
Message:

implement AR5 diagnostics, see ticket:610

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/TRA/traldf_iso.F90

    r1152 r1756  
    2626   USE zdf_oce         ! ocean vertical physics 
    2727   USE in_out_manager  ! I/O manager 
     28   USE iom             ! 
    2829   USE ldfslp          ! iso-neutral slopes 
    2930   USE diaptr          ! poleward transport diagnostics 
    3031   USE prtctl          ! Print control 
     32#if defined key_diaar5 
     33   USE phycst          ! physical constants 
     34   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     35#endif 
    3136 
    3237   IMPLICIT NONE 
     
    98103      REAL(wp) ::   zmskv, zabe2, zcof2, zcoef4, zsa   !    "         " 
    99104      REAL(wp) ::   zcoef0, zbtr                       !    "         " 
    100       REAL(wp), DIMENSION(jpi,jpj)     ::   zdkt , zdk1t, zftu   ! 2D workspace 
    101       REAL(wp), DIMENSION(jpi,jpj)     ::   zdks , zdk1s, zfsu   !    "           " 
     105      REAL(wp), DIMENSION(jpi,jpj)     ::   zdkt , zdk1t         ! 2D workspace 
     106      REAL(wp), DIMENSION(jpi,jpj)     ::   zdks , zdk1s, zfsu   !  "         " 
     107#if defined key_diaar5 
     108      REAL(wp), DIMENSION(jpi,jpj)     ::   z2d                  !  "         " 
     109      REAL(wp)                         ::   zztmp                !  "         " 
     110      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zftu                 ! 3D workspace 
     111#else 
     112      REAL(wp), DIMENSION(jpi,jpj)     ::   zftu                 ! 2D workspace 
     113#endif 
    102114      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdit, zdjt, ztfw     ! 3D workspace 
    103115      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdis, zdjs, zsfw     !  "      " 
     116# if defined key_diaar5 
     117# endif   
    104118      !!---------------------------------------------------------------------- 
    105119 
     
    149163      !!---------------------------------------------------------------------- 
    150164       
     165#if defined key_diaar5 
     166!CDIR PARALLEL DO PRIVATE( zdk1t, zdk1s, zfsu )  
     167#else 
    151168!CDIR PARALLEL DO PRIVATE( zdk1t, zdk1s, zftu, zfsu )  
     169#endif 
    152170      !                                                ! =============== 
    153171      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    186204               zcof2 = -fsahtv(ji,jj,jk) * e1v(ji,jj) * vslp(ji,jj,jk) * zmskv 
    187205 
     206#if defined key_diaar5 
     207               zftu(ji,jj,jk) = (  zabe1 * zdit(ji,jj,jk)   & 
     208#else 
    188209               zftu(ji,jj   ) = (  zabe1 * zdit(ji,jj,jk)   & 
     210#endif 
    189211                  &              + zcof1 * (  zdkt (ji+1,jj) + zdk1t(ji,jj)      & 
    190212                  &                         + zdk1t(ji+1,jj) + zdkt (ji,jj)  )  ) * umask(ji,jj,jk) 
     
    207229            DO ji = fs_2, fs_jpim1   ! vector opt. 
    208230               zbtr= 1. / ( e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk) ) 
     231#if defined key_diaar5 
     232               zta = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk)  ) 
     233#else 
    209234               zta = zbtr * ( zftu(ji,jj   ) - zftu(ji-1,jj   ) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk)  ) 
     235#endif 
    210236               zsa = zbtr * ( zfsu(ji,jj   ) - zfsu(ji-1,jj   ) + zfsv(ji,jj,jk) - zfsv(ji,jj-1,jk)  ) 
    211237               ta (ji,jj,jk) = ta (ji,jj,jk) + zta 
     
    221247         pst_ldf(:) = ptr_vj( zfsv(:,:,:) ) 
    222248      ENDIF 
     249#if defined key_diaar5 
     250      zztmp = 0.5 * rau0 * rcp  
     251      z2d(:,:) = 0.e0  
     252      DO jk = 1, jpkm1 
     253         DO jj = 2, jpjm1 
     254            DO ji = fs_2, fs_jpim1   ! vector opt. 
     255               z2d(ji,jj) = z2d(ji,jj) + zztmp * zftu(ji,jj,jk) * ( tn(ji,jj,jk) + tn(ji+1,jj,jk) ) * e1u(ji,jj) * fse3u(ji,jj,jk)  
     256            END DO 
     257         END DO 
     258      END DO 
     259      CALL lbc_lnk( z2d, 'U', -1. ) 
     260      CALL iom_put( "udiff_heattr", z2d )                  ! heat transport in i-direction 
     261      z2d(:,:) = 0.e0  
     262      DO jk = 1, jpkm1 
     263         DO jj = 2, jpjm1 
     264            DO ji = fs_2, fs_jpim1   ! vector opt. 
     265               z2d(ji,jj) = z2d(ji,jj) + zztmp * zftv(ji,jj,jk) * ( tn(ji,jj,jk) + tn(ji,jj+1,jk) ) * e2v(ji,jj) * fse3v(ji,jj,jk)  
     266            END DO 
     267         END DO 
     268      END DO 
     269      CALL lbc_lnk( z2d, 'V', -1. ) 
     270      CALL iom_put( "vdiff_heattr", z2d )                  !  heat transport in i-direction 
     271#endif 
    223272 
    224273      !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.