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 8882 for branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90 – NEMO

Ignore:
Timestamp:
2017-12-01T18:44:09+01:00 (6 years ago)
Author:
flavoni
Message:

dev_CNRS_2017 branch: merged dev_r7881_ENHANCE09_RK3 with trunk r8864

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r8698 r8882  
    3535   USE traqsr          ! penetrative solar radiation (needed for nksr) 
    3636   USE phycst          ! physical constant 
    37    USE ldftra          ! lateral physics on tracers 
    38    USE ldfslp 
    39    USE bdy_oce   , ONLY: ln_bdy 
     37   USE ldftra          ! lateral physics : tracers 
     38   USE ldfslp          ! lateral physics : slopes 
     39   USE bdy_oce  , ONLY : ln_bdy 
    4040   USE bdytra          ! open boundary condition (bdy_tra routine) 
    4141   ! 
     
    4343   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    4444   USE prtctl          ! Print control 
    45    USE wrk_nemo        ! Memory allocation 
    4645   USE timing          ! Timing 
    4746#if defined key_agrif 
     
    9190      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    9291      REAL(wp) ::   zfact            ! local scalars 
    93       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
    94       !!---------------------------------------------------------------------- 
    95       ! 
    96       IF( nn_timing == 1 )  CALL timing_start( 'tra_nxt') 
     92      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt, ztrds 
     93      !!---------------------------------------------------------------------- 
     94      ! 
     95      IF( ln_timing )   CALL timing_start( 'tra_nxt') 
    9796      ! 
    9897      IF( kt == nit000 ) THEN 
     
    114113  
    115114      ! set time step size (Euler/Leapfrog) 
    116       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =     rdt      ! at nit000             (Euler) 
     115      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =        rdt   ! at nit000             (Euler) 
    117116      ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dt = 2._wp* rdt   ! at nit000 or nit000+1 (Leapfrog) 
    118117      ENDIF 
     
    120119      ! trends computation initialisation 
    121120      IF( l_trdtra )   THEN                     
    122          CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
     121         ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 
    123122         ztrdt(:,:,jpk) = 0._wp 
    124123         ztrds(:,:,jpk) = 0._wp 
     
    136135         CALL trd_tra( kt, 'TRA', jp_tem, jptra_tot, ztrdt ) 
    137136         CALL trd_tra( kt, 'TRA', jp_sal, jptra_tot, ztrds ) 
    138          IF( ln_linssh ) THEN  
     137         IF( ln_linssh ) THEN       ! linear sea surface height only 
    139138            ! Store now fields before applying the Asselin filter  
    140139            ! in order to calculate Asselin filter trend later. 
     
    150149            END DO 
    151150         END DO 
    152          IF (l_trdtra .AND. .NOT. ln_linssh) THEN  ! Zero Asselin filter contribution must be explicitly written out since for vvl 
    153                                                    ! Asselin filter is output by tra_nxt_vvl that is not called on this time step 
     151         IF (l_trdtra .AND. .NOT. ln_linssh ) THEN   ! Zero Asselin filter contribution must be explicitly written out since for vvl 
     152            !                                        ! Asselin filter is output by tra_nxt_vvl that is not called on this time step 
    154153            ztrdt(:,:,:) = 0._wp 
    155154            ztrds(:,:,:) = 0._wp 
     
    181180         CALL trd_tra( kt, 'TRA', jp_sal, jptra_atf, ztrds ) 
    182181      END IF 
    183       IF( l_trdtra ) CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 
     182      IF( l_trdtra )   DEALLOCATE( ztrdt , ztrds ) 
    184183      ! 
    185184      !                        ! control print 
     
    187186         &                       tab3d_2=tsn(:,:,:,jp_sal), clinfo2=       ' Sn: ', mask2=tmask ) 
    188187      ! 
    189       IF( nn_timing == 1 )   CALL timing_stop('tra_nxt') 
     188      IF( ln_timing )   CALL timing_stop('tra_nxt') 
    190189      ! 
    191190   END SUBROUTINE tra_nxt 
     
    271270      REAL(wp) ::   zfact, zfact1, ztc_a , ztc_n , ztc_b , ztc_f , ztc_d    ! local scalar 
    272271      REAL(wp) ::   zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d   !   -      - 
    273       REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrd_atf 
     272      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::  ztrd_atf 
    274273      !!---------------------------------------------------------------------- 
    275274      ! 
     
    290289      ENDIF 
    291290      ! 
    292       IF( ( l_trdtra .and. cdtype == 'TRA' ) .OR. ( l_trdtrc .and. cdtype == 'TRC' ) )   THEN 
    293          CALL wrk_alloc( jpi, jpj, jpk, kjpt, ztrd_atf ) 
     291      IF( ( l_trdtra .AND. cdtype == 'TRA' ) .OR. ( l_trdtrc .AND. cdtype == 'TRC' ) )   THEN 
     292         ALLOCATE( ztrd_atf(jpi,jpj,jpk,kjpt) ) 
    294293         ztrd_atf(:,:,:,:) = 0.0_wp 
    295294      ENDIF 
    296295      zfact = 1._wp / r2dt 
     296      zfact1 = atfp * p2dt 
     297      zfact2 = zfact1 * r1_rau0 
    297298      DO jn = 1, kjpt       
    298299         DO jk = 1, jpkm1 
    299             zfact1 = atfp * p2dt 
    300             zfact2 = zfact1 * r1_rau0 
    301300            DO jj = 2, jpjm1 
    302301               DO ji = fs_2, fs_jpim1 
     
    357356      END DO 
    358357      ! 
    359       IF( l_trdtra .and. cdtype == 'TRA' ) THEN  
    360          CALL trd_tra( kt, cdtype, jp_tem, jptra_atf, ztrd_atf(:,:,:,jp_tem) ) 
    361          CALL trd_tra( kt, cdtype, jp_sal, jptra_atf, ztrd_atf(:,:,:,jp_sal) ) 
    362          CALL wrk_dealloc( jpi, jpj, jpk, kjpt, ztrd_atf ) 
    363       ENDIF 
    364       IF( l_trdtrc .and. cdtype == 'TRC' ) THEN 
    365          DO jn = 1, kjpt 
    366             CALL trd_tra( kt, cdtype, jn, jptra_atf, ztrd_atf(:,:,:,jn) ) 
    367          END DO 
    368          CALL wrk_dealloc( jpi, jpj, jpk, kjpt, ztrd_atf ) 
     358      IF( ( l_trdtra .AND. cdtype == 'TRA' ) .OR. ( l_trdtrc .AND. cdtype == 'TRC' ) )   THEN 
     359         IF( l_trdtra .AND. cdtype == 'TRA' ) THEN  
     360            CALL trd_tra( kt, cdtype, jp_tem, jptra_atf, ztrd_atf(:,:,:,jp_tem) ) 
     361            CALL trd_tra( kt, cdtype, jp_sal, jptra_atf, ztrd_atf(:,:,:,jp_sal) ) 
     362         ENDIF 
     363         IF( l_trdtrc .AND. cdtype == 'TRC' ) THEN 
     364            DO jn = 1, kjpt 
     365               CALL trd_tra( kt, cdtype, jn, jptra_atf, ztrd_atf(:,:,:,jn) ) 
     366            END DO 
     367         ENDIF 
     368         DEALLOCATE( ztrd_atf ) 
    369369      ENDIF 
    370370      ! 
Note: See TracChangeset for help on using the changeset viewer.