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 3168 for branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90 – NEMO

Ignore:
Timestamp:
2011-11-22T10:48:38+01:00 (13 years ago)
Author:
cbricaud
Message:

add timing, change dynamical allocation and correct small bugs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90

    r2977 r3168  
    1919   USE lib_mpp        ! distribued memory computing library 
    2020   USE iom            ! I/O manager library 
     21   USE timing         ! preformance summary 
     22   USE wrk_nemo_2     ! working arrays 
    2123 
    2224   IMPLICIT NONE 
     
    6567      !! ** Purpose :   compute and output some AR5 diagnostics 
    6668      !!---------------------------------------------------------------------- 
    67       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    68       USE wrk_nemo, ONLY:   zarea_ssh => wrk_2d_1 , zbotpres => wrk_2d_2   ! 2D workspace 
    69       USE wrk_nemo, ONLY:   zrhd      => wrk_3d_1 , zrhop    => wrk_3d_2   ! 3D      - 
    70       USE wrk_nemo, ONLY:   ztsn      => wrk_4d_1                          ! 4D      - 
    7169      ! 
    7270      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
     
    7472      INTEGER  ::   ji, jj, jk                      ! dummy loop arguments 
    7573      REAL(wp) ::   zvolssh, zvol, zssh_steric, zztmp, zarho, ztemp, zsal, zmass 
     74      ! 
     75      REAL(wp), POINTER, DIMENSION(:,:)     :: zarea_ssh , zbotpres       ! 2D workspace  
     76      REAL(wp), POINTER, DIMENSION(:,:,:)   :: zrhd , zrhop               ! 3D workspace 
     77      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztsn                       ! 4D workspace 
    7678      !!-------------------------------------------------------------------- 
    77  
    78       IF( wrk_in_use(2, 1,2) .OR.   & 
    79           wrk_in_use(3, 1,2) .OR.   & 
    80           wrk_in_use(4, 1)   ) THEN 
    81          CALL ctl_stop('dia_ar5: requested workspace arrays unavailable')   ;   RETURN 
    82       ENDIF 
     79      IF( nn_timing == 1 )   CALL timing_start('dia_ar5') 
     80  
     81      CALL wrk_alloc( jpi , jpj              , zarea_ssh , zbotpres ) 
     82      CALL wrk_alloc( jpi , jpj , jpk        , zrhd      , zrhop    ) 
     83      CALL wrk_alloc( jpi , jpj , jpk , jpts , ztsn                 ) 
    8384 
    8485      CALL iom_put( 'cellthc', fse3t(:,:,:) ) 
     
    160161      CALL iom_put( 'saltot' , zsal  ) 
    161162      ! 
    162       IF( wrk_not_released(2, 1,2) .OR.   & 
    163           wrk_not_released(3, 1,2) .OR.   & 
    164           wrk_not_released(4, 1)   )   CALL ctl_stop('dia_ar5: failed to release workspace arrays') 
     163      CALL wrk_dealloc( jpi , jpj              , zarea_ssh , zbotpres ) 
     164      CALL wrk_dealloc( jpi , jpj , jpk        , zrhd      , zrhop    ) 
     165      CALL wrk_dealloc( jpi , jpj , jpk , jpts , ztsn                 ) 
     166      ! 
     167      IF( nn_timing == 1 )   CALL timing_stop('dia_ar5') 
    165168      ! 
    166169   END SUBROUTINE dia_ar5 
     
    173176      !! ** Purpose :   initialization for AR5 diagnostic computation 
    174177      !!---------------------------------------------------------------------- 
    175       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    176       USE wrk_nemo, ONLY:   wrk_4d_1      ! 4D workspace 
    177       ! 
    178178      INTEGER  ::   inum 
    179179      INTEGER  ::   ik 
     
    183183      !!---------------------------------------------------------------------- 
    184184      ! 
    185       IF(wrk_in_use(4, 1) ) THEN 
    186          CALL ctl_stop('dia_ar5_init: requested workspace array unavailable.')   ;   RETURN 
    187       ENDIF 
    188       zsaldta => wrk_4d_1(:,:,:,1:2) 
    189  
     185      IF( nn_timing == 1 )   CALL timing_start('dia_ar5_init') 
     186      ! 
     187      CALL wrk_alloc( jpi , jpj , jpk, jpts, zsaldta ) 
    190188      !                                      ! allocate dia_ar5 arrays 
    191189      IF( dia_ar5_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dia_ar5_init : unable to allocate arrays' ) 
     
    221219      ENDIF 
    222220      ! 
    223       IF( wrk_not_released(4, 1) )   CALL ctl_stop('dia_ar5_init: failed to release workspace array') 
     221      CALL wrk_dealloc( jpi , jpj , jpk, jpts, zsaldta ) 
     222      ! 
     223      IF( nn_timing == 1 )   CALL timing_stop('dia_ar5_init') 
    224224      ! 
    225225   END SUBROUTINE dia_ar5_init 
Note: See TracChangeset for help on using the changeset viewer.