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 – NEMO

Changeset 3159


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

New dynamical allocation + timing on TRA/ routines

Location:
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA
Files:
26 edited

Legend:

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

    r3116 r3159  
    3737   USE lib_mpp         ! MPP library 
    3838   USE prtctl          ! Print control 
     39   USE wrk_nemo_2      ! Memory Allocation 
     40   USE timing          ! Timing 
    3941 
    4042   IMPLICIT NONE 
     
    108110      !! References :   Jackett and McDougall, J. Atmos. Ocean. Tech., 1994 
    109111      !!---------------------------------------------------------------------- 
    110       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    111       USE wrk_nemo, ONLY:   zws => wrk_3d_1   ! 3D workspace 
    112112      !! 
    113113      REAL(wp), DIMENSION(:,:,:,:), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celcius] 
     
    122122      REAL(wp) ::   zb1, za1, zkw, zk0   !   -      - 
    123123      REAL(wp) ::   zrau0r               !   -      - 
    124       !!---------------------------------------------------------------------- 
    125  
    126       IF( wrk_in_use(3, 1) ) THEN 
    127          CALL ctl_stop('eos_insitu: requested workspace array unavailable')   ;   RETURN 
    128       ENDIF 
    129  
     124      REAL(wp), POINTER, DIMENSION(:,:,:) :: zws 
     125      !!---------------------------------------------------------------------- 
     126 
     127      ! 
     128      IF( nn_timing == 1 ) CALL timing_start('eos') 
     129      ! 
     130      CALL wrk_alloc( jpi, jpj, jpk, zws ) 
     131      ! 
    130132      SELECT CASE( nn_eos ) 
    131133      ! 
     
    191193      IF(ln_ctl)   CALL prt_ctl( tab3d_1=prd, clinfo1=' eos  : ', ovlap=1, kdim=jpk ) 
    192194      ! 
    193       IF( wrk_not_released(3, 1) )   CALL ctl_stop('eos_insitu: failed to release workspace array') 
     195      CALL wrk_dealloc( jpi, jpj, jpk, zws ) 
     196      ! 
     197      IF( nn_timing == 1 ) CALL timing_stop('eos') 
    194198      ! 
    195199   END SUBROUTINE eos_insitu 
     
    242246      !!                Brown and Campana, Mon. Weather Rev., 1978 
    243247      !!---------------------------------------------------------------------- 
    244       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    245       USE wrk_nemo, ONLY:   zws => wrk_3d_1 ! 3D workspace 
    246248      !! 
    247249      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celcius] 
     
    253255      REAL(wp) ::   zt, zs, zh, zsr, zr1, zr2, zr3, zr4, zrhop, ze, zbw   ! local scalars 
    254256      REAL(wp) ::   zb, zd, zc, zaw, za, zb1, za1, zkw, zk0, zrau0r       !   -      - 
    255       !!---------------------------------------------------------------------- 
    256  
    257       IF( wrk_in_use(3, 1) ) THEN 
    258          CALL ctl_stop('eos_insitu_pot: requested workspace array unavailable')   ;   RETURN 
    259       ENDIF 
    260  
     257      REAL(wp), POINTER, DIMENSION(:,:,:) :: zws 
     258      !!---------------------------------------------------------------------- 
     259      ! 
     260      IF( nn_timing == 1 ) CALL timing_start('eos-p') 
     261      ! 
     262      CALL wrk_alloc( jpi, jpj, jpk, zws ) 
     263      ! 
    261264      SELECT CASE ( nn_eos ) 
    262265      ! 
     
    327330      IF(ln_ctl)   CALL prt_ctl( tab3d_1=prd, clinfo1=' eos-p: ', tab3d_2=prhop, clinfo2=' pot : ', ovlap=1, kdim=jpk ) 
    328331      ! 
    329       IF( wrk_not_released(3, 1) )   CALL ctl_stop('eos_insitu_pot: failed to release workspace array') 
     332      CALL wrk_dealloc( jpi, jpj, jpk, zws ) 
     333      ! 
     334      IF( nn_timing == 1 ) CALL timing_stop('eos-p') 
    330335      ! 
    331336   END SUBROUTINE eos_insitu_pot 
     
    368373      !! References :   Jackett and McDougall, J. Atmos. Ocean. Tech., 1994 
    369374      !!---------------------------------------------------------------------- 
    370       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    371       USE wrk_nemo, ONLY:   zws => wrk_2d_5 ! 2D workspace 
    372375      !! 
    373376      REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celcius] 
     
    379382      REAL(wp) ::   zt, zs, zh, zsr, zr1, zr2, zr3, zr4, zrhop, ze, zbw   ! temporary scalars 
    380383      REAL(wp) ::   zb, zd, zc, zaw, za, zb1, za1, zkw, zk0, zmask        !    -         - 
    381       !!---------------------------------------------------------------------- 
    382  
    383       IF( wrk_in_use(2, 5) ) THEN 
    384          CALL ctl_stop('eos_insitu_2d: requested workspace array unavailable')   ;   RETURN 
    385       ENDIF 
     384      REAL(wp), POINTER, DIMENSION(:,:) :: zws 
     385      !!---------------------------------------------------------------------- 
     386      ! 
     387      IF( nn_timing == 1 ) CALL timing_start('eos2d') 
     388      ! 
     389      CALL wrk_alloc( jpi, jpj, zws ) 
     390      ! 
    386391 
    387392      prd(:,:) = 0._wp 
     
    457462      IF(ln_ctl)   CALL prt_ctl( tab2d_1=prd, clinfo1=' eos2d: ' ) 
    458463      ! 
    459       IF( wrk_not_released(2, 5) )   CALL ctl_stop('eos_insitu_2d: failed to release workspace array') 
     464      CALL wrk_dealloc( jpi, jpj, zws ) 
     465      ! 
     466      IF( nn_timing == 1 ) CALL timing_stop('eos2d') 
    460467      ! 
    461468   END SUBROUTINE eos_insitu_2d 
     
    503510      !!---------------------------------------------------------------------- 
    504511 
     512      ! 
     513      IF( nn_timing == 1 ) CALL timing_start('bn2') 
     514      ! 
    505515      ! pn2 : interior points only (2=< jk =< jpkm1 ) 
    506516      ! -------------------------- 
     
    584594#endif 
    585595      ! 
     596      IF( nn_timing == 1 ) CALL timing_stop('bn2') 
     597      ! 
    586598   END SUBROUTINE eos_bn2 
    587599 
     
    615627      REAL(wp) ::   zt, zs, zh   ! local scalars 
    616628      !!---------------------------------------------------------------------- 
     629      ! 
     630      IF( nn_timing == 1 ) CALL timing_start('eos_alpbet') 
    617631      ! 
    618632      SELECT CASE ( nn_eos ) 
     
    659673      END SELECT 
    660674      ! 
     675      IF( nn_timing == 1 ) CALL timing_stop('eos_alpbet') 
     676      ! 
    661677   END SUBROUTINE eos_alpbet 
    662678 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r3116 r3159  
    2727   USE prtctl          ! Print control 
    2828   USE lib_mpp         ! MPP library 
     29   USE wrk_nemo_2      ! Memory Allocation 
     30   USE timing          ! Timing 
     31 
    2932 
    3033   IMPLICIT NONE 
     
    6265      !! ** Method  : - Update (ua,va) with the advection term following nadv 
    6366      !!---------------------------------------------------------------------- 
    64       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    65       USE wrk_nemo, ONLY:   zun => wrk_3d_1 , zvn => wrk_3d_2 , zwn => wrk_3d_3   ! 3D workspace 
    6667      ! 
    6768      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    6869      ! 
    6970      INTEGER ::   jk   ! dummy loop index 
    70       !!---------------------------------------------------------------------- 
    71       ! 
    72       IF( wrk_in_use(3, 1,2,3) ) THEN 
    73          CALL ctl_stop('tra_adv: requested workspace arrays unavailable')   ;   RETURN 
    74       ENDIF 
     71      REAL(wp), POINTER, DIMENSION(:,:,:) :: zun, zvn, zwn 
     72      !!---------------------------------------------------------------------- 
     73      ! 
     74      IF( nn_timing == 1 )  CALL timing_start('tra_adv') 
     75      ! 
     76      CALL wrk_alloc( jpi, jpj, jpk, zun, zvn, zwn ) 
    7577      !                                          ! set time step 
    7678      IF( neuler == 0 .AND. kt == nit000 ) THEN     ! at nit000 
     
    132134         &                       tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    133135      ! 
    134       IF( wrk_not_released(3,1,2,3) )   CALL ctl_stop('tra_adv: failed to release workspace arrays') 
    135       ! 
     136      IF( nn_timing == 1 )  CALL timing_stop('tra_adv') 
     137      ! 
     138      CALL wrk_dealloc( jpi, jpj, jpk, zun, zvn, zwn ) 
     139      !                                           
    136140   END SUBROUTINE tra_adv 
    137141 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90

    r3116 r3159  
    3232   USE trc_oce         ! share passive tracers/Ocean variables 
    3333   USE lib_mpp         ! MPP library 
     34   USE wrk_nemo_2      ! Memory Allocation 
     35   USE timing          ! Timing 
    3436 
    3537   IMPLICIT NONE 
     
    110112      !!              - save trends if needed 
    111113      !!---------------------------------------------------------------------- 
    112       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    113114      USE oce     , ONLY:   zwx => ua        , zwy  => va          ! (ua,va) used as 3D workspace 
    114       USE wrk_nemo, ONLY:   zwz => wrk_3d_12 , zind => wrk_3d_13   ! 3D workspace 
    115       USE wrk_nemo, ONLY:   ztfreez => wrk_2d_1                    ! 2D     - 
    116115      ! 
    117116      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
     
    130129      REAL(wp) ::   zupsut, zcenut, zupst                 !   -      - 
    131130      REAL(wp) ::   zupsvt, zcenvt, zcent, zice           !   -      - 
    132       !!---------------------------------------------------------------------- 
    133  
    134       IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 12,13) ) THEN 
    135          CALL ctl_stop('tra_adv_cen2: requested workspace arrays unavailable')   ;   RETURN 
    136       ENDIF 
     131      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztfreez  
     132      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwz, zind 
     133      !!---------------------------------------------------------------------- 
     134      ! 
     135      IF( nn_timing == 1 )  CALL timing_start('tra_adv_cen2') 
     136      ! 
     137      CALL wrk_alloc( jpi, jpj, ztfreez ) 
     138      CALL wrk_alloc( jpi, jpj, jpk, zwz, zind ) 
     139      ! 
    137140 
    138141      IF( kt == kit000 )  THEN 
     
    279282      ENDIF 
    280283      ! 
    281       IF( wrk_not_released(2, 1)   .OR.   & 
    282           wrk_not_released(3, 12,13) )   CALL ctl_stop('tra_adv_cen2: failed to release workspace arrays') 
     284      CALL wrk_dealloc( jpi, jpj, ztfreez ) 
     285      CALL wrk_dealloc( jpi, jpj, jpk, zwz, zind ) 
     286      ! 
     287      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_cen2') 
    283288      ! 
    284289   END SUBROUTINE tra_adv_cen2 
     
    300305      !!---------------------------------------------------------------------- 
    301306       
     307      ! 
     308      IF( nn_timing == 1 )  CALL timing_start('ups_orca_set') 
     309      ! 
    302310      ! mixed upstream/centered scheme near river mouths 
    303311      ! ------------------------------------------------ 
     
    343351      CALL clo_ups( upsmsk(:,:) ) 
    344352      ! 
     353      IF( nn_timing == 1 )  CALL timing_stop('ups_orca_set') 
     354      ! 
    345355   END SUBROUTINE ups_orca_set 
    346356 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90

    r3116 r3159  
    2727   USE diaar5, ONLY:   lk_diaar5 
    2828# endif   
     29   USE wrk_nemo_2      ! Memory Allocation 
     30   USE timing          ! Timing 
    2931 
    3032   IMPLICIT NONE 
     
    6365      !! ** Action  : - add to p.n the eiv component 
    6466      !!---------------------------------------------------------------------- 
    65       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    66       USE wrk_nemo, ONLY:   zu_eiv => wrk_2d_1 , zv_eiv => wrk_2d_2 , zw_eiv => wrk_2d_3   ! 2D workspace 
    67 # if defined key_diaeiv  
    68       USE wrk_nemo, ONLY:   z2d => wrk_2d_4   ! 2D workspace 
    69 #endif 
    7067      INTEGER                         , INTENT(in   ) ::   kt       ! ocean time-step index 
    7168      INTEGER                         , INTENT(in   ) ::   kit000   ! first time step index 
     
    8178      REAL(wp) ::   zztmp                      ! local scalar 
    8279# endif   
     80      REAL(wp), POINTER, DIMENSION(:,:) :: zu_eiv, zv_eiv, zw_eiv, z2d 
    8381      !!---------------------------------------------------------------------- 
    84  
    85 # if defined key_diaeiv  
    86       IF( wrk_in_use(2, 1,2,3,4) ) THEN 
     82      ! 
     83      IF( nn_timing == 1 )  CALL timing_start( 'tra_adv_eiv') 
     84      ! 
     85# if defined key_diaeiv  
     86      CALL wrk_alloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv, z2d ) 
    8787# else 
    88       IF( wrk_in_use(2, 1,2,3)   ) THEN 
    89 # endif 
    90          CALL ctl_stop('tra_adv_eiv: requested workspace arrays are unavailable')   ;   RETURN 
    91       ENDIF 
     88      CALL wrk_alloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv ) 
     89# endif 
    9290 
    9391      IF( kt == kit000 )  THEN 
     
    192190      !  
    193191# if defined key_diaeiv  
    194       IF( wrk_not_released(2, 1,2,3,4) )   CALL ctl_stop('tra_adv_eiv: failed to release workspace arrays') 
     192      CALL wrk_dealloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv, z2d ) 
    195193# else 
    196       IF( wrk_not_released(2, 1,2,3)   )   CALL ctl_stop('tra_adv_eiv: failed to release workspace arrays') 
    197 # endif 
     194      CALL wrk_dealloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv ) 
     195# endif 
     196      ! 
     197      IF( nn_timing == 1 )  CALL timing_stop( 'tra_adv_eiv') 
    198198      ! 
    199199    END SUBROUTINE tra_adv_eiv 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90

    r3116 r3159  
    2525   USE diaptr          ! poleward transport diagnostics 
    2626   USE trc_oce         ! share passive tracers/Ocean variables 
    27  
     27   USE wrk_nemo_2      ! Memory Allocation 
     28   USE timing          ! Timing 
    2829 
    2930   IMPLICIT NONE 
     
    6162      !!              IPSL, Sept. 2000 (http://www.lodyc.jussieu.fr/opa) 
    6263      !!---------------------------------------------------------------------- 
    63       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    64       USE oce     , ONLY:   zwx   => ua       , zwy   => va          ! (ua,va) used as workspace 
    65       USE wrk_nemo, ONLY:   zslpx => wrk_3d_11 , zslpy => wrk_3d_12    ! 3D workspace 
     64      USE oce     , ONLY:   zwx   => ua    , zwy   => va          ! (ua,va) used as workspace 
    6665      ! 
    6766      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
     
    7877      REAL(wp) ::   zv, z0v, zzwy, z0w        !   -      - 
    7978      REAL(wp) ::   ztra, zbtr, zdt, zalpha   !   -      - 
     79      REAL(wp), POINTER, DIMENSION(:,:,:) :: zslpx, zslpy 
    8080      !!---------------------------------------------------------------------- 
    81  
    82       IF( wrk_in_use(3, 11,12) ) THEN 
    83          CALL ctl_stop('tra_adv_muscl: requested workspace arrays unavailable')   ;   RETURN 
    84       ENDIF 
     81      ! 
     82      IF( nn_timing == 1 )  CALL timing_start('tra_adv_muscl') 
     83      ! 
     84      CALL wrk_alloc( jpi, jpj, jpk, zslpx, zslpy ) 
     85      ! 
    8586 
    8687      IF( kt == kit000 )  THEN 
     
    253254      ENDDO 
    254255      ! 
    255       IF( wrk_not_released(3, 11,12) )   CALL ctl_stop('tra_adv_muscl: requested workspace arrays unavailable') 
     256      CALL wrk_dealloc( jpi, jpj, jpk, zslpx, zslpy ) 
     257      ! 
     258      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_muscl') 
    256259      ! 
    257260   END SUBROUTINE tra_adv_muscl 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90

    r3116 r3159  
    2323   USE diaptr          ! poleward transport diagnostics 
    2424   USE trc_oce         ! share passive tracers/Ocean variables 
     25   USE wrk_nemo_2      ! Memory Allocation 
     26   USE timing          ! Timing 
    2527 
    2628 
     
    5961      !!              IPSL, Sept. 2000 (http://www.lodyc.jussieu.fr/opa) 
    6062      !!---------------------------------------------------------------------- 
    61       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    62       USE oce     , ONLY:   zwx   => ua       , zwy   => va         ! (ua,va) used as 3D workspace 
    63       USE wrk_nemo, ONLY:   zslpx => wrk_3d_11, zslpy => wrk_3d_12   ! 3D workspace 
     63      USE oce     , ONLY:   zwx   => ua    , zwy   => va         ! (ua,va) used as 3D workspace 
    6464      !! 
    6565      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
     
    7676      REAL(wp) ::   zv, z0v, zzwy, z0w        !   -      - 
    7777      REAL(wp) ::   ztra, zbtr, zdt, zalpha   !   -      - 
     78      REAL(wp), POINTER, DIMENSION(:,:,:) :: zslpx, zslpy 
    7879      !!---------------------------------------------------------------------- 
    79  
    80       IF( wrk_in_use(3, 11,12) ) THEN 
    81          CALL ctl_stop('tra_adv_muscl2: requested workspace arrays are unavailable')   ;   RETURN 
    82       ENDIF 
     80      ! 
     81      IF( nn_timing == 1 )  CALL timing_start('tra_adv_muscl2') 
     82      ! 
     83      CALL wrk_alloc( jpi, jpj, jpk, zslpx, zslpy ) 
     84      ! 
    8385 
    8486      IF( kt == kit000 )  THEN 
     
    286288      END DO 
    287289      ! 
    288       IF( wrk_not_released(3, 11,12) )   CALL ctl_stop('tra_adv_muscl2: failed to release workspace arrays') 
     290      CALL wrk_dealloc( jpi, jpj, jpk, zslpx, zslpy ) 
     291      ! 
     292      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_muscl2') 
    289293      ! 
    290294   END SUBROUTINE tra_adv_muscl2 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90

    r3116 r3159  
    2626   USE diaptr          ! poleward transport diagnostics 
    2727   USE trc_oce         ! share passive tracers/Ocean variables 
     28   USE wrk_nemo_2      ! Memory Allocation 
     29   USE timing          ! Timing 
    2830 
    2931   IMPLICIT NONE 
     
    9193      !!---------------------------------------------------------------------- 
    9294 
     95      ! 
     96      IF( nn_timing == 1 )  CALL timing_start('tra_adv_qck') 
     97      ! 
    9398      IF( kt == kit000 )  THEN 
    9499         IF(lwp) WRITE(numout,*) 
     
    108113      CALL tra_adv_cen2_k( kt, cdtype, pwn,         ptn, pta, kjpt ) 
    109114      ! 
     115      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_qck') 
     116      ! 
    110117   END SUBROUTINE tra_adv_qck 
    111118 
     
    116123      !! 
    117124      !!---------------------------------------------------------------------- 
    118       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    119125      USE oce     , ONLY:   zwx => ua       ! ua used as workspace 
    120       USE wrk_nemo, ONLY:   zfu => wrk_3d_11 , zfc => wrk_3d_12, zfd => wrk_3d_13   ! 3D workspace 
    121126      ! 
    122127      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     
    130135      INTEGER  :: ji, jj, jk, jn   ! dummy loop indices 
    131136      REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
     137      REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu, zfc, zfd 
    132138      !---------------------------------------------------------------------- 
    133139      ! 
    134       IF( wrk_in_use(3, 11,12,13) ) THEN 
    135          CALL ctl_stop('tra_adv_qck_i: requested workspace arrays unavailable')   ;   RETURN 
    136       ENDIF 
     140      CALL wrk_alloc( jpi, jpj, jpk, zfu, zfc, zfd ) 
    137141      !                                                          ! =========== 
    138142      DO jn = 1, kjpt                                            ! tracer loop 
     
    229233      END DO 
    230234      ! 
    231       IF( wrk_not_released(3, 11,12,13) )   CALL ctl_stop('tra_adv_qck_i: failed to release workspace arrays') 
     235      CALL wrk_dealloc( jpi, jpj, jpk, zfu, zfc, zfd ) 
    232236      ! 
    233237   END SUBROUTINE tra_adv_qck_i 
     
    239243      !! 
    240244      !!---------------------------------------------------------------------- 
    241       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    242245      USE oce     , ONLY:   zwy => ua       ! ua used as workspace 
    243       USE wrk_nemo, ONLY:   zfu => wrk_3d_11 , zfc => wrk_3d_12, zfd => wrk_3d_13   ! 3D workspace 
    244246      ! 
    245247      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     
    253255      INTEGER  :: ji, jj, jk, jn   ! dummy loop indices 
    254256      REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
     257      REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu, zfc, zfd 
    255258      !---------------------------------------------------------------------- 
    256259      ! 
    257       IF(wrk_in_use(3, 11,12,13))THEN 
    258          CALL ctl_stop('tra_adv_qck_j: ERROR: requested workspace arrays unavailable') 
    259          RETURN 
    260       END IF 
     260      CALL wrk_alloc( jpi, jpj, jpk, zfu, zfc, zfd ) 
     261      ! 
    261262      !                                                          ! =========== 
    262263      DO jn = 1, kjpt                                            ! tracer loop 
     
    360361      END DO 
    361362      ! 
    362       IF( wrk_not_released(3, 11,12,13) )   CALL ctl_stop('tra_adv_qck_j: failed to release workspace arrays') 
     363      CALL wrk_dealloc( jpi, jpj, jpk, zfu, zfc, zfd ) 
    363364      ! 
    364365   END SUBROUTINE tra_adv_qck_j 
     
    437438      REAL(wp) ::  zc, zcurv, zfho          !   -      - 
    438439      !---------------------------------------------------------------------- 
    439  
     440      ! 
     441      IF( nn_timing == 1 )  CALL timing_start('quickest') 
     442      ! 
    440443      DO jk = 1, jpkm1 
    441444         DO jj = 1, jpj 
     
    468471      END DO 
    469472      ! 
     473      IF( nn_timing == 1 )  CALL timing_stop('quickest') 
     474      ! 
    470475   END SUBROUTINE quickest 
    471476 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90

    r3116 r3159  
    3232   USE diaptr          ! poleward transport diagnostics 
    3333   USE trc_oce         ! share passive tracers/Ocean variables 
    34  
     34   USE wrk_nemo_2      ! Memory Allocation 
     35   USE timing          ! Timing 
    3536 
    3637   IMPLICIT NONE 
     
    6667      !!             - save the trends  
    6768      !!---------------------------------------------------------------------- 
    68       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    6969      USE oce     , ONLY:   zwx => ua        , zwy => va          ! (ua,va) used as workspace 
    70       USE wrk_nemo, ONLY:   zwi => wrk_3d_12 , zwz => wrk_3d_13   ! 3D workspace 
    7170      ! 
    7271      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
     
    8382      REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk   !   -      - 
    8483      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk   !   -      - 
    85       REAL(wp), DIMENSION (:,:,:), ALLOCATABLE ::   ztrdx, ztrdy, ztrdz 
    86       !!---------------------------------------------------------------------- 
    87  
    88       IF( wrk_in_use(3, 12,13) ) THEN 
    89          CALL ctl_stop('tra_adv_tvd: requested workspace arrays unavailable')   ;   RETURN 
    90       ENDIF 
    91  
     84      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwz 
     85      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz 
     86      !!---------------------------------------------------------------------- 
     87      ! 
     88      IF( nn_timing == 1 )  CALL timing_start('tra_adv_tvd') 
     89      ! 
     90      CALL wrk_alloc( jpi, jpj, jpk, zwi, zwz ) 
     91      ! 
    9292      IF( kt == kit000 )  THEN 
    9393         IF(lwp) WRITE(numout,*) 
     
    100100      ! 
    101101      IF( l_trd )  THEN 
    102         ALLOCATE( ztrdx(jpi,jpj,jpk) )      ;      ztrdx(:,:,:) = 0.e0 
    103         ALLOCATE( ztrdy(jpi,jpj,jpk) )      ;      ztrdy(:,:,:) = 0.e0 
    104         ALLOCATE( ztrdz(jpi,jpj,jpk) )      ;      ztrdz(:,:,:) = 0.e0 
    105       END IF 
     102         CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 
     103         ztrdx(:,:,:) = 0.e0   ;    ztrdy(:,:,:) = 0.e0   ;   ztrdz(:,:,:) = 0.e0 
     104      ENDIF 
    106105      ! 
    107106      zwi(:,:,:) = 0.e0 
     
    242241      END DO 
    243242      ! 
    244       IF( l_trd )  THEN 
    245         DEALLOCATE( ztrdx )     ;     DEALLOCATE( ztrdy )     ;      DEALLOCATE( ztrdz )   
    246       END IF 
    247       ! 
    248       IF( wrk_not_released(3, 12,13) )   CALL ctl_stop('tra_adv_tvd: failed to release workspace arrays') 
     243                   CALL wrk_dealloc( jpi, jpj, jpk, zwi, zwz ) 
     244      IF( l_trd )  CALL wrk_dealloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 
     245      ! 
     246      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_tvd') 
    249247      ! 
    250248   END SUBROUTINE tra_adv_tvd 
     
    264262      !!       in-space based differencing for fluid 
    265263      !!---------------------------------------------------------------------- 
    266       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    267       USE wrk_nemo, ONLY:   zbetup => wrk_3d_8  , zbetdo => wrk_3d_9    ! 3D workspace 
    268       USE wrk_nemo, ONLY:   zbup   => wrk_3d_10 , zbdo   => wrk_3d_11   !  -     - 
    269       ! 
     264      ! 
     265      !!---------------------------------------------------------------------- 
    270266      REAL(wp), DIMENSION(jpk)         , INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
    271267      REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(in   ) ::   pbef, paft      ! before & after field 
     
    276272      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt   ! local scalars 
    277273      REAL(wp) ::   zau, zbu, zcu, zav, zbv, zcv, zup, zdo            !   -      - 
    278       !!---------------------------------------------------------------------- 
    279  
    280       IF( wrk_in_use(3, 8,9,10,11) ) THEN 
    281          CALL ctl_stop('nonosc: requested workspace array unavailable')   ;   RETURN 
    282       ENDIF 
     274      REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo, zbup, zbdo 
     275      !!---------------------------------------------------------------------- 
     276      ! 
     277      IF( nn_timing == 1 )  CALL timing_start('nonosc') 
     278      ! 
     279      CALL wrk_alloc( jpi, jpj, jpk, zbetup, zbetdo, zbup, zbdo ) 
     280      ! 
    283281 
    284282      zbig  = 1.e+40_wp 
     
    331329      END DO 
    332330      CALL lbc_lnk( zbetup, 'T', 1. )   ;   CALL lbc_lnk( zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign) 
    333  
    334  
    335331 
    336332      ! 3. monotonic flux in the i & j direction (paa & pbb) 
     
    360356      CALL lbc_lnk( paa, 'U', -1. )   ;   CALL lbc_lnk( pbb, 'V', -1. )   ! lateral boundary condition (changed sign) 
    361357      ! 
    362       IF( wrk_not_released(3, 8,9,10,11) )   CALL ctl_stop('nonosc: failed to release workspace arrays') 
     358      CALL wrk_dealloc( jpi, jpj, jpk, zbetup, zbetdo, zbup, zbdo ) 
     359      ! 
     360      IF( nn_timing == 1 )  CALL timing_stop('nonosc') 
    363361      ! 
    364362   END SUBROUTINE nonosc 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90

    r3116 r3159  
    2222   USE dynspg_oce      ! choice/control of key cpp for surface pressure gradient 
    2323   USE trc_oce         ! share passive tracers/Ocean variables 
     24   USE wrk_nemo_2      ! Memory Allocation 
     25   USE timing          ! Timing 
    2426 
    2527   IMPLICIT NONE 
     
    7375      !!             Farrow, D.E., Stevens, D.P., 1995, J. Phys. Ocean. 25, 1731Ð1741.  
    7476      !!---------------------------------------------------------------------- 
    75       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    7677      USE oce     , ONLY:   zwx  => ua       , zwy  => va         ! (ua,va) used as workspace 
    77       USE wrk_nemo, ONLY:   ztu  => wrk_3d_1 , ztv  => wrk_3d_2   ! 3D workspace 
    78       USE wrk_nemo, ONLY:   zltu => wrk_3d_3 , zltv => wrk_3d_4   !  -      - 
    79       USE wrk_nemo, ONLY:   zti  => wrk_3d_5 , ztw  => wrk_3d_6   !  -      - 
    8078      ! 
    8179      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
     
    9290      REAL(wp) ::   zfp_ui, zfm_ui, zcenut, ztak, zfp_wk, zfm_wk   !   -      - 
    9391      REAL(wp) ::   zfp_vj, zfm_vj, zcenvt, zeeu, zeev, z_hdivn    !   -      - 
    94       !!---------------------------------------------------------------------- 
    95  
    96       IF( wrk_in_use(3, 1,2,3,4,5,6) )THEN 
    97          CALL ctl_stop('tra_adv_ubs: requested workspace arrays unavailable')   ;   RETURN 
    98       ENDIF 
     92      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztu, ztv, zltu, zltv, zti, ztw 
     93      !!---------------------------------------------------------------------- 
     94      ! 
     95      IF( nn_timing == 1 )  CALL timing_start('tra_adv_ubs') 
     96      ! 
     97      CALL wrk_alloc( jpi, jpj, jpk, ztu, ztv, zltu, zltv, zti, ztw ) 
     98      ! 
    9999 
    100100      IF( kt == kit000 )  THEN 
     
    269269      ENDDO 
    270270      ! 
    271       IF( wrk_not_released(3, 1,2,3,4,5,6) )   CALL ctl_stop('tra_adv_ubs: failed to release workspace arrays') 
     271      CALL wrk_dealloc( jpi, jpj, jpk, ztu, ztv, zltu, zltv, zti, ztw ) 
     272      ! 
     273      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_ubs') 
    272274      ! 
    273275   END SUBROUTINE tra_adv_ubs 
     
    287289      !!       in-space based differencing for fluid 
    288290      !!---------------------------------------------------------------------- 
    289       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    290       USE wrk_nemo, ONLY:   zbetup => wrk_3d_1, zbetdo => wrk_3d_2   ! 3D workspace 
    291291      ! 
    292292      REAL(wp), INTENT(in   ), DIMENSION(jpk)          ::   p2dt   ! vertical profile of tracer time-step 
     
    298298      INTEGER  ::   ikm1         ! local integer 
    299299      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt   ! local scalars 
    300       !!---------------------------------------------------------------------- 
    301  
    302       IF( wrk_in_use(3, 1,2) ) THEN 
    303          CALL ctl_stop('nonosc_z: requested workspace arrays unavailable')   ;   RETURN 
    304       ENDIF 
     300      REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo 
     301      !!---------------------------------------------------------------------- 
     302      ! 
     303      IF( nn_timing == 1 )  CALL timing_start('nonosc_z') 
     304      ! 
     305      CALL wrk_alloc( jpi, jpj, jpk, zbetup, zbetdo ) 
     306      ! 
    305307 
    306308      zbig  = 1.e+40_wp 
     
    374376      END DO 
    375377      ! 
    376       IF( wrk_not_released(3, 1,2) )   CALL ctl_stop('nonosc_z: failed to release workspace arrays') 
     378      CALL wrk_dealloc( jpi, jpj, jpk, zbetup, zbetdo ) 
     379      ! 
     380      IF( nn_timing == 1 )  CALL timing_stop('nonosc_z') 
    377381      ! 
    378382   END SUBROUTINE nonosc_z 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90

    r2715 r3159  
    2222   USE in_out_manager  ! I/O manager 
    2323   USE prtctl          ! Print control 
     24   USE wrk_nemo_2      ! Memory Allocation 
     25   USE timing          ! Timing 
    2426 
    2527   IMPLICIT NONE 
     
    7173      INTEGER  ::   ji, jj, ik    ! dummy loop indices 
    7274      REAL(wp) ::   zqgh_trd      ! geothermal heat flux trend 
    73       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrdt 
     75      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt 
    7476      !!---------------------------------------------------------------------- 
    7577      ! 
     78      IF( nn_timing == 1 )  CALL timing_start('tra_bbc') 
     79      ! 
    7680      IF( l_trdtra )   THEN         ! Save ta and sa trends 
    77          ALLOCATE( ztrdt(jpi,jpj,jpk) )     ;   ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     81         CALL wrk_alloc( jpi, jpj, jpk, ztrdt ) 
     82         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    7883      ENDIF 
    7984      ! 
     
    95100         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    96101         CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_bbc, ztrdt ) 
    97          DEALLOCATE( ztrdt ) 
     102         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt ) 
    98103      ENDIF 
    99104      ! 
    100105      IF(ln_ctl)   CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' bbc  - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 
     106      ! 
     107      IF( nn_timing == 1 )  CALL timing_stop('tra_bbc') 
    101108      ! 
    102109   END SUBROUTINE tra_bbc 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90

    r3116 r3159  
    3434   USE lbclnk         ! ocean lateral boundary conditions 
    3535   USE prtctl         ! Print control 
     36   USE wrk_nemo_2     ! Memory Allocation 
     37   USE timing         ! Timing 
     38 
    3639 
    3740   IMPLICIT NONE 
     
    103106      INTEGER, INTENT( in ) ::   kt   ! ocean time-step  
    104107      !! 
    105       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ztrdt, ztrds 
    106       !!---------------------------------------------------------------------- 
    107  
     108      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
     109      !!---------------------------------------------------------------------- 
     110      ! 
     111      IF( nn_timing == 1 )  CALL timing_start( 'tra_bbl') 
     112      ! 
    108113      IF( l_trdtra )   THEN                        !* Save ta and sa trends 
    109          ALLOCATE( ztrdt(jpi,jpj,jpk) )   ;    ztrdt(:,:,:) = tsa(:,:,:,jp_tem)  
    110          ALLOCATE( ztrds(jpi,jpj,jpk) )   ;    ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     114         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )  
     115         ztrdt(:,:,:) = tsa(:,:,:,jp_tem)  
     116         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    111117      ENDIF 
    112118 
    113119      IF( l_bbl )  CALL bbl( kt, nit000, 'TRA' )   !* bbl coef. and transport (only if not already done in trcbbl) 
    114  
    115  
     120  
    116121      IF( nn_bbl_ldf == 1 ) THEN                   !* Diffusive bbl 
     122         ! 
    117123         CALL tra_bbl_dif( tsb, tsa, jpts ) 
    118124         IF( ln_ctl )  & 
     
    123129         CALL iom_put( "ahu_bbl", ahu_bbl )   ! bbl diffusive flux i-coef      
    124130         CALL iom_put( "ahv_bbl", ahv_bbl )   ! bbl diffusive flux j-coef 
     131         ! 
    125132      END IF 
    126133 
    127134      IF( nn_bbl_adv /= 0 ) THEN                !* Advective bbl 
     135         ! 
    128136         CALL tra_bbl_adv( tsb, tsa, jpts ) 
    129137         IF(ln_ctl)   & 
     
    134142         CALL iom_put( "uoce_bbl", utr_bbl )  ! bbl i-transport      
    135143         CALL iom_put( "voce_bbl", vtr_bbl )  ! bbl j-transport 
     144         ! 
    136145      END IF 
    137146 
     
    141150         CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_bbl, ztrdt ) 
    142151         CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_bbl, ztrds ) 
    143          DEALLOCATE( ztrdt )      ;     DEALLOCATE( ztrds )  
     152         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds )  
    144153      ENDIF 
     154      ! 
     155      IF( nn_timing == 1 )  CALL timing_stop( 'tra_bbl') 
    145156      ! 
    146157   END SUBROUTINE tra_bbl 
     
    169180      !!              Campin, J.-M., and H. Goosse, 1999, Tellus, 412-430. 
    170181      !!----------------------------------------------------------------------   
    171       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    172       USE wrk_nemo, ONLY:   zptb => wrk_2d_1 
    173182      ! 
    174183      INTEGER                              , INTENT(in   ) ::   kjpt   ! number of tracers 
     
    179188      INTEGER  ::   ik           ! local integers 
    180189      REAL(wp) ::   zbtr         ! local scalars 
    181       !!---------------------------------------------------------------------- 
    182       ! 
    183       IF( wrk_in_use(2,1) ) THEN 
    184          CALL ctl_stop('tra_bbl_dif: ERROR: requested workspace array unavailable')   ;   RETURN 
    185       ENDIF 
     190      REAL(wp), POINTER, DIMENSION(:,:) :: zptb 
     191      !!---------------------------------------------------------------------- 
     192      ! 
     193      IF( nn_timing == 1 )  CALL timing_start('tra_bbl_dif') 
     194      ! 
     195      CALL wrk_alloc( jpi, jpj, zptb ) 
    186196      ! 
    187197      DO jn = 1, kjpt                                     ! tracer loop 
     
    218228      END DO                                                ! end tracer 
    219229      !                                                     ! =========== 
    220       IF( wrk_not_released(2,1) )   CALL ctl_stop('tra_bbl_dif: failed to release workspace array') 
     230      CALL wrk_dealloc( jpi, jpj, zptb ) 
     231      ! 
     232      IF( nn_timing == 1 )  CALL timing_stop('tra_bbl_dif') 
    221233      ! 
    222234   END SUBROUTINE tra_bbl_dif 
     
    249261      !!---------------------------------------------------------------------- 
    250262      ! 
     263      IF( nn_timing == 1 )  CALL timing_start( 'tra_bbl_adv') 
    251264      !                                                          ! =========== 
    252265      DO jn = 1, kjpt                                            ! tracer loop 
     
    308321      END DO                                                ! end tracer 
    309322      !                                                     ! =========== 
     323      ! 
     324      IF( nn_timing == 1 )  CALL timing_stop( 'tra_bbl_adv') 
     325      ! 
    310326   END SUBROUTINE tra_bbl_adv 
    311327 
     
    338354      !!              Campin, J.-M., and H. Goosse, 1999, Tellus, 412-430. 
    339355      !!----------------------------------------------------------------------   
    340       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    341       USE wrk_nemo, ONLY:   zub => wrk_2d_1 , ztb => wrk_2d_2                      ! 2D workspace 
    342       USE wrk_nemo, ONLY:   zvb => wrk_2d_3 , zsb => wrk_2d_4 , zdep => wrk_2d_5 
    343356      ! 
    344357      INTEGER         , INTENT(in   ) ::   kt       ! ocean time-step index 
     
    354367      !! 
    355368      REAL(wp) ::   fsalbt, fsbeta, pft, pfs, pfh   ! statement function 
     369      REAL(wp), POINTER, DIMENSION(:,:) :: zub, zvb, ztb, zsb, zdep 
    356370      !!----------------------- zv_bbl----------------------------------------------- 
    357371      ! ratio alpha/beta = fsalbt : ratio of thermal over saline expension coefficients 
     
    385399                                          - 0.121555e-07 ) * pfh 
    386400      !!---------------------------------------------------------------------- 
    387  
    388       IF( wrk_in_use(2, 1,2,3,4,5) ) THEN 
    389          CALL ctl_stop('bbl: requested workspace arrays unavailable')   ;   RETURN 
    390       ENDIF 
     401       
     402      ! 
     403      IF( nn_timing == 1 )  CALL timing_start( 'bbl') 
     404      ! 
     405      CALL wrk_alloc( jpi, jpj, zub, zvb, ztb, zsb, zdep )  
     406      ! 
    391407      
    392408      IF( kt == kit000 )  THEN 
     
    526542      ENDIF 
    527543      ! 
    528       IF( wrk_not_released(2, 1,2,3,4,5) )   CALL ctl_stop('bbl: failed to release workspace arrays') 
     544      CALL wrk_dealloc( jpi, jpj, zub, zvb, ztb, zsb, zdep )  
     545      ! 
     546      IF( nn_timing == 1 )  CALL timing_stop( 'bbl') 
    529547      ! 
    530548   END SUBROUTINE bbl 
     
    540558      !!              called by nemo_init at the first timestep (kit000) 
    541559      !!---------------------------------------------------------------------- 
    542       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    543       USE wrk_nemo, ONLY:   zmbk => wrk_2d_1       ! 2D workspace 
    544560      INTEGER ::   ji, jj               ! dummy loop indices 
    545561      INTEGER ::   ii0, ii1, ij0, ij1   ! temporary integer 
     562      REAL(wp), POINTER, DIMENSION(:,:) :: zmbk 
    546563      !! 
    547564      NAMELIST/nambbl/ nn_bbl_ldf, nn_bbl_adv, rn_ahtbbl, rn_gambbl 
    548565      !!---------------------------------------------------------------------- 
    549  
    550       IF( wrk_in_use(2,1) ) THEN 
    551          CALL ctl_stop('tra_bbl_init: requested workspace array unavailable')   ;   RETURN 
    552       ENDIF 
     566      ! 
     567      IF( nn_timing == 1 )  CALL timing_start( 'tra_bbl_init') 
     568      ! 
     569      CALL wrk_alloc( jpi, jpj, zmbk )  
     570      ! 
    553571 
    554572      REWIND ( numnam )              !* Read Namelist nambbl : bottom boundary layer scheme 
     
    636654      ENDIF 
    637655      ! 
    638       IF( wrk_not_released(2,1) )   CALL ctl_stop('tra_bbl_init: failed to release workspace array') 
     656      CALL wrk_dealloc( jpi, jpj, zmbk )  
     657      ! 
     658      IF( nn_timing == 1 )  CALL timing_stop( 'tra_bbl_init') 
    639659      ! 
    640660   END SUBROUTINE tra_bbl_init 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90

    r2977 r3159  
    3636   USE lib_mpp        ! MPP library 
    3737   USE prtctl         ! Print control 
     38   USE wrk_nemo_2     ! Memory allocation 
     39   USE timing         ! Timing 
    3840 
    3941   IMPLICIT NONE 
     
    98100      !! ** Action  : - (ta,sa)   tracer trends updated with the damping trend 
    99101      !!---------------------------------------------------------------------- 
    100       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    101       USE wrk_nemo, ONLY:   zts_dta => wrk_4d_2  ! 4D workspace 
    102102      ! 
    103103      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     
    105105      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    106106      REAL(wp) ::   zta, zsa             ! local scalars 
    107       !!---------------------------------------------------------------------- 
    108       ! 
    109       IF( wrk_in_use(4, 2) ) THEN 
    110          CALL ctl_stop('tra_dmp: requested workspace arrays unavailable')   ;   RETURN 
    111       ENDIF 
     107      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  zts_dta  
     108      !!---------------------------------------------------------------------- 
     109      ! 
     110      IF( nn_timing == 1 )  CALL timing_start( 'tra_dmp') 
     111      ! 
     112      CALL wrk_alloc( jpi, jpj, jpk, jpts,  zts_dta ) 
    112113      !                           !==   input T-S data at kt   ==! 
    113114      CALL dta_tsd( kt, zts_dta )            ! read and interpolates T-S data at kt 
     
    177178         &                       tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    178179      ! 
    179       IF( wrk_not_released(4, 2) )  CALL ctl_stop('tra_dmp: failed to release workspace arrays') 
     180      CALL wrk_dealloc( jpi, jpj, jpk, jpts,  zts_dta ) 
     181      ! 
     182      IF( nn_timing == 1 )  CALL timing_stop( 'tra_dmp') 
    180183      ! 
    181184   END SUBROUTINE tra_dmp 
     
    270273      REAL(wp), DIMENSION(6)  ::   zfact               ! 1Dworkspace 
    271274      !!---------------------------------------------------------------------- 
     275      ! 
     276      IF( nn_timing == 1 )  CALL timing_start( 'dtacof_zoom') 
     277      ! 
    272278 
    273279      zfact(1) =  1._wp 
     
    321327      presto(:,:,:) = presto(:,:,:) * tmask(:,:,:) 
    322328      ! 
     329      IF( nn_timing == 1 )  CALL timing_stop( 'dtacof_zoom') 
     330      ! 
    323331   END SUBROUTINE dtacof_zoom 
    324332 
     
    339347      USE iom 
    340348      USE ioipsl 
    341       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    342       USE wrk_nemo, ONLY:   zhfac => wrk_1d_1, zmrs => wrk_2d_1 , zdct  => wrk_3d_1   ! 1D, 2D, 3D workspace 
    343349      !! 
    344350      INTEGER                         , INTENT(in   )  ::  kn_hdmp    ! damping option 
     
    356362      REAL(wp) ::   zlat, zlat0, zlat1, zlat2   !   -      - 
    357363      REAL(wp) ::   zsdmp, zbdmp                !   -      - 
    358       CHARACTER(len=20)                ::   cfile 
    359       !!---------------------------------------------------------------------- 
    360  
    361       IF( wrk_in_use(1, 1) .OR. wrk_in_use(2, 1) .OR. wrk_in_use(3, 1)  ) THEN  
    362           CALL ctl_stop('dtacof: requested workspace arrays unavailable')   ;   RETURN 
    363       ENDIF 
     364      CHARACTER(len=20)                   :: cfile 
     365      REAL(wp), POINTER, DIMENSION(:    ) :: zhfac  
     366      REAL(wp), POINTER, DIMENSION(:,:  ) :: zmrs  
     367      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdct  
     368      !!---------------------------------------------------------------------- 
     369      ! 
     370      IF( nn_timing == 1 )  CALL timing_start('dtacof') 
     371      ! 
     372      CALL wrk_alloc( jpk, zhfac          ) 
     373      CALL wrk_alloc( jpi, jpj, zmrs      ) 
     374      CALL wrk_alloc( jpi, jpj, jpk, zdct ) 
    364375      !                                   ! ==================== 
    365376      !                                   !  ORCA configuration : global domain 
     
    554565      ENDIF 
    555566      ! 
    556       IF( wrk_not_released(1, 1) .OR.  wrk_not_released(2, 1) .OR. wrk_not_released(3, 1) )  &  
    557          &                      CALL ctl_stop('dtacof: failed to release workspace arrays') 
     567      CALL wrk_dealloc( jpk, zhfac) 
     568      CALL wrk_dealloc( jpi, jpj, zmrs ) 
     569      CALL wrk_dealloc( jpi, jpj, jpk, zdct ) 
     570      ! 
     571      IF( nn_timing == 1 )  CALL timing_stop('dtacof') 
    558572      ! 
    559573   END SUBROUTINE dtacof 
     
    581595      !!---------------------------------------------------------------------- 
    582596      USE ioipsl      ! IOipsl librairy 
    583       USE wrk_nemo, ONLY:  wrk_in_use, wrk_not_released 
    584       USE wrk_nemo, ONLY:  zxt => wrk_2d_1, zyt   => wrk_2d_2  
    585       USE wrk_nemo, ONLY:  zzt => wrk_2d_3, zmask => wrk_2d_4 
    586597      !! 
    587598      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( out ) ::   pdct   ! distance to the coastline 
     
    591602      CHARACTER (len=32) ::   clname                     ! local name 
    592603      REAL(wp) ::   zdate0                               ! local scalar 
    593       LOGICAL , ALLOCATABLE, DIMENSION(:,:) ::   llcotu, llcotv, llcotf   ! 2D logical workspace 
    594       REAL(wp), ALLOCATABLE, DIMENSION(:)   ::   zxc, zyc, zzc, zdis    ! temporary workspace 
    595       !!---------------------------------------------------------------------- 
    596  
    597       IF( wrk_in_use(2, 1,2,3,4) ) THEN 
    598           CALL ctl_stop('cofdis: requested workspace arrays unavailable')   ;   RETURN 
    599       ENDIF 
    600  
    601       ALLOCATE( llcotu(jpi,jpj) , llcotv(jpi,jpj) , llcotf(jpi,jpj) ,                        & 
    602          &      zxc (3*jpi*jpj) , zyc (3*jpi*jpj) , zzc (3*jpi*jpj) , zdis (3*jpi*jpj) , STAT=ierr ) 
     604      REAL(wp), POINTER, DIMENSION(:,:) ::  zxt, zyt, zzt, zmask 
     605      REAL(wp), POINTER, DIMENSION(:  ) ::  zxc, zyc, zzc, zdis    ! temporary workspace 
     606      LOGICAL , ALLOCATABLE, DIMENSION(:,:) ::  llcotu, llcotv, llcotf   ! 2D logical workspace 
     607      !!---------------------------------------------------------------------- 
     608      ! 
     609      IF( nn_timing == 1 )  CALL timing_start('cofdis') 
     610      ! 
     611      CALL wrk_alloc( jpi, jpj , zxt, zyt, zzt, zmask    ) 
     612      CALL wrk_alloc( 3*jpi*jpj, zxc, zyc, zzc, zdis     ) 
     613      ALLOCATE( llcotu(jpi,jpj), llcotv(jpi,jpj), llcotf(jpi,jpj)  ) 
     614      ! 
    603615      IF( lk_mpp    )   CALL mpp_sum( ierr ) 
    604616      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'cofdis: requested local arrays unavailable') 
     
    754766      CALL restclo( icot ) 
    755767      ! 
    756       IF( wrk_not_released(2, 1,2,3,4) ) CALL ctl_stop('cofdis: failed to release workspace arrays') 
    757       DEALLOCATE( llcotu, llcotv, llcotf, zyc, zzc, zdis ) 
     768      CALL wrk_dealloc( jpi, jpj , zxt, zyt, zzt, zmask    ) 
     769      CALL wrk_dealloc( 3*jpi*jpj, zxc, zyc, zzc, zdis     ) 
     770      DEALLOCATE( llcotu, llcotv, llcotf  ) 
     771      ! 
     772      IF( nn_timing == 1 )  CALL timing_stop('cofdis') 
    758773      ! 
    759774   END SUBROUTINE cofdis 
  • 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 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilap.F90

    r3116 r3159  
    2929   USE trc_oce         ! share passive tracers/Ocean variables 
    3030   USE lib_mpp         ! MPP library 
     31   USE wrk_nemo_2     ! Memory Allocation 
     32   USE timing         ! Timing 
    3133 
    3234   IMPLICIT NONE 
     
    7476      !!               biharmonic mixing trend. 
    7577      !!---------------------------------------------------------------------- 
    76       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    7778      USE oce     , ONLY:   ztu  => ua       , ztv  => va                           ! (ua,va) used as workspace 
    78       USE wrk_nemo, ONLY:   zeeu => wrk_2d_1 , zeev => wrk_2d_2 , zlt => wrk_2d_3   ! 2D workspace 
    7979      !! 
    8080      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     
    8888      INTEGER  ::  ji, jj, jk, jn   ! dummy loop indices 
    8989      REAL(wp) ::  zbtr, ztra       ! local scalars 
     90      REAL(wp), POINTER, DIMENSION(:,:) ::  zeeu, zeev, zlt 
    9091      !!---------------------------------------------------------------------- 
    91  
    92       IF( wrk_in_use(2, 1,2,3) ) THEN 
    93          CALL ctl_stop('tra_ldf_bilap: requested workspace arrays unavailable')   ;   RETURN 
    94       ENDIF 
     92      ! 
     93      IF( nn_timing == 1 )  CALL timing_start( 'tra_ldf_bilap') 
     94      ! 
     95      CALL wrk_alloc( jpi, jpj, zeeu, zeev, zlt )  
     96      ! 
    9597 
    9698      IF( kt == kit000 )  THEN 
     
    166168      END DO                                              ! tracer loop 
    167169      !                                                   ! =========== 
    168       IF( wrk_not_released(2, 1,2,3) )   CALL ctl_stop('tra_ldf_bilap: failed to release workspace arrays') 
     170      IF( nn_timing == 1 )  CALL timing_stop( 'tra_ldf_bilap') 
     171      ! 
     172      CALL wrk_dealloc( jpi, jpj, zeeu, zeev, zlt )  
    169173      ! 
    170174   END SUBROUTINE tra_ldf_bilap 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90

    r3116 r3159  
    2525   USE trc_oce         ! share passive tracers/Ocean variables 
    2626   USE lib_mpp         ! MPP library 
     27   USE wrk_nemo_2      ! Memory Allocation 
     28   USE timing          ! Timing 
    2729 
    2830   IMPLICIT NONE 
     
    6668      !!               biharmonic mixing trend. 
    6769      !!---------------------------------------------------------------------- 
    68       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    69       USE wrk_nemo, ONLY:   wk1 => wrk_4d_1 , wk2 => wrk_4d_2     ! 4D workspace 
    7070      ! 
    7171      INTEGER         , INTENT(in   )                      ::   kt       ! ocean time-step index 
     
    7777      ! 
    7878      INTEGER ::   ji, jj, jk, jn   ! dummy loop indices 
    79       !!---------------------------------------------------------------------- 
    80  
    81       IF( wrk_in_use(4, 1,2) ) THEN 
    82          CALL ctl_stop('tra_ldf_bilapg: requested workspace arrays unavailable')   ;   RETURN 
    83       ENDIF 
    84  
     79      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zwk1, zwk2  
     80      !!---------------------------------------------------------------------- 
     81      ! 
     82      IF( nn_timing == 1 )  CALL timing_start('tra_ldf_bilapg') 
     83      ! 
     84      CALL wrk_alloc( jpi, jpj, jpk, kjpt, zwk1, zwk2 )  
     85      ! 
    8586      IF( kt == kit000 )  THEN 
    8687         IF(lwp) WRITE(numout,*) 
     
    9192      ! 1. Laplacian of ptb * aht 
    9293      ! -----------------------------  
    93       CALL ldfght( kt, cdtype, ptb, wk1, kjpt, 1 )      ! rotated harmonic operator applied to ptb and multiply by aht  
     94      CALL ldfght( kt, cdtype, ptb, zwk1, kjpt, 1 )      ! rotated harmonic operator applied to ptb and multiply by aht  
    9495      !                                                 ! output in wk1  
    9596      ! 
    9697      DO jn = 1, kjpt 
    97          CALL lbc_lnk( wk1(:,:,:,jn) , 'T', 1. )        ! Lateral boundary conditions on wk1   (unchanged sign) 
     98         CALL lbc_lnk( zwk1(:,:,:,jn) , 'T', 1. )        ! Lateral boundary conditions on wk1   (unchanged sign) 
    9899      END DO 
    99100 
    100101      ! 2. Bilaplacian of ptb 
    101102      ! ------------------------- 
    102       CALL ldfght( kt, cdtype, wk1, wk2, kjpt, 2 )      ! rotated harmonic operator applied to wk1 ; output in wk2 
     103      CALL ldfght( kt, cdtype, zwk1, zwk2, kjpt, 2 )      ! rotated harmonic operator applied to wk1 ; output in wk2 
    103104 
    104105 
     
    110111               DO ji = 2, jpim1 
    111112                  ! add it to the general tracer trends 
    112                   pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + wk2(ji,jj,jk,jn) 
     113                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + zwk2(ji,jj,jk,jn) 
    113114               END DO 
    114115            END DO 
     
    116117      END DO 
    117118      ! 
    118       IF( wrk_not_released(4, 1,2) )   CALL ctl_stop('tra_ldf_bilapg : failed to release workspace arrays.') 
     119      CALL wrk_dealloc( jpi, jpj, jpk, kjpt, zwk1, zwk2 )  
     120      ! 
     121      IF( nn_timing == 1 )  CALL timing_stop('tra_ldf_bilapg') 
    119122      ! 
    120123   END SUBROUTINE tra_ldf_bilapg 
     
    159162      !! 
    160163      !!---------------------------------------------------------------------- 
    161       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released, wrk_in_use_xz, wrk_not_released_xz 
    162164      USE oce     , ONLY:   zftv => ua       ! ua used as workspace 
    163       USE wrk_nemo, ONLY:   zftu => wrk_2d_1 , zdkt  => wrk_2d_2 , zdk1t => wrk_2d_3 
    164       USE wrk_nemo, ONLY:   zftw => wrk_xz_1 , zdit  => wrk_xz_2  
    165       USE wrk_nemo, ONLY:   zdjt => wrk_xz_3 , zdj1t => wrk_xz_4 
    166165      ! 
    167166      INTEGER         , INTENT(in )                              ::  kt      ! ocean time-step index 
     
    180179      REAL(wp) ::  zbtr, ztah, ztav 
    181180      REAL(wp) ::  zcof0, zcof1, zcof2, zcof3, zcof4 
    182       !!---------------------------------------------------------------------- 
    183  
    184       IF( wrk_in_use(2, 1,2,3) .OR. wrk_in_use_xz(1,2,3,4) )THEN 
    185          CALL ctl_stop('ldfght : requested workspace arrays unavailable')   ;   RETURN 
    186       ENDIF 
     181      REAL(wp), POINTER, DIMENSION(:,:) ::  zftu, zdkt, zdk1t 
     182      REAL(wp), POINTER, DIMENSION(:,:) ::  zftw, zdit, zdjt, zdj1t 
     183      !!---------------------------------------------------------------------- 
     184      ! 
     185      IF( nn_timing == 1 )  CALL timing_start('ldfght') 
     186      ! 
     187      CALL wrk_alloc( jpi, jpj, zftu, zdkt, zdk1t )  
     188      CALL wrk_alloc( jpi, jpk, zftw, zdit, zdjt, zdj1t )  
    187189      ! 
    188190      DO jn = 1, kjpt 
     
    336338      END DO 
    337339      ! 
    338       IF( wrk_not_released(2, 1,2,3)   .OR.   & 
    339           wrk_not_released_xz(1,2,3,4) )   CALL ctl_stop('ldfght : failed to release workspace arrays.') 
     340      CALL wrk_dealloc( jpi, jpj, zftu, zdkt, zdk1t )  
     341      CALL wrk_dealloc( jpi, jpk, zftw, zdit, zdjt, zdj1t )  
     342      ! 
     343      IF( nn_timing == 1 )  CALL timing_stop('ldfght') 
    340344      ! 
    341345   END SUBROUTINE ldfght 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90

    r3116 r3159  
    3232   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3333#endif 
     34   USE wrk_nemo_2      ! Memory Allocation 
     35   USE timing          ! Timing 
    3436 
    3537   IMPLICIT NONE 
     
    9092      !! ** Action :   Update pta arrays with the before rotated diffusion 
    9193      !!---------------------------------------------------------------------- 
    92       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    9394      USE oce     , ONLY:   zftu => ua       , zftv  => va         ! (ua,va) used as workspace 
    94       USE wrk_nemo, ONLY:   zdkt => wrk_2d_1 , zdk1t => wrk_2d_2 , z2d  => wrk_2d_3   ! 2D workspace 
    95       USE wrk_nemo, ONLY:   zdit => wrk_3d_6 , zdjt  => wrk_3d_7 , ztfw => wrk_3d_8   ! 3D workspace 
    9695      ! 
    9796      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     
    111110      REAL(wp)                         ::   zztmp               ! local scalar 
    112111#endif 
     112      REAL(wp), POINTER, DIMENSION(:,:  ) ::  zdkt, zdk1t, z2d 
     113      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zdit, zdjt, ztfw  
    113114      !!---------------------------------------------------------------------- 
    114  
    115       IF( wrk_in_use(3, 6,7,8) .OR. wrk_in_use(2, 1,2,3) ) THEN 
    116           CALL ctl_stop('tra_ldf_iso : requested workspace array unavailable')   ;   RETURN 
    117       ENDIF 
     115      ! 
     116      IF( nn_timing == 1 )  CALL timing_start('tra_ldf_iso') 
     117      ! 
     118      CALL wrk_alloc( jpi, jpj,      zdkt, zdk1t, z2d )  
     119      CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw  )  
     120      ! 
    118121 
    119122      IF( kt == kit000 )  THEN 
     
    292295      END DO 
    293296      ! 
    294       IF( wrk_not_released(3, 6,7,8) .OR.   & 
    295           wrk_not_released(2, 1,2,3) )   CALL ctl_stop('tra_ldf_iso: failed to release workspace arrays') 
     297      CALL wrk_dealloc( jpi, jpj,      zdkt, zdk1t, z2d )  
     298      CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw  )  
     299      ! 
     300      IF( nn_timing == 1 )  CALL timing_stop('tra_ldf_iso') 
    296301      ! 
    297302   END SUBROUTINE tra_ldf_iso 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90

    r3116 r3159  
    2626   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2727   USE lib_mpp         ! MPP library 
     28   USE wrk_nemo_2      ! Memory Allocation 
     29   USE timing          ! Timing 
     30 
    2831 
    2932   IMPLICIT NONE 
     
    8992      !! ** Action :   Update pta arrays with the before rotated diffusion 
    9093      !!---------------------------------------------------------------------- 
    91       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    9294      USE oce     , ONLY:   zftu => ua       , zftv => va            ! (ua,va) used as 3D workspace 
    93       USE wrk_nemo, ONLY:   zdit => wrk_3d_6 , zdjt => wrk_3d_7 , ztfw => wrk_3d_8   ! 3D workspace 
    94       USE wrk_nemo, ONLY:   z2d  => wrk_2d_1                                         ! 2D workspace 
    9595      ! 
    9696      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     
    116116      REAL(wp) ::   zztmp              ! local scalar 
    117117#endif 
     118      REAL(wp), POINTER, DIMENSION(:,:  ) :: z2d 
     119      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdit, zdjt, ztfw  
    118120      !!---------------------------------------------------------------------- 
    119  
    120       IF( wrk_in_use(3, 6,7,8) .OR. wrk_in_use(2, 1) ) THEN 
    121          CALL ctl_stop('tra_ldf_iso_grif: requested workspace arrays unavailable.')   ;   RETURN 
    122       ENDIF 
     121      ! 
     122      IF( nn_timing == 1 )  CALL timing_start('tra_ldf_iso_grif') 
     123      ! 
     124      CALL wrk_alloc( jpi, jpj,      z2d )  
     125      CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw  )  
     126      ! 
    123127 
    124128      IF( kt == kit000 .AND. .NOT.ALLOCATED(ah_wslp2) )  THEN 
     
    394398      END DO 
    395399      ! 
    396       IF( wrk_not_released(3, 6,7,8) .OR.   & 
    397           wrk_not_released(2, 1)       )   CALL ctl_stop('tra_ldf_iso_grif: failed to release workspace arrays') 
     400      CALL wrk_dealloc( jpi, jpj,      z2d )  
     401      CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw  )  
     402      ! 
     403      IF( nn_timing == 1 )  CALL timing_stop('tra_ldf_iso_grif') 
    398404      ! 
    399405  END SUBROUTINE tra_ldf_iso_grif 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap.F90

    r3116 r3159  
    2525   USE trc_oce         ! share passive tracers/Ocean variables 
    2626   USE lib_mpp         ! MPP library 
     27   USE timing          ! Timing 
    2728 
    2829   IMPLICIT NONE 
     
    7778      REAL(wp) ::   zabe1, zabe2, zbtr   ! local scalars 
    7879      !!---------------------------------------------------------------------- 
    79        
     80      ! 
     81      CALL timing_start('tra_ldf_lap') 
     82      ! 
    8083      IF( kt == kit000 )  THEN 
    8184         IF(lwp) WRITE(numout,*) 
     
    150153      END DO                                                ! end of tracer loop 
    151154      !                                                     ! ================== 
     155      CALL timing_stop('tra_ldf_lap') 
     156      ! 
    152157   END SUBROUTINE tra_ldf_lap 
    153158 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90

    r2715 r3159  
    2323   USE in_out_manager  ! I/O manager 
    2424   USE lib_mpp         ! MPP library 
     25   USE wrk_nemo_2      ! Memory Allocation 
     26   USE timing          ! Timing 
    2527 
    2628   IMPLICIT NONE 
     
    5658      !! References : Madec, et al., 1991, JPO, 21, 9, 1349-1371. 
    5759      !!---------------------------------------------------------------------- 
    58       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released, wrk_in_use_xz, wrk_not_released_xz 
    59       USE wrk_nemo, ONLY:   ztrdt => wrk_3d_1 , ztrds => wrk_3d_2 , zrhop => wrk_3d_3 
    60       USE wrk_nemo, ONLY:   zwx   => wrk_xz_1 , zwy   => wrk_xz_2 , zwz   => wrk_xz_3 
    6160      ! 
    6261      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     
    6867      INTEGER  ::   ikbot, ik, ikup, ikdown   ! ??? 
    6968      REAL(wp) ::   ze3tot, zta, zsa, zraua, ze3dwn 
     69      REAL(wp), POINTER, DIMENSION(:,:  ) :: zwx, zwy, zwz 
     70      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds, zrhop 
    7071      !!---------------------------------------------------------------------- 
    71  
    72       ! Strictly 1 and 2 3D workspaces only needed if(l_trdtra) but it doesn't  
    73       ! cost us anything and makes code simpler. 
    74       IF( wrk_in_use(3, 1,2,3) .OR. wrk_in_use_xz(1,2,3) ) THEN 
    75          CALL ctl_stop('tra_npc: requested workspace arrays unavailable')   ;   RETURN 
    76       ENDIF 
    77  
     72      ! 
     73      IF( nn_timing == 1 )  CALL timing_start('tra_npc') 
     74      ! 
     75      CALL wrk_alloc(jpi, jpj, jpk, zrhop ) 
     76      CALL wrk_alloc(jpi, jpk, zwx, zwy, zwz ) 
     77      ! 
    7878      IF( MOD( kt, nn_npc ) == 0 ) THEN 
    7979 
     
    8484 
    8585         IF( l_trdtra )   THEN                    !* Save ta and sa trends 
     86            CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
    8687            ztrdt(:,:,:) = tsa(:,:,:,jp_tem)  
    8788            ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     
    200201            CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_npc, ztrdt ) 
    201202            CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_npc, ztrds ) 
     203            CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 
    202204         ENDIF 
    203205       
     
    216218      ENDIF 
    217219      ! 
    218       IF( wrk_not_released(3, 1,2,3) .OR.   & 
    219           wrk_not_released_xz(1,2,3) )   CALL ctl_stop('tra_npc: failed to release workspace arrays') 
     220      CALL wrk_dealloc(jpi, jpj, jpk, zrhop ) 
     221      CALL wrk_dealloc(jpi, jpk, zwx, zwy, zwz ) 
     222      ! 
     223      IF( nn_timing == 1 )  CALL timing_stop('tra_npc') 
    220224      ! 
    221225   END SUBROUTINE tra_npc 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r3116 r3159  
    4646   USE agrif_opa_interp 
    4747#endif 
     48   USE wrk_nemo_2      ! Memory allocation 
     49   USE timing          ! Timing 
    4850 
    4951   IMPLICIT NONE 
     
    9294      INTEGER  ::   jk, jn    ! dummy loop indices 
    9395      REAL(wp) ::   zfact     ! local scalars 
    94       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ztrdt, ztrds 
    95       !!---------------------------------------------------------------------- 
    96  
     96      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
     97      !!---------------------------------------------------------------------- 
     98      ! 
     99      IF( nn_timing == 1 )  CALL timing_start( 'tra_nxt') 
     100      ! 
    97101      IF( kt == nit000 ) THEN 
    98102         IF(lwp) WRITE(numout,*) 
     
    125129      ! trends computation initialisation 
    126130      IF( l_trdtra )   THEN                    ! store now fields before applying the Asselin filter 
    127          ALLOCATE( ztrdt(jpi,jpj,jpk) )   ;    ztrdt(:,:,:) = tsn(:,:,:,jp_tem)  
    128          ALLOCATE( ztrds(jpi,jpj,jpk) )   ;    ztrds(:,:,:) = tsn(:,:,:,jp_sal) 
     131         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
     132         ztrdt(:,:,:) = tsn(:,:,:,jp_tem)  
     133         ztrds(:,:,:) = tsn(:,:,:,jp_sal) 
    129134      ENDIF 
    130135 
     
    156161         CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_atf, ztrdt ) 
    157162         CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_atf, ztrds ) 
    158          DEALLOCATE( ztrdt )      ;     DEALLOCATE( ztrds )  
     163         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 
    159164      END IF 
    160165      ! 
     
    162167      IF(ln_ctl)   CALL prt_ctl( tab3d_1=tsn(:,:,:,jp_tem), clinfo1=' nxt  - Tn: ', mask1=tmask,   & 
    163168         &                       tab3d_2=tsn(:,:,:,jp_sal), clinfo2=       ' Sn: ', mask2=tmask ) 
     169      ! 
     170      ! 
     171      IF( nn_timing == 1 )  CALL timing_stop('tra_nxt') 
    164172      ! 
    165173   END SUBROUTINE tra_nxt 
     
    270278      REAL(wp) ::   zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d   !   -      - 
    271279      !!---------------------------------------------------------------------- 
    272  
     280      ! 
    273281      IF( kt == kit000 )  THEN 
    274282         IF(lwp) WRITE(numout,*) 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r2715 r3159  
    2929   USE restart         ! ocean restart 
    3030   USE lib_mpp         ! MPP library 
     31   USE wrk_nemo_2     ! Memory Allocation 
     32   USE timing         ! Timing 
     33 
    3134 
    3235   IMPLICIT NONE 
     
    9093      !!              Lengaigne et al. 2007, Clim. Dyn., V28, 5, 503-516. 
    9194      !!---------------------------------------------------------------------- 
    92       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    93       USE wrk_nemo, ONLY:   zekb => wrk_2d_1 , zekg => wrk_2d_2 , zekr => wrk_2d_3 
    94       USE wrk_nemo, ONLY:   ze0  => wrk_3d_1 , ze1  => wrk_3d_2 , ze2  => wrk_3d_3 
    95       USE wrk_nemo, ONLY:   ze3  => wrk_3d_4 , zea  => wrk_3d_5 
    9695      ! 
    9796      INTEGER, INTENT(in) ::   kt     ! ocean time-step 
     
    102101      REAL(wp) ::   zc0, zc1, zc2, zc3   !    -         - 
    103102      REAL(wp) ::   zz0, zz1, z1_e3t     !    -         - 
    104       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ztrdt 
     103      REAL(wp), POINTER, DIMENSION(:,:  ) :: zekb, zekg, zekr 
     104      REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt 
    105105      !!---------------------------------------------------------------------- 
    106  
    107       IF( wrk_in_use(3, 1,2,3,4,5) .OR. wrk_in_use(2, 1,2,3) )THEN 
    108          CALL ctl_stop('tra_qsr: requested workspace arrays unavailable')   ;   RETURN 
    109       ENDIF 
    110  
     106      ! 
     107      IF( nn_timing == 1 )  CALL timing_start('tra_qsr') 
     108      ! 
     109      CALL wrk_alloc( jpi, jpj,      zekb, zekg, zekr        )  
     110      CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     111      ! 
    111112      IF( kt == nit000 ) THEN 
    112113         IF(lwp) WRITE(numout,*) 
     
    117118 
    118119      IF( l_trdtra ) THEN      ! Save ta and sa trends 
    119          ALLOCATE( ztrdt(jpi,jpj,jpk) )   ;    ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     120         CALL wrk_alloc( jpi, jpj, jpk, ztrdt )  
     121         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    120122      ENDIF 
    121123 
     
    283285         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    284286         CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_qsr, ztrdt ) 
    285          DEALLOCATE( ztrdt ) 
     287         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt )  
    286288      ENDIF 
    287289      !                       ! print mean trends (used for debugging) 
    288290      IF(ln_ctl)   CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' qsr  - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 
    289291      ! 
    290       IF( wrk_not_released(3, 1,2,3,4,5) .OR.   & 
    291           wrk_not_released(2, 1,2,3)     )   CALL ctl_stop('tra_qsr: failed to release workspace arrays') 
     292      CALL wrk_dealloc( jpi, jpj,      zekb, zekg, zekr        )  
     293      CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     294      ! 
     295      IF( nn_timing == 1 )  CALL timing_stop('tra_qsr') 
    292296      ! 
    293297   END SUBROUTINE tra_qsr 
     
    311315      !! Reference : Jerlov, N. G., 1968 Optical Oceanography, Elsevier, 194pp. 
    312316      !!---------------------------------------------------------------------- 
    313       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    314       USE wrk_nemo, ONLY:   zekb => wrk_2d_1 , zekg => wrk_2d_2 , zekr => wrk_2d_3 
    315       USE wrk_nemo, ONLY:   ze0  => wrk_3d_1 , ze1  => wrk_3d_2 , ze2 => wrk_3d_3 
    316       USE wrk_nemo, ONLY:   ze3  => wrk_3d_4 , zea  => wrk_3d_5 
    317317      ! 
    318318      INTEGER  ::   ji, jj, jk     ! dummy loop indices 
     
    320320      REAL(wp) ::   zz0, zc0  , zc1, zcoef       ! local scalars 
    321321      REAL(wp) ::   zz1, zc2  , zc3, zchl        !   -      - 
     322      REAL(wp), POINTER, DIMENSION(:,:  ) :: zekb, zekg, zekr 
     323      REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea 
    322324      ! 
    323325      CHARACTER(len=100) ::   cn_dir   ! Root directory for location of ssr files 
     
    328330      !!---------------------------------------------------------------------- 
    329331 
    330       IF( wrk_in_use(2, 1,2,3) .OR. wrk_in_use(3, 1,2,3,4,5) )THEN 
    331          CALL ctl_stop('tra_qsr_init: requested workspace arrays unavailable')   ;   RETURN 
    332       ENDIF 
     332      ! 
     333      IF( nn_timing == 1 )  CALL timing_start('tra_qsr_init') 
     334      ! 
     335      CALL wrk_alloc( jpi, jpj,      zekb, zekg, zekr        )  
     336      CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     337      ! 
    333338 
    334339      cn_dir = './'       ! directory in which the model is executed 
     
    504509      ENDIF 
    505510      ! 
    506       IF( wrk_not_released(2, 1,2,3)     .OR.   & 
    507           wrk_not_released(3, 1,2,3,4,5) )   CALL ctl_stop('tra_qsr_init: failed to release workspace arrays') 
     511      CALL wrk_dealloc( jpi, jpj,      zekb, zekg, zekr        )  
     512      CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     513      ! 
     514      IF( nn_timing == 1 )  CALL timing_stop('tra_qsr_init') 
    508515      ! 
    509516   END SUBROUTINE tra_qsr_init 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90

    r2715 r3159  
    2828   USE iom 
    2929   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     30   USE wrk_nemo_2      ! Memory Allocation 
     31   USE timing          ! Timing 
    3032 
    3133   IMPLICIT NONE 
     
    108110      INTEGER  ::   ji, jj, jk, jn           ! dummy loop indices   
    109111      REAL(wp) ::   zfact, z1_e3t, zsrau, zdep 
    110       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ztrdt, ztrds 
     112      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
    111113      !!---------------------------------------------------------------------- 
    112  
     114      ! 
     115      IF( nn_timing == 1 )  CALL timing_start('tra_sbc') 
     116      ! 
    113117      IF( kt == nit000 ) THEN 
    114118         IF(lwp) WRITE(numout,*) 
     
    120124 
    121125      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    122          ALLOCATE( ztrdt(jpi,jpj,jpk) )   ;    ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    123          ALLOCATE( ztrds(jpi,jpj,jpk) )   ;    ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     126         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )  
     127         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     128         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    124129      ENDIF 
    125130 
     
    228233         CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_nsr, ztrdt ) 
    229234         CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_nsr, ztrds ) 
    230          DEALLOCATE( ztrdt )      ;     DEALLOCATE( ztrds ) 
     235         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds )  
    231236      ENDIF 
    232237      ! 
     
    234239         &                       tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    235240      ! 
     241      IF( nn_timing == 1 )  CALL timing_stop('tra_sbc') 
     242      ! 
    236243   END SUBROUTINE tra_sbc 
    237244 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90

    r3116 r3159  
    3030   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3131   USE lib_mpp         ! MPP library 
     32   USE wrk_nemo_2      ! Memory allocation 
     33   USE timing          ! Timing 
    3234 
    3335 
     
    6062      !! 
    6163      INTEGER  ::   jk                   ! Dummy loop indices 
    62       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrdt, ztrds   ! 3D workspace 
     64      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt, ztrds   ! 3D workspace 
    6365      !!--------------------------------------------------------------------- 
    64  
    65       !                                          ! set time step 
     66      ! 
     67      IF( nn_timing == 1 )  CALL timing_start('tra_zdf') 
     68      ! 
    6669      IF( neuler == 0 .AND. kt == nit000 ) THEN     ! at nit000 
    6770         r2dtra(:) =  rdttra(:)                          ! = rdtra (restarting with Euler time stepping) 
     
    7174 
    7275      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    73          ALLOCATE( ztrdt(jpi,jpj,jpk) )   ;    ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    74          ALLOCATE( ztrds(jpi,jpj,jpk) )   ;    ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     76         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
     77         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     78         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    7579      ENDIF 
    7680 
     
    9498         CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_zdf, ztrdt ) 
    9599         CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_zdf, ztrds ) 
    96          DEALLOCATE( ztrdt )      ;     DEALLOCATE( ztrds )  
     100         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 
    97101      ENDIF 
    98102 
     
    100104      IF(ln_ctl)   CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' zdf  - Ta: ', mask1=tmask,               & 
    101105         &                       tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     106      ! 
     107      IF( nn_timing == 1 )  CALL timing_stop('tra_zdf') 
    102108      ! 
    103109   END SUBROUTINE tra_zdf 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90

    r3116 r3159  
    3131   USE in_out_manager  ! I/O manager 
    3232   USE lib_mpp         ! MPP library 
     33   USE wrk_nemo_2      ! Memory Allocation 
     34   USE timing          ! Timing 
    3335 
    3436   IMPLICIT NONE 
     
    7375      !! ** Action : - after tracer fields pta 
    7476      !!--------------------------------------------------------------------- 
    75       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    76       USE wrk_nemo, ONLY:   zwx => wrk_3d_6, zwy => wrk_3d_7     ! 3D workspace 
    7777      ! 
    7878      INTEGER                              , INTENT(in   ) ::   kt          ! ocean time-step index 
     
    8888      REAL(wp) ::  zlavmr, zave3r, ze3tr     ! local scalars 
    8989      REAL(wp) ::  ztra, ze3tb               !   -      - 
     90      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwx, zwy 
    9091      !!--------------------------------------------------------------------- 
    91  
    92       IF( wrk_in_use(3, 6,7) ) THEN 
    93          CALL ctl_stop('tra_zdf_exp: requested workspace arrays unavailable')   ;   RETURN 
    94       ENDIF 
     92      ! 
     93      IF( nn_timing == 1 )  CALL timing_start('tra_zdf_exp') 
     94      ! 
     95      CALL wrk_alloc( jpi, jpj, jpk, zwx, zwy )  
     96      ! 
    9597 
    9698      IF( kt == kit000 )  THEN 
     
    165167      END DO 
    166168      ! 
    167       IF( wrk_not_released(3, 6,7) )   CALL ctl_stop('tra_zdf_exp: failed to release workspace arrays') 
     169      CALL wrk_dealloc( jpi, jpj, jpk, zwx, zwy )  
     170      ! 
     171      IF( nn_timing == 1 )  CALL timing_stop('tra_zdf_exp') 
    168172      ! 
    169173   END SUBROUTINE tra_zdf_exp 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r3116 r3159  
    3535   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3636   USE lib_mpp         ! MPP library 
     37   USE wrk_nemo_2      ! Memory Allocation 
     38   USE timing          ! Timing 
    3739 
    3840   IMPLICIT NONE 
     
    7476      !! ** Action  : - pta  becomes the after tracer 
    7577      !!--------------------------------------------------------------------- 
    76       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    7778      USE oce     , ONLY:   zwd => ua       , zws => va         ! (ua,va) used as 3D workspace 
    78       USE wrk_nemo, ONLY:   zwi => wrk_3d_6 , zwt => wrk_3d_7   ! 3D workspace  
    7979      ! 
    8080      INTEGER                              , INTENT(in   ) ::   kt       ! ocean time-step index 
     
    8888      INTEGER  ::  ji, jj, jk, jn   ! dummy loop indices 
    8989      REAL(wp) ::  zrhs, ze3tb, ze3tn, ze3ta   ! local scalars 
     90      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwi, zwt 
    9091      !!--------------------------------------------------------------------- 
    91  
    92       IF( wrk_in_use(3, 6,7) ) THEN 
    93          CALL ctl_stop('tra_zdf_imp : requested workspace arrays unavailable.')   ;   RETURN 
    94       ENDIF 
    95  
     92      ! 
     93      IF( nn_timing == 1 )  CALL timing_start('tra_zdf_imp') 
     94      ! 
     95      CALL wrk_alloc( jpi, jpj, jpk, zwi, zwt )  
     96      ! 
    9697      IF( kt == kit000 )  THEN 
    9798         IF(lwp)WRITE(numout,*) 
     
    229230      !                                               ! ================= ! 
    230231      ! 
    231       IF( wrk_not_released(3, 6,7) )   CALL ctl_stop('tra_zdf_imp: failed to release workspace arrays') 
     232      CALL wrk_dealloc( jpi, jpj, jpk, zwi, zwt )  
     233      ! 
     234      IF( nn_timing == 1 )  CALL timing_stop('tra_zdf_imp') 
    232235      ! 
    233236   END SUBROUTINE tra_zdf_imp 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90

    r2715 r3159  
    2121   USE lbclnk          ! lateral boundary conditions (or mpp link) 
    2222   USE lib_mpp         ! MPP library 
     23   USE wrk_nemo_2      ! Memory allocation 
     24   USE timing          ! Timing 
    2325 
    2426   IMPLICIT NONE 
     
    8183      !!              - pgru, pgrv: horizontal gradient of rho (if present) at u- & v-points  
    8284      !!---------------------------------------------------------------------- 
    83       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    84       USE wrk_nemo, ONLY:   zri => wrk_2d_1 , zrj => wrk_2d_2   ! interpolated value of rd 
    85       USE wrk_nemo, ONLY:   zhi => wrk_2d_3 , zhj => wrk_2d_4   ! depth of interpolation for eos2d 
    8685      ! 
    8786      INTEGER                              , INTENT(in   )           ::  kt          ! ocean time-step index 
     
    9594      INTEGER  ::   iku, ikv, ikum1, ikvm1   ! partial step level (ocean bottom level) at u- and v-points 
    9695      REAL(wp) ::  ze3wu, ze3wv, zmaxu, zmaxv  ! temporary scalars 
    97       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zti, ztj    ! interpolated value of tracer 
     96      REAL(wp), POINTER, DIMENSION(:,:  ) ::  zri, zrj, zhi, zhj 
     97      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zti, ztj    ! interpolated value of tracer 
    9898      !!---------------------------------------------------------------------- 
    99  
    100       IF( wrk_in_use(2, 1,2,3,4) ) THEN 
    101          CALL ctl_stop('zps_hde: requested workspace arrays unavailable')  ;  RETURN 
    102       END IF 
    103  
    104       ! Allocate workspaces whose dimension is > jpk 
    105       ALLOCATE( zti(jpi,jpj,kjpt) ) 
    106       ALLOCATE( ztj(jpi,jpj,kjpt) ) 
    107  
     99      ! 
     100      IF( nn_timing == 1 )  CALL timing_start( 'zps_hde') 
     101      ! 
     102      CALL wrk_alloc( jpi, jpj,       zri, zrj, zhi, zhj )  
     103      CALL wrk_alloc( jpi, jpj, kjpt, zti, ztj           )  
     104      ! 
    108105      DO jn = 1, kjpt      !==   Interpolation of tracers at the last ocean level   ==! 
    109106         ! 
     
    183180         ! Compute interpolated rd from zti, ztj for the 2 cases at the depth of the partial 
    184181         ! step and store it in  zri, zrj for each  case 
    185          CALL eos( zti, zhi, zri )   ;   CALL eos( ztj, zhj, zrj ) 
     182         CALL eos( zti, zhi, zri )   
     183         CALL eos( ztj, zhj, zrj ) 
    186184 
    187185         ! Gradient of density at the last level  
     
    211209      END IF 
    212210      ! 
    213       IF( wrk_not_released(2, 1,2,3,4) )   CALL ctl_stop('zps_hde: failed to release workspace arrays') 
    214       ! 
    215       DEALLOCATE( zti ) 
    216       DEALLOCATE( ztj ) 
     211      CALL wrk_dealloc( jpi, jpj,       zri, zrj, zhi, zhj )  
     212      CALL wrk_dealloc( jpi, jpj, kjpt, zti, ztj           )  
     213      ! 
     214      IF( nn_timing == 1 )  CALL timing_stop( 'zps_hde') 
    217215      ! 
    218216   END SUBROUTINE zps_hde 
Note: See TracChangeset for help on using the changeset viewer.