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

Ignore:
Timestamp:
2016-11-30T17:56:53+01:00 (8 years ago)
Author:
timgraham
Message:

Merge dev_INGV_METO_merge_2016 into branch

File:
1 edited

Legend:

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

    r6140 r7403  
    2424   USE ldfslp          ! lateral diffusion: slope of iso-neutral surfaces 
    2525   USE ldfc1d_c2d      ! lateral diffusion: 1D & 2D cases  
    26    USE diaar5, ONLY:   lk_diaar5 
     26   USE diaptr 
    2727   ! 
    2828   USE trc_oce, ONLY: lk_offline ! offline flag 
     
    730730      CALL iom_put( "woce_eiv", zw3d ) 
    731731      ! 
     732      !       
     733      ! 
     734      CALL wrk_alloc( jpi,jpj,   zw2d ) 
     735      ! 
     736      zztmp = 0.5_wp * rau0 * rcp  
     737      IF( iom_use('ueiv_heattr') .OR. iom_use('ueiv_heattr3d') ) THEN 
     738        zw2d(:,:)   = 0._wp  
     739        zw3d(:,:,:) = 0._wp  
     740        DO jk = 1, jpkm1 
     741           DO jj = 2, jpjm1 
     742              DO ji = fs_2, fs_jpim1   ! vector opt. 
     743                 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( 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) )  
     745                 zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
     746              END DO 
     747           END DO 
     748        END DO 
     749        CALL lbc_lnk( zw2d, 'U', -1. ) 
     750        CALL lbc_lnk( zw3d, 'U', -1. ) 
     751        CALL iom_put( "ueiv_heattr"  , zztmp * zw2d )                  ! heat transport in i-direction 
     752        CALL iom_put( "ueiv_heattr3d", zztmp * zw3d )                  ! heat transport in i-direction 
     753      ENDIF 
     754      zw2d(:,:)   = 0._wp  
     755      zw3d(:,:,:) = 0._wp  
     756      DO jk = 1, jpkm1 
     757         DO jj = 2, jpjm1 
     758            DO ji = fs_2, fs_jpim1   ! vector opt. 
     759               zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1)      - psi_vw(ji,jj,jk)          )   & 
     760                  &                            * ( tsn   (ji,jj,jk,jp_tem) + tsn   (ji,jj+1,jk,jp_tem) )  
     761               zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
     762            END DO 
     763         END DO 
     764      END DO 
     765      CALL lbc_lnk( zw2d, 'V', -1. ) 
     766      CALL iom_put( "veiv_heattr", zztmp * zw2d )                  !  heat transport in j-direction 
     767      CALL iom_put( "veiv_heattr", zztmp * zw3d )                  !  heat transport in j-direction 
     768      ! 
     769      IF( ln_diaptr )  CALL dia_ptr_hst( 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 
     789      zw2d(:,:) = 0._wp  
     790      zw3d(:,:,:) = 0._wp  
     791      DO jk = 1, jpkm1 
     792         DO jj = 2, jpjm1 
     793            DO ji = fs_2, fs_jpim1   ! vector opt. 
     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) 
     797            END DO 
     798         END DO 
     799      END DO 
     800      CALL lbc_lnk( zw2d, 'V', -1. ) 
     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      ! 
     804      IF( ln_diaptr ) CALL dia_ptr_hst( jp_sal, 'eiv', 0.5 * zw3d ) 
     805      ! 
     806      CALL wrk_dealloc( jpi,jpj,   zw2d ) 
    732807      CALL wrk_dealloc( jpi,jpj,jpk,   zw3d ) 
    733       !       
    734       ! 
    735       IF( lk_diaar5 ) THEN                               !==  eiv heat transport: calculate and output  ==! 
    736          CALL wrk_alloc( jpi,jpj,   zw2d ) 
    737          ! 
    738          zztmp = 0.5_wp * rau0 * rcp  
    739          zw2d(:,:) = 0._wp  
    740          DO jk = 1, jpkm1 
    741             DO jj = 2, jpjm1 
    742                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) )  
    745                END DO 
    746             END DO 
    747          END DO 
    748          CALL lbc_lnk( zw2d, 'U', -1. ) 
    749          CALL iom_put( "ueiv_heattr", zw2d )                  ! heat transport in i-direction 
    750          zw2d(:,:) = 0._wp  
    751          DO jk = 1, jpkm1 
    752             DO jj = 2, jpjm1 
    753                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) )  
    756                END DO 
    757             END DO 
    758          END DO 
    759          CALL lbc_lnk( zw2d, 'V', -1. ) 
    760          CALL iom_put( "veiv_heattr", zw2d )                  !  heat transport in i-direction 
    761          ! 
    762          CALL wrk_dealloc( jpi,jpj,   zw2d ) 
    763       ENDIF 
    764808      ! 
    765809      IF( nn_timing == 1 )  CALL timing_stop( 'ldf_eiv_dia')       
Note: See TracChangeset for help on using the changeset viewer.