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 13149 for NEMO/branches/UKMO/NEMO_4.0_mirror_SI3_GPU/src/OCE/LDF/ldftra.F90 – NEMO

Ignore:
Timestamp:
2020-06-24T09:03:45+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2482: Dissable restart and use allocatable arrays

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0_mirror_SI3_GPU/src/OCE/LDF/ldftra.F90

    r10888 r13149  
    830830      zw3d(:,:,jpk) = 0._wp                                    ! bottom value always 0 
    831831      ! 
    832       DO jk = 1, jpkm1                                         ! e2u e3u u_eiv = -dk[psi_uw] 
    833          zw3d(:,:,jk) = ( psi_uw(:,:,jk+1) - psi_uw(:,:,jk) ) / ( e2u(:,:) * e3u_n(:,:,jk) ) 
    834       END DO 
    835       CALL iom_put( "uoce_eiv", zw3d ) 
    836       ! 
    837       DO jk = 1, jpkm1                                         ! e1v e3v v_eiv = -dk[psi_vw] 
    838          zw3d(:,:,jk) = ( psi_vw(:,:,jk+1) - psi_vw(:,:,jk) ) / ( e1v(:,:) * e3v_n(:,:,jk) ) 
    839       END DO 
    840       CALL iom_put( "voce_eiv", zw3d ) 
    841       ! 
    842       DO jk = 1, jpkm1                                         ! e1 e2 w_eiv = dk[psix] + dk[psix] 
    843          DO jj = 2, jpjm1 
    844             DO ji = fs_2, fs_jpim1  ! vector opt. 
    845                zw3d(ji,jj,jk) = (  psi_vw(ji,jj,jk) - psi_vw(ji  ,jj-1,jk)    & 
    846                   &              + psi_uw(ji,jj,jk) - psi_uw(ji-1,jj  ,jk)  ) / e1e2t(ji,jj) 
    847             END DO 
    848          END DO 
    849       END DO 
    850       CALL lbc_lnk( 'ldftra', zw3d, 'T', 1. )      ! lateral boundary condition 
    851       CALL iom_put( "woce_eiv", zw3d ) 
     832      IF(iom_use("uoce_eiv")) THEN 
     833         DO jk = 1, jpkm1                                         ! e2u e3u u_eiv = -dk[psi_uw] 
     834            zw3d(:,:,jk) = ( psi_uw(:,:,jk+1) - psi_uw(:,:,jk) ) / ( e2u(:,:) * e3u_n(:,:,jk) ) 
     835         END DO 
     836         CALL iom_put( "uoce_eiv", zw3d ) 
     837      ENDIF 
     838      ! 
     839      IF(iom_use("voce_eiv")) THEN 
     840         DO jk = 1, jpkm1                                         ! e1v e3v v_eiv = -dk[psi_vw] 
     841            zw3d(:,:,jk) = ( psi_vw(:,:,jk+1) - psi_vw(:,:,jk) ) / ( e1v(:,:) * e3v_n(:,:,jk) ) 
     842         END DO 
     843         CALL iom_put( "voce_eiv", zw3d ) 
     844      ENDIF 
     845      ! 
     846      IF(iom_use("woce_eiv")) THEN 
     847         DO jk = 1, jpkm1                                         ! e1 e2 w_eiv = dk[psix] + dk[psix] 
     848            DO jj = 2, jpjm1 
     849               DO ji = fs_2, fs_jpim1  ! vector opt. 
     850                  zw3d(ji,jj,jk) = (  psi_vw(ji,jj,jk) - psi_vw(ji  ,jj-1,jk)    & 
     851                     &              + psi_uw(ji,jj,jk) - psi_uw(ji-1,jj  ,jk)  ) / e1e2t(ji,jj) 
     852               END DO 
     853            END DO 
     854         END DO 
     855         CALL lbc_lnk( 'ldftra', zw3d, 'T', 1. )      ! lateral boundary condition 
     856         CALL iom_put( "woce_eiv", zw3d ) 
     857      ENDIF 
    852858      ! 
    853859      ! 
     
    870876        CALL iom_put( "ueiv_heattr3d", zztmp * zw3d )                  ! heat transport in i-direction 
    871877      ENDIF 
    872       zw2d(:,:)   = 0._wp  
    873       zw3d(:,:,:) = 0._wp  
    874       DO jk = 1, jpkm1 
    875          DO jj = 2, jpjm1 
    876             DO ji = fs_2, fs_jpim1   ! vector opt. 
    877                zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1)      - psi_vw(ji,jj,jk)          )   & 
    878                   &                            * ( tsn   (ji,jj,jk,jp_tem) + tsn   (ji,jj+1,jk,jp_tem) )  
    879                zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
    880             END DO 
    881          END DO 
    882       END DO 
    883       CALL lbc_lnk( 'ldftra', zw2d, 'V', -1. ) 
    884       CALL iom_put( "veiv_heattr", zztmp * zw2d )                  !  heat transport in j-direction 
    885       CALL iom_put( "veiv_heattr", zztmp * zw3d )                  !  heat transport in j-direction 
     878      IF( iom_use('veiv_heattr') ) THEN 
     879         zw2d(:,:)   = 0._wp  
     880         zw3d(:,:,:) = 0._wp  
     881         DO jk = 1, jpkm1 
     882            DO jj = 2, jpjm1 
     883               DO ji = fs_2, fs_jpim1   ! vector opt. 
     884                  zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1)      - psi_vw(ji,jj,jk)          )   & 
     885                     &                            * ( tsn   (ji,jj,jk,jp_tem) + tsn   (ji,jj+1,jk,jp_tem) )  
     886                  zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
     887               END DO 
     888            END DO 
     889         END DO 
     890         CALL lbc_lnk( 'ldftra', zw2d, 'V', -1. ) 
     891         CALL iom_put( "veiv_heattr", zztmp * zw2d )                  !  heat transport in j-direction 
     892         CALL iom_put( "veiv_heattr", zztmp * zw3d )                  !  heat transport in j-direction 
     893      ENDIF 
    886894      ! 
    887895      IF( ln_diaptr )  CALL dia_ptr_hst( jp_tem, 'eiv', 0.5 * zw3d ) 
     
    905913        CALL iom_put( "ueiv_salttr3d", zztmp * zw3d )                  ! salt transport in i-direction 
    906914      ENDIF 
    907       zw2d(:,:) = 0._wp  
    908       zw3d(:,:,:) = 0._wp  
    909       DO jk = 1, jpkm1 
    910          DO jj = 2, jpjm1 
    911             DO ji = fs_2, fs_jpim1   ! vector opt. 
    912                zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1)      - psi_vw(ji,jj,jk)          )   & 
    913                   &                            * ( tsn   (ji,jj,jk,jp_sal) + tsn   (ji,jj+1,jk,jp_sal) )  
    914                zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
    915             END DO 
    916          END DO 
    917       END DO 
    918       CALL lbc_lnk( 'ldftra', zw2d, 'V', -1. ) 
    919       CALL iom_put( "veiv_salttr", zztmp * zw2d )                  !  salt transport in j-direction 
    920       CALL iom_put( "veiv_salttr", zztmp * zw3d )                  !  salt transport in j-direction 
     915      IF( iom_use('veiv_salttr') ) THEN 
     916         zw2d(:,:) = 0._wp  
     917         zw3d(:,:,:) = 0._wp  
     918         DO jk = 1, jpkm1 
     919            DO jj = 2, jpjm1 
     920               DO ji = fs_2, fs_jpim1   ! vector opt. 
     921                  zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1)      - psi_vw(ji,jj,jk)          )   & 
     922                     &                            * ( tsn   (ji,jj,jk,jp_sal) + tsn   (ji,jj+1,jk,jp_sal) )  
     923                  zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
     924               END DO 
     925            END DO 
     926         END DO 
     927         CALL lbc_lnk( 'ldftra', zw2d, 'V', -1. ) 
     928         CALL iom_put( "veiv_salttr", zztmp * zw2d )                  !  salt transport in j-direction 
     929         CALL iom_put( "veiv_salttr", zztmp * zw3d )                  !  salt transport in j-direction 
     930      ENDIF 
    921931      ! 
    922932      IF( ln_diaptr ) CALL dia_ptr_hst( jp_sal, 'eiv', 0.5 * zw3d ) 
Note: See TracChangeset for help on using the changeset viewer.