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 4902 for branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90 – NEMO

Ignore:
Timestamp:
2014-11-27T17:13:38+01:00 (9 years ago)
Author:
cetlod
Message:

2014/dev_CNRS_2014 : Merge in the trunk changes between 4728 and 4879, see ticket #1415

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r4901 r4902  
    4545   USE diadimg         ! dimg direct access file format output 
    4646   USE diaar5, ONLY :   lk_diaar5 
    47    USE dynadv, ONLY :   ln_dynadv_vec 
    4847   USE iom 
    4948   USE ioipsl 
     
    129128      REAL(wp)                     ::   zztmp, zztmpx, zztmpy   !  
    130129      !! 
    131       REAL(wp), POINTER, DIMENSION(:,:)   :: z2d       ! 2D workspace 
     130      REAL(wp), POINTER, DIMENSION(:,:)   :: z2d      ! 2D workspace 
     131      REAL(wp), POINTER, DIMENSION(:,:)   :: z2ds     ! 2D workspace 
    132132      REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d      ! 3D workspace 
    133133      !!---------------------------------------------------------------------- 
     
    135135      IF( nn_timing == 1 )   CALL timing_start('dia_wri') 
    136136      !  
    137       CALL wrk_alloc( jpi , jpj      , z2d ) 
     137      CALL wrk_alloc( jpi , jpj      , z2d , z2ds ) 
    138138      CALL wrk_alloc( jpi , jpj, jpk , z3d ) 
    139139      ! 
     
    192192      CALL iom_put( "sstgrad" ,  z2d               )    ! module of sst gradient 
    193193 
     194      ! clem: heat and salt content 
     195      z2d(:,:)  = 0._wp  
     196      z2ds(:,:) = 0._wp  
     197      DO jk = 1, jpkm1 
     198         DO jj = 2, jpjm1 
     199            DO ji = fs_2, fs_jpim1   ! vector opt. 
     200               z2d(ji,jj) = z2d(ji,jj) + rau0 * rcp * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 
     201               z2ds(ji,jj) = z2ds(ji,jj) + rau0 * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 
     202            END DO 
     203         END DO 
     204      END DO 
     205      CALL lbc_lnk( z2d, 'T', 1. ) 
     206      CALL lbc_lnk( z2ds, 'T', 1. ) 
     207      CALL iom_put( "heatc", z2d )    ! vertically integrated heat content (J/m2) 
     208      CALL iom_put( "saltc", z2ds )   ! vertically integrated salt content (PSU*kg/m2) 
     209   
     210      ! 
     211      rke(:,:,jk) = 0._wp                               !      kinetic energy  
     212      DO jk = 1, jpkm1 
     213         DO jj = 2, jpjm1 
     214            DO ji = fs_2, fs_jpim1   ! vector opt. 
     215               zztmp   = 1._wp / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     216               zztmpx  = 0.5 * (  un(ji-1,jj,jk) * un(ji-1,jj,jk) * e2u(ji-1,jj) * fse3u(ji-1,jj,jk)    & 
     217                  &             + un(ji  ,jj,jk) * un(ji  ,jj,jk) * e2u(ji  ,jj) * fse3u(ji  ,jj,jk) )  & 
     218                  &          *  zztmp  
     219               ! 
     220               zztmpy  = 0.5 * (  vn(ji,jj-1,jk) * vn(ji,jj-1,jk) * e1v(ji,jj-1) * fse3v(ji,jj-1,jk)    & 
     221                  &             + vn(ji,jj  ,jk) * vn(ji,jj  ,jk) * e1v(ji,jj  ) * fse3v(ji,jj  ,jk) )  & 
     222                  &          *  zztmp  
     223               ! 
     224               rke(ji,jj,jk) = 0.5_wp * ( zztmpx + zztmpy ) 
     225               ! 
     226            ENDDO 
     227         ENDDO 
     228      ENDDO 
     229      CALL lbc_lnk( rke, 'T', 1. ) 
     230      CALL iom_put( "eken", rke )            
     231 
    194232      IF( lk_diaar5 ) THEN 
    195233         z3d(:,:,jpk) = 0.e0 
    196234         DO jk = 1, jpkm1 
    197             z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) 
     235            z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) * umask(:,:,jk) 
    198236         END DO 
    199237         CALL iom_put( "u_masstr", z3d )                  ! mass transport in i-direction 
     238 
    200239         zztmp = 0.5 * rcp 
    201240         z2d(:,:) = 0.e0  
     241         z2ds(:,:) = 0.e0  
    202242         DO jk = 1, jpkm1 
    203243            DO jj = 2, jpjm1 
    204244               DO ji = fs_2, fs_jpim1   ! vector opt. 
    205245                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 
     246                  z2ds(ji,jj) = z2ds(ji,jj) + z3d(ji,jj,jk) * 0.5_wp * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) ) 
    206247               END DO 
    207248            END DO 
    208249         END DO 
    209250         CALL lbc_lnk( z2d, 'U', -1. ) 
     251         CALL lbc_lnk( z2ds, 'U', -1. ) 
    210252         CALL iom_put( "u_heattr", z2d )                  ! heat transport in i-direction 
     253         CALL iom_put( "u_salttr", z2ds )                 ! salt transport in i-direction 
     254 
     255         z3d(:,:,jpk) = 0.e0 
    211256         DO jk = 1, jpkm1 
    212             z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) 
     257            z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) 
    213258         END DO 
    214259         CALL iom_put( "v_masstr", z3d )                  ! mass transport in j-direction 
     260 
    215261         z2d(:,:) = 0.e0  
     262         z2ds(:,:) = 0.e0  
    216263         DO jk = 1, jpkm1 
    217264            DO jj = 2, jpjm1 
    218265               DO ji = fs_2, fs_jpim1   ! vector opt. 
    219266                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 
     267                  z2ds(ji,jj) = z2ds(ji,jj) + z3d(ji,jj,jk) * 0.5_wp * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) ) 
    220268               END DO 
    221269            END DO 
    222270         END DO 
    223271         CALL lbc_lnk( z2d, 'V', -1. ) 
    224          CALL iom_put( "v_heattr", z2d )                  !  heat transport in i-direction 
    225       ENDIF 
    226       ! 
    227       CALL wrk_dealloc( jpi , jpj      , z2d ) 
     272         CALL lbc_lnk( z2ds, 'V', -1. ) 
     273         CALL iom_put( "v_heattr", z2d )                  !  heat transport in j-direction 
     274         CALL iom_put( "v_salttr", z2ds )                 !  salt transport in j-direction 
     275      ENDIF 
     276      ! 
     277      CALL wrk_dealloc( jpi , jpj      , z2d , z2ds ) 
    228278      CALL wrk_dealloc( jpi , jpj, jpk , z3d ) 
    229279      ! 
Note: See TracChangeset for help on using the changeset viewer.