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 3159 for branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90 – NEMO

Ignore:
Timestamp:
2011-11-18T22:41:44+01:00 (13 years ago)
Author:
cetlod
Message:

New dynamical allocation + timing on TRA/ routines

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90

    r3116 r3159  
    2929   USE lib_mpp         ! distribued memory computing library 
    3030   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     31   USE wrk_nemo_2      ! Memory allocation 
     32   USE timing          ! Timing 
    3133 
    3234   IMPLICIT NONE 
     
    5961      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    6062      !! 
    61       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ztrdt, ztrds 
    62       !!---------------------------------------------------------------------- 
    63  
     63      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
     64      !!---------------------------------------------------------------------- 
     65      ! 
     66      IF( nn_timing == 1 )  CALL timing_start('tra_ldf') 
     67      ! 
    6468      rldf = 1     ! For active tracers the  
    6569 
    6670      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    67          ALLOCATE( ztrdt(jpi,jpj,jpk) )   ;    ztrdt(:,:,:) = tsa(:,:,:,jp_tem)  
    68          ALLOCATE( ztrds(jpi,jpj,jpk) )   ;    ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     71         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )  
     72         ztrdt(:,:,:) = tsa(:,:,:,jp_tem)  
     73         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    6974      ENDIF 
    7075 
     
    109114         CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_ldf, ztrdt ) 
    110115         CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_ldf, ztrds ) 
    111          DEALLOCATE( ztrdt )      ;     DEALLOCATE( ztrds )  
     116         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds )  
    112117      ENDIF 
    113118      !                                          ! print mean trends (used for debugging) 
    114119      IF(ln_ctl)   CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf  - Ta: ', mask1=tmask,               & 
    115120         &                       tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     121      ! 
     122      IF( nn_timing == 1 )  CALL timing_stop('tra_ldf') 
    116123      ! 
    117124   END SUBROUTINE tra_ldf 
     
    239246      !! ** Purpose :   initializations of  
    240247      !!---------------------------------------------------------------------- 
    241       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    242       USE wrk_nemo, ONLY:   zt_ref => wrk_3d_1, ztb => wrk_3d_2, zavt => wrk_3d_3   ! 3D workspaces 
    243       USE wrk_nemo, ONLY:   zs_ref => wrk_3d_4, zsb => wrk_3d_5                     ! 3D workspaces 
    244248      ! 
    245249      USE zdf_oce         ! vertical mixing 
     
    251255      LOGICAL  ::   llsave          ! local logical 
    252256      REAL(wp) ::   zt0, zs0, z12   ! local scalar 
    253       !!---------------------------------------------------------------------- 
    254  
    255       IF( wrk_in_use(3, 1,2,3,4,5) ) THEN 
    256          CALL ctl_stop('ldf_ano : requested workspace arrays unavailable')   ;   RETURN 
    257       ENDIF 
     257      REAL(wp), POINTER, DIMENSION(:,:,:) :: zt_ref, zs_ref, ztb, zsb, zavt      
     258      !!---------------------------------------------------------------------- 
     259      ! 
     260      IF( nn_timing == 1 )  CALL timing_start('ldf_ano') 
     261      ! 
     262      CALL wrk_alloc( jpi, jpj, jpk, zt_ref, zs_ref, ztb, zsb, zavt )  
     263      ! 
    258264 
    259265      IF(lwp) THEN 
     
    322328      avt(:,:,:)        = zavt(:,:,:) 
    323329      ! 
    324       IF( wrk_not_released(3, 1,2,3,4,5) )   CALL ctl_stop('ldf_ano: failed to release workspace arrays') 
     330      CALL wrk_dealloc( jpi, jpj, jpk, zt_ref, zs_ref, ztb, zsb, zavt )  
     331      ! 
     332      IF( nn_timing == 1 )  CALL timing_stop('ldf_ano') 
    325333      ! 
    326334   END SUBROUTINE ldf_ano 
Note: See TracChangeset for help on using the changeset viewer.