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 3294 for trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90 – NEMO

Ignore:
Timestamp:
2012-01-28T17:44:18+01:00 (12 years ago)
Author:
rblod
Message:

Merge of 3.4beta into the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90

    r2715 r3294  
    9393      REAL(wp) ::   zfact            ! temporary scalar 
    9494      CHARACTER (len=22) :: charout 
    95       REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::  ztrdt  
     95      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  ztrdt  
    9696      !!---------------------------------------------------------------------- 
    97  
    98       IF( kt == nit000 .AND. lwp ) THEN 
     97      ! 
     98      IF( nn_timing == 1 )  CALL timing_start('trc_nxt') 
     99      ! 
     100      IF( kt == nittrc000 .AND. lwp ) THEN 
    99101         WRITE(numout,*) 
    100102         WRITE(numout,*) 'trc_nxt : time stepping on passive tracers' 
     
    119121 
    120122      ! set time step size (Euler/Leapfrog) 
    121       IF( neuler == 0 .AND. kt ==  nit000) THEN  ;  r2dt(:) =     rdttrc(:)   ! at nit000             (Euler) 
    122       ELSEIF( kt <= nit000 + 1 )           THEN  ;  r2dt(:) = 2.* rdttrc(:)   ! at nit000 or nit000+1 (Leapfrog) 
     123      IF( neuler == 0 .AND. kt ==  nittrc000 ) THEN  ;  r2dt(:) =     rdttrc(:)   ! at nittrc000             (Euler) 
     124      ELSEIF( kt <= nittrc000 + 1 )            THEN  ;  r2dt(:) = 2.* rdttrc(:)   ! at nit000 or nit000+1 (Leapfrog) 
    123125      ENDIF 
    124126 
    125127      ! trends computation initialisation 
    126128      IF( l_trdtrc )  THEN 
    127          ALLOCATE( ztrdt(jpi,jpj,jpk,jptra) )  !* store now fields before applying the Asselin filter 
     129         CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrdt )  !* store now fields before applying the Asselin filter 
    128130         ztrdt(:,:,:,:)  = trn(:,:,:,:) 
    129131      ENDIF 
    130132      ! Leap-Frog + Asselin filter time stepping 
    131       IF( neuler == 0 .AND. kt == nit000 ) THEN        ! Euler time-stepping at first time-step 
    132          !                                             ! (only swap) 
     133      IF( neuler == 0 .AND. kt == nittrc000 ) THEN        ! Euler time-stepping at first time-step 
     134         !                                                ! (only swap) 
    133135         DO jn = 1, jptra 
    134136            DO jk = 1, jpkm1 
     
    139141      ELSE 
    140142         ! Leap-Frog + Asselin filter time stepping 
    141          IF( lk_vvl ) THEN   ;   CALL tra_nxt_vvl( kt, 'TRC', trb, trn, tra, jptra )      ! variable volume level (vvl)  
    142          ELSE                ;   CALL tra_nxt_fix( kt, 'TRC', trb, trn, tra, jptra )      ! fixed    volume level  
     143         IF( lk_vvl ) THEN   ;   CALL tra_nxt_vvl( kt, nittrc000, 'TRC', trb, trn, tra, jptra )      ! variable volume level (vvl)  
     144         ELSE                ;   CALL tra_nxt_fix( kt, nittrc000, 'TRC', trb, trn, tra, jptra )      ! fixed    volume level  
    143145         ENDIF 
    144146      ENDIF 
     
    158160            END DO 
    159161         END DO 
    160          DEALLOCATE( ztrdt ) 
     162         CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrdt )  
    161163      END IF 
    162164      ! 
     
    166168         CALL prt_ctl_trc(tab4d=trn, mask=tmask, clinfo=ctrcnm) 
    167169      ENDIF 
     170      ! 
     171      IF( nn_timing == 1 )  CALL timing_stop('trc_nxt') 
    168172      ! 
    169173   END SUBROUTINE trc_nxt 
Note: See TracChangeset for help on using the changeset viewer.