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 7252 for branches/2016/dev_r7233_CMIP6_diags_trunk_version/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90 – NEMO

Ignore:
Timestamp:
2016-11-17T16:07:44+01:00 (7 years ago)
Author:
timgraham
Message:

Added extra diagnostics from eiv code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r7233_CMIP6_diags_trunk_version/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90

    r6140 r7252  
    730730      CALL iom_put( "woce_eiv", zw3d ) 
    731731      ! 
    732       CALL wrk_dealloc( jpi,jpj,jpk,   zw3d ) 
    733732      !       
    734733      ! 
    735       IF( lk_diaar5 ) THEN                               !==  eiv heat transport: calculate and output  ==! 
     734      IF( lk_diaar5 .OR. ln_diaptr ) THEN                     !==  eiv heat transport: calculate and output  ==! 
    736735         CALL wrk_alloc( jpi,jpj,   zw2d ) 
    737736         ! 
    738737         zztmp = 0.5_wp * rau0 * rcp  
     738         IF( iom_use('ueiv_heattr') .OR. iom_use('ueiv_heattr3d') THEN 
     739           zw2d(:,:) = 0._wp  
     740           zw3d(:,:,:) = 0._wp  
     741           DO jk = 1, jpkm1 
     742              DO jj = 2, jpjm1 
     743                 DO ji = fs_2, fs_jpim1   ! vector opt. 
     744                    zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + * ( psi_uw(ji,jj,jk+1)      - psi_uw(ji,jj,jk)          )   & 
     745                       &                              * ( tsn   (ji,jj,jk,jp_tem) + tsn   (ji+1,jj,jk,jp_tem) )  
     746                    zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
     747                 END DO 
     748              END DO 
     749           END DO 
     750           CALL lbc_lnk( zw2d, 'U', -1. ) 
     751           CALL lbc_lnk( zw3d, 'U', -1. ) 
     752           CALL iom_put( "ueiv_heattr", zztmp * zw2d )                  ! heat transport in i-direction 
     753           CALL iom_put( "ueiv_heattr3d", zztmp * zw3d )                  ! heat transport in i-direction 
     754         ENDIF 
    739755         zw2d(:,:) = 0._wp  
     756         zw3d(:,:) = 0._wp  
    740757         DO jk = 1, jpkm1 
    741758            DO jj = 2, jpjm1 
    742759               DO ji = fs_2, fs_jpim1   ! vector opt. 
    743                   zw2d(ji,jj) = zw2d(ji,jj) + zztmp * ( psi_uw(ji,jj,jk+1)      - psi_uw(ji,jj,jk)          )   & 
    744                      &                              * ( tsn   (ji,jj,jk,jp_tem) + tsn   (ji+1,jj,jk,jp_tem) )  
     760                  zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1)      - psi_vw(ji,jj,jk)          )   & 
     761                     &                            * ( tsn   (ji,jj,jk,jp_tem) + tsn   (ji,jj+1,jk,jp_tem) )  
     762                  zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
    745763               END DO 
    746764            END DO 
    747765         END DO 
    748          CALL lbc_lnk( zw2d, 'U', -1. ) 
    749          CALL iom_put( "ueiv_heattr", zw2d )                  ! heat transport in i-direction 
     766         CALL lbc_lnk( zw2d, 'V', -1. ) 
     767         CALL iom_put( "veiv_heattr", zztmp * zw2d )                  !  heat transport in i-direction 
     768         CALL iom_put( "veiv_heattr", zztmp * zw3d )                  !  heat transport in i-direction 
     769         CALL dia_ptr_ohst_components( jp_tem, 'eiv', 0.5 * zw3d ) 
     770         ! 
     771         zztmp = 0.5_wp * 0.5 
     772         IF( iom_use('ueiv_salttr') .OR. iom_use('ueiv_salttr3d') THEN 
     773           zw2d(:,:) = 0._wp  
     774           zw3d(:,:,:) = 0._wp  
     775           DO jk = 1, jpkm1 
     776              DO jj = 2, jpjm1 
     777                 DO ji = fs_2, fs_jpim1   ! vector opt. 
     778                    zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + * ( psi_uw(ji,jj,jk+1)      - psi_uw(ji,jj,jk)          )   & 
     779                       &                              * ( tsn   (ji,jj,jk,jp_sal) + tsn   (ji+1,jj,jk,jp_sal) )  
     780                    zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
     781                 END DO 
     782              END DO 
     783           END DO 
     784           CALL lbc_lnk( zw2d, 'U', -1. ) 
     785           CALL lbc_lnk( zw3d, 'U', -1. ) 
     786           CALL iom_put( "ueiv_salttr", zztmp * zw2d )                  ! salt transport in i-direction 
     787           CALL iom_put( "ueiv_salttr3d", zztmp * zw3d )                  ! salt transport in i-direction 
     788         ENDIF 
    750789         zw2d(:,:) = 0._wp  
     790         zw3d(:,:) = 0._wp  
    751791         DO jk = 1, jpkm1 
    752792            DO jj = 2, jpjm1 
    753793               DO ji = fs_2, fs_jpim1   ! vector opt. 
    754                   zw2d(ji,jj) = zw2d(ji,jj) + zztmp * ( psi_vw(ji,jj,jk+1)      - psi_vw(ji,jj,jk)          )   & 
    755                      &                              * ( tsn   (ji,jj,jk,jp_tem) + tsn   (ji,jj+1,jk,jp_tem) )  
     794                  zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1)      - psi_vw(ji,jj,jk)          )   & 
     795                     &                            * ( tsn   (ji,jj,jk,jp_sal) + tsn   (ji,jj+1,jk,jp_sal) )  
     796                  zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
    756797               END DO 
    757798            END DO 
    758799         END DO 
    759800         CALL lbc_lnk( zw2d, 'V', -1. ) 
    760          CALL iom_put( "veiv_heattr", zw2d )                  !  heat transport in i-direction 
    761          ! 
     801         CALL iom_put( "veiv_salttr", zztmp * zw2d )                  !  salt transport in j-direction 
     802         CALL iom_put( "veiv_salttr", zztmp * zw3d )                  !  salt transport in j-direction 
     803         CALL dia_ptr_ohst_components( jp_sal, 'eiv', 0.5 * zw3d ) 
     804 
    762805         CALL wrk_dealloc( jpi,jpj,   zw2d ) 
    763806      ENDIF 
     807      CALL wrk_dealloc( jpi,jpj,jpk,   zw3d ) 
    764808      ! 
    765809      IF( nn_timing == 1 )  CALL timing_stop( 'ldf_eiv_dia')       
Note: See TracChangeset for help on using the changeset viewer.