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/OPA_SRC/TRA/traldf_lap.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/OPA_SRC/TRA/traldf_lap.F90

    r2715 r3294  
    2525   USE trc_oce         ! share passive tracers/Ocean variables 
    2626   USE lib_mpp         ! MPP library 
     27   USE timing          ! Timing 
    2728 
    2829   IMPLICIT NONE 
     
    4445CONTAINS 
    4546 
    46    SUBROUTINE tra_ldf_lap( kt, cdtype, pgu, pgv,      & 
     47   SUBROUTINE tra_ldf_lap( kt, kit000, cdtype, pgu, pgv,      & 
    4748      &                                ptb, pta, kjpt )  
    4849      !!---------------------------------------------------------------------- 
     
    6667      ! 
    6768      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     69      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    6870      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
    6971      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
     
    7678      REAL(wp) ::   zabe1, zabe2, zbtr   ! local scalars 
    7779      !!---------------------------------------------------------------------- 
    78        
    79       IF( kt == nit000 )  THEN 
     80      ! 
     81      CALL timing_start('tra_ldf_lap') 
     82      ! 
     83      IF( kt == kit000 )  THEN 
    8084         IF(lwp) WRITE(numout,*) 
    8185         IF(lwp) WRITE(numout,*) 'tra_ldf_lap : iso-level laplacian diffusion on ', cdtype 
    8286         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ ' 
    8387         ! 
    84          ALLOCATE( e1ur(jpi,jpj), e2vr(jpi,jpj), STAT=ierr ) 
    85          IF( lk_mpp    )   CALL mpp_sum( ierr ) 
    86          IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'tra_ldf_lap : unable to allocate arrays' ) 
    87          ! 
    88          e1ur(:,:) = e2u(:,:) / e1u(:,:) 
    89          e2vr(:,:) = e1v(:,:) / e2v(:,:) 
     88         IF( .NOT. ALLOCATED( e1ur ) ) THEN 
     89            ! This routine may be called for both active and passive tracers.  
     90            ! Allocate and set saved arrays on first call only. 
     91            ALLOCATE( e1ur(jpi,jpj), e2vr(jpi,jpj), STAT=ierr ) 
     92            IF( lk_mpp    )   CALL mpp_sum( ierr ) 
     93            IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'tra_ldf_lap : unable to allocate arrays' ) 
     94            ! 
     95            e1ur(:,:) = e2u(:,:) / e1u(:,:) 
     96            e2vr(:,:) = e1v(:,:) / e2v(:,:) 
     97         ENDIF 
    9098      ENDIF 
    9199 
     
    145153      END DO                                                ! end of tracer loop 
    146154      !                                                     ! ================== 
     155      CALL timing_stop('tra_ldf_lap') 
     156      ! 
    147157   END SUBROUTINE tra_ldf_lap 
    148158 
Note: See TracChangeset for help on using the changeset viewer.