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/DIA/diaar5.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/DIA/diaar5.F90

    r2715 r3294  
    1919   USE lib_mpp        ! distribued memory computing library 
    2020   USE iom            ! I/O manager library 
     21   USE timing         ! preformance summary 
     22   USE wrk_nemo       ! 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(:,:,:) ) 
     
    9495      CALL iom_put( 'sshtot', zvolssh / area_tot ) 
    9596 
    96       !                                         ! thermosteric ssh 
    97       ztsn(:,:,:,jp_tem) = tn (:,:,:) 
     97      !                      
     98      ztsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem)                    ! thermosteric ssh 
    9899      ztsn(:,:,:,jp_sal) = sn0(:,:,:) 
    99100      CALL eos( ztsn, zrhd )                       ! now in situ density using initial salinity 
     
    138139            DO ji = 1, jpi 
    139140               zztmp = area(ji,jj) * fse3t(ji,jj,jk) 
    140                ztemp = ztemp + zztmp * tn(ji,jj,jk) 
    141                zsal  = zsal  + zztmp * sn(ji,jj,jk) 
     141               ztemp = ztemp + zztmp * tsn(ji,jj,jk,jp_tem) 
     142               zsal  = zsal  + zztmp * tsn(ji,jj,jk,jp_sal) 
    142143            END DO 
    143144         END DO 
    144145      END DO 
    145146      IF( .NOT.lk_vvl ) THEN 
    146          ztemp = ztemp + SUM( zarea_ssh(:,:) * tn(:,:,1) ) 
    147          zsal  = zsal  + SUM( zarea_ssh(:,:) * sn(:,:,1) ) 
     147         ztemp = ztemp + SUM( zarea_ssh(:,:) * tsn(:,:,1,jp_tem) ) 
     148         zsal  = zsal  + SUM( zarea_ssh(:,:) * tsn(:,:,1,jp_sal) ) 
    148149      ENDIF 
    149150      IF( lk_mpp ) THEN   
     
    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.