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 4634 for branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90 – NEMO

Ignore:
Timestamp:
2014-05-12T22:46:18+02:00 (10 years ago)
Author:
clem
Message:

major changes in heat budget

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r4045 r4634  
    1212   !!                 ! 1999-02  (E. Guilyardi)  name of netCDF files + variables 
    1313   !!            8.2  ! 2000-06  (M. Imbard)  Original code (diabort.F) 
    14    !!   NEMO     1.0  ! 2002-06  (A.Bozec, E. Durand)  Original code (diainit.F) 
     14   !!   NEMO     1.0  ! 2002-06  (RUN025_CTL_DIAGA.Bozec, E. Durand)  Original code (diainit.F) 
    1515   !!             -   ! 2002-09  (G. Madec)  F90: Free form and module 
    1616   !!             -   ! 2002-12  (G. Madec)  merge of diabort and diainit, F90 
     
    129129      REAL(wp)                     ::   zztmp, zztmpx, zztmpy   !  
    130130      !! 
    131       REAL(wp), POINTER, DIMENSION(:,:)   :: z2d       ! 2D workspace 
     131      REAL(wp), POINTER, DIMENSION(:,:)   :: z2d      ! 2D workspace 
     132      REAL(wp), POINTER, DIMENSION(:,:)   :: z2ds     ! 2D workspace 
    132133      REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d      ! 3D workspace 
    133134      !!---------------------------------------------------------------------- 
     
    135136      IF( nn_timing == 1 )   CALL timing_start('dia_wri') 
    136137      !  
    137       CALL wrk_alloc( jpi , jpj      , z2d ) 
     138      CALL wrk_alloc( jpi , jpj      , z2d , z2ds ) 
    138139      CALL wrk_alloc( jpi , jpj, jpk , z3d ) 
    139140      ! 
     
    176177      CALL iom_put( "sstgrad" ,  z2d               )    ! module of sst gradient 
    177178 
     179      ! clem: heat and salt content 
     180      z2d(:,:)  = 0._wp  
     181      z2ds(:,:) = 0._wp  
     182      DO jk = 1, jpkm1 
     183         DO jj = 2, jpjm1 
     184            DO ji = fs_2, fs_jpim1   ! vector opt. 
     185               z2d(ji,jj) = z2d(ji,jj) + rau0 * rcp * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 
     186               z2ds(ji,jj) = z2ds(ji,jj) + rau0 * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 
     187            END DO 
     188         END DO 
     189      END DO 
     190      CALL lbc_lnk( z2d, 'T', 1. ) 
     191      CALL lbc_lnk( z2ds, 'T', 1. ) 
     192      CALL iom_put( "heatc", z2d )    ! vertically integrated heat content (J/m2) 
     193      CALL iom_put( "saltc", z2ds )   ! vertically integrated salt content (PSU*kg/m2) 
     194       
     195 
    178196      IF( lk_diaar5 ) THEN 
    179197         z3d(:,:,jpk) = 0.e0 
    180198         DO jk = 1, jpkm1 
    181             z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) 
     199            z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) * umask(:,:,jk) 
    182200         END DO 
    183201         CALL iom_put( "u_masstr", z3d )                  ! mass transport in i-direction 
     202 
    184203         zztmp = 0.5 * rcp 
    185204         z2d(:,:) = 0.e0  
     205         z2ds(:,:) = 0.e0  
    186206         DO jk = 1, jpkm1 
    187207            DO jj = 2, jpjm1 
    188208               DO ji = fs_2, fs_jpim1   ! vector opt. 
    189209                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 
     210                  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) ) 
    190211               END DO 
    191212            END DO 
    192213         END DO 
    193214         CALL lbc_lnk( z2d, 'U', -1. ) 
     215         CALL lbc_lnk( z2ds, 'U', -1. ) 
    194216         CALL iom_put( "u_heattr", z2d )                  ! heat transport in i-direction 
     217         CALL iom_put( "u_salttr", z2ds )                 ! salt transport in i-direction 
     218 
     219         z3d(:,:,jpk) = 0.e0 
    195220         DO jk = 1, jpkm1 
    196             z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) 
     221            z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) 
    197222         END DO 
    198223         CALL iom_put( "v_masstr", z3d )                  ! mass transport in j-direction 
     224 
    199225         z2d(:,:) = 0.e0  
     226         z2ds(:,:) = 0.e0  
    200227         DO jk = 1, jpkm1 
    201228            DO jj = 2, jpjm1 
    202229               DO ji = fs_2, fs_jpim1   ! vector opt. 
    203230                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 
     231                  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) ) 
    204232               END DO 
    205233            END DO 
    206234         END DO 
    207235         CALL lbc_lnk( z2d, 'V', -1. ) 
    208          CALL iom_put( "v_heattr", z2d )                  !  heat transport in i-direction 
    209       ENDIF 
    210       ! 
    211       CALL wrk_dealloc( jpi , jpj      , z2d ) 
     236         CALL lbc_lnk( z2ds, 'V', -1. ) 
     237         CALL iom_put( "v_heattr", z2d )                  !  heat transport in j-direction 
     238         CALL iom_put( "v_salttr", z2ds )                 !  salt transport in j-direction 
     239      ENDIF 
     240      ! 
     241      CALL wrk_dealloc( jpi , jpj      , z2d , z2ds ) 
    212242      CALL wrk_dealloc( jpi , jpj, jpk , z3d ) 
    213243      ! 
Note: See TracChangeset for help on using the changeset viewer.