Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90	(revision 7910)
@@ -23,5 +23,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE prtctl         ! Print control
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -73,11 +72,9 @@
       REAL(wp) ::   zs1new, zalf , zalfq , zbt           !    -         -
       REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !    -         -
-      REAL(wp), DIMENSION(:,:), POINTER ::   zf0, zfx , zfy , zbet   ! 2D workspace
-      REAL(wp), DIMENSION(:,:), POINTER ::   zfm, zfxx, zfyy, zfxy   !  -      -
-      REAL(wp), DIMENSION(:,:), POINTER ::   zalg, zalg1, zalg1q     !  -      -
+      REAL(wp), DIMENSION(jpi,jpj) ::   zf0, zfx , zfy , zbet   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfm, zfxx, zfyy, zfxy   !  -      -
+      REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q     !  -      -
       !---------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm )
-      CALL wrk_alloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q )
 
       ! Limitation of moments.                                           
@@ -224,6 +221,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm )
-      CALL wrk_dealloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q )
       !
    END SUBROUTINE lim_adv_x_2
@@ -256,11 +251,9 @@
       REAL(wp) ::   zs1new, zalf , zalfq , zbt           !    -         -
       REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !    -         -
-      REAL(wp), DIMENSION(:,:), POINTER ::   zf0, zfx , zfy , zbet   ! 2D workspace
-      REAL(wp), DIMENSION(:,:), POINTER ::   zfm, zfxx, zfyy, zfxy   !  -      -
-      REAL(wp), DIMENSION(:,:), POINTER ::   zalg, zalg1, zalg1q     !  -      -
+      REAL(wp), DIMENSION(jpi,jpj) ::   zf0, zfx , zfy , zbet   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfm, zfxx, zfyy, zfxy   !  -      -
+      REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q     !  -      -
       !---------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm )
-      CALL wrk_alloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q )
 
       ! Limitation of moments.
@@ -410,6 +403,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm )
-      CALL wrk_dealloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q )
       !
    END SUBROUTINE lim_adv_y_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE lbclnk           ! lateral boundary condition - MPP link
    USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
    USE in_out_manager   ! I/O manager
    USE prtctl           ! Print control
@@ -65,11 +64,9 @@
       INTEGER  ::   i_j1, i_jpj        ! Starting/ending j-indices for rheology
       REAL(wp) ::   zcoef              ! temporary scalar
-      REAL(wp), POINTER, DIMENSION(:  ) ::   zind           ! i-averaged indicator of sea-ice
-      REAL(wp), POINTER, DIMENSION(:  ) ::   zmsk           ! i-averaged of tmask
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_io, zv_io   ! ice-ocean velocity
+      REAL(wp), DIMENSION(jpj) ::   zind           ! i-averaged indicator of sea-ice
+      REAL(wp), DIMENSION(jpj) ::   zmsk           ! i-averaged of tmask
+      REAL(wp), DIMENSION(jpi,jpj) ::   zu_io, zv_io   ! ice-ocean velocity
       !!---------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, zu_io, zv_io )
-      CALL wrk_alloc(      jpj, zind , zmsk  )
 
       IF( kt == nit000 )   CALL lim_dyn_init_2   ! Initialization (first time-step only)
@@ -206,6 +203,4 @@
       IF(ln_ctl)   CALL prt_ctl(tab2d_1=ust2s , clinfo1=' lim_dyn  : ust2s :')
       !
-      CALL wrk_dealloc( jpi, jpj, zu_io, zv_io )
-      CALL wrk_dealloc(      jpj, zind , zmsk  )
       !
    END SUBROUTINE lim_dyn_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90	(revision 7910)
@@ -18,5 +18,4 @@
    USE lbclnk           ! lateral boundary condition - MPP exchanges
    USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
    USE prtctl           ! Print control
    USE in_out_manager   ! I/O manager
@@ -58,9 +57,8 @@
       INTEGER  ::   its, iter, ierr   ! local integers
       REAL(wp) ::   zalfa, zrlxint, zconv, zeps   ! local scalars
-      REAL(wp), DIMENSION(:,:), POINTER :: zrlx, zflu, zflv, zdiv0, zdiv, ztab0 
+      REAL(wp), DIMENSION(jpi,jpj) :: zrlx, zflu, zflv, zdiv0, zdiv, ztab0 
       CHARACTER (len=55) :: charout
       !!-------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, zrlx, zflu, zflv, zdiv0, zdiv, ztab0 )
 
       !                       !==  Initialisation  ==!
@@ -144,5 +142,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, zrlx, zflu, zflv, zdiv0, zdiv, ztab0 )
       !
    END SUBROUTINE lim_hdf_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE lib_mpp          ! MPP library
 #if defined key_lim2_vp
-   USE wrk_nemo         ! work arrays
 #endif
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -56,10 +55,9 @@
       REAL(wp) ::   zh1p  , zh2p      !   -      -
       REAL(wp) ::   zd2d1p, zd1d2p    !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zd2d1, zd1d2   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zd2d1, zd1d2   ! 2D workspace
 #endif
       !!---------------------------------------------------------------------
 
 #if defined key_lim2_vp
-      CALL wrk_alloc( jpi, jpj, zd2d1, zd1d2 )
 #endif
 
@@ -280,5 +278,4 @@
       !
 #if defined key_lim2_vp
-      CALL wrk_dealloc( jpi, jpj, zd2d1, zd1d2 )
 #endif
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limrhg.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limrhg.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limrhg.F90	(revision 7910)
@@ -34,5 +34,4 @@
    USE lbclnk         ! Lateral Boundary Condition / MPP link
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE in_out_manager ! I/O manager
    USE prtctl         ! Print control
@@ -131,22 +130,22 @@
       REAL(wp) ::   zintb, zintn  ! dummy argument
 
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zpresh           ! temporary array for ice strength
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zpreshc          ! Ice strength on grid cell corners (zpreshc)
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zfrld1, zfrld2   ! lead fraction on U/V points
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zmass1, zmass2   ! ice/snow mass on U/V points
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zcorl1, zcorl2   ! coriolis parameter on U/V points
-      REAL(wp), POINTER, DIMENSION(:,:) ::   za1ct , za2ct    ! temporary arrays
-      REAL(wp), POINTER, DIMENSION(:,:) ::   v_oce1           ! ocean u/v component on U points                           
-      REAL(wp), POINTER, DIMENSION(:,:) ::   u_oce2           ! ocean u/v component on V points
-      REAL(wp), POINTER, DIMENSION(:,:) ::   u_ice2, v_ice1   ! ice u/v component on V/U point
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zf1   , zf2      ! arrays for internal stresses
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zmask            ! mask ocean grid points
+      REAL(wp), DIMENSION(jpi,jpj) ::   zpresh           ! temporary array for ice strength
+      REAL(wp), DIMENSION(jpi,jpj) ::   zpreshc          ! Ice strength on grid cell corners (zpreshc)
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfrld1, zfrld2   ! lead fraction on U/V points
+      REAL(wp), DIMENSION(jpi,jpj) ::   zmass1, zmass2   ! ice/snow mass on U/V points
+      REAL(wp), DIMENSION(jpi,jpj) ::   zcorl1, zcorl2   ! coriolis parameter on U/V points
+      REAL(wp), DIMENSION(jpi,jpj) ::   za1ct , za2ct    ! temporary arrays
+      REAL(wp), DIMENSION(jpi,jpj) ::   v_oce1           ! ocean u/v component on U points                           
+      REAL(wp), DIMENSION(jpi,jpj) ::   u_oce2           ! ocean u/v component on V points
+      REAL(wp), DIMENSION(jpi,jpj) ::   u_ice2, v_ice1   ! ice u/v component on V/U point
+      REAL(wp), DIMENSION(jpi,jpj) ::   zf1   , zf2      ! arrays for internal stresses
+      REAL(wp), DIMENSION(jpi,jpj) ::   zmask            ! mask ocean grid points
       
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zdt              ! tension at centre of grid cells
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zds              ! Shear on northeast corner of grid cells
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zs1   , zs2      ! Diagonal stress tensor components zs1 and zs2 
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zs12             ! Non-diagonal stress tensor component zs12
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_ice, zv_ice, zresr   ! Local error on velocity
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zpice            ! array used for the calculation of ice surface slope:
+      REAL(wp), DIMENSION(jpi,jpj) ::   zdt              ! tension at centre of grid cells
+      REAL(wp), DIMENSION(jpi,jpj) ::   zds              ! Shear on northeast corner of grid cells
+      REAL(wp), DIMENSION(jpi,jpj) ::   zs1   , zs2      ! Diagonal stress tensor components zs1 and zs2 
+      REAL(wp), DIMENSION(jpi,jpj) ::   zs12             ! Non-diagonal stress tensor component zs12
+      REAL(wp), DIMENSION(jpi,jpj) ::   zu_ice, zv_ice, zresr   ! Local error on velocity
+      REAL(wp), DIMENSION(jpi,jpj) ::   zpice            ! array used for the calculation of ice surface slope:
                                                               !   ocean surface (ssh_m) if ice is not embedded
                                                               !   ice top surface if ice is embedded   
@@ -156,8 +155,4 @@
       !!-------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi,jpj, zpresh, zfrld1, zmass1, zcorl1, za1ct , zpreshc, zfrld2, zmass2, zcorl2, za2ct )
-      CALL wrk_alloc( jpi,jpj, u_oce2, u_ice2, v_oce1 , v_ice1 , zmask               )
-      CALL wrk_alloc( jpi,jpj, zf1   , zu_ice, zf2   , zv_ice , zdt    , zds  )
-      CALL wrk_alloc( jpi,jpj, zs1   , zs2   , zs12   , zresr , zpice                 )
 
 #if  defined key_lim2 && ! defined key_lim2_vp
@@ -687,8 +682,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj, zpresh, zfrld1, zmass1, zcorl1, za1ct , zpreshc, zfrld2, zmass2, zcorl2, za2ct )
-      CALL wrk_dealloc( jpi,jpj, u_oce2, u_ice2, v_oce1 , v_ice1 , zmask               )
-      CALL wrk_dealloc( jpi,jpj, zf1   , zu_ice, zf2   , zv_ice , zdt    , zds  )
-      CALL wrk_dealloc( jpi,jpj, zs1   , zs2   , zs12   , zresr , zpice                 )
 
    END SUBROUTINE lim_rhg
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE lbclnk         ! lateral boundary condition - MPP exchanges
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE in_out_manager ! I/O manager
    USE prtctl         ! Print control
@@ -86,20 +85,16 @@
       REAL(wp) ::   zs22_11, zs22_12, zs22_21, zs22_22
       REAL(wp) ::   zintb, zintn
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zfrld, zmass, zcorl
-      REAL(wp), POINTER, DIMENSION(:,:) ::   za1ct, za2ct, zresr
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zc1u, zc1v, zc2u, zc2v
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zsang, zpice
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zu0, zv0
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_n, zv_n
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_a, zv_a
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zviszeta, zviseta
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zzfrld, zztms
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zi1, zi2, zmasst, zpresh
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfrld, zmass, zcorl
+      REAL(wp), DIMENSION(jpi,jpj) ::   za1ct, za2ct, zresr
+      REAL(wp), DIMENSION(jpi,jpj) ::   zc1u, zc1v, zc2u, zc2v
+      REAL(wp), DIMENSION(jpi,jpj) ::   zsang, zpice
+      REAL(wp), DIMENSION(jpi,0:jpj+1) ::   zu0, zv0
+      REAL(wp), DIMENSION(jpi,0:jpj+1) ::   zu_n, zv_n
+      REAL(wp), DIMENSION(jpi,0:jpj+1) ::   zu_a, zv_a
+      REAL(wp), DIMENSION(jpi,0:jpj+1) ::   zviszeta, zviseta
+      REAL(wp), DIMENSION(jpi,0:jpj+1) ::   zzfrld, zztms
+      REAL(wp), DIMENSION(jpi,0:jpj+1) ::   zi1, zi2, zmasst, zpresh
       !!-------------------------------------------------------------------
       
-      CALL wrk_alloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr )
-      CALL wrk_alloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang, zpice )
-      CALL wrk_alloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 )
-      CALL wrk_alloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 )
 
       !  Store initial velocities
@@ -600,8 +595,4 @@
       ENDIF
 
-      CALL wrk_dealloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr )
-      CALL wrk_dealloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang, zpice )
-      CALL wrk_dealloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 )
-      CALL wrk_dealloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 )
 
    END SUBROUTINE lim_rhg_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90	(revision 7910)
@@ -35,5 +35,4 @@
    USE lbclnk           ! ocean lateral boundary condition - MPP exchanges
    USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
    USE in_out_manager   ! I/O manager
    USE iom              ! I/O library
@@ -111,10 +110,8 @@
       REAL(wp) ::   zemp_snw, zqhc,   zcd      !   -      -
       REAL(wp) ::   zswitch                    !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zqnsoce       ! 2D workspace
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb, zalbp   ! 2D/3D workspace
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zqnsoce       ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj,1) ::   zalb, zalbp   ! 2D/3D workspace
       !!---------------------------------------------------------------------
       !
-      CALL wrk_alloc( jpi, jpj, zqnsoce )
-      CALL wrk_alloc( jpi, jpj, 1, zalb, zalbp )
       !
       SELECT CASE( nn_ice_embd )             ! levitating or embedded sea-ice option
@@ -269,6 +266,4 @@
       ENDIF 
       !
-      CALL wrk_dealloc( jpi, jpj, zqnsoce )
-      CALL wrk_dealloc( jpi, jpj, 1, zalb, zalbp )
       !
    END SUBROUTINE lim_sbc_flx_2
@@ -308,8 +303,7 @@
       REAL(wp) ::   zfrldv, zat_v, zv_i, zvtau_ice, zv_t, zmodi   !   -      -
       REAL(wp) ::   zsang, zumt                                   !    -         -
-      REAL(wp), POINTER, DIMENSION(:,:) ::   ztio_u, ztio_v   ! ocean stress below sea-ice
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztio_u, ztio_v   ! ocean stress below sea-ice
       !!---------------------------------------------------------------------
       !
-      CALL wrk_alloc( jpi, jpj, ztio_u, ztio_v )
       !
       SELECT CASE( cp_ice_msh )     
@@ -421,5 +415,4 @@
          &                       tab2d_2=vtau, clinfo2=' vtau    : '        , mask2=vmask )
       !  
-      CALL wrk_dealloc( jpi, jpj, ztio_u, ztio_v )
       !
    END SUBROUTINE lim_sbc_tau_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90	(revision 7910)
@@ -31,5 +31,4 @@
    USE lbclnk           !
    USE lib_mpp          !
-   USE wrk_nemo         ! work arrays
    USE iom              ! IOM library
    USE prtctl           ! Print control
@@ -94,23 +93,21 @@
       REAL(wp) ::   zrhoij, zrhoijm1     ! temporary scalars
       REAL(wp) ::   zztmp                ! temporary scalars within a loop
-      REAL(wp), POINTER, DIMENSION(:,:)     ::   ztmp      ! 2D workspace
-      REAL(wp), POINTER, DIMENSION(:,:)     ::   zqlbsbq   ! link with lead energy budget qldif
-      REAL(wp), POINTER, DIMENSION(:,:)     ::   zlicegr   ! link with lateral ice growth 
+      REAL(wp), DIMENSION(jpi,jpj)     ::   ztmp      ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj)     ::   zqlbsbq   ! link with lead energy budget qldif
+      REAL(wp), DIMENSION(jpi,jpj)     ::   zlicegr   ! link with lateral ice growth 
 !!$      REAL(wp), DIMENSION(:,:) ::   firic         ! IR flux over the ice            (outputs only)
 !!$      REAL(wp), DIMENSION(:,:) ::   fcsic         ! Sensible heat flux over the ice (outputs only)
 !!$      REAL(wp), DIMENSION(:,:) ::   fleic         ! Latent heat flux over the ice   (outputs only)
 !!$      REAL(wp), DIMENSION(:,:) ::   qlatic        ! latent flux                     (outputs only)
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zdvosif       ! Variation of volume at surface                (outputs only)
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zdvobif       ! Variation of ice volume at the bottom ice     (outputs only)
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zdvolif       ! Total variation of ice volume                 (outputs only)
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zdvonif       ! Surface accretion Snow to Ice transformation  (outputs only)
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zdvomif       ! Bottom variation of ice volume due to melting (outputs only)
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_imasstr    ! Sea-ice transport along i-axis at U-point     (outputs only) 
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zv_imasstr    ! Sea-ice transport along j-axis at V-point     (outputs only) 
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zmsk        ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zdvosif       ! Variation of volume at surface                (outputs only)
+      REAL(wp), DIMENSION(jpi,jpj) ::   zdvobif       ! Variation of ice volume at the bottom ice     (outputs only)
+      REAL(wp), DIMENSION(jpi,jpj) ::   zdvolif       ! Total variation of ice volume                 (outputs only)
+      REAL(wp), DIMENSION(jpi,jpj) ::   zdvonif       ! Surface accretion Snow to Ice transformation  (outputs only)
+      REAL(wp), DIMENSION(jpi,jpj) ::   zdvomif       ! Bottom variation of ice volume due to melting (outputs only)
+      REAL(wp), DIMENSION(jpi,jpj) ::   zu_imasstr    ! Sea-ice transport along i-axis at U-point     (outputs only) 
+      REAL(wp), DIMENSION(jpi,jpj) ::   zv_imasstr    ! Sea-ice transport along j-axis at V-point     (outputs only) 
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zmsk        ! 3D workspace
       !!-------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, ztmp, zqlbsbq, zlicegr, zdvosif, zdvobif, zdvolif, zdvonif, zdvomif, zu_imasstr, zv_imasstr )
-      CALL wrk_alloc( jpi, jpj, jpk, zmsk )
 
       IF( kt == nit000 )   CALL lim_thd_init_2   ! Initialization (first time-step only)
@@ -522,6 +519,4 @@
       ENDIF
        !
-      CALL wrk_dealloc( jpi, jpj, ztmp, zqlbsbq, zlicegr, zdvosif, zdvobif, zdvolif, zdvonif, zdvomif, zu_imasstr, zv_imasstr )
-      CALL wrk_dealloc( jpi, jpj, jpk, zmsk )
       !
     END SUBROUTINE lim_thd_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90	(revision 7910)
@@ -15,5 +15,4 @@
    USE limistate_2 
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
@@ -80,10 +79,10 @@
          iiceform       ,   &  !  1 = ice formed   ; 0 = no ice formed
          ihemis                !  dummy indice
-      REAL(wp), POINTER, DIMENSION(:) ::   zqbgow      !  heat budget of the open water (negative)
-      REAL(wp), POINTER, DIMENSION(:) ::   zfrl_old    !  previous sea/ice fraction
-      REAL(wp), POINTER, DIMENSION(:) ::   zhice_old   !  previous ice thickness
-      REAL(wp), POINTER, DIMENSION(:) ::   zhice0      !  thickness of newly formed ice in leads
-      REAL(wp), POINTER, DIMENSION(:) ::   zfrlmin     !  minimum fraction for leads
-      REAL(wp), POINTER, DIMENSION(:) ::   zdhicbot    !  part of thickness of newly formed ice in leads which 
+      REAL(wp), DIMENSION(jpij) ::   zqbgow      !  heat budget of the open water (negative)
+      REAL(wp), DIMENSION(jpij) ::   zfrl_old    !  previous sea/ice fraction
+      REAL(wp), DIMENSION(jpij) ::   zhice_old   !  previous ice thickness
+      REAL(wp), DIMENSION(jpij) ::   zhice0      !  thickness of newly formed ice in leads
+      REAL(wp), DIMENSION(jpij) ::   zfrlmin     !  minimum fraction for leads
+      REAL(wp), DIMENSION(jpij) ::   zdhicbot    !  part of thickness of newly formed ice in leads which 
                                 !  has been already used in transport for example
       REAL(wp)  ::  &
@@ -102,5 +101,4 @@
       !!---------------------------------------------------------------------      
                
-      CALL wrk_alloc( jpij, zqbgow, zfrl_old, zhice_old, zhice0, zfrlmin, zdhicbot )
       
       !--------------------------------------------------------------
@@ -221,5 +219,4 @@
       END DO
       
-      CALL wrk_dealloc( jpij, zqbgow, zfrl_old, zhice_old, zhice0, zfrlmin, zdhicbot )
       !
    END SUBROUTINE lim_thd_lac_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE in_out_manager
    USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
    USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
     
@@ -73,29 +72,29 @@
       !!
       INTEGER ::   ji       ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:) ::   zqcmlts        ! energy due to surface melting
-      REAL(wp), POINTER, DIMENSION(:) ::   zqcmltb        ! energy due to bottom melting
-      REAL(wp), POINTER, DIMENSION(:) ::   ztsmlt         ! snow/ice surface melting temperature
-      REAL(wp), POINTER, DIMENSION(:) ::   ztbif          ! int. temp. at the mid-point of the 1st layer of the snow/ice sys. 
-      REAL(wp), POINTER, DIMENSION(:) ::   zksn           ! effective conductivity of snow
-      REAL(wp), POINTER, DIMENSION(:) ::   zkic           ! effective conductivity of ice
-      REAL(wp), POINTER, DIMENSION(:) ::   zksndh         ! thermal cond. at the mid-point of the 1st layer of the snow/ice sys. 
-      REAL(wp), POINTER, DIMENSION(:) ::   zfcsu          ! conductive heat flux at the surface of the snow/ice system 
-      REAL(wp), POINTER, DIMENSION(:) ::   zfcsudt        ! = zfcsu * dt
-      REAL(wp), POINTER, DIMENSION(:) ::   zi0            ! frac. of the net SW rad. which is not absorbed at the surface
-      REAL(wp), POINTER, DIMENSION(:) ::   z1mi0          ! fraction of the net SW radiation absorbed at the surface
-      REAL(wp), POINTER, DIMENSION(:) ::   zqmax          ! maximum energy stored in brine pockets
-      REAL(wp), POINTER, DIMENSION(:) ::   zrcpdt         ! h_su*rho_su*cp_su/dt(h_su being the thick. of surf. layer)
-      REAL(wp), POINTER, DIMENSION(:) ::   zts_old        ! previous surface temperature
-      REAL(wp), POINTER, DIMENSION(:) ::   zidsn , z1midsn , zidsnic ! temporary variables
-      REAL(wp), POINTER, DIMENSION(:) ::   zfnet          ! net heat flux at the top surface( incl. conductive heat flux)
-      REAL(wp), POINTER, DIMENSION(:) ::   zsprecip       ! snow accumulation
-      REAL(wp), POINTER, DIMENSION(:) ::   zhsnw_old      ! previous snow thickness
-      REAL(wp), POINTER, DIMENSION(:) ::   zdhictop       ! change in ice thickness due to top surf ablation/accretion
-      REAL(wp), POINTER, DIMENSION(:) ::   zdhicbot       ! change in ice thickness due to bottom surf abl/acc
-      REAL(wp), POINTER, DIMENSION(:) ::   zqsup          ! energy transmitted to ocean (coming from top surf abl/acc)
-      REAL(wp), POINTER, DIMENSION(:) ::   zqocea         ! energy transmitted to ocean (coming from bottom sur abl/acc)
-      REAL(wp), POINTER, DIMENSION(:) ::   zfrl_old       ! previous sea/ice fraction
-      REAL(wp), POINTER, DIMENSION(:) ::   zfrld_1d       ! new sea/ice fraction
-      REAL(wp), POINTER, DIMENSION(:) ::   zep            ! internal temperature of the 2nd layer of the snow/ice system
+      REAL(wp), DIMENSION(jpij) ::   zqcmlts        ! energy due to surface melting
+      REAL(wp), DIMENSION(jpij) ::   zqcmltb        ! energy due to bottom melting
+      REAL(wp), DIMENSION(jpij) ::   ztsmlt         ! snow/ice surface melting temperature
+      REAL(wp), DIMENSION(jpij) ::   ztbif          ! int. temp. at the mid-point of the 1st layer of the snow/ice sys. 
+      REAL(wp), DIMENSION(jpij) ::   zksn           ! effective conductivity of snow
+      REAL(wp), DIMENSION(jpij) ::   zkic           ! effective conductivity of ice
+      REAL(wp), DIMENSION(jpij) ::   zksndh         ! thermal cond. at the mid-point of the 1st layer of the snow/ice sys. 
+      REAL(wp), DIMENSION(jpij) ::   zfcsu          ! conductive heat flux at the surface of the snow/ice system 
+      REAL(wp), DIMENSION(jpij) ::   zfcsudt        ! = zfcsu * dt
+      REAL(wp), DIMENSION(jpij) ::   zi0            ! frac. of the net SW rad. which is not absorbed at the surface
+      REAL(wp), DIMENSION(jpij) ::   z1mi0          ! fraction of the net SW radiation absorbed at the surface
+      REAL(wp), DIMENSION(jpij) ::   zqmax          ! maximum energy stored in brine pockets
+      REAL(wp), DIMENSION(jpij) ::   zrcpdt         ! h_su*rho_su*cp_su/dt(h_su being the thick. of surf. layer)
+      REAL(wp), DIMENSION(jpij) ::   zts_old        ! previous surface temperature
+      REAL(wp), DIMENSION(jpij) ::   zidsn , z1midsn , zidsnic ! temporary variables
+      REAL(wp), DIMENSION(jpij) ::   zfnet          ! net heat flux at the top surface( incl. conductive heat flux)
+      REAL(wp), DIMENSION(jpij) ::   zsprecip       ! snow accumulation
+      REAL(wp), DIMENSION(jpij) ::   zhsnw_old      ! previous snow thickness
+      REAL(wp), DIMENSION(jpij) ::   zdhictop       ! change in ice thickness due to top surf ablation/accretion
+      REAL(wp), DIMENSION(jpij) ::   zdhicbot       ! change in ice thickness due to bottom surf abl/acc
+      REAL(wp), DIMENSION(jpij) ::   zqsup          ! energy transmitted to ocean (coming from top surf abl/acc)
+      REAL(wp), DIMENSION(jpij) ::   zqocea         ! energy transmitted to ocean (coming from bottom sur abl/acc)
+      REAL(wp), DIMENSION(jpij) ::   zfrl_old       ! previous sea/ice fraction
+      REAL(wp), DIMENSION(jpij) ::   zfrld_1d       ! new sea/ice fraction
+      REAL(wp), DIMENSION(jpij) ::   zep            ! internal temperature of the 2nd layer of the snow/ice system
       REAL(wp), DIMENSION(3) :: & 
             zplediag  &    ! principle diagonal, subdiag. and supdiag. of the 
@@ -164,7 +163,4 @@
           , zibmlt, ziqr, zihgnew, zind, ztmp        ! temporary scalars
        !!----------------------------------------------------------------------
-       CALL wrk_alloc( jpij, ztsmlt, ztbif  , zksn    , zkic    , zksndh , zfcsu  , zfcsudt , zi0      , z1mi0   , zqmax    )
-       CALL wrk_alloc( jpij, zrcpdt, zts_old, zidsn   , z1midsn , zidsnic, zfnet  , zsprecip, zhsnw_old, zdhictop, zdhicbot )
-       CALL wrk_alloc( jpij, zqsup , zqocea , zfrl_old, zfrld_1d, zep    , zqcmlts, zqcmltb                                 )
 
        !-----------------------------------------------------------------------
@@ -809,7 +805,4 @@
        END DO
        ! 
-       CALL wrk_dealloc( jpij, ztsmlt, ztbif  , zksn    , zkic    , zksndh , zfcsu  , zfcsudt , zi0      , z1mi0   , zqmax    )
-       CALL wrk_dealloc( jpij, zrcpdt, zts_old, zidsn   , z1midsn , zidsnic, zfnet  , zsprecip, zhsnw_old, zdhictop, zdhicbot )
-       CALL wrk_dealloc( jpij, zqsup , zqocea , zfrl_old, zfrld_1d, zep    , zqcmlts, zqcmltb                                 )
        !
     END SUBROUTINE lim_thd_zdf_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limtrp_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limtrp_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limtrp_2.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE lbclnk          ! lateral boundary conditions -- MPP exchanges
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
 # if defined key_agrif
    USE agrif_lim2_interp ! nesting
@@ -76,10 +75,9 @@
       REAL(wp) ::   zvbord , zcfl   , zusnit            !   -      -
       REAL(wp) ::   zrtt   , ztsn   , ztic1 , ztic2     !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:)  ::   zui_u , zvi_v , zsm             ! 2D workspace
-      REAL(wp), POINTER, DIMENSION(:,:)  ::   zs0ice, zs0sn , zs0a            !  -      -
-      REAL(wp), POINTER, DIMENSION(:,:)  ::   zs0c0 , zs0c1 , zs0c2 , zs0st   !  -      -
+      REAL(wp), DIMENSION(jpi,jpj)  ::   zui_u , zvi_v , zsm             ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj)  ::   zs0ice, zs0sn , zs0a            !  -      -
+      REAL(wp), DIMENSION(jpi,jpj)  ::   zs0c0 , zs0c1 , zs0c2 , zs0st   !  -      -
       !---------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, zui_u , zvi_v , zsm, zs0ice, zs0sn , zs0a, zs0c0 , zs0c1 , zs0c2 , zs0st )
 
       IF( kt == nit000  )   CALL lim_trp_init_2      ! Initialization (first time-step only)
@@ -281,5 +279,4 @@
 # endif
       ! 
-      CALL wrk_dealloc( jpi, jpj, zui_u , zvi_v , zsm, zs0ice, zs0sn , zs0a, zs0c0 , zs0c1 , zs0c2 , zs0st )
       !
    END SUBROUTINE lim_trp_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90	(revision 7910)
@@ -30,5 +30,4 @@
    USE in_out_manager
    USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
    USE iom
    USE ioipsl
@@ -103,8 +102,7 @@
          &          zindh, zinda, zindb, ztmu
       REAL(wp), DIMENSION(1)                ::   zdept
-      REAL(wp), POINTER, DIMENSION(:,:)     ::   zfield
-      !!-------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, zfield )
+      REAL(wp), DIMENSION(jpi,jpj)     ::   zfield
+      !!-------------------------------------------------------------------
+
                                                  !--------------------!
       IF( kt == nit000 ) THEN                    !   Initialisation   !
@@ -206,5 +204,4 @@
       IF( ( nn_fsbc * niter ) >= nitend )   CALL histclo( nice ) 
 
-      CALL wrk_dealloc( jpi, jpj, zfield )
       !
    END SUBROUTINE lim_wri_2
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limadv_prather.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limadv_prather.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limadv_prather.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE prtctl           ! Print control
    USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
    USE lib_fortran      ! to use key_nosignedzero
 
@@ -65,11 +64,9 @@
       REAL(wp) ::   zs1new, zalf , zalfq , zbt           !   -      -
       REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zf0 , zfx  , zfy   , zbet   ! 2D workspace
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zfm , zfxx , zfyy  , zfxy   !  -      -
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zalg, zalg1, zalg1q         !  -      -
+      REAL(wp), DIMENSION(jpi,jpj) ::   zf0 , zfx  , zfy   , zbet   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfm , zfxx , zfyy  , zfxy   !  -      -
+      REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q         !  -      -
       !---------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm )
-      CALL wrk_alloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q )
 
       ! Limitation of moments.                                           
@@ -218,6 +215,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm )
-      CALL wrk_dealloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q )
       !
    END SUBROUTINE lim_adv_x
@@ -250,11 +245,9 @@
       REAL(wp) ::   zs1new, zalf , zalfq , zbt           !    -         -
       REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !    -         -
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zf0, zfx , zfy , zbet   ! 2D workspace
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zfm, zfxx, zfyy, zfxy   !  -      -
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zalg, zalg1, zalg1q     !  -      -
+      REAL(wp), DIMENSION(jpi,jpj) ::   zf0, zfx , zfy , zbet   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfm, zfxx, zfyy, zfxy   !  -      -
+      REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q     !  -      -
       !---------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm )
-      CALL wrk_alloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q )
 
       ! Limitation of moments.
@@ -404,6 +397,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm )
-      CALL wrk_dealloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q )
       !
    END SUBROUTINE lim_adv_y
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limadv_umx.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limadv_umx.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limadv_umx.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE lbclnk         ! lateral boundary conditions -- MPP exchanges
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
    USE timing         ! Timing
@@ -65,10 +64,9 @@
       REAL(wp) ::   zfp_ui, zfp_vj   !   -      -
       REAL(wp) ::   zfm_ui, zfm_vj   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) :: zt_ups, zfu_ups, zfv_ups, ztrd, zfu_ho, zfv_ho, zt_u, zt_v
+      REAL(wp), DIMENSION(jpi,jpj) :: zt_ups, zfu_ups, zfv_ups, ztrd, zfu_ho, zfv_ho, zt_u, zt_v
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('lim_adv_umx')
       !
-      CALL wrk_alloc( jpi,jpj,   zt_ups, zfu_ups, zfv_ups, ztrd, zfu_ho, zfv_ho, zt_u, zt_v )
       !
       !
@@ -146,5 +144,4 @@
       !
       !
-      CALL wrk_dealloc( jpi,jpj,   zt_ups, zfu_ups, zfv_ups, ztrd, zfu_ho, zfv_ho, zt_u, zt_v )
       !
       IF( nn_timing == 1 )  CALL timing_stop('lim_adv_umx')
@@ -174,10 +171,9 @@
       INTEGER  ::   ji, jj    ! dummy loop indices
       REAL(wp) ::   zc_box    !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) :: zzt
+      REAL(wp), DIMENSION(jpi,jpj) :: zzt
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('macho')
       !
-      CALL wrk_alloc( jpi,jpj,   zzt )
       !
       IF( MOD( (kt - 1) / nn_fsbc , 2 ) == 0 ) THEN         !==  odd ice time step:  adv_x then adv_y  ==!
@@ -219,5 +215,4 @@
       ENDIF      
       !
-      CALL wrk_dealloc( jpi,jpj,   zzt )
       !
       IF( nn_timing == 1 )  CALL timing_stop('macho')
@@ -245,10 +240,9 @@
       INTEGER  ::   ji, jj       ! dummy loop indices
       REAL(wp) ::   zcu, zdx2, zdx4    !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) :: ztu1, ztu2, ztu3, ztu4
+      REAL(wp), DIMENSION(jpi,jpj) :: ztu1, ztu2, ztu3, ztu4
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('ultimate_x')
       !
-      CALL wrk_alloc( jpi,jpj,   ztu1, ztu2, ztu3, ztu4 )
       !
       !                                                     !--  Laplacian in i-direction  --!
@@ -346,5 +340,4 @@
       END SELECT
       !
-      CALL wrk_dealloc( jpi,jpj,   ztu1, ztu2, ztu3, ztu4 )
       !
       IF( nn_timing == 1 )  CALL timing_stop('ultimate_x')
@@ -372,10 +365,9 @@
       INTEGER  ::   ji, jj       ! dummy loop indices
       REAL(wp) ::   zcv, zdy2, zdy4    !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) :: ztv1, ztv2, ztv3, ztv4
+      REAL(wp), DIMENSION(jpi,jpj) :: ztv1, ztv2, ztv3, ztv4
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('ultimate_y')
       !
-      CALL wrk_alloc( jpi,jpj,   ztv1, ztv2, ztv3, ztv4 )
       !
       !                                                     !--  Laplacian in j-direction  --!
@@ -474,5 +466,4 @@
       END SELECT
       !
-      CALL wrk_dealloc( jpi,jpj,   ztv1, ztv2, ztv3, ztv4 )
       !
       IF( nn_timing == 1 )  CALL timing_stop('ultimate_y')
@@ -502,10 +493,9 @@
       REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zsml, z1_dt   ! local scalars
       REAL(wp) ::   zau, zbu, zcu, zav, zbv, zcv, zup, zdo            !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) :: zbetup, zbetdo, zbup, zbdo, zmsk, zdiv
+      REAL(wp), DIMENSION(jpi,jpj) :: zbetup, zbetdo, zbup, zbdo, zmsk, zdiv
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('nonosc_2d')
       !
-      CALL wrk_alloc( jpi,jpj,   zbetup, zbetdo, zbup, zbdo, zmsk, zdiv )
       !
       zbig = 1.e+40_wp
@@ -578,5 +568,4 @@
       CALL lbc_lnk_multi( paa, 'U', -1., pbb, 'V', -1. )   ! lateral boundary condition (changed sign)
       !
-      CALL wrk_dealloc( jpi,jpj,   zbetup, zbetdo, zbup, zbdo, zmsk, zdiv )
       !
       IF( nn_timing == 1 )  CALL timing_stop('nonosc_2d')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90	(revision 7910)
@@ -20,5 +20,4 @@
    USE lbclnk         ! lateral boundary condition - MPP exchanges
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE prtctl         ! Print control
    USE in_out_manager ! I/O manager
@@ -66,6 +65,6 @@
       INTEGER , PARAMETER                 ::  num_convfrq  = 5          ! convergence check frequency of the Crant-Nicholson scheme (perf. optimization)
       REAL(wp), POINTER, DIMENSION(:)     ::  zconv
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zrlx, zdiv0, ztab0
-      REAL(wp), POINTER, DIMENSION(:,:)   ::  zflu, zflv, zdiv
+      REAL(wp), DIMENSION(jpi,jpj,isize) ::  zrlx, zdiv0, ztab0
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zflu, zflv, zdiv
       !!-------------------------------------------------------------------
       TYPE(arrayptr)   , ALLOCATABLE, DIMENSION(:) ::   pt2d_array, zrlx_array
@@ -83,6 +82,4 @@
       ALLOCATE( psgn_array(isize) )
 
-      CALL wrk_alloc( jpi,jpj,       zflu, zflv, zdiv )
-      CALL wrk_alloc( jpi,jpj,isize, zrlx, zdiv0, ztab0 )
       
       DO jk= 1, isize
@@ -206,6 +203,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,       zflu, zflv, zdiv )
-      CALL wrk_dealloc( jpi,jpj,isize, zrlx, zdiv0, ztab0 )
       !
       DEALLOCATE( zconv )
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE lib_mpp          ! MPP library
    USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
-   USE wrk_nemo         ! work arrays
    USE fldread          ! read input fields
    USE iom
@@ -82,15 +81,10 @@
       INTEGER  :: i_hemis, i_fill, jl0  
       REAL(wp)   :: zarg, zV, zconv, zdv 
-      REAL(wp), POINTER, DIMENSION(:,:)   :: zswitch    ! ice indicator
-      REAL(wp), POINTER, DIMENSION(:,:)   :: zht_i_ini, zat_i_ini, zvt_i_ini            !data from namelist or nc file
-      REAL(wp), POINTER, DIMENSION(:,:)   :: zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini !data from namelist or nc file
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zh_i_ini, za_i_ini                         !data by cattegories to fill
-      INTEGER , POINTER, DIMENSION(:)     :: itest
-      !--------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, jpl, zh_i_ini,  za_i_ini )
-      CALL wrk_alloc( jpi, jpj,      zht_i_ini, zat_i_ini, zvt_i_ini, zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini )
-      CALL wrk_alloc( jpi, jpj,      zswitch )
-      Call wrk_alloc( 4,             itest )
+      REAL(wp), DIMENSION(jpi,jpj)   :: zswitch    ! ice indicator
+      REAL(wp), DIMENSION(jpi,jpj)   :: zht_i_ini, zat_i_ini, zvt_i_ini            !data from namelist or nc file
+      REAL(wp), DIMENSION(jpi,jpj)   :: zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini !data from namelist or nc file
+      REAL(wp), DIMENSION(jpi,jpj,jpl) :: zh_i_ini, za_i_ini                         !data by cattegories to fill
+      INTEGER , DIMENSION(4)     :: itest
+      !--------------------------------------------------------------------
 
       IF(lwp) WRITE(numout,*)
@@ -464,7 +458,4 @@
 !!!      
 
-      CALL wrk_dealloc( jpi, jpj, jpl, zh_i_ini,  za_i_ini )
-      CALL wrk_dealloc( jpi, jpj,      zht_i_ini, zat_i_ini, zvt_i_ini, zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini )
-      CALL wrk_dealloc( jpi, jpj,      zswitch )
       Call wrk_dealloc( 4,             itest )
 
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE lbclnk           ! lateral boundary condition - MPP exchanges
    USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
 
    USE in_out_manager   ! I/O manager
@@ -110,9 +109,9 @@
       REAL(wp) ::   za, zfac              ! local scalar
       CHARACTER (len = 15) ::   fieldid
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   closing_net     ! net rate at which area is removed    (1/s)
+      REAL(wp), DIMENSION(jpi,jpj)   ::   closing_net     ! net rate at which area is removed    (1/s)
                                                                ! (ridging ice area - area of new ridges) / dt
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   divu_adv        ! divu as implied by transport scheme  (1/s)
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   opning          ! rate of opening due to divergence/shear
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   closing_gross   ! rate at which area removed, not counting area of new ridges
+      REAL(wp), DIMENSION(jpi,jpj)   ::   divu_adv        ! divu as implied by transport scheme  (1/s)
+      REAL(wp), DIMENSION(jpi,jpj)   ::   opning          ! rate of opening due to divergence/shear
+      REAL(wp), DIMENSION(jpi,jpj)   ::   closing_gross   ! rate at which area removed, not counting area of new ridges
       !
       INTEGER, PARAMETER ::   nitermax = 20    
@@ -122,5 +121,4 @@
       IF( nn_timing == 1 )  CALL timing_start('limitd_me')
 
-      CALL wrk_alloc( jpi,jpj, closing_net, divu_adv, opning, closing_gross )
 
       ! conservation test
@@ -289,5 +287,4 @@
       IF( ln_ctl )       CALL lim_prt3D( 'limitd_me' )
 
-      CALL wrk_dealloc( jpi, jpj, closing_net, divu_adv, opning, closing_gross )
       !
       IF( nn_timing == 1 )  CALL timing_stop('limitd_me')
@@ -305,8 +302,7 @@
       INTEGER ::   ji,jj, jl    ! dummy loop indices
       REAL(wp) ::   Gstari, astari, hrmean, zdummy   ! local scalar
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   Gsum      ! Gsum(n) = sum of areas in categories 0 to n
-      !------------------------------------------------------------------------------!
-
-      CALL wrk_alloc( jpi,jpj,jpl+2, Gsum, kkstart = -1 )
+      REAL(wp), DIMENSION(jpi,jpj,-1:jpl) ::   Gsum      ! Gsum(n) = sum of areas in categories 0 to n
+      !------------------------------------------------------------------------------!
+
 
       Gstari     = 1.0/rn_gstar    
@@ -477,5 +473,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpl+2, Gsum, kkstart = -1 )
       !
    END SUBROUTINE lim_itd_me_ridgeprep
@@ -501,38 +496,32 @@
       REAL(wp) ::   hL, hR, farea    ! left and right limits of integration
 
-      INTEGER , POINTER, DIMENSION(:) ::   indxi, indxj   ! compressed indices
-      REAL(wp), POINTER, DIMENSION(:) ::   zswitch, fvol   ! new ridge volume going to n2
-
-      REAL(wp), POINTER, DIMENSION(:) ::   afrac            ! fraction of category area ridged 
-      REAL(wp), POINTER, DIMENSION(:) ::   ardg1 , ardg2    ! area of ice ridged & new ridges
-      REAL(wp), POINTER, DIMENSION(:) ::   vsrdg , esrdg    ! snow volume & energy of ridging ice
-      REAL(wp), POINTER, DIMENSION(:) ::   dhr   , dhr2     ! hrmax - hrmin  &  hrmax^2 - hrmin^2
-
-      REAL(wp), POINTER, DIMENSION(:) ::   vrdg1   ! volume of ice ridged
-      REAL(wp), POINTER, DIMENSION(:) ::   vrdg2   ! volume of new ridges
-      REAL(wp), POINTER, DIMENSION(:) ::   vsw     ! volume of seawater trapped into ridges
-      REAL(wp), POINTER, DIMENSION(:) ::   srdg1   ! sal*volume of ice ridged
-      REAL(wp), POINTER, DIMENSION(:) ::   srdg2   ! sal*volume of new ridges
-      REAL(wp), POINTER, DIMENSION(:) ::   smsw    ! sal*volume of water trapped into ridges
-      REAL(wp), POINTER, DIMENSION(:) ::   oirdg1, oirdg2   ! ice age of ice ridged
-
-      REAL(wp), POINTER, DIMENSION(:) ::   afrft            ! fraction of category area rafted
-      REAL(wp), POINTER, DIMENSION(:) ::   arft1 , arft2    ! area of ice rafted and new rafted zone
-      REAL(wp), POINTER, DIMENSION(:) ::   virft , vsrft    ! ice & snow volume of rafting ice
-      REAL(wp), POINTER, DIMENSION(:) ::   esrft , smrft    ! snow energy & salinity of rafting ice
-      REAL(wp), POINTER, DIMENSION(:) ::   oirft1, oirft2   ! ice age of ice rafted
-
-      REAL(wp), POINTER, DIMENSION(:,:) ::   eirft      ! ice energy of rafting ice
-      REAL(wp), POINTER, DIMENSION(:,:) ::   erdg1      ! enth*volume of ice ridged
-      REAL(wp), POINTER, DIMENSION(:,:) ::   erdg2      ! enth*volume of new ridges
-      REAL(wp), POINTER, DIMENSION(:,:) ::   ersw       ! enth of water trapped into ridges
+      INTEGER , DIMENSION(jpij) ::   indxi, indxj   ! compressed indices
+      REAL(wp), DIMENSION(jpij) ::   zswitch, fvol   ! new ridge volume going to n2
+
+      REAL(wp), DIMENSION(jpij) ::   afrac            ! fraction of category area ridged 
+      REAL(wp), DIMENSION(jpij) ::   ardg1 , ardg2    ! area of ice ridged & new ridges
+      REAL(wp), DIMENSION(jpij) ::   vsrdg , esrdg    ! snow volume & energy of ridging ice
+      REAL(wp), DIMENSION(jpij) ::   dhr   , dhr2     ! hrmax - hrmin  &  hrmax^2 - hrmin^2
+
+      REAL(wp), DIMENSION(jpij) ::   vrdg1   ! volume of ice ridged
+      REAL(wp), DIMENSION(jpij) ::   vrdg2   ! volume of new ridges
+      REAL(wp), DIMENSION(jpij) ::   vsw     ! volume of seawater trapped into ridges
+      REAL(wp), DIMENSION(jpij) ::   srdg1   ! sal*volume of ice ridged
+      REAL(wp), DIMENSION(jpij) ::   srdg2   ! sal*volume of new ridges
+      REAL(wp), DIMENSION(jpij) ::   smsw    ! sal*volume of water trapped into ridges
+      REAL(wp), DIMENSION(jpij) ::   oirdg1, oirdg2   ! ice age of ice ridged
+
+      REAL(wp), DIMENSION(jpij) ::   afrft            ! fraction of category area rafted
+      REAL(wp), DIMENSION(jpij) ::   arft1 , arft2    ! area of ice rafted and new rafted zone
+      REAL(wp), DIMENSION(jpij) ::   virft , vsrft    ! ice & snow volume of rafting ice
+      REAL(wp), DIMENSION(jpij) ::   esrft , smrft    ! snow energy & salinity of rafting ice
+      REAL(wp), DIMENSION(jpij) ::   oirft1, oirft2   ! ice age of ice rafted
+
+      REAL(wp), DIMENSION(jpij,nlay_i) ::   eirft      ! ice energy of rafting ice
+      REAL(wp), DIMENSION(jpij,nlay_i) ::   erdg1      ! enth*volume of ice ridged
+      REAL(wp), DIMENSION(jpij,nlay_i) ::   erdg2      ! enth*volume of new ridges
+      REAL(wp), DIMENSION(jpij,nlay_i) ::   ersw       ! enth of water trapped into ridges
       !!----------------------------------------------------------------------
 
-      CALL wrk_alloc( jpij,        indxi, indxj )
-      CALL wrk_alloc( jpij,        zswitch, fvol )
-      CALL wrk_alloc( jpij,        afrac, ardg1, ardg2, vsrdg, esrdg, dhr, dhr2 )
-      CALL wrk_alloc( jpij,        vrdg1, vrdg2, vsw  , srdg1, srdg2, smsw, oirdg1, oirdg2 )
-      CALL wrk_alloc( jpij,        afrft, arft1, arft2, virft, vsrft, esrft, smrft, oirft1, oirft2 )
-      CALL wrk_alloc( jpij,nlay_i, eirft, erdg1, erdg2, ersw )
 
       !-------------------------------------------------------------------------------
@@ -732,10 +721,4 @@
 
       !
-      CALL wrk_dealloc( jpij,        indxi, indxj )
-      CALL wrk_dealloc( jpij,        zswitch, fvol )
-      CALL wrk_dealloc( jpij,        afrac, ardg1, ardg2, vsrdg, esrdg, dhr, dhr2 )
-      CALL wrk_dealloc( jpij,        vrdg1, vrdg2, vsw  , srdg1, srdg2, smsw, oirdg1, oirdg2 )
-      CALL wrk_dealloc( jpij,        afrft, arft1, arft2, virft, vsrft, esrft, smrft, oirft1, oirft2 )
-      CALL wrk_dealloc( jpij,nlay_i, eirft, erdg1, erdg2, ersw )
       !
    END SUBROUTINE lim_itd_me_ridgeshift
@@ -760,9 +743,8 @@
       INTEGER             ::   numts_rm    ! number of time steps for the P smoothing
       REAL(wp)            ::   zp, z1_3    ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zworka           ! temporary array used here
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zstrp1, zstrp2   ! strength at previous time steps
+      REAL(wp), DIMENSION(jpi,jpj) ::   zworka           ! temporary array used here
+      REAL(wp), DIMENSION(jpi,jpj) ::   zstrp1, zstrp2   ! strength at previous time steps
       !!----------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi,jpj, zworka, zstrp1, zstrp2 )
 
       !------------------------------------------------------------------------------!
@@ -896,5 +878,4 @@
       ENDIF ! ksmooth
 
-      CALL wrk_dealloc( jpi,jpj, zworka, zstrp1, zstrp2 )
       !
    END SUBROUTINE lim_itd_me_icestrength
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE in_out_manager   ! I/O manager
    USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
    USE lib_fortran      ! to use key_nosignedzero
    USE limcons          ! conservation tests
@@ -67,35 +66,27 @@
       CHARACTER (len = 15) :: fieldid
 
-      INTEGER , POINTER, DIMENSION(:,:,:) ::   zdonor   ! donor category index
-
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdhice      ! ice thickness increment
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   g0          ! coefficients for fitting the line of the ITD
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   g1          ! coefficients for fitting the line of the ITD
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   hL          ! left boundary for the ITD for each thickness
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   hR          ! left boundary for the ITD for each thickness
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zht_i_b     ! old ice thickness
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   dummy_es
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdaice, zdvice          ! local increment of ice area and volume
-      REAL(wp), POINTER, DIMENSION(:)     ::   zvetamin, zvetamax      ! maximum values for etas
-      INTEGER , POINTER, DIMENSION(:)     ::   nind_i, nind_j          ! compressed indices for i/j directions
+      INTEGER , DIMENSION(jpi,jpj,jpl-1) ::   zdonor   ! donor category index
+
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zdhice      ! ice thickness increment
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   g0          ! coefficients for fitting the line of the ITD
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   g1          ! coefficients for fitting the line of the ITD
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   hL          ! left boundary for the ITD for each thickness
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   hR          ! left boundary for the ITD for each thickness
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zht_i_b     ! old ice thickness
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   dummy_es
+      REAL(wp), DIMENSION(jpi,jpj,jpl-1) ::   zdaice, zdvice          ! local increment of ice area and volume
+      REAL(wp), DIMENSION((jpi+1)*(jpj+1))     ::   zvetamin, zvetamax      ! maximum values for etas
+      INTEGER , DIMENSION((jpi+1)*(jpj+1))     ::   nind_i, nind_j          ! compressed indices for i/j directions
       INTEGER                             ::   nbrem                   ! number of cells with ice to transfer
       REAL(wp)                            ::   zslope                  ! used to compute local thermodynamic "speeds"
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zhb0, zhb1              ! category boundaries for thinnes categories
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   vt_i_init, vt_i_final   !  ice volume summed over categories
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   vt_s_init, vt_s_final   !  snow volume summed over categories
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   et_i_init, et_i_final   !  ice energy summed over categories
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   et_s_init, et_s_final   !  snow energy summed over categories
-      INTEGER , POINTER, DIMENSION(:,:)   ::   zremap_flag      ! compute remapping or not ????
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zhbnew           ! new boundaries of ice categories
-      !!------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi,jpj, zremap_flag )
-      CALL wrk_alloc( jpi,jpj,jpl-1, zdonor )
-      CALL wrk_alloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es )
-      CALL wrk_alloc( jpi,jpj,jpl-1, zdaice, zdvice )   
-      CALL wrk_alloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 )   
-      CALL wrk_alloc( (jpi+1)*(jpj+1), zvetamin, zvetamax )   
-      CALL wrk_alloc( (jpi+1)*(jpj+1), nind_i, nind_j ) 
-      CALL wrk_alloc( jpi,jpj, zhb0,zhb1,vt_i_init,vt_i_final,vt_s_init,vt_s_final,et_i_init,et_i_final,et_s_init,et_s_final )
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zhb0, zhb1              ! category boundaries for thinnes categories
+      REAL(wp), DIMENSION(jpi,jpj)   ::   vt_i_init, vt_i_final   !  ice volume summed over categories
+      REAL(wp), DIMENSION(jpi,jpj)   ::   vt_s_init, vt_s_final   !  snow volume summed over categories
+      REAL(wp), DIMENSION(jpi,jpj)   ::   et_i_init, et_i_final   !  ice energy summed over categories
+      REAL(wp), DIMENSION(jpi,jpj)   ::   et_s_init, et_s_final   !  snow energy summed over categories
+      INTEGER , DIMENSION(jpi,jpj)   ::   zremap_flag      ! compute remapping or not ????
+      REAL(wp), DIMENSION(jpi,jpj,0:jpl) ::   zhbnew           ! new boundaries of ice categories
+      !!------------------------------------------------------------------
+
 
       !!----------------------------------------------------------------------------------------------
@@ -383,12 +374,4 @@
       ENDIF
 
-      CALL wrk_dealloc( jpi,jpj, zremap_flag )
-      CALL wrk_dealloc( jpi,jpj,jpl-1, zdonor )
-      CALL wrk_dealloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es )
-      CALL wrk_dealloc( jpi,jpj,jpl-1, zdaice, zdvice )   
-      CALL wrk_dealloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 )   
-      CALL wrk_dealloc( (jpi+1)*(jpj+1), zvetamin, zvetamax )   
-      CALL wrk_dealloc( (jpi+1)*(jpj+1), nind_i, nind_j ) 
-      CALL wrk_dealloc( jpi,jpj, zhb0,zhb1,vt_i_init,vt_i_final,vt_s_init,vt_s_final,et_i_init,et_i_final,et_s_init,et_s_final )
 
    END SUBROUTINE lim_itd_th_rem
@@ -477,6 +460,6 @@
       INTEGER ::   ii, ij                     ! indices when changing from 2D-1D is done
 
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zaTsfn
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zworka            ! temporary array used here
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zaTsfn
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zworka            ! temporary array used here
 
       REAL(wp) ::   zdvsnow, zdesnow   ! snow volume and energy transferred
@@ -486,12 +469,9 @@
       REAL(wp) ::   zdaTsf             ! aicen*Tsfcn transferred
 
-      INTEGER, POINTER, DIMENSION(:) ::   nind_i, nind_j   ! compressed indices for i/j directions
+      INTEGER, DIMENSION((jpi+1)*(jpj+1)) ::   nind_i, nind_j   ! compressed indices for i/j directions
 
       INTEGER  ::   nbrem             ! number of cells with ice to transfer
       !!------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi,jpj,jpl, zaTsfn )
-      CALL wrk_alloc( jpi,jpj, zworka )
-      CALL wrk_alloc( (jpi+1)*(jpj+1), nind_i, nind_j )
 
       !----------------------------------------------------------------------------------------------
@@ -621,7 +601,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpl, zaTsfn )
-      CALL wrk_dealloc( jpi,jpj, zworka )
-      CALL wrk_dealloc( (jpi+1)*(jpj+1), nind_i, nind_j )
       !
    END SUBROUTINE lim_itd_shiftice
@@ -643,14 +620,11 @@
       CHARACTER (len = 15) :: fieldid
 
-      INTEGER , POINTER, DIMENSION(:,:,:) ::   zdonor           ! donor category index
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdaice, zdvice   ! ice area and volume transferred
-
-      REAL(wp), POINTER, DIMENSION(:,:) ::   vt_i_init, vt_i_final   ! ice volume summed over categories
-      REAL(wp), POINTER, DIMENSION(:,:) ::   vt_s_init, vt_s_final   ! snow volume summed over categories
+      INTEGER , DIMENSION(jpi,jpj,jpl) ::   zdonor           ! donor category index
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zdaice, zdvice   ! ice area and volume transferred
+
+      REAL(wp), DIMENSION(jpi,jpj) ::   vt_i_init, vt_i_final   ! ice volume summed over categories
+      REAL(wp), DIMENSION(jpi,jpj) ::   vt_s_init, vt_s_final   ! snow volume summed over categories
       !!------------------------------------------------------------------
       
-      CALL wrk_alloc( jpi,jpj,jpl, zdonor )   ! interger
-      CALL wrk_alloc( jpi,jpj,jpl, zdaice, zdvice )
-      CALL wrk_alloc( jpi,jpj, vt_i_init, vt_i_final, vt_s_init, vt_s_final )
       !     
       IF( con_i ) THEN                 ! conservation check
@@ -772,7 +746,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,jpl, zdonor )
-      CALL wrk_dealloc( jpi,jpj,jpl, zdaice, zdvice )
-      CALL wrk_dealloc( jpi,jpj, vt_i_init, vt_i_final, vt_s_init, vt_s_final )
 
    END SUBROUTINE lim_itd_th_reb
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE lbclnk         ! Lateral Boundary Condition / MPP link
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE in_out_manager ! I/O manager
    USE prtctl         ! Print control
@@ -123,24 +122,24 @@
       REAL(wp) ::   zintb, zintn                                             ! dummy argument
       
-      REAL(wp), POINTER, DIMENSION(:,:) ::   z1_e1t0, z1_e2t0                ! scale factors
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zp_delt                         ! P/delta at T points
+      REAL(wp), DIMENSION(jpi,jpj) ::   z1_e1t0, z1_e2t0                ! scale factors
+      REAL(wp), DIMENSION(jpi,jpj) ::   zp_delt                         ! P/delta at T points
       !
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zaU   , zaV                     ! ice fraction on U/V points
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zmU_t, zmV_t                    ! ice/snow mass/dt on U/V points
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zmf                             ! coriolis parameter at T points
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zTauU_ia , ztauV_ia             ! ice-atm. stress at U-V points
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zspgU , zspgV                   ! surface pressure gradient at U/V points
-      REAL(wp), POINTER, DIMENSION(:,:) ::   v_oceU, u_oceV, v_iceU, u_iceV  ! ocean/ice u/v component on V/U points                           
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zfU   , zfV                     ! internal stresses
+      REAL(wp), DIMENSION(jpi,jpj) ::   zaU   , zaV                     ! ice fraction on U/V points
+      REAL(wp), DIMENSION(jpi,jpj) ::   zmU_t, zmV_t                    ! ice/snow mass/dt on U/V points
+      REAL(wp), DIMENSION(jpi,jpj) ::   zmf                             ! coriolis parameter at T points
+      REAL(wp), DIMENSION(jpi,jpj) ::   zTauU_ia , ztauV_ia             ! ice-atm. stress at U-V points
+      REAL(wp), DIMENSION(jpi,jpj) ::   zspgU , zspgV                   ! surface pressure gradient at U/V points
+      REAL(wp), DIMENSION(jpi,jpj) ::   v_oceU, u_oceV, v_iceU, u_iceV  ! ocean/ice u/v component on V/U points                           
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfU   , zfV                     ! internal stresses
       
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zds                             ! shear
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zs1, zs2, zs12                  ! stress tensor components
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_ice, zv_ice, zresr           ! check convergence
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zpice                           ! array used for the calculation of ice surface slope:
+      REAL(wp), DIMENSION(jpi,jpj) ::   zds                             ! shear
+      REAL(wp), DIMENSION(jpi,jpj) ::   zs1, zs2, zs12                  ! stress tensor components
+      REAL(wp), DIMENSION(jpi,jpj) ::   zu_ice, zv_ice, zresr           ! check convergence
+      REAL(wp), DIMENSION(jpi,jpj) ::   zpice                           ! array used for the calculation of ice surface slope:
                                                                              !   ocean surface (ssh_m) if ice is not embedded
                                                                              !   ice top surface if ice is embedded   
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zswitchU, zswitchV              ! dummy arrays
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zmaskU, zmaskV                  ! mask for ice presence
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zfmask, zwf                     ! mask at F points for the ice
+      REAL(wp), DIMENSION(jpi,jpj) ::   zswitchU, zswitchV              ! dummy arrays
+      REAL(wp), DIMENSION(jpi,jpj) ::   zmaskU, zmaskV                  ! mask for ice presence
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfmask, zwf                     ! mask at F points for the ice
 
       REAL(wp), PARAMETER               ::   zepsi  = 1.0e-20_wp             ! tolerance parameter
@@ -149,9 +148,4 @@
       !!-------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi,jpj, z1_e1t0, z1_e2t0, zp_delt )
-      CALL wrk_alloc( jpi,jpj, zaU, zaV, zmU_t, zmV_t, zmf, zTauU_ia, ztauV_ia )
-      CALL wrk_alloc( jpi,jpj, zspgU, zspgV, v_oceU, u_oceV, v_iceU, u_iceV, zfU, zfV )
-      CALL wrk_alloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice )
-      CALL wrk_alloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf )
 
 #if defined key_agrif 
@@ -698,9 +692,4 @@
       !     
       
-      CALL wrk_dealloc( jpi,jpj, z1_e1t0, z1_e2t0, zp_delt )
-      CALL wrk_dealloc( jpi,jpj, zaU, zaV, zmU_t, zmV_t, zmf, zTauU_ia, ztauV_ia )
-      CALL wrk_dealloc( jpi,jpj, zspgU, zspgV, v_oceU, u_oceV, v_iceU, u_iceV, zfU, zfV )
-      CALL wrk_dealloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice )
-      CALL wrk_dealloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf )
 
    END SUBROUTINE lim_rhg
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE iom            ! I/O library
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
    USE limctl
@@ -107,8 +106,7 @@
       CHARACTER(len=25) ::   znam
       CHARACTER(len=2)  ::   zchar, zchar1
-      REAL(wp), POINTER, DIMENSION(:,:) :: z2d
-      !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, z2d )
+      REAL(wp), DIMENSION(jpi,jpj) :: z2d
+      !!----------------------------------------------------------------------
+
 
       iter = kt + nn_fsbc - 1   ! ice restarts are written at kt == nitrst - nn_fsbc + 1
@@ -301,5 +299,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, z2d )
       !
    END SUBROUTINE lim_rst_write
@@ -314,5 +311,5 @@
       INTEGER :: ji, jj, jk, jl
       REAL(wp) ::   zfice, ziter
-      REAL(wp), POINTER, DIMENSION(:,:) ::   z2d
+      REAL(wp), DIMENSION(jpi,jpj) ::   z2d
       CHARACTER(len=25) ::   znam
       CHARACTER(len=2)  ::   zchar, zchar1
@@ -321,5 +318,4 @@
       !!----------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, z2d )
 
       IF(lwp) THEN
@@ -528,5 +524,4 @@
       !CALL iom_close( numrir ) !clem: closed in sbcice_lim.F90
       !
-      CALL wrk_dealloc( jpi, jpj, z2d )
       !
    END SUBROUTINE lim_rst_read
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90	(revision 7910)
@@ -42,5 +42,4 @@
    USE lbclnk         ! ocean lateral boundary condition - MPP exchanges
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
@@ -106,6 +105,6 @@
       REAL(wp) ::   zqmass           ! Heat flux associated with mass exchange ice->ocean (W.m-2)
       REAL(wp) ::   zqsr             ! New solar flux received by the ocean
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb_cs, zalb_os     ! 3D workspace
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zalb                 ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zalb_cs, zalb_os     ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zalb                 ! 2D workspace
       !!---------------------------------------------------------------------
 
@@ -121,5 +120,4 @@
       
       ! albedo output
-      CALL wrk_alloc( jpi,jpj, zalb )    
 
       zalb(:,:) = 0._wp
@@ -132,5 +130,4 @@
       IF( iom_use('albedo'  ) )  CALL iom_put( "albedo"  , zalb(:,:) )           ! ice albedo output
 
-      CALL wrk_dealloc( jpi,jpj, zalb )    
 
       DO jj = 1, jpj
@@ -210,8 +207,6 @@
       !    Snow/ice albedo (only if sent to coupler, useless in forced mode)   !
       !------------------------------------------------------------------------!
-      CALL wrk_alloc( jpi,jpj,jpl,   zalb_cs, zalb_os )    
       CALL albedo_ice( t_su, ht_i, ht_s, zalb_cs, zalb_os )  ! cloud-sky and overcast-sky ice albedos
       alb_ice(:,:,:) = ( 1. - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:)
-      CALL wrk_dealloc( jpi,jpj,jpl,   zalb_cs, zalb_os )
 
       ! conservation test
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90	(revision 7910)
@@ -41,5 +41,4 @@
    USE lbclnk         ! lateral boundary condition - MPP links
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
    USE timing         ! Timing
@@ -87,5 +86,5 @@
       REAL(wp), PARAMETER :: zfric_umin = 0._wp           ! lower bound for the friction velocity (cice value=5.e-04)
       REAL(wp), PARAMETER :: zch        = 0.0057_wp       ! heat transfer coefficient
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_io, zv_io, zfric   ! ice-ocean velocity (m/s) and frictional velocity (m2/s2)
+      REAL(wp), DIMENSION(jpi,jpj) ::   zu_io, zv_io, zfric   ! ice-ocean velocity (m/s) and frictional velocity (m2/s2)
       !
       !!-------------------------------------------------------------------
@@ -93,5 +92,4 @@
       IF( nn_timing == 1 )   CALL timing_start('limthd')
 
-      CALL wrk_alloc( jpi,jpj, zu_io, zv_io, zfric )
 
       IF( kt == nit000 .AND. lwp ) THEN
@@ -342,5 +340,4 @@
       IF( ln_ctl )       CALL lim_prt3D( 'limthd' )
       !
-      CALL wrk_dealloc( jpi,jpj, zu_io, zv_io, zfric )
       !
       IF( nn_timing == 1 )  CALL timing_stop('limthd')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_da.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_da.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_da.F90	(revision 7910)
@@ -17,5 +17,4 @@
    USE ice                    ! LIM variables
    USE lib_mpp                ! MPP library
-   USE wrk_nemo               ! work arrays
    USE lib_fortran            ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
@@ -104,7 +103,6 @@
       REAL(wp), PARAMETER ::   zm2   = 1.36_wp
       !
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zda_tot
+      REAL(wp), DIMENSION(jpi,jpj) ::   zda_tot
       !!---------------------------------------------------------------------
-      CALL wrk_alloc( jpi,jpj, zda_tot )
 
       !------------------------------------------------------------!
@@ -168,5 +166,4 @@
       WHERE( a_i == 0._wp ) ht_i = 0._wp
       !
-      CALL wrk_dealloc( jpi,jpj, zda_tot )
       !
    END SUBROUTINE lim_thd_da
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90	(revision 7910)
@@ -23,5 +23,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
    
@@ -89,21 +88,21 @@
       REAL(wp) ::   zsstK        ! SST in Kelvin
 
-      REAL(wp), POINTER, DIMENSION(:) ::   zqprec      ! energy of fallen snow                       (J.m-3)
-      REAL(wp), POINTER, DIMENSION(:) ::   zq_su       ! heat for surface ablation                   (J.m-2)
-      REAL(wp), POINTER, DIMENSION(:) ::   zq_bo       ! heat for bottom ablation                    (J.m-2)
-      REAL(wp), POINTER, DIMENSION(:) ::   zq_rema     ! remaining heat at the end of the routine    (J.m-2)
-      REAL(wp), POINTER, DIMENSION(:) ::   zf_tt       ! Heat budget to determine melting or freezing(W.m-2)
-      REAL(wp), POINTER, DIMENSION(:) ::   zevap_rema  ! remaining mass flux from sublimation        (kg.m-2)
-
-      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_mel   ! snow melt 
-      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_pre   ! snow precipitation 
-      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_sub   ! snow sublimation
-
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zdeltah
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zh_i      ! ice layer thickness
-      INTEGER , POINTER, DIMENSION(:,:) ::   icount    ! number of layers vanished by melting 
-
-      REAL(wp), POINTER, DIMENSION(:) ::   zqh_i       ! total ice heat content  (J.m-2)
-      REAL(wp), POINTER, DIMENSION(:) ::   zsnw        ! distribution of snow after wind blowing
+      REAL(wp), DIMENSION(jpij) ::   zqprec      ! energy of fallen snow                       (J.m-3)
+      REAL(wp), DIMENSION(jpij) ::   zq_su       ! heat for surface ablation                   (J.m-2)
+      REAL(wp), DIMENSION(jpij) ::   zq_bo       ! heat for bottom ablation                    (J.m-2)
+      REAL(wp), DIMENSION(jpij) ::   zq_rema     ! remaining heat at the end of the routine    (J.m-2)
+      REAL(wp), DIMENSION(jpij) ::   zf_tt       ! Heat budget to determine melting or freezing(W.m-2)
+      REAL(wp), DIMENSION(jpij) ::   zevap_rema  ! remaining mass flux from sublimation        (kg.m-2)
+
+      REAL(wp), DIMENSION(jpij) ::   zdh_s_mel   ! snow melt 
+      REAL(wp), DIMENSION(jpij) ::   zdh_s_pre   ! snow precipitation 
+      REAL(wp), DIMENSION(jpij) ::   zdh_s_sub   ! snow sublimation
+
+      REAL(wp), DIMENSION(jpij,nlay_i) ::   zdeltah
+      REAL(wp), DIMENSION(jpij,nlay_i) ::   zh_i      ! ice layer thickness
+      INTEGER , DIMENSION(jpij,nlay_i) ::   icount    ! number of layers vanished by melting 
+
+      REAL(wp), DIMENSION(jpij) ::   zqh_i       ! total ice heat content  (J.m-2)
+      REAL(wp), DIMENSION(jpij) ::   zsnw        ! distribution of snow after wind blowing
 
       REAL(wp) :: zswitch_sal
@@ -120,8 +119,4 @@
       END SELECT
 
-      CALL wrk_alloc( jpij, zqprec, zq_su, zq_bo, zf_tt, zq_rema, zsnw, zevap_rema )
-      CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zqh_i )
-      CALL wrk_alloc( jpij, nlay_i, zdeltah, zh_i )
-      CALL wrk_alloc( jpij, nlay_i, icount )
        
       zqprec   (:) = 0._wp ; zq_su    (:) = 0._wp ; zq_bo    (:) = 0._wp ; zf_tt(:) = 0._wp
@@ -681,8 +676,4 @@
       WHERE( ht_i_1d == 0._wp ) a_i_1d = 0._wp
       
-      CALL wrk_dealloc( jpij, zqprec, zq_su, zq_bo, zf_tt, zq_rema, zsnw, zevap_rema )
-      CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zqh_i )
-      CALL wrk_dealloc( jpij, nlay_i, zdeltah, zh_i )
-      CALL wrk_dealloc( jpij, nlay_i, icount )
       !
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90	(revision 7910)
@@ -22,5 +22,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
@@ -99,6 +98,6 @@
       INTEGER ::   minnumeqmin, maxnumeqmax
       
-      INTEGER, POINTER, DIMENSION(:) ::   numeqmin   ! reference number of top equation
-      INTEGER, POINTER, DIMENSION(:) ::   numeqmax   ! reference number of bottom equation
+      INTEGER, DIMENSION(jpij) ::   numeqmin   ! reference number of top equation
+      INTEGER, DIMENSION(jpij) ::   numeqmax   ! reference number of bottom equation
       
       REAL(wp) ::   zg1s      =  2._wp        ! for the tridiagonal system
@@ -113,41 +112,41 @@
       REAL(wp) ::   zhsu
       
-      REAL(wp), POINTER, DIMENSION(:)     ::   isnow       ! switch for presence (1) or absence (0) of snow
-      REAL(wp), POINTER, DIMENSION(:)     ::   ztsub       ! old surface temperature (before the iterative procedure )
-      REAL(wp), POINTER, DIMENSION(:)     ::   ztsubit     ! surface temperature at previous iteration
-      REAL(wp), POINTER, DIMENSION(:)     ::   zh_i        ! ice layer thickness
-      REAL(wp), POINTER, DIMENSION(:)     ::   zh_s        ! snow layer thickness
-      REAL(wp), POINTER, DIMENSION(:)     ::   zfsw        ! solar radiation absorbed at the surface
-      REAL(wp), POINTER, DIMENSION(:)     ::   zqns_ice_b  ! solar radiation absorbed at the surface
-      REAL(wp), POINTER, DIMENSION(:)     ::   zf          ! surface flux function
-      REAL(wp), POINTER, DIMENSION(:)     ::   dzf         ! derivative of the surface flux function
-      REAL(wp), POINTER, DIMENSION(:)     ::   zerrit      ! current error on temperature
-      REAL(wp), POINTER, DIMENSION(:)     ::   zdifcase    ! case of the equation resolution (1->4)
-      REAL(wp), POINTER, DIMENSION(:)     ::   zftrice     ! solar radiation transmitted through the ice
-      REAL(wp), POINTER, DIMENSION(:)     ::   zihic
+      REAL(wp), DIMENSION(jpij)     ::   isnow       ! switch for presence (1) or absence (0) of snow
+      REAL(wp), DIMENSION(jpij)     ::   ztsub       ! old surface temperature (before the iterative procedure )
+      REAL(wp), DIMENSION(jpij)     ::   ztsubit     ! surface temperature at previous iteration
+      REAL(wp), DIMENSION(jpij)     ::   zh_i        ! ice layer thickness
+      REAL(wp), DIMENSION(jpij)     ::   zh_s        ! snow layer thickness
+      REAL(wp), DIMENSION(jpij)     ::   zfsw        ! solar radiation absorbed at the surface
+      REAL(wp), DIMENSION(jpij)     ::   zqns_ice_b  ! solar radiation absorbed at the surface
+      REAL(wp), DIMENSION(jpij)     ::   zf          ! surface flux function
+      REAL(wp), DIMENSION(jpij)     ::   dzf         ! derivative of the surface flux function
+      REAL(wp), DIMENSION(jpij)     ::   zerrit      ! current error on temperature
+      REAL(wp), DIMENSION(jpij)     ::   zdifcase    ! case of the equation resolution (1->4)
+      REAL(wp), DIMENSION(jpij)     ::   zftrice     ! solar radiation transmitted through the ice
+      REAL(wp), DIMENSION(jpij)     ::   zihic
       
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   ztcond_i    ! Ice thermal conductivity
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zradtr_i    ! Radiation transmitted through the ice
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zradab_i    ! Radiation absorbed in the ice
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zkappa_i    ! Kappa factor in the ice
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   ztib        ! Old temperature in the ice
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zeta_i      ! Eta factor in the ice
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   ztitemp     ! Temporary temperature in the ice to check the convergence
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zspeche_i   ! Ice specific heat
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   z_i         ! Vertical cotes of the layers in the ice
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zradtr_s    ! Radiation transmited through the snow
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zradab_s    ! Radiation absorbed in the snow
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zkappa_s    ! Kappa factor in the snow
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zeta_s      ! Eta factor in the snow
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   ztstemp     ! Temporary temperature in the snow to check the convergence
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   ztsb        ! Temporary temperature in the snow
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   z_s         ! Vertical cotes of the layers in the snow
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zindterm    ! 'Ind'ependent term
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zindtbis    ! Temporary 'ind'ependent term
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zdiagbis    ! Temporary 'dia'gonal term
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrid       ! Tridiagonal system terms
+      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   ztcond_i    ! Ice thermal conductivity
+      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zradtr_i    ! Radiation transmitted through the ice
+      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zradab_i    ! Radiation absorbed in the ice
+      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zkappa_i    ! Kappa factor in the ice
+      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   ztib        ! Old temperature in the ice
+      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zeta_i      ! Eta factor in the ice
+      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   ztitemp     ! Temporary temperature in the ice to check the convergence
+      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zspeche_i   ! Ice specific heat
+      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   z_i         ! Vertical cotes of the layers in the ice
+      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   zradtr_s    ! Radiation transmited through the snow
+      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   zradab_s    ! Radiation absorbed in the snow
+      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   zkappa_s    ! Kappa factor in the snow
+      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   zeta_s      ! Eta factor in the snow
+      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   ztstemp     ! Temporary temperature in the snow to check the convergence
+      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   ztsb        ! Temporary temperature in the snow
+      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   z_s         ! Vertical cotes of the layers in the snow
+      REAL(wp), DIMENSION(jpij,nlay_i+3)   ::   zindterm    ! 'Ind'ependent term
+      REAL(wp), DIMENSION(jpij,nlay_i+3)   ::   zindtbis    ! Temporary 'ind'ependent term
+      REAL(wp), DIMENSION(jpij,nlay_i+3)   ::   zdiagbis    ! Temporary 'dia'gonal term
+      REAL(wp), DIMENSION(jpij,nlay_i+3,3) ::   ztrid       ! Tridiagonal system terms
       
       ! diag errors on heat
-      REAL(wp), POINTER, DIMENSION(:)     :: zdq, zq_ini, zhfx_err
+      REAL(wp), DIMENSION(jpij)     :: zdq, zq_ini, zhfx_err
       
       ! Mono-category
@@ -162,17 +161,9 @@
       REAL(wp)                            :: zheshth       ! dummy factor
       
-      REAL(wp), POINTER, DIMENSION(:)     :: zghe          ! G(he), th. conduct enhancement factor, mono-cat
+      REAL(wp), DIMENSION(jpij)     :: zghe          ! G(he), th. conduct enhancement factor, mono-cat
       
       !!------------------------------------------------------------------     
       ! 
-      CALL wrk_alloc( jpij, numeqmin, numeqmax )
-      CALL wrk_alloc( jpij, isnow, ztsub, ztsubit, zh_i, zh_s, zfsw )
-      CALL wrk_alloc( jpij, zf, dzf, zqns_ice_b, zerrit, zdifcase, zftrice, zihic, zghe )
-      CALL wrk_alloc( jpij,nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0 )
-      CALL wrk_alloc( jpij,nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart=0 )
-      CALL wrk_alloc( jpij,nlay_i+3, zindterm, zindtbis, zdiagbis  )
-      CALL wrk_alloc( jpij,nlay_i+3,3, ztrid )
-
-      CALL wrk_alloc( jpij, zdq, zq_ini, zhfx_err )
+
 
       ! --- diag error on heat diffusion - PART 1 --- !
@@ -792,12 +783,4 @@
       END DO   
       !
-      CALL wrk_dealloc( jpij, numeqmin, numeqmax )
-      CALL wrk_dealloc( jpij, isnow, ztsub, ztsubit, zh_i, zh_s, zfsw )
-      CALL wrk_dealloc( jpij, zf, dzf, zqns_ice_b, zerrit, zdifcase, zftrice, zihic, zghe )
-      CALL wrk_dealloc( jpij,nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart = 0 )
-      CALL wrk_dealloc( jpij,nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart = 0 )
-      CALL wrk_dealloc( jpij,nlay_i+3, zindterm, zindtbis, zdiagbis )
-      CALL wrk_dealloc( jpij,nlay_i+3,3, ztrid )
-      CALL wrk_dealloc( jpij, zdq, zq_ini, zhfx_err )
 
    END SUBROUTINE lim_thd_dif
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90	(revision 7910)
@@ -29,5 +29,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
@@ -76,12 +75,9 @@
       INTEGER  :: jk0, jk1   !  old/new layer indices
       !
-      REAL(wp), POINTER, DIMENSION(:,:) :: zqh_cum0, zh_cum0   ! old cumulative enthlapies and layers interfaces
-      REAL(wp), POINTER, DIMENSION(:,:) :: zqh_cum1, zh_cum1   ! new cumulative enthlapies and layers interfaces
-      REAL(wp), POINTER, DIMENSION(:)   :: zhnew               ! new layers thicknesses
+      REAL(wp), DIMENSION(jpij,0:nlay_i+2) :: zqh_cum0, zh_cum0   ! old cumulative enthlapies and layers interfaces
+      REAL(wp), DIMENSION(jpij,0:nlay_i) :: zqh_cum1, zh_cum1   ! new cumulative enthlapies and layers interfaces
+      REAL(wp), DIMENSION(jpij)   :: zhnew               ! new layers thicknesses
       !!-------------------------------------------------------------------
 
-      CALL wrk_alloc( jpij, nlay_i+3, zqh_cum0, zh_cum0, kjstart = 0 )
-      CALL wrk_alloc( jpij, nlay_i+1, zqh_cum1, zh_cum1, kjstart = 0 )
-      CALL wrk_alloc( jpij, zhnew )
 
       !--------------------------------------------------------------------------
@@ -146,7 +142,4 @@
       
       !
-      CALL wrk_dealloc( jpij, nlay_i+3, zqh_cum0, zh_cum0, kjstart = 0 )
-      CALL wrk_dealloc( jpij, nlay_i+1, zqh_cum1, zh_cum1, kjstart = 0 )
-      CALL wrk_dealloc( jpij, zhnew )
       !
    END SUBROUTINE lim_thd_ent
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90	(revision 7910)
@@ -26,5 +26,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -85,38 +84,32 @@
       REAL(wp) ::   zv_newfra
   
-      INTEGER , POINTER, DIMENSION(:) ::   jcat        ! indexes of categories where new ice grows
-      REAL(wp), POINTER, DIMENSION(:) ::   zswinew     ! switch for new ice or not
-
-      REAL(wp), POINTER, DIMENSION(:) ::   zv_newice   ! volume of accreted ice
-      REAL(wp), POINTER, DIMENSION(:) ::   za_newice   ! fractional area of accreted ice
-      REAL(wp), POINTER, DIMENSION(:) ::   zh_newice   ! thickness of accreted ice
-      REAL(wp), POINTER, DIMENSION(:) ::   ze_newice   ! heat content of accreted ice
-      REAL(wp), POINTER, DIMENSION(:) ::   zs_newice   ! salinity of accreted ice
-      REAL(wp), POINTER, DIMENSION(:) ::   zo_newice   ! age of accreted ice
-      REAL(wp), POINTER, DIMENSION(:) ::   zdv_res     ! residual volume in case of excessive heat budget
-      REAL(wp), POINTER, DIMENSION(:) ::   zda_res     ! residual area in case of excessive heat budget
-      REAL(wp), POINTER, DIMENSION(:) ::   zat_i_1d    ! total ice fraction    
-      REAL(wp), POINTER, DIMENSION(:) ::   zv_frazb    ! accretion of frazil ice at the ice bottom
-      REAL(wp), POINTER, DIMENSION(:) ::   zvrel_1d    ! relative ice / frazil velocity (1D vector)
-
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zv_b      ! old volume of ice in category jl
-      REAL(wp), POINTER, DIMENSION(:,:) ::   za_b      ! old area of ice in category jl
-      REAL(wp), POINTER, DIMENSION(:,:) ::   za_i_1d   ! 1-D version of a_i
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zv_i_1d   ! 1-D version of v_i
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zsmv_i_1d ! 1-D version of smv_i
-
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze_i_1d !: 1-D version of e_i
-
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zvrel     ! relative ice / frazil velocity
+      INTEGER , DIMENSION(jpij) ::   jcat        ! indexes of categories where new ice grows
+      REAL(wp), DIMENSION(jpij) ::   zswinew     ! switch for new ice or not
+
+      REAL(wp), DIMENSION(jpij) ::   zv_newice   ! volume of accreted ice
+      REAL(wp), DIMENSION(jpij) ::   za_newice   ! fractional area of accreted ice
+      REAL(wp), DIMENSION(jpij) ::   zh_newice   ! thickness of accreted ice
+      REAL(wp), DIMENSION(jpij) ::   ze_newice   ! heat content of accreted ice
+      REAL(wp), DIMENSION(jpij) ::   zs_newice   ! salinity of accreted ice
+      REAL(wp), DIMENSION(jpij) ::   zo_newice   ! age of accreted ice
+      REAL(wp), DIMENSION(jpij) ::   zdv_res     ! residual volume in case of excessive heat budget
+      REAL(wp), DIMENSION(jpij) ::   zda_res     ! residual area in case of excessive heat budget
+      REAL(wp), DIMENSION(jpij) ::   zat_i_1d    ! total ice fraction    
+      REAL(wp), DIMENSION(jpij) ::   zv_frazb    ! accretion of frazil ice at the ice bottom
+      REAL(wp), DIMENSION(jpij) ::   zvrel_1d    ! relative ice / frazil velocity (1D vector)
+
+      REAL(wp), DIMENSION(jpij,jpl) ::   zv_b      ! old volume of ice in category jl
+      REAL(wp), DIMENSION(jpij,jpl) ::   za_b      ! old area of ice in category jl
+      REAL(wp), DIMENSION(jpij,jpl) ::   za_i_1d   ! 1-D version of a_i
+      REAL(wp), DIMENSION(jpij,jpl) ::   zv_i_1d   ! 1-D version of v_i
+      REAL(wp), DIMENSION(jpij,jpl) ::   zsmv_i_1d ! 1-D version of smv_i
+
+      REAL(wp), DIMENSION(jpij,nlay_i,jpl) ::   ze_i_1d !: 1-D version of e_i
+
+      REAL(wp), DIMENSION(jpi,jpj) ::   zvrel     ! relative ice / frazil velocity
 
       REAL(wp) :: zcai = 1.4e-3_wp                     ! ice-air drag (clem: should be dependent on coupling/forcing used)
       !!-----------------------------------------------------------------------!
 
-      CALL wrk_alloc( jpij, jcat )   ! integer
-      CALL wrk_alloc( jpij, zswinew, zv_newice, za_newice, zh_newice, ze_newice, zs_newice, zo_newice )
-      CALL wrk_alloc( jpij, zdv_res, zda_res, zat_i_1d, zv_frazb, zvrel_1d )
-      CALL wrk_alloc( jpij,jpl, zv_b, za_b, za_i_1d, zv_i_1d, zsmv_i_1d )
-      CALL wrk_alloc( jpij,nlay_i,jpl, ze_i_1d )
-      CALL wrk_alloc( jpi,jpj, zvrel )
 
       CALL lim_var_agg(1)
@@ -512,10 +505,4 @@
 
       !
-      CALL wrk_dealloc( jpij, jcat )   ! integer
-      CALL wrk_dealloc( jpij, zswinew, zv_newice, za_newice, zh_newice, ze_newice, zs_newice, zo_newice )
-      CALL wrk_dealloc( jpij, zdv_res, zda_res, zat_i_1d, zv_frazb, zvrel_1d )
-      CALL wrk_dealloc( jpij,jpl, zv_b, za_b, za_i_1d, zv_i_1d, zsmv_i_1d )
-      CALL wrk_dealloc( jpij,nlay_i,jpl, ze_i_1d )
-      CALL wrk_dealloc( jpi,jpj, zvrel )
       !
    END SUBROUTINE lim_thd_lac
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90	(revision 7910)
@@ -26,5 +26,4 @@
    USE lbclnk         ! lateral boundary conditions -- MPP exchanges
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE prtctl         ! Print control
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -72,8 +71,8 @@
       REAL(wp) ::    zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b
       REAL(wp) ::    zdv, zda
-      REAL(wp), POINTER, DIMENSION(:,:)      ::   zatold, zeiold, zesold, zsmvold 
-      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zhimax, zviold, zvsold
+      REAL(wp), DIMENSION(jpi,jpj)      ::   zatold, zeiold, zesold, zsmvold 
+      REAL(wp), DIMENSION(jpi,jpj,jpl)    ::   zhimax, zviold, zvsold
       ! --- diffusion --- !
-      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zhdfptab
+      REAL(wp), DIMENSION(jpi,jpj,jpl*(ihdf_vars+nlay_i)+1)    ::   zhdfptab
       INTEGER , PARAMETER                    ::   ihdf_vars  = 6 ! Number of variables in which we apply horizontal diffusion
                                                                  !  inside limtrp for each ice category , not counting the 
@@ -81,17 +80,14 @@
       ! --- ultimate macho only --- !
       REAL(wp)                               ::   zdt
-      REAL(wp), POINTER, DIMENSION(:,:)      ::   zudy, zvdx, zcu_box, zcv_box
+      REAL(wp), DIMENSION(jpi,jpj)      ::   zudy, zvdx, zcu_box, zcv_box
       ! --- prather only --- !
-      REAL(wp), POINTER, DIMENSION(:,:)      ::   zarea
-      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   z0opw
-      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   z0ice, z0snw, z0ai, z0es , z0smi , z0oi
-      REAL(wp), POINTER, DIMENSION(:,:,:,:)  ::   z0ei
+      REAL(wp), DIMENSION(jpi,jpj)      ::   zarea
+      REAL(wp), DIMENSION(jpi,jpj,1)    ::   z0opw
+      REAL(wp), DIMENSION(jpi,jpj,jpl)    ::   z0ice, z0snw, z0ai, z0es , z0smi , z0oi
+      REAL(wp), DIMENSION(jpi,jpj,nlay_i,jpl)  ::   z0ei
       !!
       !!---------------------------------------------------------------------
       IF( nn_timing == 1 )  CALL timing_start('limtrp')
 
-      CALL wrk_alloc( jpi,jpj,                            zatold, zeiold, zesold, zsmvold )
-      CALL wrk_alloc( jpi,jpj,jpl,                        zhimax, zviold, zvsold )
-      CALL wrk_alloc( jpi,jpj,jpl*(ihdf_vars + nlay_i)+1, zhdfptab)
  
       IF( kt == nit000 .AND. lwp ) THEN
@@ -163,5 +159,4 @@
                        !=============================!
       
-         CALL wrk_alloc( jpi,jpj, zudy, zvdx, zcu_box, zcv_box )
       
          IF( kt == nit000 .AND. lwp ) THEN
@@ -213,5 +208,4 @@
          END DO
          !
-         CALL wrk_dealloc( jpi,jpj, zudy, zvdx, zcu_box, zcv_box )
          
                        !=============================!
@@ -219,8 +213,4 @@
                        !=============================!
 
-         CALL wrk_alloc( jpi,jpj,            zarea )
-         CALL wrk_alloc( jpi,jpj,1,          z0opw )
-         CALL wrk_alloc( jpi,jpj,jpl,        z0ice, z0snw, z0ai, z0es , z0smi , z0oi )
-         CALL wrk_alloc( jpi,jpj,nlay_i,jpl, z0ei )
          
          IF( kt == nit000 .AND. lwp ) THEN
@@ -354,8 +344,4 @@
          END DO
          
-         CALL wrk_dealloc( jpi,jpj,            zarea )
-         CALL wrk_dealloc( jpi,jpj,1,          z0opw )
-         CALL wrk_dealloc( jpi,jpj,jpl,        z0ice, z0snw, z0ai, z0es , z0smi , z0oi )
-         CALL wrk_dealloc( jpi,jpj,nlay_i,jpl, z0ei )
 
       END SELECT
@@ -525,7 +511,4 @@
       IF( ln_limctl )   CALL lim_prt( kt, iiceprt, jiceprt,-1, ' - ice dyn & trp - ' )
       !
-      CALL wrk_dealloc( jpi,jpj,                            zatold, zeiold, zesold, zsmvold )
-      CALL wrk_dealloc( jpi,jpj,jpl,                        zhimax, zviold, zvsold )
-      CALL wrk_dealloc( jpi,jpj,jpl*(ihdf_vars + nlay_i)+1, zhdfptab)
       !
       IF( nn_timing == 1 )  CALL timing_stop('limtrp')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90	(revision 7910)
@@ -43,5 +43,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
@@ -289,10 +288,9 @@
       REAL(wp) ::   zfac0, zfac1, zsal
       REAL(wp) ::   zswi0, zswi01, zargtemp , zs_zero   
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   z_slope_s, zalpha
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_slope_s, zalpha
       REAL(wp), PARAMETER :: zsi0 = 3.5_wp
       REAL(wp), PARAMETER :: zsi1 = 4.5_wp
       !!------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi, jpj, jpl, z_slope_s, zalpha )
 
       !---------------------------------------
@@ -378,5 +376,4 @@
       ENDIF ! nn_icesal
       !
-      CALL wrk_dealloc( jpi, jpj, jpl, z_slope_s, zalpha )
       !
    END SUBROUTINE lim_var_salprof
@@ -434,10 +431,9 @@
       REAL(wp) ::   zalpha, zswi0, zswi01, zs_zero              !   -      -
       !
-      REAL(wp), POINTER, DIMENSION(:) ::   z_slope_s
+      REAL(wp), DIMENSION(jpij) ::   z_slope_s
       REAL(wp), PARAMETER :: zsi0 = 3.5_wp
       REAL(wp), PARAMETER :: zsi1 = 4.5_wp
       !!---------------------------------------------------------------------
 
-      CALL wrk_alloc( jpij, z_slope_s )
 
       !---------------------------------------
@@ -503,5 +499,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpij, z_slope_s )
       !
    END SUBROUTINE lim_var_salprof1d
@@ -639,7 +634,6 @@
       REAL(wp), DIMENSION(:),   INTENT(in)    ::   zhti, zhts, zai    ! input ice/snow variables
       REAL(wp), DIMENSION(:,:), INTENT(inout) ::   zht_i, zht_s, za_i ! output ice/snow variables
-      INTEGER , POINTER, DIMENSION(:)         ::   itest
+      INTEGER , DIMENSION(4)         ::   itest
  
-      CALL wrk_alloc( 4, itest )
       !--------------------------------------------------------------------
       ! initialisation of variables
@@ -765,5 +759,4 @@
       ENDDO
 
-      CALL wrk_dealloc( 4, itest )
       !
     END SUBROUTINE lim_var_itd
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90	(revision 7910)
@@ -22,5 +22,4 @@
    USE lbclnk
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
    USE iom
    USE timing          ! Timing
@@ -56,12 +55,10 @@
       REAL(wp) ::  z1_365
       REAL(wp) ::  z2da, z2db, ztmp
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zswi2
-      REAL(wp), POINTER, DIMENSION(:,:)   ::  z2d, zswi    ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::  zswi2
+      REAL(wp), DIMENSION(jpi,jpj)   ::  z2d, zswi    ! 2D workspace
       !!-------------------------------------------------------------------
 
       IF( nn_timing == 1 )  CALL timing_start('limwri')
 
-      CALL wrk_alloc( jpi,jpj,jpl, zswi2 )
-      CALL wrk_alloc( jpi,jpj    , z2d, zswi )
 
       !-----------------------------
@@ -229,6 +226,4 @@
       !     not yet implemented
       
-      CALL wrk_dealloc( jpi, jpj, jpl, zswi2 )
-      CALL wrk_dealloc( jpi, jpj     , z2d, zswi )
 
       IF( nn_timing == 1 )  CALL timing_stop('limwri')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE agrif_opa_sponge
    USE lib_mpp
-   USE wrk_nemo
  
    IMPLICIT NONE
@@ -77,10 +76,9 @@
       INTEGER ::   ji, jj, jk       ! dummy loop indices
       INTEGER ::   j1, j2, i1, i2
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zub, zvb
+      REAL(wp), DIMENSION(jpi,jpj) ::   zub, zvb
       !!----------------------------------------------------------------------  
       !
       IF( Agrif_Root() )   RETURN
       !
-      CALL wrk_alloc( jpi,jpj,   zub, zvb )
       !
       Agrif_SpecialValue    = 0._wp
@@ -376,5 +374,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,   zub, zvb )
       !
    END SUBROUTINE Agrif_dyn
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90	(revision 7910)
@@ -14,5 +14,4 @@
    USE in_out_manager
    USE agrif_oce
-   USE wrk_nemo  
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
 
@@ -88,5 +87,5 @@
       LOGICAL  :: ll_spdone
       REAL(wp) :: z1spongearea, zramp
-      REAL(wp), POINTER, DIMENSION(:,:) :: ztabramp
+      REAL(wp), DIMENSION(jpi,jpj) :: ztabramp
 
 #if defined SPONGE || defined SPONGE_TOP
@@ -98,5 +97,4 @@
          ll_spdone=.FALSE.
 
-         CALL wrk_alloc( jpi, jpj, ztabramp )
 
          ispongearea  = 2 + nn_sponge_len * Agrif_irhox()
@@ -185,5 +183,4 @@
       ENDIF
       !
-      IF (.NOT.ll_spdone) CALL wrk_dealloc( jpi, jpj, ztabramp )
       !
 #endif
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90	(revision 7910)
@@ -40,5 +40,4 @@
    USE prtctl          ! print control
    USE fldread         ! read input fields 
-   USE wrk_nemo        ! Memory allocation 
    USE timing          ! Timing
    USE trc, ONLY : ln_rsttr, numrtr, numrtw, lrst_trc
@@ -109,5 +108,5 @@
       INTEGER, INTENT(in) ::   kt   ! ocean time-step index
       INTEGER             ::   ji, jj, jk
-      REAL(wp), POINTER, DIMENSION(:,:)   :: zemp
+      REAL(wp), DIMENSION(jpi,jpj)   :: zemp
       !
       !!----------------------------------------------------------------------
@@ -142,10 +141,8 @@
       !
       IF( .NOT.ln_linssh ) THEN
-         CALL wrk_alloc(jpi, jpj, zemp )
          zhdivtr(:,:,:) = sf_dyn(jf_div)%fnow(:,:,:) * tmask(:,:,:)    ! effective u-transport
          emp_b (:,:)    = sf_dyn(jf_empb)%fnow(:,:,1) * tmask(:,:,1)    ! E-P
          zemp   (:,:)   = 0.5_wp * ( emp(:,:) + emp_b(:,:) ) + rnf(:,:) + fwbcorr * tmask(:,:,1)
          CALL dta_dyn_ssh( kt, zhdivtr, sshb, zemp, ssha, e3t_a(:,:,:) )  !=  ssh, vertical scale factor & vertical transport
-         CALL wrk_dealloc(jpi, jpj, zemp )
          !                                           Write in the tracer restart file
          !                                          *******************************
@@ -590,8 +587,7 @@
       REAL(wp) ::   ztintb     ! ratio applied to before records when doing time interpolation
       INTEGER  ::   iswap 
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zuslp, zvslp, zwslpi, zwslpj
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zuslp, zvslp, zwslpi, zwslpj
       !!---------------------------------------------------------------------
       !
-      CALL wrk_alloc(jpi, jpj, jpk, zuslp, zvslp, zwslpi, zwslpj )
       !
       IF( sf_dyn(jf_tem)%ln_tint ) THEN    ! Computes slopes (here avt is used as workspace)                       
@@ -663,5 +659,4 @@
       ENDIF
       !
-      CALL wrk_dealloc(jpi, jpj, jpk, zuslp, zvslp, zwslpi, zwslpj )
       !
    END SUBROUTINE dta_dyn_slp
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90	(revision 7910)
@@ -22,5 +22,4 @@
    !!   seaice_asm_inc : Apply the seaice increment
    !!----------------------------------------------------------------------
-   USE wrk_nemo         ! Memory Allocation
    USE par_oce          ! Ocean space and time domain variables
    USE dom_oce          ! Ocean space and time domain
@@ -124,5 +123,5 @@
       REAL(wp) :: zdate_inc    ! Time axis in increments file
       !
-      REAL(wp), POINTER, DIMENSION(:,:) ::   hdiv   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   hdiv   ! 2D workspace
       !!
       NAMELIST/nam_asminc/ ln_bkgwri,                                      &
@@ -432,5 +431,4 @@
       IF ( ln_dyninc .AND. nn_divdmp > 0 ) THEN
          !
-         CALL wrk_alloc( jpi,jpj,   hdiv ) 
          !
          DO jt = 1, nn_divdmp
@@ -460,5 +458,4 @@
          END DO
          !
-         CALL wrk_dealloc( jpi,jpj,   hdiv ) 
          !
       ENDIF
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90	(revision 7910)
@@ -16,5 +16,4 @@
    !!                    conditions
    !!----------------------------------------------------------------------
-   USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
    USE oce             ! ocean dynamics and tracers 
@@ -51,5 +50,5 @@
       INTEGER ::   jk, ii, ij, ib_bdy, ib, igrd     ! Loop counter
       LOGICAL ::   ll_dyn2d, ll_dyn3d, ll_orlanski
-      REAL(wp), POINTER, DIMENSION(:,:) :: pua2d, pva2d     ! after barotropic velocities
+      REAL(wp), DIMENSION(jpi,jpj) :: pua2d, pva2d     ! after barotropic velocities
       !!----------------------------------------------------------------------
       !
@@ -73,5 +72,4 @@
       !-------------------------------------------------------
 
-      CALL wrk_alloc( jpi,jpj,   pua2d, pva2d ) 
 
       !-------------------------------------------------------
@@ -127,5 +125,4 @@
       END IF
       !
-      CALL wrk_dealloc( jpi,jpj,  pua2d, pva2d ) 
       !
       IF( nn_timing == 1 )   CALL timing_stop('bdy_dyn')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90	(revision 7910)
@@ -29,5 +29,4 @@
    USE lib_mpp        ! for mpp_sum  
    USE iom            ! I/O
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -151,5 +150,5 @@
       INTEGER :: com_east_b, com_west_b, com_south_b, com_north_b  ! Flags for boundaries receiving
       INTEGER :: iw_b(4), ie_b(4), is_b(4), in_b(4)                ! Arrays for neighbours coordinates
-      REAL(wp), POINTER, DIMENSION(:,:)       ::   zfmask  ! temporary fmask array excluding coastal boundary condition (shlat)
+      REAL(wp), DIMENSION(jpi,jpj)       ::   zfmask  ! temporary fmask array excluding coastal boundary condition (shlat)
       !!
       CHARACTER(LEN=1)                     ::   ctypebdy   !     -        - 
@@ -1217,5 +1216,4 @@
       ! For the flagu/flagv calculation below we require a version of fmask without
       ! the land boundary condition (shlat) included:
-      CALL wrk_alloc(jpi,jpj,  zfmask ) 
       DO ij = 2, jpjm1
          DO ii = 2, jpim1
@@ -1346,5 +1344,4 @@
       IF( nb_bdy>0 )   DEALLOCATE( nbidta, nbjdta, nbrdta )
       !
-      CALL wrk_dealloc(jpi,jpj,   zfmask ) 
       !
       IF( nn_timing == 1 )   CALL timing_stop('bdy_segs')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90	(revision 7910)
@@ -25,5 +25,4 @@
    USE fldread        !
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo       ! Memory allocation
    USE timing         ! timing
 
@@ -76,5 +75,5 @@
       CHARACTER(len=80)                         ::   clfile              !: full file name for tidal input file 
       REAL(wp),ALLOCATABLE, DIMENSION(:,:,:)    ::   dta_read            !: work space to read in tidal harmonics data
-      REAL(wp), POINTER, DIMENSION(:,:)         ::   ztr, zti            !:  "     "    "   "   "   "        "      " 
+      REAL(wp), DIMENSION(jpi,jpj)         ::   ztr, zti            !:  "     "    "   "   "   "        "      " 
       !!
       TYPE(TIDES_DATA),  POINTER                ::   td                  !: local short cut   
@@ -153,5 +152,4 @@
                ! given on the global domain (ie global, jpiglo x jpjglo)
                !
-               CALL wrk_alloc( jpi,jpj,   zti, ztr )
                !
                ! SSH fields
@@ -203,5 +201,4 @@
                CALL iom_close( inum )
                !
-               CALL wrk_dealloc( jpi,jpj,   ztr, zti ) 
                !
             ELSE            
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90	(revision 7910)
@@ -17,5 +17,4 @@
    USE iom            ! I/O library (iom_get)
    USE in_out_manager ! I/O manager (ctmp1)
-   USE wrk_nemo                      ! Memory allocation
    USE timing                        ! Timing
 
@@ -59,5 +58,5 @@
       REAL(wp) ::  zlam1, zcos_alpha, ze1, ze1deg  ! Case 5 local scalars
       REAL(wp) ::  zphi1, zsin_alpha, zim05, zjm05 !          
-      REAL(wp) , POINTER, DIMENSION(:,:) ::  gphidta, glamdta, zdist ! Global lat/lon
+      REAL(wp) , DIMENSION(jpidta,jpjdta) ::  gphidta, glamdta, zdist ! Global lat/lon
       !!
       NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin,   &
@@ -78,5 +77,4 @@
 902   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp )
 
-      CALL wrk_alloc( jpidta,jpjdta,   gphidta, glamdta, zdist )
 
       ! ============================= !
@@ -187,5 +185,4 @@
       jpjzoom = iloc(2) + njmpp - 2  ! corner index of the zoom domain.
 
-      CALL wrk_dealloc( jpidta,jpjdta,   gphidta, glamdta, zdist )
 
       IF (lwp) THEN
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/C1D/dtauvd.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/C1D/dtauvd.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/C1D/dtauvd.F90	(revision 7910)
@@ -18,5 +18,4 @@
    USE fldread        ! read input fields
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory allocation
    USE timing         ! Timing
 
@@ -143,5 +142,5 @@
       INTEGER ::   ik, il0, il1, ii0, ii1, ij0, ij1  ! local integers
       REAL(wp)::   zl, zi                            ! local floats
-      REAL(wp), POINTER, DIMENSION(:) ::  zup, zvp   ! 1D workspace
+      REAL(wp), DIMENSION(jpk) ::  zup, zvp   ! 1D workspace
       !!----------------------------------------------------------------------
       !
@@ -155,5 +154,4 @@
       IF( ln_sco ) THEN                   !==   s- or mixed s-zps-coordinate   ==!
          !
-         CALL wrk_alloc( jpk,   zup, zvp )
          !
          IF( kt == nit000 .AND. lwp )THEN
@@ -191,5 +189,4 @@
          END DO
          ! 
-         CALL wrk_dealloc( jpk,   zup, zvp )
          ! 
       ELSE                                !==   z- or zps- coordinate   ==!
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/C1D/dyndmp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/C1D/dyndmp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/C1D/dyndmp.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE lib_mpp        ! MPP library
    USE prtctl         ! Print control
-   USE wrk_nemo       ! Memory allocation
    USE timing         ! Timing
    USE iom            ! I/O manager
@@ -154,10 +153,9 @@
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
       REAL(wp) ::   zua, zva     ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zuv_dta   ! Read in data 
+      REAL(wp), DIMENSION(jpi,jpj,jpk,2) ::   zuv_dta   ! Read in data 
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start( 'dyn_dmp' )
       !
-      CALL wrk_alloc( jpi,jpj,jpk,2,   zuv_dta )
       !
       !                           !==   read and interpolate U & V current data at kt   ==!
@@ -225,5 +223,4 @@
          &                           tab3d_2=va(:,:,:), clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,2,   zuv_dta )
       !
       IF( nn_timing == 1 )  CALL timing_stop( 'dyn_dmp')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsdom.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsdom.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsdom.F90	(revision 7910)
@@ -36,5 +36,4 @@
    USE par_kind
    USE crslbclnk
-   USE wrk_nemo       ! work arrays
    USE lib_mpp
 
@@ -352,8 +351,7 @@
       INTEGER  ::   ji, jj, jk , ii, ij, je_2
       REAL(wp) ::   zdAm
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   zvol, zmask      
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zvol, zmask      
       !!----------------------------------------------------------------  
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zvol, zmask )
       !
       p_fld1_crs(:,:,:) = 0._wp
@@ -445,5 +443,4 @@
       CALL crs_lbc_lnk( p_fld2_crs, cd_type, 1.0 ) 
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zvol, zmask )
       !
    END SUBROUTINE crs_dom_facvol
@@ -487,5 +484,5 @@
       INTEGER  ::   ii, ij, ijie, ijje, je_2
       REAL(wp) ::   zflcrs, zsfcrs   
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   zsurf, zsurfmsk, zmask  
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zsurf, zsurfmsk, zmask  
       !!----------------------------------------------------------------  
       !
@@ -496,5 +493,4 @@
       CASE ( 'VOL' )
          !
-         CALL wrk_alloc( jpi,jpj,jpk,   zsurf, zsurfmsk )
          !   
          SELECT CASE ( cd_type )
@@ -585,9 +581,7 @@
                END SELECT
 
-              CALL wrk_dealloc( jpi, jpj, jpk, zsurf, zsurfmsk )
 
          CASE ( 'SUM' )
          
-            CALL wrk_alloc( jpi, jpj, jpk, zsurfmsk )
 
             SELECT CASE ( cd_type )
@@ -763,9 +757,7 @@
               ENDIF
 
-              CALL wrk_dealloc( jpi, jpj, jpk, zsurfmsk )
 
          CASE ( 'MAX' )    !  search the max of unmasked grid cells
 
-            CALL wrk_alloc( jpi, jpj, jpk, zmask )
 
             SELECT CASE ( cd_type )
@@ -934,9 +926,7 @@
               END SELECT
 
-              CALL wrk_dealloc( jpi, jpj, jpk, zmask )
 
          CASE ( 'MIN' )      !   Search the min of unmasked grid cells
 
-            CALL wrk_alloc( jpi, jpj, jpk, zmask )
 
             SELECT CASE ( cd_type )
@@ -1104,5 +1094,4 @@
             END SELECT
             !
-            CALL wrk_dealloc( jpi, jpj, jpk, zmask )
             !
          END SELECT
@@ -1149,5 +1138,5 @@
       INTEGER  :: ijie, ijje, ii, ij, je_2
       REAL(wp) :: zflcrs, zsfcrs   
-      REAL(wp), DIMENSION(:,:), POINTER :: zsurfmsk   
+      REAL(wp), DIMENSION(jpi,jpj) :: zsurfmsk   
       !!----------------------------------------------------------------  
       !
@@ -1158,5 +1147,4 @@
         CASE ( 'VOL' )
       
-            CALL wrk_alloc( jpi, jpj, zsurfmsk )
             zsurfmsk(:,:) =  p_e12(:,:) * p_e3(:,:,1) * p_mask(:,:,1)
 
@@ -1222,9 +1210,7 @@
             ENDDO
 
-            CALL wrk_dealloc( jpi, jpj, zsurfmsk )
 
          CASE ( 'SUM' )
          
-            CALL wrk_alloc( jpi, jpj, zsurfmsk )
             IF( PRESENT( p_e3 ) ) THEN
                zsurfmsk(:,:) =  p_e12(:,:) * p_e3(:,:,1) * p_mask(:,:,1)
@@ -1364,5 +1350,4 @@
               ENDIF
 
-              CALL wrk_dealloc( jpi, jpj, zsurfmsk )
 
          CASE ( 'MAX' )
@@ -1644,5 +1629,5 @@
       INTEGER ::  ijie, ijje, ii, ij, je_2
       REAL(wp) :: ze3crs  
-      REAL(wp), DIMENSION(:,:,:), POINTER :: zmask, zsurf   
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask, zsurf   
 
       !!----------------------------------------------------------------  
@@ -1652,5 +1637,4 @@
    
 
-       CALL wrk_alloc( jpi, jpj, jpk, zmask, zsurf )
 
        SELECT CASE ( cd_type )
@@ -1756,5 +1740,4 @@
        CALL crs_lbc_lnk( p_e3_max_crs, cd_type, 1.0, pval=1.0 )  
        !              
-       CALL wrk_dealloc( jpi, jpj, jpk, zsurf, zmask )
        !
    END SUBROUTINE crs_dom_e3
@@ -1773,10 +1756,9 @@
       INTEGER  :: ji, jj, jk                   ! dummy loop indices
       INTEGER  :: ii, ij, je_2
-      REAL(wp), DIMENSION(:,:,:), POINTER :: zsurf, zsurfmsk   
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zsurf, zsurfmsk   
       !!----------------------------------------------------------------  
       ! Initialize
 
 
-      CALL wrk_alloc( jpi, jpj, jpk, zsurf, zsurfmsk )
       !
       SELECT CASE ( cd_type )
@@ -1868,5 +1850,4 @@
       CALL crs_lbc_lnk( p_surf_crs_msk, cd_type, 1.0, pval=1.0 )
 
-      CALL wrk_dealloc( jpi, jpj, jpk, zsurfmsk, zsurf )
 
    END SUBROUTINE crs_dom_sfc
@@ -2236,8 +2217,7 @@
       !!  local variables
       INTEGER  :: ji,jj,jk      ! dummy indices
-      REAL(wp), DIMENSION(:,:)  , POINTER :: zmbk
+      REAL(wp), DIMENSION(jpi_crs,jpj_crs)   :: zmbk
       !!----------------------------------------------------------------
    
-      CALL wrk_alloc( jpi_crs, jpj_crs, zmbk )
    
       mbathy_crs(:,:) = jpkm1
@@ -2281,5 +2261,4 @@
       zmbk(:,:) = REAL( mbkv_crs(:,:), wp )   ;   CALL crs_lbc_lnk(zmbk,'V',1.0) ; mbkv_crs  (:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
       !
-      CALL wrk_dealloc( jpi_crs, jpj_crs, zmbk )
       !
    END SUBROUTINE crs_dom_bat
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsdomwri.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsdomwri.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsdomwri.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE crsdom         ! coarse grid domain
    USE crslbclnk       ! crs mediator to lbclnk
-   USE wrk_nemo        ! Working array
 
 
@@ -70,14 +69,11 @@
       INTEGER           ::   ji, jj, jk   ! dummy loop indices
       !                                   !  workspaces
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zprt, zprw 
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepu, zdepv
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: ze3tp, ze3wp
+      REAL(wp), DIMENSION(jpi_crs,jpj_crs) :: zprt, zprw 
+      REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk) :: zdepu, zdepv
+      REAL(wp), DIMENSION(jpi_crs,jpj_crs) :: ze3tp, ze3wp
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('crs_dom_wri')
       !
-      CALL wrk_alloc( jpi_crs, jpj_crs,      zprt , zprw  )
-      CALL wrk_alloc( jpi_crs, jpj_crs,      ze3tp, ze3wp )
-      CALL wrk_alloc( jpi_crs, jpj_crs, jpk, zdepu, zdepv )
 
       ze3tp(:,:) = 0.0
@@ -298,7 +294,4 @@
       END SELECT
       !
-      CALL wrk_dealloc( jpi_crs, jpj_crs,      zprt , zprw  )
-      CALL wrk_dealloc( jpi_crs, jpj_crs,      ze3tp, ze3wp )
-      CALL wrk_dealloc( jpi_crs, jpj_crs, jpk, zdepu, zdepv )
       !
       IF( nn_timing == 1 )  CALL timing_stop('crs_dom_wri')
@@ -324,10 +317,9 @@
       INTEGER  ::  ji       ! dummy loop indices
       LOGICAL, DIMENSION(SIZE(puniq,1),SIZE(puniq,2),1) ::  lldbl  ! store whether each point is unique or not
-      REAL(wp), POINTER, DIMENSION(:,:) :: ztstref
+      REAL(wp), DIMENSION(jpi_crs,jpj_crs) :: ztstref
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('crs_dom_uniq_crs')
       !
-      CALL wrk_alloc( jpi_crs, jpj_crs, ztstref )
       !
       ! build an array with different values for each element 
@@ -345,5 +337,4 @@
       puniq(nldi_crs:nlei_crs,nldj_crs:nlej_crs) = REAL( COUNT( lldbl(nldi_crs:nlei_crs,nldj_crs:nlej_crs,:), dim = 3 ) , wp )
       !
-      CALL wrk_dealloc( jpi_crs, jpj_crs, ztstref )
       !
       IF( nn_timing == 1 )  CALL timing_stop('crs_dom_uniq_crs')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsfld.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsfld.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsfld.F90	(revision 7910)
@@ -25,5 +25,4 @@
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE timing          ! preformance summary
-   USE wrk_nemo        ! working array
 
    IMPLICIT NONE
@@ -59,7 +58,7 @@
       REAL(wp) ::   z2dcrsu, z2dcrsv  ! local scalars
       !
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze3t, ze3u, ze3v, ze3w   ! 3D workspace for e3
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zt, zt_crs
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zs, zs_crs  
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze3t, ze3u, ze3v, ze3w   ! 3D workspace for e3
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zt, zs
+      REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk) ::   zt_crs, zs_crs  
       !!----------------------------------------------------------------------
       ! 
@@ -67,9 +66,5 @@
 
       !  Initialize arrays
-      CALL wrk_alloc( jpi,jpj,jpk,   ze3t, ze3w )
-      CALL wrk_alloc( jpi,jpj,jpk,   ze3u, ze3v )
-      CALL wrk_alloc( jpi,jpj,jpk,   zt  , zs   )
-      !
-      CALL wrk_alloc( jpi_crs,jpj_crs,jpk,   zt_crs, zs_crs )
+      !
 
       ! Depth work arrrays
@@ -232,8 +227,4 @@
 
       !  free memory
-      CALL wrk_dealloc( jpi,jpj,jpk,   ze3t, ze3w )
-      CALL wrk_dealloc( jpi,jpj,jpk,   ze3u, ze3v )
-      CALL wrk_dealloc( jpi,jpj,jpk,   zt  , zs   )
-      CALL wrk_dealloc( jpi_crs,jpj_crs,jpk,   zt_crs, zs_crs )
       !
       CALL iom_swap( "nemo" )     ! return back on high-resolution grid
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90	(revision 7910)
@@ -22,5 +22,4 @@
    USE in_out_manager
    USE lib_mpp
-   USE wrk_nemo 
    USE timing                   ! Timing
 
@@ -73,5 +72,5 @@
       INTEGER  :: ierr                                ! allocation error status
       INTEGER  ::   ios                 ! Local integer output status for namelist read
-      REAL(wp), DIMENSION(:,:,:), POINTER :: ze3t, ze3u, ze3v, ze3w
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, ze3u, ze3v, ze3w
 
       NAMELIST/namcrs/ nn_factx, nn_facty, nn_binref, nn_msh_crs, nn_crs_kz, ln_crs_wn
@@ -183,5 +182,4 @@
      
      !
-     CALL wrk_alloc( jpi,jpj,jpk,   ze3t, ze3u, ze3v, ze3w )
      !
      ze3t(:,:,:) = e3t_n(:,:,:)
@@ -248,5 +246,4 @@
       ! 7. Finish and clean-up
       !---------------------------------------------------------
-      CALL wrk_dealloc( jpi,jpj,jpk,   ze3t, ze3u, ze3v, ze3w )
       !
    END SUBROUTINE crs_init
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90	(revision 7910)
@@ -16,5 +16,4 @@
    USE iom            ! I/O manager library
    USE timing         ! preformance summary
-   USE wrk_nemo       ! working arrays
    USE fldread        ! type FLD_N
    USE phycst         ! physical constant
@@ -76,8 +75,8 @@
       REAL(wp) ::   zaw, zbw, zrw
       !
-      REAL(wp), POINTER, DIMENSION(:,:)     :: zarea_ssh , zbotpres       ! 2D workspace 
-      REAL(wp), POINTER, DIMENSION(:,:)     :: zpe                         ! 2D workspace 
-      REAL(wp), POINTER, DIMENSION(:,:,:)   :: zrhd , zrhop               ! 3D workspace
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztsn                       ! 4D workspace
+      REAL(wp), DIMENSION(jpi,jpj)     :: zarea_ssh , zbotpres       ! 2D workspace 
+      REAL(wp), DIMENSION(jpi,jpj)     :: zpe                         ! 2D workspace 
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   :: zrhd , zrhop               ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) :: ztsn                       ! 4D workspace
       !!--------------------------------------------------------------------
       IF( nn_timing == 1 )   CALL timing_start('dia_ar5')
@@ -86,7 +85,4 @@
 
       IF( l_ar5 ) THEN
-         CALL wrk_alloc( jpi , jpj              , zarea_ssh , zbotpres )
-         CALL wrk_alloc( jpi , jpj , jpk        , zrhd      , zrhop    )
-         CALL wrk_alloc( jpi , jpj , jpk , jpts , ztsn                 )
          zarea_ssh(:,:) = area(:,:) * sshn(:,:)
       ENDIF
@@ -212,5 +208,4 @@
       ! Exclude points where rn2 is negative as convection kicks in here and
       ! work is not being done against stratification
-          CALL wrk_alloc( jpi, jpj, zpe )
           zpe(:,:) = 0._wp
           IF( lk_zdfddm ) THEN
@@ -242,11 +237,7 @@
           CALL lbc_lnk( zpe, 'T', 1._wp)         
           CALL iom_put( 'tnpeo', zpe )
-          CALL wrk_dealloc( jpi, jpj, zpe )
       ENDIF
       !
       IF( l_ar5 ) THEN
-        CALL wrk_dealloc( jpi , jpj              , zarea_ssh , zbotpres )
-        CALL wrk_dealloc( jpi , jpj , jpk        , zrhd      , zrhop    )
-        CALL wrk_dealloc( jpi , jpj , jpk , jpts , ztsn                 )
       ENDIF
       !
@@ -268,9 +259,8 @@
       !
       INTEGER    ::  ji, jj, jk
-      REAL(wp), POINTER, DIMENSION(:,:)  :: z2d
+      REAL(wp), DIMENSION(jpi,jpj)  :: z2d
 
     
 
-      CALL wrk_alloc( jpi, jpj, z2d )
       z2d(:,:) = pua(:,:,1) 
       DO jk = 1, jpkm1
@@ -309,5 +299,4 @@
        ENDIF
           
-       CALL wrk_dealloc( jpi, jpj, z2d )
 
    END SUBROUTINE dia_ar5_hst
@@ -324,5 +313,5 @@
       INTEGER  ::   ji, jj, jk  ! dummy loop indices
       REAL(wp) ::   zztmp  
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zsaldta   ! Jan/Dec levitus salinity
+      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) ::   zsaldta   ! Jan/Dec levitus salinity
       !
       !!----------------------------------------------------------------------
@@ -337,5 +326,4 @@
       IF( l_ar5 ) THEN
          !
-         CALL wrk_alloc( jpi , jpj , jpk, jpts, zsaldta )
          !                                      ! allocate dia_ar5 arrays
          IF( dia_ar5_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dia_ar5_init : unable to allocate arrays' )
@@ -372,5 +360,4 @@
          ENDIF
          !
-         CALL wrk_dealloc( jpi , jpj , jpk, jpts, zsaldta )
          !
       ENDIF
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90	(revision 7910)
@@ -40,5 +40,4 @@
    USE domvvl
    USE timing          ! preformance summary
-   USE wrk_nemo        ! working arrays
 
    IMPLICIT NONE
@@ -209,6 +208,6 @@
      INTEGER , DIMENSION(1)             :: ish   ! tmp array for mpp_sum
      INTEGER , DIMENSION(3)             :: ish2  !   "
-     REAL(wp), POINTER, DIMENSION(:)    :: zwork !   "  
-     REAL(wp), POINTER, DIMENSION(:,:,:):: zsum  !   "
+     REAL(wp), DIMENSION(itotal)    :: zwork !   "  
+     REAL(wp), DIMENSION(nb_sec_max,nb_type_class,nb_class_max):: zsum  !   "
      !!---------------------------------------------------------------------    
      !
@@ -217,6 +216,4 @@
      IF( lk_mpp )THEN
         itotal = nb_sec_max*nb_type_class*nb_class_max
-        CALL wrk_alloc( itotal                                , zwork ) 
-        CALL wrk_alloc( nb_sec_max,nb_type_class,nb_class_max , zsum  )
      ENDIF    
  
@@ -289,6 +286,4 @@
      IF( lk_mpp )THEN
         itotal = nb_sec_max*nb_type_class*nb_class_max
-        CALL wrk_dealloc( itotal                                , zwork ) 
-        CALL wrk_dealloc( nb_sec_max,nb_type_class,nb_class_max , zsum  )
      ENDIF    
 
@@ -318,10 +313,9 @@
      TYPE(POINT_SECTION),DIMENSION(nb_point_max)  ::coordtemp !contains listpoints coordinates 
                                                               !read in the file
-     INTEGER, POINTER, DIMENSION(:) :: directemp              !contains listpoints directions
+     INTEGER, DIMENSION(nb_point_max) :: directemp              !contains listpoints directions
                                                               !read in the files
      LOGICAL :: llbon                                       ,&!local logical
                 lldebug                                       !debug the section
      !!-------------------------------------------------------------------------------------
-     CALL wrk_alloc( nb_point_max, directemp )
 
      !open input file
@@ -495,5 +489,4 @@
      nb_sec = jsec-1   !number of section read in the file
 
-     CALL wrk_dealloc( nb_point_max, directemp )
      !
   END SUBROUTINE readsec
@@ -521,9 +514,7 @@
                 istart,iend      !first and last points selected in listpoint
      INTEGER :: jpoint           !loop on list points
-     INTEGER, POINTER, DIMENSION(:)   :: idirec !contains temporary sec%direction
-     INTEGER, POINTER, DIMENSION(:,:) :: icoord !contains temporary sec%listpoint
+     INTEGER, DIMENSION(nb_point_max)   :: idirec !contains temporary sec%direction
+     INTEGER, DIMENSION(2,nb_point_max) :: icoord !contains temporary sec%listpoint
      !----------------------------------------------------------------------------
-     CALL wrk_alloc(    nb_point_max, idirec )
-     CALL wrk_alloc( 2, nb_point_max, icoord )
 
      IF( ld_debug )WRITE(numout,*)'      -------------------------'
@@ -575,6 +566,4 @@
      ENDIF
 
-     CALL wrk_dealloc(    nb_point_max, idirec )
-     CALL wrk_dealloc( 2, nb_point_max, icoord )
   END SUBROUTINE removepoints
 
@@ -1019,7 +1008,6 @@
      REAL(wp)              :: zslope             ! section's slope coeff
      !
-     REAL(wp), POINTER, DIMENSION(:):: zsumclasses ! 1D workspace 
+     REAL(wp), DIMENSION(nb_type_class):: zsumclasses ! 1D workspace 
      !!------------------------------------------------------------- 
-     CALL wrk_alloc(nb_type_class , zsumclasses )  
 
      zsumclasses(:)=0._wp
@@ -1133,5 +1121,4 @@
 119   FORMAT(I8,1X,I8,1X,I4,1X,A30,1X,f9.2,1X,I4,3X,A8,1X,2F12.4,5X,3E15.6)
 
-      CALL wrk_dealloc(nb_type_class , zsumclasses )  
       !
    END SUBROUTINE dia_dct_wri
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90	(revision 7910)
@@ -22,5 +22,4 @@
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE timing          ! preformance summary
-   USE wrk_nemo        ! working arrays
 
    IMPLICIT NONE
@@ -226,7 +225,6 @@
       REAL(wp) :: ztime, ztime_ini, ztime_end
       REAL(wp) :: X1,X2
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ana_amp
-      !!--------------------------------------------------------------------
-      CALL wrk_alloc( jpi , jpj , jpmax_harmo , 2 , ana_amp )
+      REAL(wp), DIMENSION(jpi,jpj,jpmax_harmo,2) :: ana_amp
+      !!--------------------------------------------------------------------
 
       IF(lwp) WRITE(numout,*)
@@ -366,5 +364,4 @@
 
       CALL dia_wri_harm ! Write results in files
-      CALL wrk_dealloc( jpi , jpj , jpmax_harmo , 2 , ana_amp )
       !
    END SUBROUTINE dia_harm_end
@@ -427,9 +424,7 @@
       INTEGER                         :: ji_sd, jj_sd, ji1_sd, ji2_sd, jk1_sd, jk2_sd
       REAL(wp)                        :: zval1, zval2, zx1
-      REAL(wp), POINTER, DIMENSION(:) :: ztmpx, zcol1, zcol2
-      INTEGER , POINTER, DIMENSION(:) :: ipos2, ipivot
+      REAL(wp), DIMENSION(jpincomax) :: ztmpx, zcol1, zcol2
+      INTEGER , DIMENSION(jpincomax) :: ipos2, ipivot
       !---------------------------------------------------------------------------------
-      CALL wrk_alloc( jpincomax , ztmpx , zcol1 , zcol2 )
-      CALL wrk_alloc( jpincomax , ipos2 , ipivot        )
             
       IF( init == 1 ) THEN
@@ -518,6 +513,4 @@
       END DO
 
-      CALL wrk_dealloc( jpincomax , ztmpx , zcol1 , zcol2 )
-      CALL wrk_dealloc( jpincomax , ipos2 , ipivot        )
       !
    END SUBROUTINE SUR_DETERMINE
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90	(revision 7910)
@@ -31,5 +31,4 @@
    USE lib_mpp         ! distributed memory computing library
    USE timing          ! preformance summary
-   USE wrk_nemo        ! work arrays
 
    IMPLICIT NONE
@@ -82,9 +81,8 @@
       REAL(wp)   ::   z_wn_trd_t , z_wn_trd_s     !    -     -
       REAL(wp)   ::   z_ssh_hc , z_ssh_sc         !    -     -
-      REAL(wp), DIMENSION(:,:), POINTER ::   z2d0, z2d1
+      REAL(wp), DIMENSION(jpi,jpj) ::   z2d0, z2d1
       !!---------------------------------------------------------------------------
       IF( nn_timing == 1 )   CALL timing_start('dia_hsb')      
       !
-      CALL wrk_alloc( jpi,jpj,   z2d0, z2d1 )
       !
       tsn(:,:,:,1) = tsn(:,:,:,1) * tmask(:,:,:) ; tsb(:,:,:,1) = tsb(:,:,:,1) * tmask(:,:,:) ;
@@ -228,5 +226,4 @@
       IF( lrst_oce )   CALL dia_hsb_rst( kt, 'WRITE' )
       !
-      CALL wrk_dealloc( jpi,jpj,   z2d0, z2d1 )
       !
       IF( nn_timing == 1 )   CALL timing_stop('dia_hsb')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diatmb.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diatmb.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diatmb.F90	(revision 7910)
@@ -12,5 +12,4 @@
    USE in_out_manager  ! I/O units
    USE iom             ! I/0 library
-   USE wrk_nemo        ! working arrays
 
 
@@ -105,9 +104,8 @@
       !!--------------------------------------------------------------------
       REAL(wp) ::   zmdi =1.e+20     ! land value
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwtmb    ! workspace 
+      REAL(wp), DIMENSION(jpi,jpj,3) :: zwtmb    ! workspace 
       !!--------------------------------------------------------------------
       !
       IF (ln_diatmb) THEN
-         CALL wrk_alloc( jpi,jpj,3   , zwtmb )
          CALL dia_calctmb(  tsn(:,:,:,jp_tem),zwtmb )
          !ssh already output but here we output it masked
@@ -134,5 +132,4 @@
          CALL iom_put( "bot_v" , zwtmb(:,:,3) )    ! tmb  V Velocity
 !Called in  dynspg_ts.F90       CALL iom_put( "baro_v" , vn_b )    ! Barotropic  V Velocity
-         CALL wrk_dealloc( jpi,jpj,3   , zwtmb )
       ELSE
          CALL ctl_warn('dia_tmb: tmb diagnostic is set to false you should not have seen this')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90	(revision 7910)
@@ -60,5 +60,4 @@
    USE diurnal_bulk    ! diurnal warm layer
    USE cool_skin       ! Cool skin
-   USE wrk_nemo        ! working array
 
    IMPLICIT NONE
@@ -127,12 +126,10 @@
       REAL(wp)                     ::   zztmp, zztmpx, zztmpy   ! 
       !!
-      REAL(wp), POINTER, DIMENSION(:,:)   :: z2d      ! 2D workspace
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d      ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj)   :: z2d      ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: z3d      ! 3D workspace
       !!----------------------------------------------------------------------
       ! 
       IF( nn_timing == 1 )   CALL timing_start('dia_wri')
       ! 
-      CALL wrk_alloc( jpi , jpj      , z2d )
-      CALL wrk_alloc( jpi , jpj, jpk , z3d )
       !
       ! Output the initial state and forcings
@@ -408,6 +405,4 @@
       CALL iom_put( "bn2", rn2 )  !Brunt-Vaisala buoyancy frequency (N^2)
       !
-      CALL wrk_dealloc( jpi , jpj      , z2d )
-      CALL wrk_dealloc( jpi , jpj, jpk , z3d )
       !
       ! If we want tmb values 
@@ -452,12 +447,10 @@
       REAL(wp) ::   zsto, zout, zmax, zjulian                ! local scalars
       !
-      REAL(wp), POINTER, DIMENSION(:,:)   :: zw2d       ! 2D workspace
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d       ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj)   :: zw2d       ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d       ! 3D workspace
       !!----------------------------------------------------------------------
       ! 
       IF( nn_timing == 1 )   CALL timing_start('dia_wri')
       !
-                             CALL wrk_alloc( jpi,jpj      , zw2d )
-      IF( .NOT.ln_linssh )   CALL wrk_alloc( jpi,jpj,jpk  , zw3d )
       !
       ! Output the initial state and forcings
@@ -894,6 +887,4 @@
       ENDIF
       !
-                             CALL wrk_dealloc( jpi , jpj        , zw2d )
-      IF( .NOT.ln_linssh )   CALL wrk_dealloc( jpi , jpj , jpk  , zw3d )
       !
       IF( nn_timing == 1 )   CALL timing_stop('dia_wri')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90	(revision 7910)
@@ -30,5 +30,4 @@
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
    USE lib_mpp        ! Massively Parallel Processing library
-   USE wrk_nemo       ! Memory allocation
    USE timing         ! Timing
 
@@ -92,5 +91,5 @@
       INTEGER  ::   iktop, ikbot   !   -       -
       INTEGER  ::   ios, inum
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zwf   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zwf   ! 2D workspace
       !!
       NAMELIST/namlbc/ rn_shlat, ln_vorlat
@@ -248,5 +247,4 @@
       IF( rn_shlat /= 0 ) THEN      ! Not free-slip lateral boundary condition
          !
-         CALL wrk_alloc( jpi,jpj,   zwf )
          !
          DO jk = 1, jpk
@@ -278,5 +276,4 @@
          END DO
          !
-         CALL wrk_dealloc( jpi,jpj,   zwf )
          !
          CALL lbc_lnk( fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90	(revision 7910)
@@ -13,5 +13,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! for mppsum
-   USE wrk_nemo       ! Memory allocation
    USE timing         ! Timing
 
@@ -45,10 +44,9 @@
       INTEGER , DIMENSION(2) ::   iloc
       REAL(wp)               ::   zlon, zmini
-      REAL(wp), POINTER, DIMENSION(:,:) ::  zglam, zgphi, zmask, zdist
+      REAL(wp), DIMENSION(jpi,jpj) ::  zglam, zgphi, zmask, zdist
       !!--------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dom_ngb')
       !
-      CALL wrk_alloc( jpi,jpj,   zglam, zgphi, zmask, zdist )
       !
       zmask(:,:) = 0._wp
@@ -79,5 +77,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,   zglam, zgphi, zmask, zdist )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dom_ngb')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90	(revision 7910)
@@ -31,5 +31,4 @@
    USE lib_mpp         ! distributed memory computing library
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo        ! Memory allocation
    USE timing          ! Timing
 
@@ -276,6 +275,6 @@
       REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars
       LOGICAL                ::   ll_do_bclinic         ! local logical
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze3t
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zht, z_scale, zwu, zwv, zhdiv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze3t
+      REAL(wp), DIMENSION(jpi,jpj) ::   zht, z_scale, zwu, zwv, zhdiv
       !!----------------------------------------------------------------------
       !
@@ -284,6 +283,4 @@
       IF( nn_timing == 1 )   CALL timing_start('dom_vvl_sf_nxt')
       !
-      CALL wrk_alloc( jpi,jpj,zht,   z_scale, zwu, zwv, zhdiv )
-      CALL wrk_alloc( jpi,jpj,jpk,   ze3t )
 
       IF( kt == nit000 ) THEN
@@ -543,6 +540,4 @@
       r1_hv_a(:,:) = ssvmask(:,:) / ( hv_a(:,:) + 1._wp - ssvmask(:,:) )
       !
-      CALL wrk_dealloc( jpi,jpj,       zht, z_scale, zwu, zwv, zhdiv )
-      CALL wrk_dealloc( jpi,jpj,jpk,   ze3t )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_sf_nxt')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE lbclnk          ! lateral boundary conditions - mpp exchanges
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! Memory allocation
    USE timing          ! Timing
 
@@ -75,12 +74,10 @@
       INTEGER           ::   izco, izps, isco, icav
       !                               
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zprt, zprw     ! 2D workspace
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdepu, zdepv   ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zprt, zprw     ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdepu, zdepv   ! 3D workspace
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dom_wri')
       !
-      CALL wrk_alloc( jpi,jpj,       zprt , zprw  )
-      CALL wrk_alloc( jpi,jpj,jpk,   zdepu, zdepv )
       !
       IF(lwp) WRITE(numout,*)
@@ -206,6 +203,4 @@
       !                                     ! ============================
       !
-      CALL wrk_dealloc( jpi, jpj, zprt, zprw )
-      CALL wrk_dealloc( jpi, jpj, jpk, zdepu, zdepv )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dom_wri')
@@ -229,10 +224,9 @@
       INTEGER  ::  ji       ! dummy loop indices
       LOGICAL, DIMENSION(SIZE(puniq,1),SIZE(puniq,2),1) ::  lldbl  ! store whether each point is unique or not
-      REAL(wp), POINTER, DIMENSION(:,:) :: ztstref
+      REAL(wp), DIMENSION(jpi,jpj) :: ztstref
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dom_uniq')
       !
-      CALL wrk_alloc( jpi, jpj, ztstref )
       !
       ! build an array with different values for each element 
@@ -250,5 +244,4 @@
       puniq(nldi:nlei,nldj:nlej) = REAL( COUNT( lldbl(nldi:nlei,nldj:nlej,:), dim = 3 ) , wp )
       !
-      CALL wrk_dealloc( jpi, jpj, ztstref )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dom_uniq')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90	(revision 7910)
@@ -36,5 +36,4 @@
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
    USE lib_mpp        ! distributed memory computing library
-   USE wrk_nemo       ! Memory allocation
    USE timing         ! Timing
 
@@ -284,10 +283,9 @@
       !
       INTEGER ::   ji, jj   ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:) ::  zk
+      REAL(wp), DIMENSION(jpi,jpj) ::  zk
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('zgr_top_bot')
       !
-      CALL wrk_alloc( jpi,jpj,   zk )
       !
       IF(lwp) WRITE(numout,*)
@@ -319,5 +317,4 @@
       zk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk( zk, 'V', 1. )   ;   mbkv(:,:) = MAX( INT( zk(:,:) ), 1 )
       !
-      CALL wrk_dealloc( jpi,jpj,   zk )
       !
       IF( nn_timing == 1 )  CALL timing_stop('zgr_top_bot')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE phycst          ! physical constants
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! Memory allocation
    USE timing          ! Timing
 
@@ -146,5 +145,5 @@
       INTEGER ::   ik, il0, il1, ii0, ii1, ij0, ij1   ! local integers
       REAL(wp)::   zl, zi
-      REAL(wp), POINTER, DIMENSION(:) ::  ztp, zsp   ! 1D workspace
+      REAL(wp), DIMENSION(jpk) ::  ztp, zsp   ! 1D workspace
       !!----------------------------------------------------------------------
       !
@@ -186,5 +185,4 @@
       IF( ln_sco ) THEN                   !==   s- or mixed s-zps-coordinate   ==!
          !
-         CALL wrk_alloc( jpk, ztp, zsp )
          !
          IF( kt == nit000 .AND. lwp )THEN
@@ -222,5 +220,4 @@
          END DO
          ! 
-         CALL wrk_dealloc( jpk, ztp, zsp )
          ! 
       ELSE                                !==   z- or zps- coordinate   ==!
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/iscplhsb.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/iscplhsb.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/iscplhsb.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE lib_mpp         ! MPP library
    USE lib_fortran     ! MPP library
-   USE wrk_nemo        ! Memory allocation
    USE lbclnk          !
    USE domngb          !
@@ -65,5 +64,5 @@
       !!
       REAL(wp):: zde3t, zdtem, zdsal
-      REAL(wp), DIMENSION(:,:), POINTER :: zdssh
+      REAL(wp), DIMENSION(jpi,jpj) :: zdssh
       !!
       REAL(wp), DIMENSION(:), ALLOCATABLE :: zlon, zlat
@@ -72,5 +71,4 @@
       INTEGER :: jpts, npts
 
-      CALL wrk_alloc(jpi,jpj, zdssh )
 
       ! get imbalance (volume heat and salt)
@@ -289,5 +287,4 @@
 
       ! deallocate variables
-      CALL wrk_dealloc(jpi,jpj, zdssh ) 
 
    END SUBROUTINE iscpl_cons
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/iscplrst.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/iscplrst.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/iscplrst.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE lib_mpp         ! MPP library
    USE lib_fortran     ! MPP library
-   USE wrk_nemo        ! Memory allocation
    USE lbclnk          ! communication
    USE iscplini        ! ice sheet coupling: initialisation
@@ -50,15 +49,11 @@
       !!----------------------------------------------------------------------
       INTEGER  ::   inum0
-      REAL(wp), DIMENSION(:,:  ), POINTER ::   zsmask_b
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   ztmask_b, zumask_b, zvmask_b
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   ze3t_b  , ze3u_b  , ze3v_b  
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   zdepw_b
+      REAL(wp), DIMENSION(jpi,jpj) ::   zsmask_b
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztmask_b, zumask_b, zvmask_b
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze3t_b  , ze3u_b  , ze3v_b  
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdepw_b
       CHARACTER(20) :: cfile
       !!----------------------------------------------------------------------
 
-      CALL wrk_alloc(jpi,jpj,jpk,   ztmask_b, zumask_b, zvmask_b) ! mask before
-      CALL wrk_alloc(jpi,jpj,jpk,   ze3t_b  , ze3u_b  , ze3v_b  ) ! e3   before
-      CALL wrk_alloc(jpi,jpj,jpk,   zdepw_b )
-      CALL wrk_alloc(jpi,jpj,       zsmask_b                    )
 
 
@@ -98,8 +93,4 @@
       END IF
 
-      CALL wrk_dealloc(jpi,jpj,jpk,   ztmask_b,zumask_b,zvmask_b )  
-      CALL wrk_dealloc(jpi,jpj,jpk,   ze3t_b  ,ze3u_b  ,ze3v_b   )  
-      CALL wrk_dealloc(jpi,jpj,jpk,   zdepw_b                    )
-      CALL wrk_dealloc(jpi,jpj,       zsmask_b                   )
 
       !! next step is an euler time step
@@ -150,21 +141,14 @@
       REAL(wp):: zdz, zdzm1, zdzp1
       !!
-      REAL(wp), DIMENSION(:,:    ), POINTER :: zdmask , zdsmask, zvcorr, zucorr, zde3t
-      REAL(wp), DIMENSION(:,:    ), POINTER :: zbub   , zbvb   , zbun  , zbvn
-      REAL(wp), DIMENSION(:,:    ), POINTER :: zssh0  , zssh1, zhu1, zhv1
-      REAL(wp), DIMENSION(:,:    ), POINTER :: zsmask0, zsmask1
-      REAL(wp), DIMENSION(:,:,:  ), POINTER :: ztmask0, ztmask1, ztrp
-      REAL(wp), DIMENSION(:,:,:  ), POINTER :: zwmaskn, zwmaskb, ztmp3d
-      REAL(wp), DIMENSION(:,:,:,:), POINTER :: zts0
+      REAL(wp), DIMENSION(jpi,jpj) :: zdmask , zdsmask, zvcorr, zucorr, zde3t
+      REAL(wp), DIMENSION(jpi,jpj) :: zbub   , zbvb   , zbun  , zbvn
+      REAL(wp), DIMENSION(jpi,jpj) :: zssh0  , zssh1, zhu1, zhv1
+      REAL(wp), DIMENSION(jpi,jpj) :: zsmask0, zsmask1
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztmask0, ztmask1, ztrp
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwmaskn, zwmaskb, ztmp3d
+      REAL(wp), DIMENSION(jpi,jpj,jpk,2) :: zts0
       !!----------------------------------------------------------------------
 
       !! allocate variables
-      CALL wrk_alloc(jpi,jpj,jpk,2, zts0                                   )
-      CALL wrk_alloc(jpi,jpj,jpk,   ztmask0, ztmask1 , ztrp, ztmp3d        ) 
-      CALL wrk_alloc(jpi,jpj,jpk,   zwmaskn, zwmaskb                       ) 
-      CALL wrk_alloc(jpi,jpj,       zsmask0, zsmask1                       ) 
-      CALL wrk_alloc(jpi,jpj,       zdmask , zdsmask, zvcorr, zucorr, zde3t) 
-      CALL wrk_alloc(jpi,jpj,       zbub   , zbvb    , zbun , zbvn         ) 
-      CALL wrk_alloc(jpi,jpj,       zssh0  , zssh1, zhu1, zhv1             ) 
 
       !! mask value to be sure
@@ -430,11 +414,4 @@
       ! 
       ! deallocation tmp arrays
-      CALL wrk_dealloc(jpi,jpj,jpk,2, zts0                                   )
-      CALL wrk_dealloc(jpi,jpj,jpk,   ztmask0, ztmask1 , ztrp                ) 
-      CALL wrk_dealloc(jpi,jpj,jpk,   zwmaskn, zwmaskb , ztmp3d              ) 
-      CALL wrk_dealloc(jpi,jpj,       zsmask0, zsmask1                       ) 
-      CALL wrk_dealloc(jpi,jpj,       zdmask , zdsmask, zvcorr, zucorr, zde3t) 
-      CALL wrk_dealloc(jpi,jpj,       zbub   , zbvb    , zbun  , zbvn        ) 
-      CALL wrk_dealloc(jpi,jpj,       zssh0  , zssh1  , zhu1 , zhv1          ) 
       !
    END SUBROUTINE iscpl_rst_interpol
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90	(revision 7910)
@@ -60,5 +60,5 @@
       !!----------------------------------------------------------------------
       INTEGER ::   ji, jj, jk   ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zuvd    ! U & V data workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk,2) ::   zuvd    ! U & V data workspace
       !!----------------------------------------------------------------------
       !
@@ -121,5 +121,4 @@
 !!gm to be moved in usrdef of C1D case
 !         IF ( ln_uvd_init .AND. lk_c1d ) THEN ! read 3D U and V data at nit000
-!            CALL wrk_alloc( jpi,jpj,jpk,2,   zuvd )
 !            CALL dta_uvd( nit000, zuvd )
 !            ub(:,:,:) = zuvd(:,:,:,1) ;  un(:,:,:) = ub(:,:,:)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90	(revision 7910)
@@ -20,5 +20,4 @@
    USE lib_mpp        ! MPP library
    USE prtctl         ! Print control
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -51,11 +50,10 @@
       !
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zfu, zfv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zfu, zfv
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_adv_cen2')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw )
       !
       IF( kt == nit000 .AND. lwp ) THEN
@@ -148,5 +146,4 @@
          &                       tab3d_2=va, clinfo2=           ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_adv_cen2')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90	(revision 7910)
@@ -23,5 +23,4 @@
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -74,13 +73,11 @@
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
       REAL(wp) ::   zui, zvj, zfuj, zfvi, zl_u, zl_v   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:  ) ::  zfu, zfv
-      REAL(wp), POINTER, DIMENSION(:,:,:  ) ::  zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  zlu_uu, zlv_vv, zlu_uv, zlv_vu
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zfu, zfv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw
+      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) ::  zlu_uu, zlv_vv, zlu_uv, zlv_vu
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_adv_ubs')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,        zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw )
-      CALL wrk_alloc( jpi,jpj,jpk,jpts,   zlu_uu, zlv_vv, zlu_uv, zlv_vu                               )
       !
       IF( kt == nit000 ) THEN
@@ -241,6 +238,4 @@
          &                       tab3d_2=va, clinfo2=           ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,        zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw )
-      CALL wrk_dealloc( jpi,jpj,jpk,jpts,   zlu_uu, zlv_vv, zlu_uv, zlv_vu                               )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_adv_ubs')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE prtctl         ! Print control
    USE timing         ! Timing
-   USE wrk_nemo       ! Memory Allocation
 
    IMPLICIT NONE
@@ -50,5 +49,5 @@
       INTEGER  ::   ikbu, ikbv   ! local integers
       REAL(wp) ::   zm1_2dt      ! local scalar
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdu, ztrdv
       !!---------------------------------------------------------------------
       !
@@ -64,5 +63,4 @@
 
         IF( l_trddyn ) THEN      ! trends: store the input trends
-           CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv )
            ztrdu(:,:,:) = ua(:,:,:)
            ztrdv(:,:,:) = va(:,:,:)
@@ -102,5 +100,4 @@
            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
            CALL trd_dyn( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_bfr, kt )
-           CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv )
         ENDIF
         !                                          ! print mean trends (used for debugging)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90	(revision 7910)
@@ -44,5 +44,4 @@
    USE lib_mpp         ! MPP library
    USE eosbn2          ! compute density
-   USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
    USE iom
@@ -84,5 +83,5 @@
       !!----------------------------------------------------------------------
       INTEGER, INTENT(in) ::   kt   ! ocean time-step index
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdu, ztrdv
       !!----------------------------------------------------------------------
       !
@@ -90,5 +89,4 @@
       !
       IF( l_trddyn ) THEN                    ! Temporary saving of ua and va trends (l_trddyn)
-         CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv )
          ztrdu(:,:,:) = ua(:,:,:)
          ztrdv(:,:,:) = va(:,:,:)
@@ -108,5 +106,4 @@
          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
          CALL trd_dyn( ztrdu, ztrdv, jpdyn_hpg, kt )
-         CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )
       ENDIF
       !
@@ -134,7 +131,8 @@
       INTEGER  ::   ji, jj, jk, ikt    ! dummy loop indices      ISF
       REAL(wp) ::   znad
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::  ztstop, zrhd ! hypothesys on isf density
-      REAL(wp), POINTER, DIMENSION(:,:)     ::  zrhdtop_isf  ! density at bottom of ISF
-      REAL(wp), POINTER, DIMENSION(:,:)     ::  ziceload     ! density at bottom of ISF
+      REAL(wp), DIMENSION(jpi,jpj,2)   ::  ztstop       ! hypothesys on isf density
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::  zrhd         ! hypothesys on isf density
+      REAL(wp), DIMENSION(jpi,jpj)     ::  zrhdtop_isf  ! density at bottom of ISF
+      REAL(wp), DIMENSION(jpi,jpj)     ::  ziceload     ! density at bottom of ISF
       !!
       NAMELIST/namdyn_hpg/ ln_hpg_zco, ln_hpg_zps, ln_hpg_sco,     &
@@ -200,7 +198,4 @@
       IF ( .NOT. ln_isfcav ) riceload(:,:)=0.0
       IF (       ln_isfcav ) THEN
-         CALL wrk_alloc( jpi,jpj, 2,  ztstop) 
-         CALL wrk_alloc( jpi,jpj,jpk, zrhd  )
-         CALL wrk_alloc( jpi,jpj,     zrhdtop_isf, ziceload) 
          !
          IF(lwp) WRITE(numout,*)
@@ -240,7 +235,4 @@
          riceload(:,:)=ziceload(:,:)  ! need to be saved for diaar5
 
-         CALL wrk_dealloc( jpi,jpj, 2,  ztstop) 
-         CALL wrk_dealloc( jpi,jpj,jpk, zrhd  )
-         CALL wrk_dealloc( jpi,jpj,     zrhdtop_isf, ziceload) 
       END IF
       !
@@ -268,8 +260,7 @@
       INTEGER  ::   ji, jj, jk       ! dummy loop indices
       REAL(wp) ::   zcoef0, zcoef1   ! temporary scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi,jpj,jpk,   zhpi, zhpj )
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zhpi, zhpj
+      !!----------------------------------------------------------------------
+      !
       !
       IF( kt == nit000 ) THEN
@@ -315,5 +306,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zhpj )
       !
    END SUBROUTINE hpg_zco
@@ -333,8 +323,7 @@
       INTEGER  ::   iku, ikv                         ! temporary integers
       REAL(wp) ::   zcoef0, zcoef1, zcoef2, zcoef3   ! temporary scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi,jpj,jpk,   zhpi, zhpj )
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zhpi, zhpj
+      !!----------------------------------------------------------------------
+      !
       !
       IF( kt == nit000 ) THEN
@@ -405,5 +394,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zhpj )
       !
    END SUBROUTINE hpg_zps
@@ -433,10 +421,8 @@
       REAL(wp) ::   zcoef0, zuap, zvap, znad, ztmp       ! temporary scalars
       LOGICAL  ::   ll_tmp1, ll_tmp2                     ! local logical variables
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj
-      REAL(wp), POINTER, DIMENSION(:,:)   ::  zcpx, zcpy !W/D pressure filter
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj )
-      IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy )
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zhpi, zhpj
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zcpx, zcpy !W/D pressure filter
+      !!----------------------------------------------------------------------
+      !
       !
       IF( kt == nit000 ) THEN
@@ -554,6 +540,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj )
-      IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy )
       !
    END SUBROUTINE hpg_sco
@@ -583,12 +567,9 @@
       INTEGER  ::   ji, jj, jk, ikt, iktp1i, iktp1j   ! dummy loop indices
       REAL(wp) ::   zcoef0, zuap, zvap, znad          ! temporary scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::  zhpi, zhpj
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::  ztstop
-      REAL(wp), POINTER, DIMENSION(:,:)     ::  zrhdtop_oce
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi,jpj,  2, ztstop) 
-      CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj)
-      CALL wrk_alloc( jpi,jpj,     zrhdtop_oce )
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::  zhpi, zhpj
+      REAL(wp), DIMENSION(jpi,jpj,2)   ::  ztstop
+      REAL(wp), DIMENSION(jpi,jpj)     ::  zrhdtop_oce
+      !!----------------------------------------------------------------------
+      !
       !
       ! Local constant initialization
@@ -668,7 +649,4 @@
       END DO
      !
-      CALL wrk_dealloc( jpi,jpj,2  , ztstop)
-      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj)
-      CALL wrk_dealloc( jpi,jpj    , zrhdtop_oce )
       !
    END SUBROUTINE hpg_isf
@@ -690,15 +668,11 @@
       REAL(wp) ::   z1_12, cffv, cffy   !    "         "
       LOGICAL  ::   ll_tmp1, ll_tmp2    ! local logical variables
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  dzx, dzy, dzz, dzu, dzv, dzw
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  drhox, drhoy, drhoz, drhou, drhov, drhow
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  rho_i, rho_j, rho_k
-      REAL(wp), POINTER, DIMENSION(:,:)   ::  zcpx, zcpy    !W/D pressure filter
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi, jpj, jpk, dzx  , dzy  , dzz  , dzu  , dzv  , dzw   )
-      CALL wrk_alloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow )
-      CALL wrk_alloc( jpi, jpj, jpk, rho_i, rho_j, rho_k,  zhpi,  zhpj        )
-      IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy )
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zhpi, zhpj
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  dzx, dzy, dzz, dzu, dzv, dzw
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  drhox, drhoy, drhoz, drhou, drhov, drhow
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  rho_i, rho_j, rho_k
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zcpx, zcpy    !W/D pressure filter
+      !!----------------------------------------------------------------------
+      !
       !
       !
@@ -949,8 +923,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, dzx  , dzy  , dzz  , dzu  , dzv  , dzw   )
-      CALL wrk_dealloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow )
-      CALL wrk_dealloc( jpi, jpj, jpk, rho_i, rho_j, rho_k,  zhpi,  zhpj        )
-      IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy )
       !
    END SUBROUTINE hpg_djc
@@ -980,14 +950,10 @@
       REAL(wp) :: zrhdt1
       REAL(wp) :: zdpdx1, zdpdx2, zdpdy1, zdpdy2
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdept, zrhh
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zsshu_n, zsshv_n
-      REAL(wp), POINTER, DIMENSION(:,:)   ::  zcpx, zcpy    !W/D pressure filter
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi,jpj,jpk,   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp )
-      CALL wrk_alloc( jpi,jpj,jpk,   zdept, zrhh )
-      CALL wrk_alloc( jpi,jpj,       zsshu_n, zsshv_n )
-      IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy )
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdept, zrhh
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zsshu_n, zsshv_n
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zcpx, zcpy    !W/D pressure filter
+      !!----------------------------------------------------------------------
+      !
       !
       IF( kt == nit000 ) THEN
@@ -1298,8 +1264,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp )
-      CALL wrk_dealloc( jpi,jpj,jpk,   zdept, zrhh )
-      CALL wrk_dealloc( jpi,jpj,       zsshu_n, zsshv_n )
-      IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy )
       !
    END SUBROUTINE hpg_prj
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90	(revision 7910)
@@ -22,5 +22,4 @@
    USE lib_mpp         ! MPP library
    USE prtctl          ! Print control
-   USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
    USE bdy_oce         ! ocean open boundary conditions
@@ -77,6 +76,6 @@
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
       REAL(wp) ::   zu, zv       ! temporary scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zhke
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhke
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztrdu, ztrdv 
       INTEGER  ::   jb                 ! dummy loop indices
       INTEGER  ::   ii, ij, igrd, ib_bdy   ! local integers
@@ -86,5 +85,4 @@
       IF( nn_timing == 1 )   CALL timing_start('dyn_keg')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zhke )
       !
       IF( kt == nit000 ) THEN
@@ -95,5 +93,4 @@
 
       IF( l_trddyn ) THEN           ! Save ua and va trends
-         CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv )
          ztrdu(:,:,:) = ua(:,:,:) 
          ztrdv(:,:,:) = va(:,:,:) 
@@ -187,5 +184,4 @@
          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
          CALL trd_dyn( ztrdu, ztrdv, jpdyn_keg, kt )
-         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv )
       ENDIF
       !
@@ -193,5 +189,4 @@
          &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zhke )
       !
       IF( nn_timing == 1 )   CALL timing_stop('dyn_keg')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE lib_mpp        ! distribued memory computing library
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -62,5 +61,5 @@
       INTEGER, INTENT(in) ::   kt   ! ocean time-step index
       !
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdu, ztrdv
       !!----------------------------------------------------------------------
       !
@@ -68,5 +67,4 @@
       !
       IF( l_trddyn )   THEN                      ! temporary save of momentum trends
-         CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv )
          ztrdu(:,:,:) = ua(:,:,:) 
          ztrdv(:,:,:) = va(:,:,:) 
@@ -85,5 +83,4 @@
          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
          CALL trd_dyn( ztrdu, ztrdv, jpdyn_ldf, kt )
-         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv )
       ENDIF
       !                                          ! print sum trends (used for debugging)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE prtctl          ! Print control
-   USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
 
@@ -112,10 +111,9 @@
       REAL(wp) ::   zuav, zvav, zuwslpi, zuwslpj, zvwslpi, zvwslpj   !   -      -
       !
-      REAL(wp), POINTER, DIMENSION(:,:) :: ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v
+      REAL(wp), DIMENSION(jpi,jpj) :: ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_ldf_iso')
       !
-      CALL wrk_alloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v ) 
       !
       IF( kt == nit000 ) THEN
@@ -409,5 +407,4 @@
       END DO                                           !   End of slab
       !                                                ! ===============
-      CALL wrk_dealloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_ldf_iso')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap_blp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap_blp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap_blp.F90	(revision 7910)
@@ -19,5 +19,4 @@
    USE in_out_manager ! I/O manager
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -57,5 +56,5 @@
       REAL(wp) ::   zsign        ! local scalars
       REAL(wp) ::   zua, zva     ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:) ::  zcur, zdiv
+      REAL(wp), DIMENSION(jpi,jpj) ::  zcur, zdiv
       !!----------------------------------------------------------------------
       !
@@ -68,5 +67,4 @@
       IF( nn_timing == 1 )   CALL timing_start('dyn_ldf_lap')
       !
-      CALL wrk_alloc( jpi, jpj, zcur, zdiv ) 
       !
       IF( kpass == 1 ) THEN   ;   zsign =  1._wp      ! bilaplacian operator require a minus sign
@@ -107,5 +105,4 @@
       END DO                                           !   End of slab
       !                                                ! ===============
-      CALL wrk_dealloc( jpi, jpj, zcur, zdiv ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_ldf_lap')
@@ -131,10 +128,9 @@
       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pua, pva   ! momentum trend
       !
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zulap, zvlap   ! laplacian at u- and v-point
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zulap, zvlap   ! laplacian at u- and v-point
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_ldf_blp')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zulap, zvlap ) 
       !
       IF( kt == nit000 )  THEN
@@ -154,5 +150,4 @@
       CALL dyn_ldf_lap( kt, zulap, zvlap, pua, pva, 2 )   ! rotated laplacian applied to zlap (output in pta)
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zulap, zvlap ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_ldf_blp')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90	(revision 7910)
@@ -44,5 +44,4 @@
    USE lbclnk         ! lateral boundary condition (or mpp link)
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE prtctl         ! Print control
    USE timing         ! Timing
@@ -97,12 +96,10 @@
       REAL(wp) ::   zue3a, zue3n, zue3b, zuf, zcoef    ! local scalars
       REAL(wp) ::   zve3a, zve3n, zve3b, zvf, z1_2dt   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:)   ::  zue, zve
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ze3u_f, ze3v_f, zua, zva 
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zue, zve
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ze3u_f, ze3v_f, zua, zva 
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('dyn_nxt')
       !
-      IF( ln_dynspg_ts       )   CALL wrk_alloc( jpi,jpj,       zue, zve)
-      IF( l_trddyn           )   CALL wrk_alloc( jpi,jpj,jpk,   zua, zva)
       !
       IF( kt == nit000 ) THEN
@@ -253,5 +250,4 @@
             ELSE                          ! Asselin filter applied on thickness weighted velocity
                !
-               CALL wrk_alloc( jpi,jpj,jpk,   ze3u_f, ze3v_f )
                ! Before filtered scale factor at (u/v)-points stored in ze3u_f, ze3v_f
                CALL dom_vvl_interpol( e3t_b(:,:,:), ze3u_f, 'U' )
@@ -280,5 +276,4 @@
                e3v_b(:,:,1:jpkm1) = ze3v_f(:,:,1:jpkm1)
                !
-               CALL wrk_dealloc( jpi,jpj,jpk,   ze3u_f, ze3v_f )
             ENDIF
             !
@@ -346,6 +341,4 @@
          &                       tab3d_2=vn, clinfo2=' Vn: '       , mask2=vmask )
       ! 
-      IF( ln_dynspg_ts )   CALL wrk_dealloc( jpi,jpj,       zue, zve )
-      IF( l_trddyn     )   CALL wrk_dealloc( jpi,jpj,jpk,   zua, zva )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_nxt')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -75,6 +74,6 @@
       INTEGER  ::   ji, jj, jk                             ! dummy loop indices
       REAL(wp) ::   z2dt, zg_2, zintp, zgrau0r             ! temporary scalar
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
-      REAL(wp), POINTER, DIMENSION(:,:)   ::  zpice
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdu, ztrdv
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zpice
       !!----------------------------------------------------------------------
       !
@@ -82,5 +81,4 @@
       !
       IF( l_trddyn )   THEN                      ! temporary save of ta and sa trends
-         CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
          ztrdu(:,:,:) = ua(:,:,:)
          ztrdv(:,:,:) = va(:,:,:)
@@ -124,5 +122,4 @@
          !
          IF( nn_ice_embd == 2 ) THEN          !== embedded sea ice: Pressure gradient due to snow-ice mass ==!
-            CALL wrk_alloc( jpi,jpj,   zpice )
             !                                            
             zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc )
@@ -136,5 +133,4 @@
             END DO
             !
-            CALL wrk_dealloc( jpi,jpj,   zpice )         
          ENDIF
          !
@@ -161,5 +157,4 @@
          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
          CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt )
-         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
       ENDIF
       !                                      ! print mean trends (used for debugging)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90	(revision 7910)
@@ -47,5 +47,4 @@
    USE iom             ! IOM library
    USE restart         ! only for lrst_oce
-   USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing    
    USE diatmb          ! Top,middle,bottom output
@@ -151,11 +150,11 @@
       REAL(wp) ::   za0, za1, za2, za3		!   -      -
       !
-      REAL(wp), POINTER, DIMENSION(:,:) :: zsshp2_e
-      REAL(wp), POINTER, DIMENSION(:,:) :: zu_trd, zv_trd, zu_frc, zv_frc, zssh_frc
-      REAL(wp), POINTER, DIMENSION(:,:) :: zwx, zwy, zhdiv
-      REAL(wp), POINTER, DIMENSION(:,:) :: zhup2_e, zhvp2_e, zhust_e, zhvst_e
-      REAL(wp), POINTER, DIMENSION(:,:) :: zsshu_a, zsshv_a
-      REAL(wp), POINTER, DIMENSION(:,:) :: zhf
-      REAL(wp), POINTER, DIMENSION(:,:) :: zcpx, zcpy                 ! Wetting/Dying gravity filter coef.
+      REAL(wp), DIMENSION(jpi,jpj) :: zsshp2_e
+      REAL(wp), DIMENSION(jpi,jpj) :: zu_trd, zv_trd, zu_frc, zv_frc, zssh_frc
+      REAL(wp), DIMENSION(jpi,jpj) :: zwx, zwy, zhdiv
+      REAL(wp), DIMENSION(jpi,jpj) :: zhup2_e, zhvp2_e, zhust_e, zhvst_e
+      REAL(wp), DIMENSION(jpi,jpj) :: zsshu_a, zsshv_a
+      REAL(wp), DIMENSION(jpi,jpj) :: zhf
+      REAL(wp), DIMENSION(jpi,jpj) :: zcpx, zcpy                 ! Wetting/Dying gravity filter coef.
       !!----------------------------------------------------------------------
       !
@@ -163,11 +162,4 @@
       !
       !                                         !* Allocate temporary arrays
-      CALL wrk_alloc( jpi,jpj,   zsshp2_e, zhdiv )
-      CALL wrk_alloc( jpi,jpj,   zu_trd, zv_trd)
-      CALL wrk_alloc( jpi,jpj,   zwx, zwy, zssh_frc, zu_frc, zv_frc)
-      CALL wrk_alloc( jpi,jpj,   zhup2_e, zhvp2_e, zhust_e, zhvst_e)
-      CALL wrk_alloc( jpi,jpj,   zsshu_a, zsshv_a                  )
-      CALL wrk_alloc( jpi,jpj,   zhf )
-      IF( ln_wd ) CALL wrk_alloc( jpi, jpj, zcpx, zcpy )
       !
       zmdi=1.e+20                               !  missing data indicator for masking
@@ -1091,11 +1083,4 @@
       IF( lrst_oce .AND.ln_bt_fw )   CALL ts_rst( kt, 'WRITE' )
       !
-      CALL wrk_dealloc( jpi,jpj,   zsshp2_e, zhdiv )
-      CALL wrk_dealloc( jpi,jpj,   zu_trd, zv_trd )
-      CALL wrk_dealloc( jpi,jpj,   zwx, zwy, zssh_frc, zu_frc, zv_frc )
-      CALL wrk_dealloc( jpi,jpj,   zhup2_e, zhvp2_e, zhust_e, zhvst_e )
-      CALL wrk_dealloc( jpi,jpj,   zsshu_a, zsshv_a                                   )
-      CALL wrk_dealloc( jpi,jpj,   zhf )
-      IF( ln_wd ) CALL wrk_dealloc( jpi, jpj, zcpx, zcpy )
       !
       IF ( ln_diatmb ) THEN
@@ -1248,10 +1233,9 @@
       INTEGER  ::   ji ,jj              ! dummy loop indices
       REAL(wp) ::   zxr2, zyr2, zcmax   ! local scalar
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zcu
+      REAL(wp), DIMENSION(jpi,jpj) ::   zcu
       !!----------------------------------------------------------------------
       !
       ! Max courant number for ext. grav. waves
       !
-      CALL wrk_alloc( jpi,jpj,   zcu )
       !
       DO jj = 1, jpj
@@ -1320,5 +1304,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,   zcu )
       !
    END SUBROUTINE dyn_spg_ts_init
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90	(revision 7910)
@@ -40,5 +40,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -98,10 +97,9 @@
       INTEGER, INTENT( in ) ::   kt   ! ocean time-step index
       !
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdu, ztrdv
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_vor')
       !
-      IF( l_trddyn )   CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv )
       !
       SELECT CASE ( nvor_scheme )               !==  vorticity trend added to the general trend  ==!
@@ -190,5 +188,4 @@
          &                     tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      IF( l_trddyn )   CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_vor')
@@ -225,10 +222,9 @@
       INTEGER  ::   ji, jj, jk           ! dummy loop indices
       REAL(wp) ::   zx1, zy1, zx2, zy2   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zwx, zwy, zwz   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zwx, zwy, zwz   ! 2D workspace
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('vor_ene')
       !
-      CALL wrk_alloc( jpi,jpj,   zwx, zwy, zwz ) 
       !
       IF( kt == nit000 ) THEN
@@ -311,5 +307,4 @@
       END DO                                           !   End of slab
       !                                                ! ===============
-      CALL wrk_dealloc( jpi, jpj, zwx, zwy, zwz ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('vor_ene')
@@ -346,10 +341,9 @@
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
       REAL(wp) ::   zuav, zvau   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zwx, zwy, zwz, zww   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zwx, zwy, zwz, zww   ! 2D workspace
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('vor_ens')
       !
-      CALL wrk_alloc( jpi,jpj,   zwx, zwy, zwz ) 
       !
       IF( kt == nit000 ) THEN
@@ -431,5 +425,4 @@
       END DO                                           !   End of slab
       !                                                ! ===============
-      CALL wrk_dealloc( jpi, jpj, zwx, zwy, zwz ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('vor_ens')
@@ -466,12 +459,10 @@
       REAL(wp) ::   zmsk, ze3    ! local scalars
       !
-      REAL(wp), POINTER, DIMENSION(:,:)   :: zwx, zwy, zwz, z1_e3f
-      REAL(wp), POINTER, DIMENSION(:,:)   :: ztnw, ztne, ztsw, ztse
+      REAL(wp), DIMENSION(jpi,jpj)   :: zwx, zwy, zwz, z1_e3f
+      REAL(wp), DIMENSION(jpi,jpj)   :: ztnw, ztne, ztsw, ztse
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('vor_een')
       !
-      CALL wrk_alloc( jpi,jpj,   zwx , zwy , zwz , z1_e3f ) 
-      CALL wrk_alloc( jpi,jpj,   ztnw, ztne, ztsw, ztse   ) 
       !
       IF( kt == nit000 ) THEN
@@ -599,6 +590,4 @@
       !                                                ! ===============
       !
-      CALL wrk_dealloc( jpi,jpj,   zwx , zwy , zwz , z1_e3f ) 
-      CALL wrk_dealloc( jpi,jpj,   ztnw, ztne, ztsw, ztse   ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('vor_een')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90	(revision 7910)
@@ -22,5 +22,4 @@
    USE lib_mpp        ! MPP library
    USE prtctl         ! Print control
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -60,13 +59,11 @@
       INTEGER  ::   ji, jj, jk      ! dummy loop indices
       REAL(wp) ::   zua, zva        ! temporary scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwuw , zwvw
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::  zww
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zwuw , zwvw
+      REAL(wp), DIMENSION(jpi,jpj) ::  zww
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdu, ztrdv
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_zad')
       !
-      CALL wrk_alloc( jpi,jpj, zww ) 
-      CALL wrk_alloc( jpi,jpj,jpk, zwuw , zwvw ) 
       !
       IF( kt == nit000 ) THEN
@@ -76,5 +73,4 @@
 
       IF( l_trddyn )   THEN         ! Save ua and va trends
-         CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv ) 
          ztrdu(:,:,:) = ua(:,:,:) 
          ztrdv(:,:,:) = va(:,:,:) 
@@ -133,5 +129,4 @@
          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
          CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt )
-         CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 
       ENDIF
       !                             ! Control print
@@ -139,6 +134,4 @@
          &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      CALL wrk_dealloc( jpi,jpj, zww ) 
-      CALL wrk_dealloc( jpi,jpj,jpk, zwuw , zwvw ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_zad')
@@ -175,13 +168,11 @@
       REAL(wp) ::   z2dtzts         ! length of Euler forward sub-timestep for vertical advection
       REAL(wp) ::   zts             ! length of sub-timestep for vertical advection
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::  zwuw , zwvw, zww
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::  ztrdu, ztrdv
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  zus , zvs
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::  zwuw , zwvw, zww
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::  ztrdu, ztrdv
+      REAL(wp), DIMENSION(jpi,jpj,jpk,3) ::  zus , zvs
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_zad_zts')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,     zwuw, zwvw, zww ) 
-      CALL wrk_alloc( jpi,jpj,jpk,3,   zus , zvs ) 
       !
       IF( kt == nit000 ) THEN
@@ -191,5 +182,4 @@
 
       IF( l_trddyn )   THEN         ! Save ua and va trends
-         CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv ) 
          ztrdu(:,:,:) = ua(:,:,:) 
          ztrdv(:,:,:) = va(:,:,:) 
@@ -277,5 +267,4 @@
          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
          CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt )
-         CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 
       ENDIF
       !                             ! Control print
@@ -283,6 +272,4 @@
          &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,     zwuw, zwvw, zww ) 
-      CALL wrk_dealloc( jpi,jpj,jpk,3,   zus , zvs ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_zad_zts')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE lib_mpp        ! MPP library
    USE prtctl         ! Print control
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -54,5 +53,5 @@
       INTEGER, INTENT( in ) ::   kt      ! ocean time-step index
       !
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdu, ztrdv
       !!---------------------------------------------------------------------
       !
@@ -65,5 +64,4 @@
 
       IF( l_trddyn )   THEN                      ! temporary save of ta and sa trends
-         CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv ) 
          ztrdu(:,:,:) = ua(:,:,:)
          ztrdv(:,:,:) = va(:,:,:)
@@ -81,5 +79,4 @@
          ztrdv(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) / r2dt - ztrdv(:,:,:)
          CALL trd_dyn( ztrdu, ztrdv, jpdyn_zdf, kt )
-         CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 
       ENDIF
       !                                          ! print mean trends (used for debugging)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -66,10 +65,9 @@
       INTEGER  ::   ji, jj, jk, jl     ! dummy loop indices
       REAL(wp) ::   zlavmr, zua, zva   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwx, zwy, zwz, zww
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zwx, zwy, zwz, zww
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('dyn_zdf_exp')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zwx, zwy, zwz, zww ) 
       !
       IF( kt == nit000 .AND. lwp ) THEN
@@ -140,5 +138,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zwx, zwy, zwz, zww ) 
       !
       IF( nn_timing == 1 )   CALL timing_stop('dyn_zdf_exp')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90	(revision 7910)
@@ -26,5 +26,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -72,10 +71,9 @@
       REAL(wp) ::   zzwi, ze3ua   ! local scalars
       REAL(wp) ::   zzws, ze3va   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwi, zwd, zws
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zwi, zwd, zws
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_zdf_imp')
       !
-      CALL wrk_alloc( jpi,jpj,jpk, zwi, zwd, zws ) 
       !
       IF( kt == nit000 ) THEN
@@ -342,5 +340,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zwi, zwd, zws) 
       !
       IF( nn_timing == 1 )   CALL timing_stop('dyn_zdf_imp')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90	(revision 7910)
@@ -36,5 +36,4 @@
    USE lbclnk         ! ocean lateral boundary condition (or mpp link)
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
    USE wet_dry         ! Wetting/Drying flux limting
@@ -74,10 +73,9 @@
       INTEGER  ::   jk            ! dummy loop indice
       REAL(wp) ::   z2dt, zcoef   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zhdiv   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zhdiv   ! 2D workspace
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('ssh_nxt')
       !
-      CALL wrk_alloc( jpi,jpj,   zhdiv ) 
       !
       IF( kt == nit000 ) THEN
@@ -134,5 +132,4 @@
       IF(ln_ctl)   CALL prt_ctl( tab2d_1=ssha, clinfo1=' ssha  - : ', mask1=tmask, ovlap=1 )
       !
-      CALL wrk_dealloc( jpi, jpj, zhdiv ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('ssh_nxt')
@@ -161,5 +158,5 @@
       REAL(wp) ::   z1_2dt       ! local scalars
       REAL(wp), POINTER, DIMENSION(:,:  ) ::  z2d
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  z3d, zhdiv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  z3d, zhdiv
       !!----------------------------------------------------------------------
       !
@@ -180,5 +177,4 @@
       !
       IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN      ! z_tilde and layer cases
-         CALL wrk_alloc( jpi, jpj, jpk, zhdiv ) 
          !
          DO jk = 1, jpkm1
@@ -200,5 +196,4 @@
          END DO
          !          IF( ln_vvl_layer ) wn(:,:,:) = 0.e0
-         CALL wrk_dealloc( jpi, jpj, jpk, zhdiv ) 
       ELSE   ! z_star and linear free surface cases
          DO jk = jpkm1, 1, -1                       ! integrate from the bottom the hor. divergence
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
 
@@ -113,8 +112,8 @@
       REAL(wp) ::   zdepwd              ! local scalar, always wet cell depth
       REAL(wp) ::   ztmp                ! local scalars
-      REAL(wp), POINTER,  DIMENSION(:,:) ::   zwdlmtu, zwdlmtv         !: W/D flux limiters
-      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxp,  zflxn            ! local 2D workspace
-      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu,  zflxv            ! local 2D workspace
-      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! local 2D workspace
+      REAL(wp),  DIMENSION(jpi,jpj) ::   zwdlmtu, zwdlmtv         !: W/D flux limiters
+      REAL(wp),  DIMENSION(jpi,jpj) ::   zflxp,  zflxn            ! local 2D workspace
+      REAL(wp),  DIMENSION(jpi,jpj) ::   zflxu,  zflxv            ! local 2D workspace
+      REAL(wp),  DIMENSION(jpi,jpj) ::   zflxu1, zflxv1           ! local 2D workspace
       !!----------------------------------------------------------------------
       !
@@ -124,6 +123,4 @@
       IF(ln_wd) THEN
 
-        CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu, zflxv, zflxu1, zflxv1 )
-        CALL wrk_alloc( jpi, jpj, zwdlmtu, zwdlmtv)
         !
        
@@ -254,6 +251,4 @@
         !
         !
-        CALL wrk_dealloc( jpi, jpj, zflxp, zflxn, zflxu, zflxv, zflxu1, zflxv1 )
-        CALL wrk_dealloc( jpi, jpj, zwdlmtu, zwdlmtv)
         !
       ENDIF
@@ -284,7 +279,7 @@
       REAL(wp) ::   zdepwd              ! local scalar, always wet cell depth
       REAL(wp) ::   ztmp                ! local scalars
-      REAL(wp), POINTER,  DIMENSION(:,:) ::   zwdlmtu, zwdlmtv         !: W/D flux limiters
-      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxp,  zflxn            ! local 2D workspace
-      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! local 2D workspace
+      REAL(wp),  DIMENSION(jpi,jpj) ::   zwdlmtu, zwdlmtv         !: W/D flux limiters
+      REAL(wp),  DIMENSION(jpi,jpj) ::   zflxp,  zflxn            ! local 2D workspace
+      REAL(wp),  DIMENSION(jpi,jpj) ::   zflxu1, zflxv1           ! local 2D workspace
       !!----------------------------------------------------------------------
       !
@@ -293,6 +288,4 @@
       IF(ln_wd) THEN
 
-        CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu1, zflxv1 )
-        CALL wrk_alloc( jpi, jpj, zwdlmtu, zwdlmtv)
         !
        
@@ -401,6 +394,4 @@
         !
         !
-        CALL wrk_dealloc( jpi, jpj, zflxp, zflxn, zflxu1, zflxv1 )
-        CALL wrk_dealloc( jpi, jpj, zwdlmtu, zwdlmtv)
         !
       END IF
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/FLO/flo4rk.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/FLO/flo4rk.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/FLO/flo4rk.F90	(revision 7910)
@@ -15,5 +15,4 @@
    USE dom_oce         ! ocean space and time domain
    USE in_out_manager  ! I/O manager
-   USE wrk_nemo        ! working array
 
    IMPLICIT NONE
@@ -53,10 +52,8 @@
       INTEGER ::  ierror              ! error value
 
-      REAL(wp), POINTER, DIMENSION(:)   ::   zgifl , zgjfl , zgkfl    ! index RK  positions
-      REAL(wp), POINTER, DIMENSION(:)   ::   zufl  , zvfl  , zwfl     ! interpolated velocity at the float position 
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zrkxfl, zrkyfl, zrkzfl   ! RK coefficients
+      REAL(wp), DIMENSION(jpnfl)   ::   zgifl , zgjfl , zgkfl    ! index RK  positions
+      REAL(wp), DIMENSION(jpnfl)   ::   zufl  , zvfl  , zwfl     ! interpolated velocity at the float position 
+      REAL(wp), DIMENSION(jpnfl,4) ::   zrkxfl, zrkyfl, zrkzfl   ! RK coefficients
       !!---------------------------------------------------------------------
-      CALL wrk_alloc( jpnfl,    zgifl , zgjfl , zgkfl  , zufl, zvfl, zwfl)
-      CALL wrk_alloc( jpnfl, 4, zrkxfl, zrkyfl, zrkzfl )
       !
       IF( ierror /= 0 ) THEN
@@ -154,6 +151,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpnfl,    zgifl , zgjfl , zgkfl  , zufl, zvfl, zwfl)
-      CALL wrk_dealloc( jpnfl, 4, zrkxfl, zrkyfl, zrkzfl )
       !
    END SUBROUTINE flo_4rk
@@ -178,19 +173,15 @@
       INTEGER  ::   jfl, jind1, jind2, jind3   ! dummy loop indices
       REAL(wp) ::   zsumu, zsumv, zsumw        ! local scalar
-      INTEGER  , POINTER, DIMENSION(:)       ::   iilu, ijlu, iklu   ! nearest neighbour INDEX-u
-      INTEGER  , POINTER, DIMENSION(:)       ::   iilv, ijlv, iklv   ! nearest neighbour INDEX-v
-      INTEGER  , POINTER, DIMENSION(:)       ::   iilw, ijlw, iklw   ! nearest neighbour INDEX-w
-      INTEGER  , POINTER, DIMENSION(:,:)     ::   iidu, ijdu, ikdu   ! 64 nearest neighbour INDEX-u
-      INTEGER  , POINTER, DIMENSION(:,:)     ::   iidv, ijdv, ikdv   ! 64 nearest neighbour INDEX-v
-      INTEGER  , POINTER, DIMENSION(:,:)     ::   iidw, ijdw, ikdw   ! 64 nearest neighbour INDEX-w
-      REAL(wp) , POINTER, DIMENSION(:,:)     ::   zlagxu, zlagyu, zlagzu   ! Lagrange  coefficients
-      REAL(wp) , POINTER, DIMENSION(:,:)     ::   zlagxv, zlagyv, zlagzv   !    -           -
-      REAL(wp) , POINTER, DIMENSION(:,:)     ::   zlagxw, zlagyw, zlagzw   !    -           -
-      REAL(wp) , POINTER, DIMENSION(:,:,:,:) ::   ztufl , ztvfl , ztwfl   ! velocity at choosen time step
+      INTEGER  , DIMENSION(jpnfl)       ::   iilu, ijlu, iklu   ! nearest neighbour INDEX-u
+      INTEGER  , DIMENSION(jpnfl)       ::   iilv, ijlv, iklv   ! nearest neighbour INDEX-v
+      INTEGER  , DIMENSION(jpnfl)       ::   iilw, ijlw, iklw   ! nearest neighbour INDEX-w
+      INTEGER  , DIMENSION(jpnfl,4)     ::   iidu, ijdu, ikdu   ! 64 nearest neighbour INDEX-u
+      INTEGER  , DIMENSION(jpnfl,4)     ::   iidv, ijdv, ikdv   ! 64 nearest neighbour INDEX-v
+      INTEGER  , DIMENSION(jpnfl,4)     ::   iidw, ijdw, ikdw   ! 64 nearest neighbour INDEX-w
+      REAL(wp) , DIMENSION(jpnfl,4)     ::   zlagxu, zlagyu, zlagzu   ! Lagrange  coefficients
+      REAL(wp) , DIMENSION(jpnfl,4)     ::   zlagxv, zlagyv, zlagzv   !    -           -
+      REAL(wp) , DIMENSION(jpnfl,4)     ::   zlagxw, zlagyw, zlagzw   !    -           -
+      REAL(wp) , DIMENSION(jpnfl,4,4,4) ::   ztufl , ztvfl , ztwfl   ! velocity at choosen time step
       !!---------------------------------------------------------------------
-      CALL wrk_alloc( jpnfl,    iilu, ijlu, iklu, iilv, ijlv, iklv, iilw, ijlw, iklw )
-      CALL wrk_alloc( jpnfl, 4, iidu, ijdu, ikdu, iidv, ijdv, ikdv, iidw, ijdw, ikdw )
-      CALL wrk_alloc( jpnfl, 4, zlagxu, zlagyu, zlagzu, zlagxv, zlagyv, zlagzv, zlagxw, zlagyw, zlagzw )
-      CALL wrk_alloc( jpnfl, 4, 4, 4, ztufl , ztvfl , ztwfl )
  
       ! Interpolation of U velocity
@@ -451,8 +442,4 @@
       END DO
       !   
-      CALL wrk_dealloc( jpnfl,    iilu, ijlu, iklu, iilv, ijlv, iklv, iilw, ijlw, iklw )
-      CALL wrk_dealloc( jpnfl, 4, iidu, ijdu, ikdu, iidv, ijdv, ikdv, iidw, ijdw, ikdw )
-      CALL wrk_dealloc( jpnfl, 4, zlagxu, zlagyu, zlagzu, zlagxv, zlagyv, zlagzv, zlagxw, zlagyw, zlagzw )
-      CALL wrk_dealloc( jpnfl, 4, 4, 4, ztufl , ztvfl , ztwfl )
       !   
    END SUBROUTINE flo_interp
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/FLO/floblk.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/FLO/floblk.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/FLO/floblk.F90	(revision 7910)
@@ -16,5 +16,4 @@
    USE in_out_manager  ! I/O manager
    USE lib_mpp         ! distribued memory computing library
-   USE wrk_nemo        ! working array
 
    IMPLICIT NONE
@@ -54,25 +53,21 @@
       REAL(wp), DIMENSION ( 2 )  ::   zsurfx, zsurfy   ! surface of the face of the mesh
 
-      INTEGER  , POINTER, DIMENSION ( : )  ::   iil, ijl, ikl                   ! index of nearest mesh
-      INTEGER  , POINTER, DIMENSION ( : )  ::   iiloc , ijloc              
-      INTEGER  , POINTER, DIMENSION ( : )  ::   iiinfl, ijinfl, ikinfl          ! index of input mesh of the float.
-      INTEGER  , POINTER, DIMENSION ( : )  ::   iioutfl, ijoutfl, ikoutfl       ! index of output mesh of the float.
-      REAL(wp) , POINTER, DIMENSION ( : )  ::   zgifl, zgjfl, zgkfl             ! position of floats, index on 
+      INTEGER  , DIMENSION (jpnfl)  ::   iil, ijl, ikl                   ! index of nearest mesh
+      INTEGER  , DIMENSION (jpnfl)  ::   iiloc , ijloc              
+      INTEGER  , DIMENSION (jpnfl)  ::   iiinfl, ijinfl, ikinfl          ! index of input mesh of the float.
+      INTEGER  , DIMENSION (jpnfl)  ::   iioutfl, ijoutfl, ikoutfl       ! index of output mesh of the float.
+      REAL(wp) , DIMENSION (jpnfl)  ::   zgifl, zgjfl, zgkfl             ! position of floats, index on 
       !                                                                         ! velocity mesh.
-      REAL(wp) , POINTER, DIMENSION ( : )  ::    ztxfl, ztyfl, ztzfl            ! time for a float to quit the mesh
+      REAL(wp) , DIMENSION (jpnfl)  ::    ztxfl, ztyfl, ztzfl            ! time for a float to quit the mesh
       !                                                                         ! across one of the face x,y and z 
-      REAL(wp) , POINTER, DIMENSION ( : )  ::    zttfl                          ! time for a float to quit the mesh 
-      REAL(wp) , POINTER, DIMENSION ( : )  ::    zagefl                         ! time during which, trajectorie of 
+      REAL(wp) , DIMENSION (jpnfl)  ::    zttfl                          ! time for a float to quit the mesh 
+      REAL(wp) , DIMENSION (jpnfl)  ::    zagefl                         ! time during which, trajectorie of 
       !                                                                         ! the float has been computed
-      REAL(wp) , POINTER, DIMENSION ( : )  ::   zagenewfl                       ! new age of float after calculation 
+      REAL(wp) , DIMENSION (jpnfl)  ::   zagenewfl                       ! new age of float after calculation 
       !                                                                         ! of new position
-      REAL(wp) , POINTER, DIMENSION ( : )  ::   zufl, zvfl, zwfl                ! interpolated vel. at float position
-      REAL(wp) , POINTER, DIMENSION ( : )  ::   zudfl, zvdfl, zwdfl             ! velocity diff input/output of mesh
-      REAL(wp) , POINTER, DIMENSION ( : )  ::   zgidfl, zgjdfl, zgkdfl          ! direction index of float
+      REAL(wp) , DIMENSION (jpnfl)  ::   zufl, zvfl, zwfl                ! interpolated vel. at float position
+      REAL(wp) , DIMENSION (jpnfl)  ::   zudfl, zvdfl, zwdfl             ! velocity diff input/output of mesh
+      REAL(wp) , DIMENSION (jpnfl)  ::   zgidfl, zgjdfl, zgkdfl          ! direction index of float
       !!---------------------------------------------------------------------
-      CALL wrk_alloc( jpnfl , iil   , ijl   , ikl   , iiloc  ,  ijloc           )
-      CALL wrk_alloc( jpnfl , iiinfl, ijinfl, ikinfl, iioutfl, ijoutfl, ikoutfl )
-      CALL wrk_alloc( jpnfl , zgifl , zgjfl , zgkfl , ztxfl  , ztyfl  , ztzfl   , zttfl , zagefl, zagenewfl) 
-      CALL wrk_alloc( jpnfl , zufl  , zvfl  , zwfl  , zudfl  , zvdfl  , zwdfl   , zgidfl, zgjdfl, zgkdfl   )
 
       IF( kt == nit000 ) THEN
@@ -371,8 +366,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpnfl , iil   , ijl   , ikl   , iiloc  ,  ijloc           )
-      CALL wrk_dealloc( jpnfl , iiinfl, ijinfl, ikinfl, iioutfl, ijoutfl, ikoutfl )
-      CALL wrk_dealloc( jpnfl , zgifl , zgjfl , zgkfl , ztxfl  , ztyfl  , ztzfl   , zttfl , zagefl, zagenewfl) 
-      CALL wrk_dealloc( jpnfl , zufl  , zvfl  , zwfl  , zudfl  , zvdfl  , zwdfl   , zgidfl, zgjdfl, zgkdfl   )
       !
    END SUBROUTINE flo_blk
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/IOM/prtctl.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/IOM/prtctl.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/IOM/prtctl.F90	(revision 7910)
@@ -13,5 +13,4 @@
    USE in_out_manager   ! I/O manager
    USE lib_mpp          ! distributed memory computing
-   USE wrk_nemo         ! work arrays
 
    IMPLICIT NONE
@@ -94,10 +93,8 @@
       INTEGER ::   overlap, jn, sind, eind, kdir,j_id
       REAL(wp) :: zsum1, zsum2, zvctl1, zvctl2
-      REAL(wp), POINTER, DIMENSION(:,:)   :: ztab2d_1, ztab2d_2
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmask1, zmask2, ztab3d_1, ztab3d_2
-      !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi,jpj, ztab2d_1, ztab2d_2 )
-      CALL wrk_alloc( jpi,jpj,jpk, zmask1, zmask2, ztab3d_1, ztab3d_2 )
+      REAL(wp), DIMENSION(jpi,jpj)   :: ztab2d_1, ztab2d_2
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask1, zmask2, ztab3d_1, ztab3d_2
+      !!----------------------------------------------------------------------
+
 
       ! Arrays, scalars initialization 
@@ -208,6 +205,4 @@
       ENDDO
 
-      CALL wrk_dealloc( jpi,jpj, ztab2d_1, ztab2d_2 )
-      CALL wrk_dealloc( jpi,jpj,jpk, zmask1, zmask2, ztab3d_1, ztab3d_2 )
       !
    END SUBROUTINE prt_ctl
@@ -425,10 +420,9 @@
          nrecil, nrecjl, nldil, nleil, nldjl, nlejl
 
-      INTEGER, POINTER, DIMENSION(:,:) ::   iimpptl, ijmpptl, ilcitl, ilcjtl   ! workspace
+      INTEGER, DIMENSION(isplt,jsplt) ::   iimpptl, ijmpptl, ilcitl, ilcjtl   ! workspace
       REAL(wp) ::   zidom, zjdom            ! temporary scalars
       !!----------------------------------------------------------------------
 
       !
-      CALL wrk_alloc( isplt, jsplt, ilcitl, ilcjtl, iimpptl, ijmpptl )
       !
       !  1. Dimension arrays for subdomains
@@ -578,5 +572,4 @@
       !
       !
-      CALL wrk_dealloc( isplt, jsplt, ilcitl, ilcjtl, iimpptl, ijmpptl )
       !
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90	(revision 7910)
@@ -63,5 +63,4 @@
    USE lbcnfd         ! north fold treatment
    USE in_out_manager ! I/O manager
-   USE wrk_nemo       ! work arrays
 
    IMPLICIT NONE
@@ -2069,8 +2068,7 @@
       !!
       INTEGER  ::   ierror, localcomm
-      REAL(wp) , POINTER , DIMENSION(:) ::   zwork
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc(NUM , zwork)
+      REAL(wp) , DIMENSION(NUM) ::   zwork
+      !!----------------------------------------------------------------------
+      !
       localcomm = mpi_comm_opa
       IF( PRESENT(kcom) )   localcomm = kcom
@@ -2078,5 +2076,4 @@
       CALL mpi_allreduce( ptab, zwork, NUM, mpi_double_precision, mpi_max, localcomm, ierror )
       ptab = zwork
-      CALL wrk_dealloc(NUM , zwork)
       !
    END SUBROUTINE mppmax_real_multiple
@@ -2466,5 +2463,4 @@
       !
       ! Since this is just an init routine and these arrays are of length jpnij
-      ! then don't use wrk_nemo module - just allocate and deallocate.
       ALLOCATE( kice(jpnij), zwork(jpnij), STAT=ierr )
       IF( ierr /= 0 ) THEN
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90	(revision 7910)
@@ -32,5 +32,4 @@
    USE lib_mpp        ! distribued memory computing library
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
 
@@ -118,14 +117,12 @@
       REAL(wp) ::   zck, zfk,      zbw             !   -      -
       REAL(wp) ::   zdepu, zdepv                   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::  zslpml_hmlpu, zslpml_hmlpv
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwz, zww
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zdzr
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zgru, zgrv
+      REAL(wp), DIMENSION(jpi,jpj) ::  zslpml_hmlpu, zslpml_hmlpv
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zwz, zww
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zdzr
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zgru, zgrv
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('ldf_slp')
       !
-      CALL wrk_alloc( jpi,jpj,jpk, zwz, zww, zdzr, zgru, zgrv )
-      CALL wrk_alloc( jpi,jpj, zslpml_hmlpu, zslpml_hmlpv )
 
       zeps   =  1.e-20_wp        !==   Local constant initialization   ==!
@@ -375,6 +372,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,jpk, zwz, zww, zdzr, zgru, zgrv )
-      CALL wrk_dealloc( jpi,jpj, zslpml_hmlpu, zslpml_hmlpv )
       !
       IF( nn_timing == 1 )  CALL timing_stop('ldf_slp')
@@ -409,16 +404,12 @@
       REAL(wp) ::   zdzrho_raw
       REAL(wp) ::   zbeta0, ze3_e1, ze3_e2
-      REAL(wp), POINTER, DIMENSION(:,:)     ::   z1_mlbw
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   zalbet
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zdxrho , zdyrho, zdzrho     ! Horizontal and vertical density gradients
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zti_mlb, ztj_mlb            ! for Griffies operator only
+      REAL(wp), DIMENSION(jpi,jpj)     ::   z1_mlbw
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::   zalbet
+      REAL(wp), DIMENSION(jpi,jpj,jpk,0:1) ::   zdxrho , zdyrho, zdzrho     ! Horizontal and vertical density gradients
+      REAL(wp), DIMENSION(jpi,jpj,0:1,0:1) ::   zti_mlb, ztj_mlb            ! for Griffies operator only
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('ldf_slp_triad')
       !
-      CALL wrk_alloc( jpi,jpj, z1_mlbw )
-      CALL wrk_alloc( jpi,jpj,jpk, zalbet )
-      CALL wrk_alloc( jpi,jpj,jpk,2, zdxrho , zdyrho, zdzrho,              klstart = 0  )
-      CALL wrk_alloc( jpi,jpj,  2,2, zti_mlb, ztj_mlb,        kkstart = 0, klstart = 0  )
       !
       !--------------------------------!
@@ -624,8 +615,4 @@
       CALL lbc_lnk( wslp2, 'W', 1. )      ! lateral boundary confition on wslp2 only   ==>>> gm : necessary ? to be checked
       !
-      CALL wrk_dealloc( jpi,jpj, z1_mlbw )
-      CALL wrk_dealloc( jpi,jpj,jpk, zalbet )
-      CALL wrk_dealloc( jpi,jpj,jpk,2, zdxrho , zdyrho, zdzrho,              klstart = 0  )
-      CALL wrk_dealloc( jpi,jpj,  2,2, zti_mlb, ztj_mlb,        kkstart = 0, klstart = 0  )
       !
       IF( nn_timing == 1 )  CALL timing_stop('ldf_slp_triad')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90	(revision 7910)
@@ -30,5 +30,4 @@
    USE lib_mpp         ! distribued memory computing library
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo        ! work arrays
    USE timing          ! timing
 
@@ -491,10 +490,9 @@
       INTEGER  ::   ji, jj, jk    ! dummy loop indices
       REAL(wp) ::   zfw, ze3w, zn2, z1_f20, zaht, zaht_min, zzaei   ! local scalars
-      REAL(wp), DIMENSION(:,:), POINTER ::   zn, zah, zhw, zross, zaeiw   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zn, zah, zhw, zross, zaeiw   ! 2D workspace
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('ldf_eiv')
       !
-      CALL wrk_alloc( jpi,jpj,   zn, zah, zhw, zross, zaeiw )
       !      
       zn   (:,:) = 0._wp      ! Local initialization
@@ -575,5 +573,4 @@
       END DO
       !  
-      CALL wrk_dealloc( jpi,jpj,   zn, zah, zhw, zross, zaeiw )
       !
       IF( nn_timing == 1 )   CALL timing_stop('ldf_eiv')
@@ -610,10 +607,9 @@
       REAL(wp) ::   zuwk, zuwk1, zuwi, zuwi1   ! local scalars
       REAL(wp) ::   zvwk, zvwk1, zvwj, zvwj1   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zpsi_uw, zpsi_vw
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zpsi_uw, zpsi_vw
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start( 'ldf_eiv_trp')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zpsi_uw, zpsi_vw )
 
       IF( kt == kit000 )  THEN
@@ -658,5 +654,4 @@
       IF( ln_ldfeiv_dia .AND. cdtype == 'TRA' )   CALL ldf_eiv_dia( zpsi_uw, zpsi_vw )
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zpsi_uw, zpsi_vw )
       !
       IF( nn_timing == 1 )   CALL timing_stop( 'ldf_eiv_trp')
@@ -679,6 +674,6 @@
       INTEGER  ::   ji, jj, jk    ! dummy loop indices
       REAL(wp) ::   zztmp   ! local scalar
-      REAL(wp), DIMENSION(:,:)  , POINTER ::   zw2d   ! 2D workspace
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   zw3d   ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zw2d   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zw3d   ! 3D workspace
       !!----------------------------------------------------------------------
       !
@@ -693,5 +688,4 @@
       !
       !                                                  !==  eiv velocities: calculate and output  ==!
-      CALL wrk_alloc( jpi,jpj,jpk,   zw3d )
       !
       zw3d(:,:,jpk) = 0._wp                                    ! bottom value always 0
@@ -720,5 +714,4 @@
       !      
       !
-      CALL wrk_alloc( jpi,jpj,   zw2d )
       !
       zztmp = 0.5_wp * rau0 * rcp 
@@ -792,6 +785,4 @@
       IF( ln_diaptr ) CALL dia_ptr_hst( jp_sal, 'eiv', 0.5 * zw3d )
       !
-      CALL wrk_dealloc( jpi,jpj,   zw2d )
-      CALL wrk_dealloc( jpi,jpj,jpk,   zw3d )
       !
       IF( nn_timing == 1 )  CALL timing_stop( 'ldf_eiv_dia')      
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 7910)
@@ -15,5 +15,4 @@
    !!----------------------------------------------------------------------
    !! * Modules used
-   USE wrk_nemo                 ! Memory Allocation
    USE par_kind                 ! Precision variables
    USE in_out_manager           ! I/O manager
@@ -144,13 +143,10 @@
       REAL(dp) :: rn_dobsini     ! Obs window start date YYYYMMDD.HHMMSS
       REAL(dp) :: rn_dobsend     ! Obs window end date   YYYYMMDD.HHMMSS
-      REAL(wp), POINTER, DIMENSION(:,:) :: &
-         & zglam1, &             ! Model longitudes for profile variable 1
-         & zglam2                ! Model longitudes for profile variable 2
-      REAL(wp), POINTER, DIMENSION(:,:) :: &
-         & zgphi1, &             ! Model latitudes for profile variable 1
-         & zgphi2                ! Model latitudes for profile variable 2
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: &
-         & zmask1, &             ! Model land/sea mask associated with variable 1
-         & zmask2                ! Model land/sea mask associated with variable 2
+      REAL(wp), DIMENSION(jpi,jpj) ::  zglam1   ! Model longitudes for profile variable 1
+      REAL(wp), DIMENSION(jpi,jpj) ::  zglam2   ! Model longitudes for profile variable 2
+      REAL(wp), DIMENSION(jpi,jpj) ::  zgphi1   ! Model latitudes for profile variable 1
+      REAL(wp), DIMENSION(jpi,jpj) ::  zgphi2   ! Model latitudes for profile variable 2
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask1  ! Model land/sea mask associated with variable 1
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask2  ! Model land/sea mask associated with variable 2
 
       NAMELIST/namobs/ln_diaobs, ln_t3d, ln_s3d, ln_sla,              &
@@ -168,10 +164,4 @@
 
       INTEGER :: jnumsstbias
-      CALL wrk_alloc( jpi, jpj, zglam1 )
-      CALL wrk_alloc( jpi, jpj, zglam2 )
-      CALL wrk_alloc( jpi, jpj, zgphi1 )
-      CALL wrk_alloc( jpi, jpj, zgphi2 )
-      CALL wrk_alloc( jpi, jpj, jpk, zmask1 )
-      CALL wrk_alloc( jpi, jpj, jpk, zmask2 )
 
       !-----------------------------------------------------------------------
@@ -492,10 +482,4 @@
       ENDIF
 
-      CALL wrk_dealloc( jpi, jpj, zglam1 )
-      CALL wrk_dealloc( jpi, jpj, zglam2 )
-      CALL wrk_dealloc( jpi, jpj, zgphi1 )
-      CALL wrk_dealloc( jpi, jpj, zgphi2 )
-      CALL wrk_dealloc( jpi, jpj, jpk, zmask1 )
-      CALL wrk_dealloc( jpi, jpj, jpk, zmask2 )
 
    END SUBROUTINE dia_obs_init
@@ -554,34 +538,20 @@
       INTEGER :: jvar              ! Variable number
       INTEGER :: ji, jj            ! Loop counters
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: &
-         & zprofvar1, &            ! Model values for 1st variable in a prof ob
-         & zprofvar2               ! Model values for 2nd variable in a prof ob
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: &
-         & zprofmask1, &           ! Mask associated with zprofvar1
-         & zprofmask2              ! Mask associated with zprofvar2
-      REAL(wp), POINTER, DIMENSION(:,:) :: &
-         & zsurfvar                ! Model values equivalent to surface ob.
-      REAL(wp), POINTER, DIMENSION(:,:) :: &
-         & zglam1,    &            ! Model longitudes for prof variable 1
-         & zglam2,    &            ! Model longitudes for prof variable 2
-         & zgphi1,    &            ! Model latitudes for prof variable 1
-         & zgphi2                  ! Model latitudes for prof variable 2
-#if ! defined key_lim2 && ! defined key_lim3
-      REAL(wp), POINTER, DIMENSION(:,:) :: frld
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprofvar1     ! Model values for 1st variable in a prof ob
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprofvar2     ! Model values for 2nd variable in a prof ob
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprofmask1    ! Mask associated with zprofvar1
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprofmask2    ! Mask associated with zprofvar2
+      REAL(wp), DIMENSION(jpi,jpj) ::   zsurfvar      ! Model values equivalent to surface ob.
+      REAL(wp), DIMENSION(jpi,jpj) ::   zglam1        ! Model longitudes for prof variable 1
+      REAL(wp), DIMENSION(jpi,jpj) ::   zglam2        ! Model longitudes for prof variable 2
+      REAL(wp), DIMENSION(jpi,jpj) ::   zgphi1        ! Model latitudes for prof variable 1
+      REAL(wp), DIMENSION(jpi,jpj) ::   zgphi2        ! Model latitudes for prof variable 2
+#if ! defined key_lim2  ! defined key_lim3
+      REAL(wp), DIMENSION(jpi,jpj) :: frld
 #endif
       LOGICAL :: llnightav        ! Logical for calculating night-time average
 
       !Allocate local work arrays
-      CALL wrk_alloc( jpi, jpj, jpk, zprofvar1 )
-      CALL wrk_alloc( jpi, jpj, jpk, zprofvar2 )
-      CALL wrk_alloc( jpi, jpj, jpk, zprofmask1 )
-      CALL wrk_alloc( jpi, jpj, jpk, zprofmask2 )
-      CALL wrk_alloc( jpi, jpj, zsurfvar )
-      CALL wrk_alloc( jpi, jpj, zglam1 )
-      CALL wrk_alloc( jpi, jpj, zglam2 )
-      CALL wrk_alloc( jpi, jpj, zgphi1 )
-      CALL wrk_alloc( jpi, jpj, zgphi2 )
 #if ! defined key_lim2 && ! defined key_lim3
-      CALL wrk_alloc(jpi,jpj,frld) 
 #endif
 
@@ -693,15 +663,5 @@
       ENDIF
 
-      CALL wrk_dealloc( jpi, jpj, jpk, zprofvar1 )
-      CALL wrk_dealloc( jpi, jpj, jpk, zprofvar2 )
-      CALL wrk_dealloc( jpi, jpj, jpk, zprofmask1 )
-      CALL wrk_dealloc( jpi, jpj, jpk, zprofmask2 )
-      CALL wrk_dealloc( jpi, jpj, zsurfvar )
-      CALL wrk_dealloc( jpi, jpj, zglam1 )
-      CALL wrk_dealloc( jpi, jpj, zglam2 )
-      CALL wrk_dealloc( jpi, jpj, zgphi1 )
-      CALL wrk_dealloc( jpi, jpj, zgphi2 )
 #if ! defined key_lim2 && ! defined key_lim3
-      CALL wrk_dealloc(jpi,jpj,frld)
 #endif
 
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_inter_sup.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_inter_sup.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_inter_sup.F90	(revision 7910)
@@ -10,5 +10,4 @@
    !!---------------------------------------------------------------------
    !! * Modules used
-   USE wrk_nemo        ! Memory Allocation
    USE par_kind        ! Precision variables
    USE dom_oce         ! Domain variables
@@ -125,10 +124,9 @@
          & pgval            ! Stencil at each point
       !! * Local declarations
-      REAL(KIND=wp), POINTER, DIMENSION(:,:,:) ::   zval
+      REAL(KIND=wp), DIMENSION(jpi,jpj,1) ::   zval
       REAL(KIND=wp), DIMENSION(kptsi,kptsj,1,kobs) ::&
          & zgval 
 
       ! Check workspace array and set-up pointer
-      CALL wrk_alloc(jpi,jpj,1,zval) 
 
       ! Set up local "3D" buffer
@@ -154,5 +152,4 @@
 
       ! 'Release' workspace array back to pool
-      CALL wrk_dealloc(jpi,jpj,1,zval) 
 
    END SUBROUTINE obs_int_comm_2d
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_altbias.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_altbias.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_altbias.F90	(revision 7910)
@@ -33,5 +33,4 @@
    USE obs_utils               ! Various observation tools
    USE obs_inter_sup
-   USE wrk_nemo                ! Memory Allocation
 
    IMPLICIT NONE
@@ -99,5 +98,5 @@
          & zglam, &
          & zgphi
-      REAL(wp), POINTER, DIMENSION(:,:) ::   z_altbias
+      REAL(wp), DIMENSION(jpi,jpj) ::   z_altbias
       REAL(wp) :: zlam
       REAL(wp) :: zphi
@@ -107,5 +106,4 @@
       INTEGER :: numaltbias
 
-      CALL wrk_alloc(jpi,jpj,z_altbias) 
 
       IF(lwp)WRITE(numout,*) 
@@ -201,5 +199,4 @@
          & )
          
-      CALL wrk_dealloc(jpi,jpj,z_altbias) 
 
    END SUBROUTINE obs_rea_altbias
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_readmdt.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_readmdt.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_readmdt.F90	(revision 7910)
@@ -12,5 +12,4 @@
    !!   obs_offset_mdt : Remove the offset between the model MDT and the used one
    !!----------------------------------------------------------------------
-   USE wrk_nemo         ! Memory Allocation
    USE par_kind         ! Precision variables
    USE par_oce          ! Domain parameters
@@ -76,10 +75,9 @@
       INTEGER , DIMENSION(:,:,:), ALLOCATABLE ::   igrdi, igrdj
       !
-      REAL(wp), POINTER, DIMENSION(:,:) ::  z_mdt, mdtmask
+      REAL(wp), DIMENSION(jpi,jpj) ::  z_mdt, mdtmask
          
       REAL(wp) :: zlam, zphi, zfill, zinfill    ! local scalar
       !!----------------------------------------------------------------------
 
-      CALL wrk_alloc(jpi,jpj,z_mdt,mdtmask) 
 
       IF(lwp)WRITE(numout,*) 
@@ -167,5 +165,4 @@
          & )
 
-      CALL wrk_dealloc(jpi,jpj,z_mdt,mdtmask) 
       IF(lwp)WRITE(numout,*) ' ------------- '
       !
@@ -192,9 +189,8 @@
       INTEGER  :: ji, jj
       REAL(wp) :: zdxdy, zarea, zeta1, zeta2, zcorr_mdt, zcorr_bcketa, zcorr     ! local scalar
-      REAL(wp), POINTER, DIMENSION(:,:) :: zpromsk
+      REAL(wp), DIMENSION(jpi,jpj) :: zpromsk
       CHARACTER(LEN=14), PARAMETER ::   cpname = 'obs_offset_mdt'
       !!----------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi,jpj, zpromsk )
 
       !  Initialize the local mask, for domain projection 
@@ -258,5 +254,4 @@
       IF ( nn_msshc == 2 ) WRITE(numout,*) '           User defined MSSH correction' 
 
-      CALL wrk_dealloc( jpi,jpj, zpromsk )
       !
    END SUBROUTINE obs_offset_mdt
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_rot_vel.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_rot_vel.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_rot_vel.F90	(revision 7910)
@@ -9,5 +9,4 @@
    !!----------------------------------------------------------------------
    !! * Modules used   
-   USE wrk_nemo                 ! Memory Allocation
    USE par_kind                 ! Precision variables
    USE par_oce                  ! Ocean parameters
@@ -83,5 +82,5 @@
       REAL(wp) :: zcos
       REAL(wp), DIMENSION(1) :: zobsmask
-      REAL(wp), POINTER, DIMENSION(:,:) :: zsingu,zcosgu,zsingv,zcosgv
+      REAL(wp), DIMENSION(jpi,jpj) :: zsingu,zcosgu,zsingv,zcosgv
       INTEGER, DIMENSION(:,:,:), ALLOCATABLE :: &
          & igrdiu, &
@@ -92,5 +91,4 @@
       INTEGER :: jk
 
-      CALL wrk_alloc(jpi,jpj,zsingu,zcosgu,zsingv,zcosgv) 
 
       !-----------------------------------------------------------------------
@@ -226,5 +224,4 @@
          & )
 
-      CALL wrk_dealloc(jpi,jpj,zsingu,zcosgu,zsingv,zcosgv) 
 
    END SUBROUTINE obs_rotvel
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90	(revision 7910)
@@ -20,5 +20,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
 
@@ -91,10 +90,9 @@
       REAL(wp)            ::   zswitch, z1_c1, z1_c2
       REAL(wp)                            ::   zalb_sm, zalb_sf, zalb_st ! albedo of snow melting, freezing, total
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb, zalb_it             ! intermediate variable & albedo of ice (snow free)
+      REAL(wp), DIMENSION(jpi,jpj,SIZE(pt_ice,3)) ::   zalb, zalb_it             ! intermediate variable & albedo of ice (snow free)
       !!---------------------------------------------------------------------
 
       ijpl = SIZE( pt_ice, 3 )                     ! number of ice categories
       
-      CALL wrk_alloc( jpi,jpj,ijpl, zalb, zalb_it )
 
       IF( albd_init == 0 )   CALL albedo_init      ! initialization 
@@ -206,5 +204,4 @@
       END SELECT
       
-      CALL wrk_dealloc( jpi,jpj,ijpl, zalb, zalb_it )
       !
    END SUBROUTINE albedo_ice
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/cyclone.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/cyclone.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/cyclone.F90	(revision 7910)
@@ -21,5 +21,4 @@
    USE in_out_manager  ! I/O manager
    USE geo2ocean       ! tools for projection on ORCA grid
-   USE wrk_nemo        ! work arrays
    USE lib_mpp       
 
@@ -81,5 +80,5 @@
       REAL(wp) ::   zvmax               ! timestep interpolated vmax
       REAL(wp) ::   zrlon, zrlat        ! temporary 
-      REAL(wp), DIMENSION(:,:), POINTER ::   zwnd_x, zwnd_y   ! zonal and meridional components of the wind
+      REAL(wp), DIMENSION(jpi,jpj) ::   zwnd_x, zwnd_y   ! zonal and meridional components of the wind
       REAL(wp), DIMENSION(14,5)    ::   ztct                ! tropical cyclone track data at kt
       !
@@ -89,5 +88,4 @@
       !!--------------------------------------------------------------------
 
-      CALL wrk_alloc( jpi,jpj, zwnd_x, zwnd_y )
 
       !                                         ! ====================== !
@@ -271,5 +269,4 @@
       CALL rot_rep ( zwnd_x, zwnd_y, 'T', 'en->j', pwnd_j ) !rotation of components on ORCA grid
 
-      CALL wrk_dealloc( jpi,jpj, zwnd_x, zwnd_y )
 
    END SUBROUTINE wnd_cyc
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90	(revision 7910)
@@ -37,5 +37,4 @@
    USE ioipsl  , ONLY : ymds2ju, ju2ymds   ! for calendar
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE lbclnk         ! ocean lateral boundary conditions (C1D case)
    
@@ -1145,8 +1144,7 @@
       INTEGER ::   iv              ! indice of V component
       CHARACTER (LEN=100)               ::   clcomp       ! dummy weight name
-      REAL(wp), POINTER, DIMENSION(:,:) ::   utmp, vtmp   ! temporary arrays for vector rotation
-      !!---------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi,jpj,   utmp, vtmp )
+      REAL(wp), DIMENSION(jpi,jpj) ::   utmp, vtmp   ! temporary arrays for vector rotation
+      !!---------------------------------------------------------------------
+      !
       !
       !! (sga: following code should be modified so that pairs arent searched for each time
@@ -1185,5 +1183,4 @@
        END DO
       !
-      CALL wrk_dealloc( jpi,jpj,   utmp, vtmp )
       !
    END SUBROUTINE fld_rot
@@ -1438,10 +1435,8 @@
       CHARACTER (len=5) ::   aname   !
       INTEGER , DIMENSION(:), ALLOCATABLE ::   ddims
-      INTEGER , POINTER, DIMENSION(:,:) ::   data_src
-      REAL(wp), POINTER, DIMENSION(:,:) ::   data_tmp
+      INTEGER , DIMENSION(jpi,jpj) ::   data_src
+      REAL(wp), DIMENSION(jpi,jpj) ::   data_tmp
       !!----------------------------------------------------------------------
       !
-      CALL wrk_alloc( jpi,jpj,   data_src )   ! integer
-      CALL wrk_alloc( jpi,jpj,   data_tmp )
       !
       IF( nxt_wgt > tot_wgts ) THEN
@@ -1562,6 +1557,4 @@
       DEALLOCATE (ddims )
 
-      CALL wrk_dealloc( jpi,jpj, data_src )   ! integer
-      CALL wrk_dealloc( jpi,jpj, data_tmp )
       !
    END SUBROUTINE fld_weight
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90	(revision 7910)
@@ -54,5 +54,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! distribued memory computing library
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
@@ -360,24 +359,21 @@
       INTEGER  ::   ji, jj               ! dummy loop indices
       REAL(wp) ::   zztmp                ! local variable
-      REAL(wp), DIMENSION(:,:), POINTER ::   zwnd_i, zwnd_j    ! wind speed components at T-point
-      REAL(wp), DIMENSION(:,:), POINTER ::   zsq               ! specific humidity at pst
-      REAL(wp), DIMENSION(:,:), POINTER ::   zqlw, zqsb        ! long wave and sensible heat fluxes
-      REAL(wp), DIMENSION(:,:), POINTER ::   zqla, zevap       ! latent heat fluxes and evaporation
-      REAL(wp), DIMENSION(:,:), POINTER ::   Cd                ! transfer coefficient for momentum      (tau)
-      REAL(wp), DIMENSION(:,:), POINTER ::   Ch                ! transfer coefficient for sensible heat (Q_sens)
-      REAL(wp), DIMENSION(:,:), POINTER ::   Ce                ! tansfert coefficient for evaporation   (Q_lat)
-      REAL(wp), DIMENSION(:,:), POINTER ::   zst               ! surface temperature in Kelvin
-      REAL(wp), DIMENSION(:,:), POINTER ::   zt_zu             ! air temperature at wind speed height
-      REAL(wp), DIMENSION(:,:), POINTER ::   zq_zu             ! air spec. hum.  at wind speed height
-      REAL(wp), DIMENSION(:,:), POINTER ::   zU_zu             ! bulk wind speed at height zu  [m/s]
-      REAL(wp), DIMENSION(:,:), POINTER ::   ztpot             ! potential temperature of air at z=rn_zqt [K]
-      REAL(wp), DIMENSION(:,:), POINTER ::   zrhoa             ! density of air   [kg/m^3]
+      REAL(wp), DIMENSION(jpi,jpj) ::   zwnd_i, zwnd_j    ! wind speed components at T-point
+      REAL(wp), DIMENSION(jpi,jpj) ::   zsq               ! specific humidity at pst
+      REAL(wp), DIMENSION(jpi,jpj) ::   zqlw, zqsb        ! long wave and sensible heat fluxes
+      REAL(wp), DIMENSION(jpi,jpj) ::   zqla, zevap       ! latent heat fluxes and evaporation
+      REAL(wp), DIMENSION(jpi,jpj) ::   Cd                ! transfer coefficient for momentum      (tau)
+      REAL(wp), DIMENSION(jpi,jpj) ::   Ch                ! transfer coefficient for sensible heat (Q_sens)
+      REAL(wp), DIMENSION(jpi,jpj) ::   Ce                ! tansfert coefficient for evaporation   (Q_lat)
+      REAL(wp), DIMENSION(jpi,jpj) ::   zst               ! surface temperature in Kelvin
+      REAL(wp), DIMENSION(jpi,jpj) ::   zt_zu             ! air temperature at wind speed height
+      REAL(wp), DIMENSION(jpi,jpj) ::   zq_zu             ! air spec. hum.  at wind speed height
+      REAL(wp), DIMENSION(jpi,jpj) ::   zU_zu             ! bulk wind speed at height zu  [m/s]
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztpot             ! potential temperature of air at z=rn_zqt [K]
+      REAL(wp), DIMENSION(jpi,jpj) ::   zrhoa             ! density of air   [kg/m^3]
       !!---------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('blk_oce')
       !
-      CALL wrk_alloc( jpi,jpj,   zwnd_i, zwnd_j, zsq, zqlw, zqsb, zqla, zevap )
-      CALL wrk_alloc( jpi,jpj,   Cd, Ch, Ce, zst, zt_zu, zq_zu )
-      CALL wrk_alloc( jpi,jpj,   zU_zu, ztpot, zrhoa )
       !
 
@@ -565,7 +561,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,   zwnd_i, zwnd_j, zsq, zqlw, zqsb, zqla, zevap )
-      CALL wrk_dealloc( jpi,jpj,   Cd, Ch, Ce, zst, zt_zu, zq_zu )
-      CALL wrk_dealloc( jpi,jpj,   zU_zu, ztpot, zrhoa )
       !
       IF( nn_timing == 1 )  CALL timing_stop('blk_oce')
@@ -587,15 +580,13 @@
       INTEGER  ::   ji, jj    ! dummy loop indices
       !
-      REAL(wp), DIMENSION(:,:)  , POINTER :: zrhoa
+      REAL(wp), DIMENSION(jpi,jpj)   :: zrhoa
       !
       REAL(wp) ::   zwnorm_f, zwndi_f , zwndj_f               ! relative wind module and components at F-point
       REAL(wp) ::             zwndi_t , zwndj_t               ! relative wind components at T-point
-      REAL(wp), DIMENSION(:,:), POINTER ::   Cd               ! transfer coefficient for momentum      (tau)
+      REAL(wp), DIMENSION(jpi,jpj) ::   Cd               ! transfer coefficient for momentum      (tau)
       !!---------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('blk_ice_tau')
       !
-      CALL wrk_alloc( jpi,jpj, zrhoa )
-      CALL wrk_alloc( jpi,jpj, Cd )
 
       Cd(:,:) = Cd_ice
@@ -699,18 +690,15 @@
       REAL(wp) ::   zcoef_dqlw, zcoef_dqla   !   -      -
       REAL(wp) ::   zztmp, z1_lsub           !   -      -
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   z_qlw         ! long wave heat flux over ice
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   z_qsb         ! sensible  heat flux over ice
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   z_dqlw        ! long wave heat sensitivity over ice
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   z_dqsb        ! sensible  heat sensitivity over ice
-      REAL(wp), DIMENSION(:,:)  , POINTER ::   zevap, zsnw   ! evaporation and snw distribution after wind blowing (LIM3)
-      REAL(wp), DIMENSION(:,:)  , POINTER ::   zrhoa
-      REAL(wp), DIMENSION(:,:)  , POINTER ::   Cd            ! transfer coefficient for momentum      (tau)
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_qlw         ! long wave heat flux over ice
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_qsb         ! sensible  heat flux over ice
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_dqlw        ! long wave heat sensitivity over ice
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_dqsb        ! sensible  heat sensitivity over ice
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zevap, zsnw   ! evaporation and snw distribution after wind blowing (LIM3)
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zrhoa
+      REAL(wp), DIMENSION(jpi,jpj)   ::   Cd            ! transfer coefficient for momentum      (tau)
       !!---------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('blk_ice_flx')
       !
-      CALL wrk_alloc( jpi,jpj,jpl,   z_qlw, z_qsb, z_dqlw, z_dqsb )
-      CALL wrk_alloc( jpi,jpj,       zrhoa)
-      CALL wrk_alloc( jpi,jpj, Cd )
 
       Cd(:,:) = Cd_ice
@@ -787,5 +775,4 @@
 
 #if defined  key_lim3
-      CALL wrk_alloc( jpi,jpj,   zevap, zsnw )
 
       ! --- evaporation --- !
@@ -823,5 +810,4 @@
       END DO
 
-      CALL wrk_dealloc( jpi,jpj,   zevap, zsnw )
 #endif
 
@@ -844,7 +830,4 @@
       ENDIF
 
-      CALL wrk_dealloc( jpi,jpj,jpl,   z_qlw, z_qsb, z_dqlw, z_dqsb )
-      CALL wrk_dealloc( jpi,jpj,       zrhoa )
-      CALL wrk_dealloc( jpi,jpj, Cd )
       !
       IF( nn_timing == 1 )  CALL timing_stop('blk_ice_flx')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare.F90	(revision 7910)
@@ -39,5 +39,4 @@
    USE iom            ! I/O manager library
    USE lib_mpp        ! distribued memory computing library
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
    USE prtctl         ! Print control
@@ -111,23 +110,19 @@
       INTEGER , PARAMETER ::   nb_itt = 4       ! number of itterations
 
-      REAL(wp), DIMENSION(:,:), POINTER  ::  &
-         &  u_star, t_star, q_star, &
-         &  dt_zu, dq_zu,    &
-         &  znu_a,           & !: Nu_air, Viscosity of air
-         &  z0, z0t
-      REAL(wp), DIMENSION(:,:), POINTER ::   zeta_u        ! stability parameter at height zu
-      REAL(wp), DIMENSION(:,:), POINTER ::   zeta_t        ! stability parameter at height zt
-      REAL(wp), DIMENSION(:,:), POINTER ::   ztmp0, ztmp1, ztmp2
+      REAL(wp), DIMENSION(jpi,jpj) ::          u_star, t_star, q_star
+      REAL(wp), DIMENSION(jpi,jpj) ::          dt_zu, dq_zu    
+      REAL(wp), DIMENSION(jpi,jpj) ::          znu_a            !: Nu_air, Viscosity of air
+      REAL(wp), DIMENSION(jpi,jpj) ::          z0, z0t
+      REAL(wp), DIMENSION(jpi,jpj) ::   zeta_u        ! stability parameter at height zu
+      REAL(wp), DIMENSION(jpi,jpj) ::   zeta_t        ! stability parameter at height zt
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztmp0, ztmp1, ztmp2
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('turb_coare')
 
-      CALL wrk_alloc( jpi,jpj,   u_star, t_star, q_star, zeta_u, dt_zu, dq_zu)
-      CALL wrk_alloc( jpi,jpj,   znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 )
 
       l_zt_equal_zu = .FALSE.
       IF( ABS(zu - zt) < 0.01 ) l_zt_equal_zu = .TRUE.    ! testing "zu == zt" is risky with double precision
 
-      IF( .NOT. l_zt_equal_zu )   CALL wrk_alloc( jpi,jpj, zeta_t )
 
       !! First guess of temperature and humidity at height zu:
@@ -246,7 +241,4 @@
       Ce   = ztmp0*q_star/dq_zu
       !
-      CALL wrk_dealloc( jpi,jpj, u_star, t_star, q_star, zeta_u, dt_zu, dq_zu )
-      CALL wrk_dealloc( jpi,jpj, znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 )
-      IF( .NOT. l_zt_equal_zu ) CALL wrk_dealloc( jpi,jpj, zeta_t )
 
       IF( nn_timing == 1 )  CALL timing_stop('turb_coare')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare3p5.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare3p5.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare3p5.F90	(revision 7910)
@@ -38,5 +38,4 @@
    USE iom             ! I/O manager library
    USE lib_mpp         ! distribued memory computing library
-   USE wrk_nemo        ! work arrays
    USE timing          ! Timing
    USE in_out_manager  ! I/O manager
@@ -110,23 +109,20 @@
       INTEGER , PARAMETER ::   nb_itt = 4       ! number of itterations
       !
-      REAL(wp), DIMENSION(:,:), POINTER  ::  &
-         &  u_star, t_star, q_star, &
-         &  dt_zu, dq_zu,    &
-         &  znu_a,           & !: Nu_air, Viscosity of air
-         &  z0, z0t
-      REAL(wp), DIMENSION(:,:), POINTER ::   zeta_u        ! stability parameter at height zu
-      REAL(wp), DIMENSION(:,:), POINTER ::   zeta_t        ! stability parameter at height zt
-      REAL(wp), DIMENSION(:,:), POINTER ::   ztmp0, ztmp1, ztmp2
+
+      REAL(wp), DIMENSION(jpi,jpj) ::   u_star, t_star, q_star 
+      REAL(wp), DIMENSION(jpi,jpj) ::   dt_zu, dq_zu    
+      REAL(wp), DIMENSION(jpi,jpj) ::   znu_a            !: Nu_air, Viscosity of air
+      REAL(wp), DIMENSION(jpi,jpj) ::   z0, z0t
+      REAL(wp), DIMENSION(jpi,jpj) ::   zeta_u        ! stability parameter at height zu
+      REAL(wp), DIMENSION(jpi,jpj) ::   zeta_t        ! stability parameter at height zt
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztmp0, ztmp1, ztmp2
       !!----------------------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('turb_coare3p5')
 
-      CALL wrk_alloc( jpi,jpj, u_star, t_star, q_star, zeta_u, dt_zu, dq_zu)
-      CALL wrk_alloc( jpi,jpj, znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 )
 
       l_zt_equal_zu = .FALSE.
       IF( ABS(zu - zt) < 0.01 ) l_zt_equal_zu = .TRUE.    ! testing "zu == zt" is risky with double precision
 
-      IF( .NOT. l_zt_equal_zu )   CALL wrk_alloc( jpi,jpj, zeta_t )
 
       !! First guess of temperature and humidity at height zu:
@@ -252,7 +248,4 @@
       Ce   = ztmp0*q_star/dq_zu
       !
-      CALL wrk_dealloc( jpi,jpj, u_star, t_star, q_star, zeta_u, dt_zu, dq_zu )
-      CALL wrk_dealloc( jpi,jpj, znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 )
-      IF( .NOT. l_zt_equal_zu ) CALL wrk_dealloc( jpi,jpj, zeta_t )
 
       IF( nn_timing == 1 )  CALL timing_stop('turb_coare3p5')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_ecmwf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_ecmwf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_ecmwf.F90	(revision 7910)
@@ -32,5 +32,4 @@
    USE iom             ! I/O manager library
    USE lib_mpp         ! distribued memory computing library
-   USE wrk_nemo        ! work arrays
    USE timing          ! Timing
    USE in_out_manager  ! I/O manager
@@ -117,17 +116,15 @@
       INTEGER , PARAMETER ::   nb_itt = 4       ! number of itterations
       !
-      REAL(wp), DIMENSION(:,:), POINTER  ::   u_star, t_star, q_star,   &
-         &  dt_zu, dq_zu,    &
-         &  znu_a,           & !: Nu_air, Viscosity of air
-         &  Linv,            & !: 1/L (inverse of Monin Obukhov length...
-         &  z0, z0t, z0q
-      REAL(wp), DIMENSION(:,:), POINTER ::   func_m, func_h
-      REAL(wp), DIMENSION(:,:), POINTER ::   ztmp0, ztmp1, ztmp2
+      REAL(wp), DIMENSION(jpi,jpj) ::   u_star, t_star, q_star   
+      REAL(wp), DIMENSION(jpi,jpj) ::   dt_zu, dq_zu    
+      REAL(wp), DIMENSION(jpi,jpj) ::   znu_a            !: Nu_air, Viscosity of air
+      REAL(wp), DIMENSION(jpi,jpj) ::   Linv             !: 1/L (inverse of Monin Obukhov length...
+      REAL(wp), DIMENSION(jpi,jpj) ::   z0, z0t, z0q
+      REAL(wp), DIMENSION(jpi,jpj) ::   func_m, func_h
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztmp0, ztmp1, ztmp2
       !!----------------------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('turb_ecmwf')
       !
-      CALL wrk_alloc( jpi,jpj,   u_star, t_star, q_star, func_m, func_h, dt_zu, dq_zu, Linv )
-      CALL wrk_alloc( jpi,jpj,   znu_a, z0, z0t, z0q, ztmp0, ztmp1, ztmp2 )
       !
       ! Identical first gess as in COARE, with IFS parameter values though
@@ -281,6 +278,4 @@
       Ce = vkarmn*vkarmn/(func_m*ztmp1)
 
-      CALL wrk_dealloc( jpi,jpj,   u_star, t_star, q_star, func_m, func_h, dt_zu, dq_zu, Linv )
-      CALL wrk_dealloc( jpi,jpj,   znu_a, z0, z0t, z0q, ztmp0, ztmp1, ztmp2 )
       !
       IF( nn_timing == 1 )   CALL timing_stop('turb_ecmwf')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_ncar.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_ncar.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_ncar.F90	(revision 7910)
@@ -34,5 +34,4 @@
    USE iom             ! I/O manager library
    USE lib_mpp         ! distribued memory computing library
-   USE wrk_nemo        ! work arrays
    USE timing          ! Timing
    USE in_out_manager  ! I/O manager
@@ -117,16 +116,14 @@
       INTEGER , PARAMETER ::   nb_itt = 4       ! number of itterations
       !
-      REAL(wp), DIMENSION(:,:), POINTER ::   Cx_n10        ! 10m neutral latent/sensible coefficient
-      REAL(wp), DIMENSION(:,:), POINTER ::   sqrt_Cd_n10   ! root square of Cd_n10
-      REAL(wp), DIMENSION(:,:), POINTER ::   zeta_u        ! stability parameter at height zu
-      REAL(wp), DIMENSION(:,:), POINTER ::   zpsi_h_u
-      REAL(wp), DIMENSION(:,:), POINTER ::   ztmp0, ztmp1, ztmp2
-      REAL(wp), DIMENSION(:,:), POINTER ::   stab          ! stability test integer
+      REAL(wp), DIMENSION(jpi,jpj) ::   Cx_n10        ! 10m neutral latent/sensible coefficient
+      REAL(wp), DIMENSION(jpi,jpj) ::   sqrt_Cd_n10   ! root square of Cd_n10
+      REAL(wp), DIMENSION(jpi,jpj) ::   zeta_u        ! stability parameter at height zu
+      REAL(wp), DIMENSION(jpi,jpj) ::   zpsi_h_u
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztmp0, ztmp1, ztmp2
+      REAL(wp), DIMENSION(jpi,jpj) ::   stab          ! stability test integer
       !!----------------------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('turb_ncar')
       !
-      CALL wrk_alloc( jpi,jpj,   Cx_n10, sqrt_Cd_n10, zeta_u, stab )
-      CALL wrk_alloc( jpi,jpj,   zpsi_h_u, ztmp0, ztmp1, ztmp2 )
       !
       l_zt_equal_zu = .FALSE.
@@ -221,6 +218,4 @@
       END DO
 
-      CALL wrk_dealloc( jpi,jpj,   Cx_n10, sqrt_Cd_n10, zeta_u, stab )
-      CALL wrk_dealloc( jpi,jpj,   zpsi_h_u, ztmp0, ztmp1, ztmp2 )
 
       IF( nn_timing == 1 )   CALL timing_stop('turb_ncar')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 7910)
@@ -50,5 +50,4 @@
    USE iom            ! NetCDF library
    USE lib_mpp        ! distribued memory computing library
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
@@ -237,5 +236,5 @@
       INTEGER ::   jn          ! dummy loop index
       INTEGER ::   ios, inum   ! Local integer
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zacs, zaos
+      REAL(wp), DIMENSION(jpi,jpj) ::   zacs, zaos
       !!
       NAMELIST/namsbc_cpl/  sn_snd_temp , sn_snd_alb  , sn_snd_thick , sn_snd_crt   , sn_snd_co2,      & 
@@ -251,5 +250,4 @@
       IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_init')
       !
-      CALL wrk_alloc( jpi,jpj,   zacs, zaos )
 
       ! ================================ !
@@ -922,5 +920,4 @@
       IF( ln_dm2dc .AND. ln_cpl ) ncpl_qsr_freq = 86400 / ncpl_qsr_freq
 
-      CALL wrk_dealloc( jpi,jpj,   zacs, zaos )
       !
       IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_init')
@@ -990,10 +987,9 @@
       REAL(wp) ::   zcdrag = 1.5e-3        ! drag coefficient
       REAL(wp) ::   zzx, zzy               ! temporary variables
-      REAL(wp), POINTER, DIMENSION(:,:) ::   ztx, zty, zmsk, zemp, zqns, zqsr
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztx, zty, zmsk, zemp, zqns, zqsr
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_rcv')
       !
-      CALL wrk_alloc( jpi,jpj,   ztx, zty, zmsk, zemp, zqns, zqsr )
       !
       IF( ln_mixcpl )   zmsk(:,:) = 1. - xcplmask(:,:,0)
@@ -1311,5 +1307,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,   ztx, zty, zmsk, zemp, zqns, zqsr )
       !
       IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_rcv')
@@ -1356,10 +1351,9 @@
       INTEGER ::   ji, jj   ! dummy loop indices
       INTEGER ::   itx      ! index of taux over ice
-      REAL(wp), POINTER, DIMENSION(:,:) ::   ztx, zty 
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztx, zty 
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_ice_tau')
       !
-      CALL wrk_alloc( jpi,jpj,   ztx, zty )
 
       IF( srcv(jpr_itx1)%laction ) THEN   ;   itx =  jpr_itx1   
@@ -1521,5 +1515,4 @@
       ENDIF
       !   
-      CALL wrk_dealloc( jpi,jpj,   ztx, zty )
       !
       IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_ice_tau')
@@ -1584,16 +1577,12 @@
       !
       INTEGER ::   jl         ! dummy loop index
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zcptn, ztmp, zcptrain, zcptsnw, zicefr, zmsk, zsnw
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zemp_tot, zemp_ice, zemp_oce, ztprecip, zsprecip, zevap_oce, zevap_ice, zdevap_ice
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice
+      REAL(wp), DIMENSION(jpi,jpj) ::   zcptn, ztmp, zcptrain, zcptsnw, zicefr, zmsk, zsnw
+      REAL(wp), DIMENSION(jpi,jpj) ::   zemp_tot, zemp_ice, zemp_oce, ztprecip, zsprecip, zevap_oce, zevap_ice, zdevap_ice
+      REAL(wp), DIMENSION(jpi,jpj) ::   zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_ice_flx')
       !
-      CALL wrk_alloc( jpi,jpj,     zcptn, ztmp, zcptrain, zcptsnw, zicefr, zmsk, zsnw )
-      CALL wrk_alloc( jpi,jpj,     zemp_tot, zemp_ice, zemp_oce, ztprecip, zsprecip, zevap_oce, zevap_ice, zdevap_ice )
-      CALL wrk_alloc( jpi,jpj,     zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice )
-      CALL wrk_alloc( jpi,jpj,jpl, zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice )
 
       IF( ln_mixcpl )   zmsk(:,:) = 1. - xcplmask(:,:,0)
@@ -1980,8 +1969,4 @@
       fr2_i0(:,:) = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice )
 
-      CALL wrk_dealloc( jpi,jpj,     zcptn, ztmp, zcptrain, zcptsnw, zicefr, zmsk, zsnw )
-      CALL wrk_dealloc( jpi,jpj,     zemp_tot, zemp_ice, zemp_oce, ztprecip, zsprecip, zevap_oce, zevap_ice, zdevap_ice )
-      CALL wrk_dealloc( jpi,jpj,     zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice )
-      CALL wrk_dealloc( jpi,jpj,jpl, zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice )
       !
       IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_ice_flx')
@@ -2004,12 +1989,10 @@
       INTEGER ::   isec, info   ! local integer
       REAL(wp) ::   zumax, zvmax
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmp3, ztmp4   
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1
+      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   ztmp3, ztmp4   
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_snd')
       !
-      CALL wrk_alloc( jpi,jpj,       zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 )
-      CALL wrk_alloc( jpi,jpj,jpl,   ztmp3, ztmp4 )
 
       isec = ( kt - nit000 ) * NINT( rdt )        ! date of exchanges
@@ -2490,6 +2473,4 @@
       IF( ssnd(jps_taum  )%laction )  CALL cpl_snd( jps_taum  , isec, RESHAPE ( taum, (/jpi,jpj,1/) ), info )
 
-      CALL wrk_dealloc( jpi,jpj,       zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 )
-      CALL wrk_dealloc( jpi,jpj,jpl,   ztmp3, ztmp4 )
       !
       IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_snd')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! distribued memory computing library
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
    USE lbclnk         ! ocean lateral boundary conditions
@@ -69,11 +68,10 @@
       REAL(wp) ::   z_fwf, z_fwf_nsrf, zsum_fwf, zsum_erp                ! local scalars
       REAL(wp) ::   zsurf_neg, zsurf_pos, zsurf_tospread, zcoef          !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) ::   ztmsk_neg, ztmsk_pos, z_wgt ! 2D workspaces
-      REAL(wp), POINTER, DIMENSION(:,:) ::   ztmsk_tospread, zerp_cor    !   -      -
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztmsk_neg, ztmsk_pos, z_wgt ! 2D workspaces
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztmsk_tospread, zerp_cor    !   -      -
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('sbc_fwb')
       !
-      CALL wrk_alloc( jpi,jpj, ztmsk_neg, ztmsk_pos, ztmsk_tospread, z_wgt, zerp_cor )
       !
       IF( kt == nit000 ) THEN
@@ -208,5 +206,4 @@
       END SELECT
       !
-      CALL wrk_dealloc( jpi,jpj, ztmsk_neg, ztmsk_pos, ztmsk_tospread, z_wgt, zerp_cor )
       !
       IF( nn_timing == 1 )  CALL timing_stop('sbc_fwb')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90	(revision 7910)
@@ -18,5 +18,4 @@
    USE lib_mpp         ! distributed memory computing library
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo        ! work arrays
    USE timing          ! Timing
    USE daymod          ! calendar
@@ -160,5 +159,5 @@
       !!---------------------------------------------------------------------
       INTEGER, INTENT( in  ) ::   ksbc                ! surface forcing type
-      REAL(wp), DIMENSION(:,:), POINTER :: ztmp1, ztmp2
+      REAL(wp), DIMENSION(jpi,jpj) :: ztmp1, ztmp2
       REAL(wp) ::   zcoefu, zcoefv, zcoeff            ! local scalar
       INTEGER  ::   ji, jj, jl, jk                    ! dummy loop indices
@@ -167,5 +166,4 @@
       IF( nn_timing == 1 )  CALL timing_start('cice_sbc_init')
       !
-      CALL wrk_alloc( jpi,jpj, ztmp1, ztmp2 )
       !
       IF(lwp) WRITE(numout,*)'cice_sbc_init'
@@ -284,5 +282,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj, ztmp1, ztmp2 )
       !
       IF( nn_timing == 1 )  CALL timing_stop('cice_sbc_init')
@@ -300,6 +297,6 @@
       !
       INTEGER  ::   ji, jj, jl                   ! dummy loop indices      
-      REAL(wp), DIMENSION(:,:), POINTER :: ztmp, zpice
-      REAL(wp), DIMENSION(:,:,:), POINTER :: ztmpn
+      REAL(wp), DIMENSION(jpi,jpj) :: ztmp, zpice
+      REAL(wp), DIMENSION(jpi,jpj,ncat) :: ztmpn
       REAL(wp) ::   zintb, zintn  ! dummy argument
       !!---------------------------------------------------------------------
@@ -307,6 +304,4 @@
       IF( nn_timing == 1 )  CALL timing_start('cice_sbc_in')
       !
-      CALL wrk_alloc( jpi,jpj, ztmp, zpice )
-      CALL wrk_alloc( jpi,jpj,ncat, ztmpn )
 
       IF( kt == nit000 )  THEN
@@ -509,6 +504,4 @@
       CALL nemo2cice(ztmp,ss_tlty,'F', -1. )
 
-      CALL wrk_dealloc( jpi,jpj, ztmp, zpice )
-      CALL wrk_dealloc( jpi,jpj,ncat, ztmpn )
       !
       IF( nn_timing == 1 )  CALL timing_stop('cice_sbc_in')
@@ -526,10 +519,9 @@
       
       INTEGER  ::   ji, jj, jl                 ! dummy loop indices
-      REAL(wp), DIMENSION(:,:), POINTER :: ztmp1, ztmp2
+      REAL(wp), DIMENSION(jpi,jpj) :: ztmp1, ztmp2
       !!---------------------------------------------------------------------
 
       IF( nn_timing == 1 )  CALL timing_start('cice_sbc_out')
       !
-      CALL wrk_alloc( jpi,jpj, ztmp1, ztmp2 )
       
       IF( kt == nit000 )  THEN
@@ -687,5 +679,4 @@
 ! Release work space
 
-      CALL wrk_dealloc( jpi,jpj, ztmp1, ztmp2 )
       !
       IF( nn_timing == 1 )  CALL timing_stop('cice_sbc_out')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90	(revision 7910)
@@ -58,5 +58,4 @@
    USE lbclnk          ! lateral boundary condition - MPP link
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
    USE timing          ! Timing
 
@@ -110,6 +109,6 @@
       !!
       INTEGER  ::   jl                 ! dummy loop index
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   zalb_os, zalb_cs  ! ice albedo under overcast/clear sky
-      REAL(wp), POINTER, DIMENSION(:,:  )   ::   zutau_ice, zvtau_ice 
+      REAL(wp), DIMENSION(jpi,jpj,jpl)   ::   zalb_os, zalb_cs  ! ice albedo under overcast/clear sky
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zutau_ice, zvtau_ice 
       !!----------------------------------------------------------------------
 
@@ -152,9 +151,7 @@
 
          IF( ln_mixcpl) THEN                                                       ! Case of a mixed Bulk/Coupled formulation
-            CALL wrk_alloc( jpi,jpj    , zutau_ice, zvtau_ice)
                                       CALL sbc_cpl_ice_tau( zutau_ice , zvtau_ice )
             utau_ice(:,:) = utau_ice(:,:) * xcplmask(:,:,0) + zutau_ice(:,:) * ( 1. - xcplmask(:,:,0) )
             vtau_ice(:,:) = vtau_ice(:,:) * xcplmask(:,:,0) + zvtau_ice(:,:) * ( 1. - xcplmask(:,:,0) )
-            CALL wrk_dealloc( jpi,jpj  , zutau_ice, zvtau_ice)
          ENDIF
 
@@ -206,5 +203,4 @@
          ! fr1_i0  , fr2_i0   : 1sr & 2nd fraction of qsr penetration in ice             [%]
          !----------------------------------------------------------------------------------------
-         CALL wrk_alloc( jpi,jpj,jpl, zalb_os, zalb_cs )
          
                                       CALL albedo_ice( t_su, ht_i, ht_s, zalb_cs, zalb_os ) ! cloud-sky and overcast-sky ice albedos
@@ -224,5 +220,4 @@
          END SELECT
 
-         CALL wrk_dealloc( jpi,jpj,jpl, zalb_os, zalb_cs )
 
          !----------------------------!
@@ -524,12 +519,12 @@
       INTEGER  ::   jl      ! dummy loop index
       !
-      REAL(wp), POINTER, DIMENSION(:,:) :: zalb_m    ! Mean albedo over all categories
-      REAL(wp), POINTER, DIMENSION(:,:) :: ztem_m    ! Mean temperature over all categories
-      !
-      REAL(wp), POINTER, DIMENSION(:,:) :: z_qsr_m   ! Mean solar heat flux over all categories
-      REAL(wp), POINTER, DIMENSION(:,:) :: z_qns_m   ! Mean non solar heat flux over all categories
-      REAL(wp), POINTER, DIMENSION(:,:) :: z_evap_m  ! Mean sublimation over all categories
-      REAL(wp), POINTER, DIMENSION(:,:) :: z_dqn_m   ! Mean d(qns)/dT over all categories
-      REAL(wp), POINTER, DIMENSION(:,:) :: z_devap_m ! Mean d(evap)/dT over all categories
+      REAL(wp), DIMENSION(jpi,jpj) :: zalb_m    ! Mean albedo over all categories
+      REAL(wp), DIMENSION(jpi,jpj) :: ztem_m    ! Mean temperature over all categories
+      !
+      REAL(wp), DIMENSION(jpi,jpj) :: z_qsr_m   ! Mean solar heat flux over all categories
+      REAL(wp), DIMENSION(jpi,jpj) :: z_qns_m   ! Mean non solar heat flux over all categories
+      REAL(wp), DIMENSION(jpi,jpj) :: z_evap_m  ! Mean sublimation over all categories
+      REAL(wp), DIMENSION(jpi,jpj) :: z_dqn_m   ! Mean d(qns)/dT over all categories
+      REAL(wp), DIMENSION(jpi,jpj) :: z_devap_m ! Mean d(evap)/dT over all categories
       !!----------------------------------------------------------------------
       !
@@ -538,5 +533,4 @@
       SELECT CASE( k_limflx )                              !==  averaged on all ice categories  ==!
       CASE( 0 , 1 )
-         CALL wrk_alloc( jpi,jpj, z_qsr_m, z_qns_m, z_evap_m, z_dqn_m, z_devap_m)
          !
          z_qns_m  (:,:) = fice_ice_ave ( pqns_ice (:,:,:) )
@@ -556,10 +550,8 @@
          END DO
          !
-         CALL wrk_dealloc( jpi,jpj, z_qsr_m, z_qns_m, z_evap_m, z_dqn_m, z_devap_m)
       END SELECT
       !
       SELECT CASE( k_limflx )                              !==  redistribution on all ice categories  ==!
       CASE( 1 , 2 )
-         CALL wrk_alloc( jpi,jpj, zalb_m, ztem_m )
          !
          zalb_m(:,:) = fice_ice_ave ( palb_ice (:,:,:) )
@@ -571,5 +563,4 @@
          END DO
          !
-         CALL wrk_dealloc( jpi,jpj, zalb_m, ztem_m )
       END SELECT
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90	(revision 7910)
@@ -43,5 +43,4 @@
    USE lbclnk           ! lateral boundary condition - MPP link
    USE lib_mpp          ! MPP library
-   USE wrk_nemo         ! work arrays
    USE iom              ! I/O manager library
    USE in_out_manager   ! I/O manager
@@ -94,9 +93,9 @@
       !!
       INTEGER  ::   ji, jj   ! dummy loop indices
-      REAL(wp), DIMENSION(:,:,:), POINTER :: zalb_os   ! ice albedo under overcast sky
-      REAL(wp), DIMENSION(:,:,:), POINTER :: zalb_cs   ! ice albedo under clear sky
-      REAL(wp), DIMENSION(:,:,:), POINTER :: zalb_ice  ! mean ice albedo
-      REAL(wp), DIMENSION(:,:,:), POINTER :: zsist     ! ice surface temperature (K)
-      REAL(wp), DIMENSION(:,:  ), POINTER :: zutau_ice, zvtau_ice 
+      REAL(wp), DIMENSION(jpi,jpj,1) :: zalb_os   ! ice albedo under overcast sky
+      REAL(wp), DIMENSION(jpi,jpj,1) :: zalb_cs   ! ice albedo under clear sky
+      REAL(wp), DIMENSION(jpi,jpj,1) :: zalb_ice  ! mean ice albedo
+      REAL(wp), DIMENSION(jpi,jpj,1) :: zsist     ! ice surface temperature (K)
+      REAL(wp), DIMENSION(jpi,jpj) :: zutau_ice, zvtau_ice 
       !!----------------------------------------------------------------------
 
@@ -121,6 +120,4 @@
 # endif
 
-         CALL wrk_alloc( jpi,jpj  , zutau_ice, zvtau_ice)
-         CALL wrk_alloc( jpi,jpj,1, zalb_os, zalb_cs, zalb_ice, zsist )
 
          !  Bulk Formulea !
@@ -245,6 +242,4 @@
 # endif
          !
-         CALL wrk_dealloc( jpi,jpj  , zutau_ice, zvtau_ice)
-         CALL wrk_dealloc( jpi,jpj,1, zalb_os, zalb_cs, zalb_ice, zsist )
          !
       ENDIF                                    ! End sea-ice time step only
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE fldread         ! read input field at current time step
    USE lbclnk          !
-   USE wrk_nemo        ! Memory allocation
    USE timing          ! Timing
    USE lib_fortran     ! glob_sum
@@ -94,12 +93,11 @@
       INTEGER               :: ji, jj, jk           ! loop index
       INTEGER               :: ikt, ikb             ! loop index
-      REAL(wp), DIMENSION (:,:), POINTER :: zt_frz, zdep ! freezing temperature (zt_frz) at depth (zdep) 
-      REAL(wp), DIMENSION(:,:,:), POINTER :: zfwfisf3d, zqhcisf3d, zqlatisf3d
-      REAL(wp), DIMENSION(:,:  ), POINTER :: zqhcisf2d
+      REAL(wp), DIMENSION (jpi,jpj) :: zt_frz, zdep ! freezing temperature (zt_frz) at depth (zdep) 
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfwfisf3d, zqhcisf3d, zqlatisf3d
+      REAL(wp), DIMENSION(jpi,jpj) :: zqhcisf2d
       !!---------------------------------------------------------------------
       !
       IF( MOD( kt-1, nn_fsbc) == 0 ) THEN
          ! allocation
-         CALL wrk_alloc( jpi,jpj, zt_frz, zdep  )
 
          ! compute salt and heat flux
@@ -173,6 +171,4 @@
         ! Diagnostics
         IF ( iom_use('fwfisf3d') .OR. iom_use('qlatisf3d') .OR. iom_use('qhcisf3d') .OR. iom_use('qhcisf')) THEN
-            CALL wrk_alloc( jpi,jpj,jpk, zfwfisf3d, zqhcisf3d, zqlatisf3d )
-            CALL wrk_alloc( jpi,jpj,     zqhcisf2d                        )
 
             zfwfisf3d(:,:,:) = 0.0_wp                         ! 3d ice shelf melting (kg/m2/s)
@@ -201,9 +197,6 @@
             CALL iom_put('qhcisf'   , zqhcisf2d (:,:  ))
 
-            CALL wrk_dealloc( jpi,jpj,jpk, zfwfisf3d, zqhcisf3d, zqlatisf3d )
-            CALL wrk_dealloc( jpi,jpj,     zqhcisf2d                        )
           END IF
           ! deallocation
-          CALL wrk_dealloc( jpi,jpj, zt_frz, zdep  )
           !
         END IF
@@ -472,7 +465,7 @@
       REAL(wp) ::   zeps = 1.e-20_wp        
       REAL(wp) ::   zerr
-      REAL(wp), DIMENSION(:,:), POINTER ::   zfrz
-      REAL(wp), DIMENSION(:,:), POINTER ::   zgammat, zgammas 
-      REAL(wp), DIMENSION(:,:), POINTER ::   zfwflx, zhtflx, zhtflx_b
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfrz
+      REAL(wp), DIMENSION(jpi,jpj) ::   zgammat, zgammas 
+      REAL(wp), DIMENSION(jpi,jpj) ::   zfwflx, zhtflx, zhtflx_b
       LOGICAL  ::   lit
       !!---------------------------------------------------------------------
@@ -484,6 +477,4 @@
       IF( nn_timing == 1 )  CALL timing_start('sbc_isf_cav')
       !
-      CALL wrk_alloc( jpi,jpj, zfrz  , zgammat, zgammas  )
-      CALL wrk_alloc( jpi,jpj, zfwflx, zhtflx , zhtflx_b )
 
       ! initialisation
@@ -578,6 +569,4 @@
       CALL iom_put('isfgammas', zgammas)
       ! 
-      CALL wrk_dealloc( jpi,jpj, zfrz  , zgammat, zgammas  )
-      CALL wrk_dealloc( jpi,jpj, zfwflx, zhtflx , zhtflx_b )
       !
       IF( nn_timing == 1 )  CALL timing_stop('sbc_isf_cav')
@@ -600,5 +589,5 @@
       INTEGER  :: ikt                        
       INTEGER  :: ji, jj                     ! loop index
-      REAL(wp), DIMENSION(:,:), POINTER :: zustar           ! U, V at T point and friction velocity
+      REAL(wp), DIMENSION(jpi,jpj) :: zustar           ! U, V at T point and friction velocity
       REAL(wp) :: zdku, zdkv                 ! U, V shear 
       REAL(wp) :: zPr, zSc, zRc              ! Prandtl, Scmidth and Richardson number 
@@ -615,5 +604,4 @@
       REAL(wp), DIMENSION(2) :: zts, zab
       !!---------------------------------------------------------------------
-      CALL wrk_alloc( jpi,jpj, zustar )
       !
       SELECT CASE ( nn_gammablk )
@@ -703,5 +691,4 @@
          CALL lbc_lnk(pgs(:,:),'T',1.)
       END SELECT
-      CALL wrk_dealloc( jpi,jpj, zustar )
       !
    END SUBROUTINE sbc_isf_gammats
@@ -719,5 +706,5 @@
       !
       REAL(wp) :: ze3, zhk
-      REAL(wp), DIMENSION(:,:), POINTER :: zhisf_tbl ! thickness of the tbl
+      REAL(wp), DIMENSION(jpi,jpj) :: zhisf_tbl ! thickness of the tbl
 
       INTEGER :: ji, jj, jk                  ! loop index
@@ -725,5 +712,4 @@
       !!----------------------------------------------------------------------
       ! allocation
-      CALL wrk_alloc( jpi,jpj, zhisf_tbl)
       
       ! initialisation
@@ -816,5 +802,4 @@
 
       ! deallocation
-      CALL wrk_dealloc( jpi,jpj, zhisf_tbl )      
       !
    END SUBROUTINE sbc_isf_tbl
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE iom            ! I/O module
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory allocation
 
    IMPLICIT NONE
@@ -106,7 +105,6 @@
       INTEGER  ::   z_err = 0 ! dummy integer for error handling
       !!----------------------------------------------------------------------
-      REAL(wp), DIMENSION(:,:), POINTER       ::   ztfrz   ! freezing point used for temperature correction
-      !
-      CALL wrk_alloc( jpi,jpj, ztfrz)
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztfrz   ! freezing point used for temperature correction
+      !
       !
       !                                            !-------------------!
@@ -168,5 +166,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj, ztfrz)
       !
    END SUBROUTINE sbc_rnf
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE lib_mpp        ! distribued memory computing library
    USE fldread	       ! read input fields
-   USE wrk_nemo       !
 
    IMPLICIT NONE
@@ -89,10 +88,8 @@
       REAL(wp) ::  ztransp, zfac, ztemp, zsp0
       REAL(wp) ::  zdep_u, zdep_v, zkh_u, zkh_v, zda_u, zda_v
-      REAL(wp), DIMENSION(:,:)  , POINTER ::   zk_t, zk_u, zk_v, zu0_sd, zv0_sd   ! 2D workspace
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   ze3divh                            ! 3D workspace
-      !!---------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi,jpj,jpk,   ze3divh )
-      CALL wrk_alloc( jpi,jpj,       zk_t, zk_u, zk_v, zu0_sd, zv0_sd )
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zk_t, zk_u, zk_v, zu0_sd, zv0_sd   ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze3divh                            ! 3D workspace
+      !!---------------------------------------------------------------------
+      !
       !
       !
@@ -183,6 +180,4 @@
       CALL iom_put( "wstokes",  wsd  )
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   ze3divh )
-      CALL wrk_dealloc( jpi,jpj,       zk_t, zk_u, zk_v, zu0_sd, zv0_sd )
       !
    END SUBROUTINE sbc_stokes
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90	(revision 7910)
@@ -34,5 +34,4 @@
    USE prtctl         ! Print control
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
    USE sbcwave        ! wave module
@@ -89,11 +88,10 @@
       !
       INTEGER ::   jk   ! dummy loop index
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zun, zvn, zwn
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt, ztrds   ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zun, zvn, zwn
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrdt, ztrds   ! 3D workspace
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_adv')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zun, zvn, zwn )
       !
       !                                          ! set time step
@@ -146,5 +144,4 @@
       !
       IF( l_trdtra )   THEN                    !* Save ta and sa trends
-         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem)
          ztrds(:,:,:) = tsa(:,:,:,jp_sal)
@@ -175,5 +172,4 @@
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_totad, ztrdt )
          CALL trd_tra( kt, 'TRA', jp_sal, jptra_totad, ztrds )
-         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds )
       ENDIF
       !                                              ! print mean trends (used for debugging)
@@ -183,5 +179,4 @@
       IF( nn_timing == 1 )  CALL timing_stop( 'tra_adv' )
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zun, zvn, zwn )
       !                                          
    END SUBROUTINE tra_adv
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE trc_oce        ! share passive tracers/Ocean variables
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -80,10 +79,9 @@
       REAL(wp) ::   zC2t_u, zC4t_u   ! local scalars
       REAL(wp) ::   zC2t_v, zC4t_v   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwx, zwy, zwz, ztu, ztv, ztw
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwx, zwy, zwz, ztu, ztv, ztw
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_adv_cen')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zwx, zwy, zwz, ztu, ztv, ztw )
       !
       IF( kt == kit000 )  THEN
@@ -209,5 +207,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zwx, zwy, zwz, ztu, ztv, ztw )
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_adv_cen')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE lbclnk         ! ocean lateral boundary condition (or mpp link) 
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -88,6 +87,6 @@
       REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk, zC2t_u, zC4t_u   !   -      -
       REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk, zC2t_v, zC4t_v   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwi, zwx, zwy, zwz, ztu, ztv, zltu, zltv, ztw
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdx, ztrdy, ztrdz, zptry
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwi, zwx, zwy, zwz, ztu, ztv, zltu, zltv, ztw
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrdx, ztrdy, ztrdz, zptry
       REAL(wp), POINTER, DIMENSION(:,:)   :: z2d
       !!----------------------------------------------------------------------
@@ -95,5 +94,4 @@
       IF( nn_timing == 1 )  CALL timing_start('tra_adv_fct')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zwi, zwx, zwy, zwz, ztu, ztv, zltu, zltv, ztw )
       !
       IF( kt == kit000 )  THEN
@@ -112,10 +110,8 @@
       !
       IF( l_trd .OR. l_hst )  THEN
-         CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz )
          ztrdx(:,:,:) = 0._wp   ;    ztrdy(:,:,:) = 0._wp   ;   ztrdz(:,:,:) = 0._wp
       ENDIF
       !
       IF( l_ptr ) THEN  
-         CALL wrk_alloc( jpi, jpj, jpk, zptry )
          zptry(:,:,:) = 0._wp
       ENDIF
@@ -331,7 +327,4 @@
       END DO                     ! end of tracer loop
       !
-                              CALL wrk_dealloc( jpi,jpj,jpk,    zwi, zwx, zwy, zwz, ztu, ztv, zltu, zltv, ztw )
-      IF( l_trd .OR. l_hst )  CALL wrk_dealloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz )
-      IF( l_ptr )             CALL wrk_dealloc( jpi, jpj, jpk, zptry )
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_adv_fct')
@@ -376,16 +369,13 @@
       REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk   !   -      -
       REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:  )   ::   zwx_sav , zwy_sav
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   zwi, zwx, zwy, zwz, zhdiv, zwzts, zwz_sav
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   ztrdx, ztrdy, ztrdz
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zptry
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   ztrs
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zwx_sav , zwy_sav
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::   zwi, zwx, zwy, zwz, zhdiv, zwzts, zwz_sav
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::   ztrdx, ztrdy, ztrdz
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zptry
+      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt+1) ::   ztrs
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_adv_fct_zts')
       !
-      CALL wrk_alloc( jpi,jpj,             zwx_sav, zwy_sav )
-      CALL wrk_alloc( jpi,jpj,jpk,         zwx, zwy, zwz, zwi, zhdiv, zwzts, zwz_sav )
-      CALL wrk_alloc( jpi,jpj,jpk,kjpt+1,  ztrs )
       !
       IF( kt == kit000 )  THEN
@@ -404,10 +394,8 @@
       !
       IF( l_trd .OR. l_hst )  THEN
-         CALL wrk_alloc( jpi,jpj,jpk,   ztrdx, ztrdy, ztrdz )
          ztrdx(:,:,:) = 0._wp  ;    ztrdy(:,:,:) = 0._wp  ;   ztrdz(:,:,:) = 0._wp
       ENDIF
       !
       IF( l_ptr ) THEN  
-         CALL wrk_alloc( jpi, jpj,jpk, zptry )
          zptry(:,:,:) = 0._wp
       ENDIF
@@ -621,9 +609,4 @@
       END DO
       !
-                              CALL wrk_alloc( jpi,jpj,             zwx_sav, zwy_sav )
-                              CALL wrk_alloc( jpi,jpj, jpk,        zwx, zwy, zwz, zwi, zhdiv, zwzts, zwz_sav )
-                              CALL wrk_alloc( jpi,jpj,jpk,kjpt+1,  ztrs )
-      IF( l_trd .OR. l_hst )  CALL wrk_dealloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz )
-      IF( l_ptr )             CALL wrk_dealloc( jpi, jpj, jpk, zptry )
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_adv_fct_zts')
@@ -653,10 +636,9 @@
       REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn    ! local scalars
       REAL(wp) ::   zau, zbu, zcu, zav, zbv, zcv, zup, zdo            !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo, zbup, zbdo
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zbetup, zbetdo, zbup, zbdo
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('nonosc')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zbetup, zbetdo, zbup, zbdo )
       !
       zbig  = 1.e+40_wp
@@ -734,5 +716,4 @@
       CALL lbc_lnk( paa, 'U', -1. )   ;   CALL lbc_lnk( pbb, 'V', -1. )   ! lateral boundary condition (changed sign)
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zbetup, zbetdo, zbup, zbdo )
       !
       IF( nn_timing == 1 )  CALL timing_stop('nonosc')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90	(revision 7910)
@@ -19,5 +19,4 @@
    USE iom            ! IOM library
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
 
@@ -95,13 +94,10 @@
       INTEGER, DIMENSION(3) ::   ilocu      !
       INTEGER, DIMENSION(2) ::   ilocs      !
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zpsim_u, zpsim_v, zmld, zbm, zhu, zhv, zn2, zLf_NH, zLf_MH
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpsi_uw, zpsi_vw
-      INTEGER, POINTER, DIMENSION(:,:) :: inml_mle
+      REAL(wp), DIMENSION(jpi,jpj) :: zpsim_u, zpsim_v, zmld, zbm, zhu, zhv, zn2, zLf_NH, zLf_MH
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpsi_uw, zpsi_vw
+      INTEGER, DIMENSION(jpi,jpj) :: inml_mle
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_adv_mle')
-      CALL wrk_alloc( jpi, jpj, zpsim_u, zpsim_v, zmld, zbm, zhu, zhv, zn2, zLf_NH, zLf_MH)
-      CALL wrk_alloc( jpi, jpj, jpk, zpsi_uw, zpsi_vw)
-      CALL wrk_alloc( jpi, jpj, inml_mle)
       !
       !                                      !==  MLD used for MLE  ==!
@@ -256,7 +252,4 @@
          CALL iom_put( "psiv_mle", zpsi_vw )    ! j-mle streamfunction
       ENDIF
-      CALL wrk_dealloc( jpi, jpj, zpsim_u, zpsim_v, zmld, zbm, zhu, zhv, zn2, zLf_NH, zLf_MH)
-      CALL wrk_dealloc( jpi, jpj, jpk, zpsi_uw, zpsi_vw)
-      CALL wrk_dealloc( jpi, jpj, inml_mle)
 
       IF( nn_timing == 1 )  CALL timing_stop('tra_adv_mle')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90	(revision 7910)
@@ -27,5 +27,4 @@
    !
    USE iom
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -90,11 +89,10 @@
       REAL(wp) ::   zv, z0v, zzwy, z0w   !   -      -
       REAL(wp) ::   zalpha               !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zslpx, zslpy   ! 3D workspace
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwx  , zwy     ! -      - 
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zslpx, zslpy   ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwx  , zwy     ! -      - 
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_adv_mus')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zslpx, zslpy, zwx, zwy )
       !
       IF( kt == kit000 )  THEN
@@ -279,5 +277,4 @@
       END DO                     ! end of tracer loop
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zslpx, zslpy, zwx, zwy )
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_adv_mus')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90	(revision 7910)
@@ -25,5 +25,4 @@
    USE lbclnk          ! ocean lateral boundary condition (or mpp link)
    USE in_out_manager  ! I/O manager
-   USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
    USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -138,8 +137,7 @@
       INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices
       REAL(wp) ::   ztra, zbtr, zdir, zdx, zmsk   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwx, zfu, zfc, zfd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwx, zfu, zfc, zfd
       !----------------------------------------------------------------------
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zwx, zfu, zfc, zfd )
       !                                                          ! ===========
       DO jn = 1, kjpt                                            ! tracer loop
@@ -234,5 +232,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zwx, zfu, zfc, zfd )
       !
    END SUBROUTINE tra_adv_qck_i
@@ -254,8 +251,7 @@
       INTEGER  :: ji, jj, jk, jn   ! dummy loop indices
       REAL(wp) :: ztra, zbtr, zdir, zdx, zmsk   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwy, zfu, zfc, zfd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwy, zfu, zfc, zfd
       !----------------------------------------------------------------------
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zwy, zfu, zfc, zfd )
       !
       !                                                          ! ===========
@@ -359,5 +355,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zwy, zfu, zfc, zfd )
       !
    END SUBROUTINE tra_adv_qck_j
@@ -377,8 +372,7 @@
       !
       INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwz
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi,jpj,jpk,   zwz )
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwz
+      !!----------------------------------------------------------------------
+      !
       !
       zwz(:,:, 1 ) = 0._wp       ! surface & bottom values set to zero for all tracers
@@ -421,5 +415,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zwz )
       !
    END SUBROUTINE tra_adv_cen2_k
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90	(revision 7910)
@@ -26,5 +26,4 @@
    USE lbclnk         ! ocean lateral boundary condition (or mpp link)
    USE in_out_manager ! I/O manager
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -101,10 +100,9 @@
       REAL(wp) ::   zfp_ui, zfm_ui, zcenut, ztak, zfp_wk, zfm_wk   !   -      -
       REAL(wp) ::   zfp_vj, zfm_vj, zcenvt, zeeu, zeev, z_hdivn    !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztu, ztv, zltu, zltv, zti, ztw
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztu, ztv, zltu, zltv, zti, ztw
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_adv_ubs')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   ztu, ztv, zltu, zltv, zti, ztw )
       !
       IF( kt == kit000 )  THEN
@@ -285,5 +283,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   ztu, ztv, zltu, zltv, zti, ztw )
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_adv_ubs')
@@ -313,10 +310,9 @@
       INTEGER  ::   ikm1         ! local integer
       REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zbetup, zbetdo
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('nonosc_z')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zbetup, zbetdo )
       !
       zbig  = 1.e+40_wp
@@ -387,5 +383,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zbetup, zbetdo )
       !
       IF( nn_timing == 1 )  CALL timing_stop('nonosc_z')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE lib_mpp        ! distributed memory computing library
    USE prtctl         ! Print control
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -77,5 +76,5 @@
       !
       INTEGER  ::   ji, jj    ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrdt
       !!----------------------------------------------------------------------
       !
@@ -83,5 +82,4 @@
       !
       IF( l_trdtra )   THEN         ! Save the input temperature trend
-         CALL wrk_alloc( jpi,jpj,jpk,   ztrdt )
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem)
       ENDIF
@@ -98,5 +96,4 @@
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:)
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbc, ztrdt )
-         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdt )
       ENDIF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90	(revision 7910)
@@ -36,5 +36,4 @@
    USE lbclnk         ! ocean lateral boundary conditions
    USE prtctl         ! Print control
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -106,5 +105,5 @@
       INTEGER, INTENT( in ) ::   kt   ! ocean time-step
       !
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdt, ztrds
       !!----------------------------------------------------------------------
       !
@@ -112,5 +111,4 @@
       !
       IF( l_trdtra )   THEN                         !* Save the input trends
-         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem)
          ztrds(:,:,:) = tsa(:,:,:,jp_sal)
@@ -150,5 +148,4 @@
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbl, ztrdt )
          CALL trd_tra( kt, 'TRA', jp_sal, jptra_bbl, ztrds )
-         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds )
       ENDIF
       !
@@ -186,10 +183,9 @@
       INTEGER  ::   ik           ! local integers
       REAL(wp) ::   zbtr         ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:) :: zptb
+      REAL(wp), DIMENSION(jpi,jpj) :: zptb
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_bbl_dif')
       !
-      CALL wrk_alloc( jpi, jpj, zptb )
       !
       DO jn = 1, kjpt                                     ! tracer loop
@@ -216,5 +212,4 @@
       END DO                                                ! end tracer
       !                                                     ! ===========
-      CALL wrk_dealloc( jpi, jpj, zptb )
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_bbl_dif')
@@ -497,5 +492,5 @@
       INTEGER ::   ii0, ii1, ij0, ij1   ! local integer
       INTEGER ::   ios                  !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) :: zmbk
+      REAL(wp), DIMENSION(jpi,jpj) :: zmbk
       !
       NAMELIST/nambbl/ nn_bbl_ldf, nn_bbl_adv, rn_ahtbbl, rn_gambbl
@@ -540,8 +535,6 @@
       END DO
       ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk
-      CALL wrk_alloc( jpi, jpj, zmbk )
       zmbk(:,:) = REAL( mbku_d(:,:), wp )   ;   CALL lbc_lnk(zmbk,'U',1.)   ;   mbku_d(:,:) = MAX( INT( zmbk(:,:) ), 1 )
       zmbk(:,:) = REAL( mbkv_d(:,:), wp )   ;   CALL lbc_lnk(zmbk,'V',1.)   ;   mbkv_d(:,:) = MAX( INT( zmbk(:,:) ), 1 )
-      CALL wrk_dealloc( jpi, jpj, zmbk )
 
       !                                 !* sign of grad(H) at u- and v-points
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90	(revision 7910)
@@ -35,5 +35,4 @@
    USE lib_mpp        ! MPP library
    USE prtctl         ! Print control
-   USE wrk_nemo       ! Memory allocation
    USE timing         ! Timing
    USE iom
@@ -94,12 +93,10 @@
       !
       INTEGER ::   ji, jj, jk, jn   ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  zts_dta, ztrdts
+      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) ::  zts_dta, ztrdts
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('tra_dmp')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,jpts,   zts_dta )
       IF( l_trdtra )   THEN                    !* Save ta and sa trends
-         CALL wrk_alloc( jpi,jpj,jpk,jpts,   ztrdts ) 
          ztrdts(:,:,:,:) = tsa(:,:,:,:) 
       ENDIF
@@ -154,5 +151,4 @@
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_dmp, ztrdts(:,:,:,jp_tem) )
          CALL trd_tra( kt, 'TRA', jp_sal, jptra_dmp, ztrdts(:,:,:,jp_sal) )
-         CALL wrk_dealloc( jpi,jpj,jpk,jpts,   ztrdts ) 
       ENDIF
       !                           ! Control print
@@ -160,5 +156,4 @@
          &                       tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' )
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,jpts,   zts_dta )
       !
       IF( nn_timing == 1 )   CALL timing_stop('tra_dmp')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90	(revision 7910)
@@ -30,5 +30,4 @@
    USE lib_mpp        ! distribued memory computing library
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo       ! Memory allocation
    USE timing         ! Timing
 
@@ -58,5 +57,5 @@
       INTEGER, INTENT( in ) ::   kt   ! ocean time-step index
       !!
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdt, ztrds
       !!----------------------------------------------------------------------
       !
@@ -64,5 +63,4 @@
       !
       IF( l_trdtra )   THEN                    !* Save ta and sa trends
-         CALL wrk_alloc( jpi,jpj,jpk,   ztrdt, ztrds ) 
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
          ztrds(:,:,:) = tsa(:,:,:,jp_sal)
@@ -85,5 +83,4 @@
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_ldf, ztrdt )
          CALL trd_tra( kt, 'TRA', jp_sal, jptra_ldf, ztrds )
-         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdt, ztrds ) 
       ENDIF
       !                                        !* print mean trends (used for debugging)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90	(revision 7910)
@@ -30,5 +30,4 @@
    USE phycst         ! physical constants
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -111,12 +110,10 @@
       REAL(wp) ::  zmskv, zahv_w, zabe2, zcof2, zcoef4   !   -      -
       REAL(wp) ::  zcoef0, ze3w_2, zsign, z2dt, z1_2dt   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zdkt, zdk1t, z2d
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdit, zdjt, zftu, zftv, ztfw 
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zdkt, zdk1t, z2d
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdit, zdjt, zftu, zftv, ztfw 
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_ldf_iso')
       !
-      CALL wrk_alloc( jpi,jpj,       zdkt, zdk1t, z2d ) 
-      CALL wrk_alloc( jpi,jpj,jpk,   zdit, zdjt , zftu, zftv, ztfw  ) 
       !
       IF( kt == kit000 )  THEN
@@ -388,6 +385,4 @@
       !                                                           ! ===============
       !
-      CALL wrk_dealloc( jpi, jpj,      zdkt, zdk1t, z2d ) 
-      CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt , zftu, zftv, ztfw  ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_ldf_iso')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap_blp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap_blp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap_blp.F90	(revision 7910)
@@ -25,5 +25,4 @@
    USE lib_mpp        ! distribued memory computing library
    USE timing         ! Timing
-   USE wrk_nemo       ! Memory allocation
    USE iom
 
@@ -87,5 +86,5 @@
       INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices
       REAL(wp) ::   zsign            ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztu, ztv, zaheeu, zaheev
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztu, ztv, zaheeu, zaheev
       !!----------------------------------------------------------------------
       !
@@ -98,5 +97,4 @@
       ENDIF
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   ztu, ztv, zaheeu, zaheev ) 
       !
       l_hst = .FALSE.
@@ -169,5 +167,4 @@
       !                             ! ==================
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   ztu, ztv, zaheeu, zaheev ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_ldf_lap')
@@ -203,13 +200,11 @@
       !
       INTEGER ::   ji, jj, jk, jn   ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zlap         ! laplacian at t-point
-      REAL(wp), POINTER, DIMENSION(:,:,:)   :: zglu, zglv   ! bottom GRADh of the laplacian (u- and v-points)
-      REAL(wp), POINTER, DIMENSION(:,:,:)   :: zgui, zgvi   ! top    GRADh of the laplacian (u- and v-points)
+      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt) :: zlap         ! laplacian at t-point
+      REAL(wp), DIMENSION(jpi,jpj,kjpt)   :: zglu, zglv   ! bottom GRADh of the laplacian (u- and v-points)
+      REAL(wp), DIMENSION(jpi,jpj,kjpt)   :: zgui, zgvi   ! top    GRADh of the laplacian (u- and v-points)
       !!---------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_ldf_blp')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,kjpt,   zlap ) 
-      CALL wrk_alloc( jpi,jpj,    kjpt,   zglu, zglv, zgui, zgvi ) 
       !
       IF( kt == kit000 .AND. lwp )  THEN
@@ -253,6 +248,4 @@
       END SELECT
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,kjpt,   zlap ) 
-      CALL wrk_dealloc( jpi,jpj    ,kjpt,   zglu, zglv, zgui, zgvi ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_ldf_blp')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_triad.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_triad.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_triad.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -94,12 +93,10 @@
       REAL(wp) ::   ze1ur, ze2vr, ze3wr, zdxt, zdyt, zdzt
       REAL(wp) ::   zah, zah_slp, zaei_slp
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: z2d                                            ! 2D workspace
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdit, zdjt, zftu, zftv, ztfw, zpsi_uw, zpsi_vw   ! 3D     -
+      REAL(wp), DIMENSION(jpi,jpj) :: z2d                                            ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdit, zdjt, zftu, zftv, ztfw, zpsi_uw, zpsi_vw   ! 3D     -
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_ldf_triad')
       !
-      CALL wrk_alloc( jpi,jpj,       z2d ) 
-      CALL wrk_alloc( jpi,jpj,jpk,   zdit, zdjt, zftu, zftv, ztfw, zpsi_uw, zpsi_vw  ) 
       !
       IF( .NOT.ALLOCATED(zdkt3d) )  THEN
@@ -435,6 +432,4 @@
       !                                                           ! ===============
       !
-      CALL wrk_dealloc( jpi,jpj,       z2d ) 
-      CALL wrk_dealloc( jpi,jpj,jpk,   zdit, zdjt, zftu, zftv, ztfw, zpsi_uw, zpsi_vw  ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_ldf_triad')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90	(revision 7910)
@@ -26,5 +26,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -68,10 +67,10 @@
       REAL(wp) ::   zsa, zbeta, zsum_sali, zsum_beta, zbw, zrw, z1_r2dt
       REAL(wp), PARAMETER :: zn2_zero = 1.e-14_wp       ! acceptance criteria for neutrality (N2==0)
-      REAL(wp), POINTER, DIMENSION(:)       ::   zvn2   ! vertical profile of N2 at 1 given point...
-      REAL(wp), POINTER, DIMENSION(:,:)     ::   zvts   ! vertical profile of T and S at 1 given point...
-      REAL(wp), POINTER, DIMENSION(:,:)     ::   zvab   ! vertical profile of alpha and beta
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   zn2    ! N^2 
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zab    ! alpha and beta
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   ztrdt, ztrds   ! 3D workspace
+      REAL(wp), DIMENSION(jpk)       ::   zvn2   ! vertical profile of N2 at 1 given point...
+      REAL(wp), DIMENSION(jpk,2)     ::   zvts   ! vertical profile of T and S at 1 given point...
+      REAL(wp), DIMENSION(jpk,2)     ::   zvab   ! vertical profile of alpha and beta
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::   zn2    ! N^2 
+      REAL(wp), DIMENSION(jpi,jpj,jpk,2) ::   zab    ! alpha and beta
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::   ztrdt, ztrds   ! 3D workspace
       !
       LOGICAL, PARAMETER :: l_LB_debug = .FALSE. ! set to true if you want to follow what is
@@ -84,11 +83,6 @@
       IF( MOD( kt, nn_npc ) == 0 ) THEN
          !
-         CALL wrk_alloc( jpi, jpj, jpk, zn2 )    ! N2
-         CALL wrk_alloc( jpi, jpj, jpk, 2, zab ) ! Alpha and Beta
-         CALL wrk_alloc( jpk, 2, zvts, zvab )    ! 1D column vector at point ji,jj
-         CALL wrk_alloc( jpk, zvn2 )             ! 1D column vector at point ji,jj
 
          IF( l_trdtra )   THEN                    !* Save initial after fields
-            CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )
             ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
             ztrds(:,:,:) = tsa(:,:,:,jp_sal)
@@ -313,5 +307,4 @@
             CALL trd_tra( kt, 'TRA', jp_tem, jptra_npc, ztrdt )
             CALL trd_tra( kt, 'TRA', jp_sal, jptra_npc, ztrds )
-            CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds )
          ENDIF
          !
@@ -323,8 +316,4 @@
          ENDIF
          !
-         CALL wrk_dealloc(jpi, jpj, jpk, zn2 )
-         CALL wrk_dealloc(jpi, jpj, jpk, 2, zab )
-         CALL wrk_dealloc(jpk, zvn2 )
-         CALL wrk_dealloc(jpk, 2, zvts, zvab )
          !
       ENDIF   ! IF( MOD( kt, nn_npc ) == 0 ) THEN
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90	(revision 7910)
@@ -43,5 +43,4 @@
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE prtctl          ! Print control
-   USE wrk_nemo        ! Memory allocation
    USE timing          ! Timing
 #if defined key_agrif
@@ -91,5 +90,5 @@
       INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices
       REAL(wp) ::   zfact            ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdt, ztrds
       !!----------------------------------------------------------------------
       !
@@ -120,5 +119,4 @@
       ! trends computation initialisation
       IF( l_trdtra )   THEN                    
-         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )
          ztrdt(:,:,jk) = 0._wp
          ztrds(:,:,jk) = 0._wp
@@ -170,5 +168,4 @@
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_atf, ztrdt )
          CALL trd_tra( kt, 'TRA', jp_sal, jptra_atf, ztrds )
-         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds )
       END IF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90	(revision 7910)
@@ -34,5 +34,4 @@
    USE lib_mpp        ! MPP library
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -113,7 +112,7 @@
       REAL(wp) ::   zCb, zCmax, zze, zpsi, zpsimax, zdelpsi, zCtot, zCze
       REAL(wp) ::   zlogc, zlogc2, zlogc3 
-      REAL(wp), POINTER, DIMENSION(:,:)   :: zekb, zekg, zekr
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zetot, zchl3d
+      REAL(wp), DIMENSION(jpi,jpj)   :: zekb, zekg, zekr
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze0, ze1, ze2, ze3, zea, ztrdt
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zetot, zchl3d
       !!----------------------------------------------------------------------
       !
@@ -127,5 +126,4 @@
       !
       IF( l_trdtra ) THEN      ! trends diagnostic: save the input temperature trend
-         CALL wrk_alloc( jpi,jpj,jpk,   ztrdt ) 
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem)
       ENDIF
@@ -161,6 +159,4 @@
       CASE( np_RGB , np_RGBc )         !==  R-G-B fluxes  ==!
          !
-         CALL wrk_alloc( jpi,jpj,       zekb, zekg, zekr        ) 
-         CALL wrk_alloc( jpi,jpj,jpk,   ze0, ze1, ze2, ze3, zea, zchl3d ) 
          !
          IF( nqsr == np_RGBc ) THEN          !*  Variable Chlorophyll
@@ -240,6 +236,4 @@
          END DO
          !
-         CALL wrk_dealloc( jpi,jpj,        zekb, zekg, zekr        ) 
-         CALL wrk_dealloc( jpi,jpj,jpk,   ze0, ze1, ze2, ze3, zea, zchl3d ) 
          !
       CASE( np_2BD  )            !==  2-bands fluxes  ==!
@@ -282,5 +276,4 @@
       !
       IF( iom_use('qsr3d') ) THEN      ! output the shortwave Radiation distribution
-         CALL wrk_alloc( jpi,jpj,jpk,   zetot )
          !
          zetot(:,:,nksr+1:jpk) = 0._wp     ! below ~400m set to zero
@@ -290,5 +283,4 @@
          CALL iom_put( 'qsr3d', zetot )   ! 3D distribution of shortwave Radiation
          !
-         CALL wrk_dealloc( jpi,jpj,jpk,   zetot ) 
       ENDIF
       !
@@ -301,5 +293,4 @@
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:)
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_qsr, ztrdt )
-         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdt ) 
       ENDIF
       !                       ! print mean trends (used for debugging)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90	(revision 7910)
@@ -32,5 +32,4 @@
    USE iom            ! xIOS server
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -75,5 +74,5 @@
       INTEGER  ::   ikt, ikb              ! local integers
       REAL(wp) ::   zfact, z1_e3t, zdep   ! local scalar
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrdt, ztrds
       !!----------------------------------------------------------------------
       !
@@ -87,5 +86,4 @@
       !
       IF( l_trdtra ) THEN                    !* Save ta and sa trends
-         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem)
          ztrds(:,:,:) = tsa(:,:,:,jp_sal)
@@ -232,5 +230,4 @@
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_nsr, ztrdt )
          CALL trd_tra( kt, 'TRA', jp_sal, jptra_nsr, ztrds )
-         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 
       ENDIF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90	(revision 7910)
@@ -29,5 +29,4 @@
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory allocation
    USE timing         ! Timing
 
@@ -59,5 +58,5 @@
       !
       INTEGER  ::   jk                   ! Dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt, ztrds   ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrdt, ztrds   ! 3D workspace
       !!---------------------------------------------------------------------
       !
@@ -71,5 +70,4 @@
       !
       IF( l_trdtra )   THEN                    !* Save ta and sa trends
-         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem)
          ztrds(:,:,:) = tsa(:,:,:,jp_sal)
@@ -98,5 +96,4 @@
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdf, ztrdt )
          CALL trd_tra( kt, 'TRA', jp_sal, jptra_zdf, ztrds )
-         CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds )
       ENDIF
       !                                          ! print mean trends (used for debugging)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90	(revision 7910)
@@ -32,5 +32,4 @@
    USE in_out_manager ! I/O manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -84,10 +83,9 @@
       REAL(wp) ::  z1_ksts, ze3tr       ! local scalars
       REAL(wp) ::  ztra, ze3tb    !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztb, zwf
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztb, zwf
       !!---------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_zdf_exp')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   ztb, zwf ) 
       !
       IF( kt == kit000 )  THEN
@@ -144,5 +142,4 @@
       END DO                     ! end of tracer loop
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   ztb, zwf ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_zdf_exp')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90	(revision 7910)
@@ -35,5 +35,4 @@
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory Allocation
    USE timing         ! Timing
 
@@ -83,10 +82,9 @@
       INTEGER  ::  ji, jj, jk, jn   ! dummy loop indices
       REAL(wp) ::  zrhs             ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwi, zwt, zwd, zws
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zwi, zwt, zwd, zws
       !!---------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tra_zdf_imp')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zwi, zwt, zwd, zws ) 
       !
       IF( kt == kit000 )  THEN
@@ -208,5 +206,4 @@
       !                                               ! ================= !
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zwi, zwt, zwd, zws ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('tra_zdf_imp')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trddyn.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trddyn.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trddyn.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE iom            ! I/O manager library
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory allocation
 
    IMPLICIT NONE
@@ -103,6 +102,6 @@
       INTEGER ::   ji, jj, jk   ! dummy loop indices
       INTEGER ::   ikbu, ikbv   ! local integers
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   z2dx, z2dy   ! 2D workspace 
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   z3dx, z3dy   ! 3D workspace 
+      REAL(wp), DIMENSION(jpi,jpj)   ::   z2dx, z2dy   ! 2D workspace 
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   z3dx, z3dy   ! 3D workspace 
       !!----------------------------------------------------------------------
       !
@@ -118,5 +117,4 @@
       CASE( jpdyn_keg )   ;   CALL iom_put( "utrd_keg", putrd )    ! Kinetic Energy gradient (or had)
                               CALL iom_put( "vtrd_keg", pvtrd )
-                              CALL wrk_alloc( jpi, jpj, jpk, z3dx, z3dy )
                               z3dx(:,:,:) = 0._wp                  ! U.dxU & V.dyV (approximation)
                               z3dy(:,:,:) = 0._wp
@@ -133,5 +131,4 @@
                               CALL iom_put( "utrd_udx", z3dx  )
                               CALL iom_put( "vtrd_vdy", z3dy  )
-                              CALL wrk_dealloc( jpi, jpj, jpk, z3dx, z3dy )
       CASE( jpdyn_zad )   ;   CALL iom_put( "utrd_zad", putrd )    ! vertical   advection
                               CALL iom_put( "vtrd_zad", pvtrd )
@@ -141,10 +138,8 @@
                               CALL iom_put( "vtrd_zdf", pvtrd )
                               !                                    ! wind stress trends
-                              CALL wrk_alloc( jpi, jpj, z2dx, z2dy )
                               z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u_n(:,:,1) * rau0 )
                               z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v_n(:,:,1) * rau0 )
                               CALL iom_put( "utrd_tau", z2dx )
                               CALL iom_put( "vtrd_tau", z2dy )
-                              CALL wrk_dealloc( jpi, jpj, z2dx, z2dy )
       CASE( jpdyn_bfr )       ! called if ln_bfrimp=T
                               CALL iom_put( "utrd_bfr", putrd )    ! bottom friction (explicit case)
@@ -153,5 +148,4 @@
                               CALL iom_put( "vtrd_atf", pvtrd )
       CASE( jpdyn_bfri )  ;   IF( ln_bfrimp ) THEN                     ! bottom friction (implicit case)
-                              	CALL wrk_alloc( jpi, jpj, jpk, z3dx, z3dy )
                               	z3dx(:,:,:) = 0._wp   ;   z3dy(:,:,:) = 0._wp  ! after velocity known (now filed at this stage)
                               	DO jk = 1, jpkm1
@@ -168,5 +162,4 @@
                               	CALL iom_put( "utrd_bfri", z3dx )
                               	CALL iom_put( "vtrd_bfri", z3dy )
-                              	CALL wrk_dealloc( jpi, jpj, jpk, z3dx, z3dy )
          					      ENDIF
       END SELECT
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdglo.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdglo.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdglo.F90	(revision 7910)
@@ -30,5 +30,4 @@
    USE in_out_manager  ! I/O manager
    USE iom             ! I/O manager library
-   USE wrk_nemo        ! Memory allocation
 
    IMPLICIT NONE
@@ -78,8 +77,7 @@
       INTEGER ::   ikbu, ikbv      ! local integers
       REAL(wp)::   zvm, zvt, zvs, z1_2rau0   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:)  :: ztswu, ztswv, z2dx, z2dy   ! 2D workspace 
-      !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, ztswu, ztswv, z2dx, z2dy )
+      REAL(wp), DIMENSION(jpi,jpj)  :: ztswu, ztswv, z2dx, z2dy   ! 2D workspace 
+      !!----------------------------------------------------------------------
+
 
       IF( MOD(kt,nn_trd) == 0 .OR. kt == nit000 .OR. kt == nitend ) THEN
@@ -179,5 +177,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, ztswu, ztswv, z2dx, z2dy )
       !
    END SUBROUTINE trd_glo
@@ -194,8 +191,7 @@
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
       REAL(wp) ::   zcof         ! local scalar
-      REAL(wp), POINTER, DIMENSION(:,:,:)  ::  zkx, zky, zkz, zkepe  
-      !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, jpk, zkx, zky, zkz, zkepe )
+      REAL(wp), DIMENSION(jpi,jpj,jpk)  ::  zkx, zky, zkz, zkepe  
+      !!----------------------------------------------------------------------
+
 
       ! I. Momentum trends
@@ -373,5 +369,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zkx, zky, zkz, zkepe )
       !
    END SUBROUTINE glo_dyn_wri
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE iom            ! I/O manager library
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory allocation
    USE ldfslp         ! Isopycnal slopes
 
@@ -86,9 +85,8 @@
       INTEGER ::   ikbu  , ikbv     ! local integers
       INTEGER ::   ikbum1, ikbvm1   !   -       -
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   z2dx, z2dy, zke2d   ! 2D workspace 
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zke                 ! 3D workspace 
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi, jpj, jpk, zke )
+      REAL(wp), DIMENSION(jpi,jpj)   ::   z2dx, z2dy, zke2d   ! 2D workspace 
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zke                 ! 3D workspace 
+      !!----------------------------------------------------------------------
+      !
       !
       CALL lbc_lnk( putrd, 'U', -1. )   ;   CALL lbc_lnk( pvtrd, 'V', -1. )      ! lateral boundary conditions
@@ -125,5 +123,4 @@
          CASE( jpdyn_zdf )   ;   CALL iom_put( "ketrd_zdf"   , zke )    ! vertical diffusion 
          !                   !                                          ! wind stress trends
-                                 CALL wrk_alloc( jpi, jpj, z2dx, z2dy, zke2d )
                            z2dx(:,:) = un(:,:,1) * ( utau_b(:,:) + utau(:,:) ) * e1e2u(:,:) * umask(:,:,1)
                            z2dy(:,:) = vn(:,:,1) * ( vtau_b(:,:) + vtau(:,:) ) * e1e2v(:,:) * vmask(:,:,1)
@@ -136,5 +133,4 @@
                            END DO
                                  CALL iom_put( "ketrd_tau"   , zke2d )  ! 
-                                 CALL wrk_dealloc( jpi, jpj     , z2dx, z2dy, zke2d )
          CASE( jpdyn_bfr )   ;   CALL iom_put( "ketrd_bfr"   , zke )    ! bottom friction (explicit case) 
 !!gm TO BE DONE properly
@@ -192,5 +188,4 @@
       END SELECT
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zke )
       !
    END SUBROUTINE trd_ken
@@ -214,8 +209,7 @@
       INTEGER  ::   iku, ikv                         ! temporary integers
       REAL(wp) ::   zcoef                            ! temporary scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zconv  ! temporary conv on W-grid
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi,jpj,jpk, zconv )
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zconv  ! temporary conv on W-grid
+      !!----------------------------------------------------------------------
+      !
       !
       ! Local constant initialization 
@@ -240,5 +234,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,jpk, zconv )      
       !
    END SUBROUTINE ken_p2k
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdmxl.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdmxl.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdmxl.F90	(revision 7910)
@@ -37,5 +37,4 @@
    USE restart         ! for lrst_oce
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! Memory allocation
    USE iom
 
@@ -256,8 +255,7 @@
       !
       INTEGER ::   ji, jj, jk, isum
-      REAL(wp), POINTER, DIMENSION(:,:)  :: zvlmsk 
-      !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, zvlmsk ) 
+      REAL(wp), DIMENSION(jpi,jpj)  :: zvlmsk 
+      !!----------------------------------------------------------------------
+
 
       ! I. Definition of control surface and associated fields
@@ -284,5 +282,4 @@
       END IF
       !
-      CALL wrk_dealloc( jpi, jpj, zvlmsk ) 
       !
    END SUBROUTINE trd_mxl_zint
@@ -342,12 +339,9 @@
       !                                              ! z(ts)mltot : dT/dt over the anlysis window (including Asselin)
       !                                              ! z(ts)mlres : residual = dh/dt entrainment term
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::  ztmltot , zsmltot , ztmlres , zsmlres , ztmlatf , zsmlatf
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::  ztmltot2, zsmltot2, ztmlres2, zsmlres2, ztmlatf2, zsmlatf2, ztmltrdm2, zsmltrdm2  
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztmltrd2, zsmltrd2   ! only needed for mean diagnostics
+      REAL(wp), DIMENSION(jpi,jpj) ::  ztmltot , zsmltot , ztmlres , zsmlres , ztmlatf , zsmlatf
+      REAL(wp), DIMENSION(jpi,jpj) ::  ztmltot2, zsmltot2, ztmlres2, zsmlres2, ztmlatf2, zsmlatf2, ztmltrdm2, zsmltrdm2  
+      REAL(wp), DIMENSION(jpi,jpj,jpltrd) ::  ztmltrd2, zsmltrd2   ! only needed for mean diagnostics
       !!----------------------------------------------------------------------
   
-      CALL wrk_alloc( jpi, jpj,         ztmltot , zsmltot , ztmlres , zsmlres , ztmlatf , zsmlatf                        )
-      CALL wrk_alloc( jpi, jpj,         ztmltot2, zsmltot2, ztmlres2, zsmlres2, ztmlatf2, zsmlatf2, ztmltrdm2, zsmltrdm2 )  
-      CALL wrk_alloc( jpi, jpj, jpltrd, ztmltrd2, zsmltrd2                                                               )
 
       ! ======================================================================
@@ -724,7 +718,4 @@
       IF( lrst_oce )   CALL trd_mxl_rst_write( kt ) 
 
-      CALL wrk_dealloc( jpi, jpj,         ztmltot , zsmltot , ztmlres , zsmlres , ztmlatf , zsmlatf                        )
-      CALL wrk_dealloc( jpi, jpj,         ztmltot2, zsmltot2, ztmlres2, zsmlres2, ztmlatf2, zsmlatf2, ztmltrdm2, zsmltrdm2 )  
-      CALL wrk_dealloc( jpi, jpj, jpltrd, ztmltrd2, zsmltrd2                                                               )
       !
    END SUBROUTINE trd_mxl
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdpen.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdpen.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdpen.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE iom            ! I/O manager library
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory allocation
 
    IMPLICIT NONE
@@ -71,9 +70,8 @@
       !
       INTEGER ::   jk                                            ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:)      ::   z2d            ! 2D workspace 
-      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zpe            ! 3D workspace 
+      REAL(wp), DIMENSION(jpi,jpj)      ::   z2d            ! 2D workspace 
+      REAL(wp), DIMENSION(jpi,jpj,jpk)    ::   zpe            ! 3D workspace 
       !!----------------------------------------------------------------------
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zpe )
       zpe(:,:,:) = 0._wp
       !
@@ -97,5 +95,4 @@
       CASE ( jptra_zad  )   ;   CALL iom_put( "petrd_zad", zpe )   ! vertical advection
                                 IF( ln_linssh ) THEN                   ! cst volume : adv flux through z=0 surface
-                                   CALL wrk_alloc( jpi, jpj, z2d )
                                    z2d(:,:) = wn(:,:,1) * ( &
                                      &   - ( rab_n(:,:,1,jp_tem) + rab_pe(:,:,1,jp_tem) ) * tsn(:,:,1,jp_tem)    &
@@ -103,5 +100,4 @@
                                      & ) / e3t_n(:,:,1)
                                    CALL iom_put( "petrd_sad" , z2d )
-                                   CALL wrk_dealloc( jpi, jpj, z2d )
                                 ENDIF
       CASE ( jptra_ldf  )   ;   CALL iom_put( "petrd_ldf" , zpe )   ! lateral  diffusion
@@ -116,15 +112,12 @@
       CASE ( jptra_atf  )   ;   CALL iom_put( "petrd_atf" , zpe )   ! asselin time filter (last trend)
                                 !IF( ln_linssh ) THEN                   ! cst volume : ssh term (otherwise include in e3t variation)
-                                !   CALL wrk_alloc( jpi, jpj, z2d )
                                 !   z2d(:,:) = ( ssha(:,:) - sshb(:,:) )                 &
                                 !      &     * (   dPE_dt(:,:,1) * tsn(:,:,1,jp_tem)    &
                                 !      &         + dPE_ds(:,:,1) * tsn(:,:,1,jp_sal)  ) / ( e3t_n(:,:,1) * pdt )
                                 !   CALL iom_put( "petrd_sad" , z2d )
-                                !   CALL wrk_dealloc( jpi, jpj, z2d )
                                 !ENDIF
          !
       END SELECT
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zpe )
       !
    END SUBROUTINE trd_pen
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90	(revision 7910)
@@ -31,5 +31,4 @@
    USE iom            ! I/O manager library
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! Memory allocation
 
    IMPLICIT NONE
@@ -84,8 +83,7 @@
       !
       INTEGER  ::   jk   ! loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:)  ::   zwt, zws, ztrdt, ztrds   ! 3D workspace
-      !!----------------------------------------------------------------------
-      !
-      CALL wrk_alloc( jpi, jpj, jpk, ztrds )
+      REAL(wp), DIMENSION(jpi,jpj,jpk)  ::   zwt, zws, ztrdt, ztrds   ! 3D workspace
+      !!----------------------------------------------------------------------
+      !
       !      
       IF( .NOT. ALLOCATED( trdtx ) ) THEN      ! allocate trdtra arrays
@@ -123,5 +121,4 @@
          CASE( jptra_zdfp )           ! diagnose the "PURE" Kz trend (here: just before the swap)
             !                         ! iso-neutral diffusion case otherwise jptra_zdf is "PURE"
-            CALL wrk_alloc( jpi, jpj, jpk, zwt, zws, ztrdt )
             !
             zwt(:,:, 1 ) = 0._wp   ;   zws(:,:, 1 ) = 0._wp            ! vertical diffusive fluxes
@@ -153,5 +150,4 @@
             CALL trd_tra_mng( ztrdt, ztrds, jptra_evd, kt )  
             !
-            CALL wrk_dealloc( jpi, jpj, jpk, zwt, zws, ztrdt )
             !
          CASE DEFAULT                 ! other trends: mask and send T & S trends to trd_tra_mng
@@ -176,5 +172,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, ztrds )
       !
    END SUBROUTINE trd_tra
@@ -306,5 +301,5 @@
       INTEGER ::   ji, jj, jk   ! dummy loop indices
       INTEGER ::   ikbu, ikbv   ! local integers
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   z2dx, z2dy   ! 2D workspace 
+      REAL(wp), DIMENSION(jpi,jpj)   ::   z2dx, z2dy   ! 2D workspace 
       !!----------------------------------------------------------------------
       !
@@ -319,10 +314,8 @@
                                CALL iom_put( "strd_zad" , ptrdy )
                                IF( ln_linssh ) THEN                   ! cst volume : adv flux through z=0 surface
-                               	 CALL wrk_alloc( jpi, jpj, z2dx, z2dy )
                                   z2dx(:,:) = wn(:,:,1) * tsn(:,:,1,jp_tem) / e3t_n(:,:,1)
                                   z2dy(:,:) = wn(:,:,1) * tsn(:,:,1,jp_sal) / e3t_n(:,:,1)
                                   CALL iom_put( "ttrd_sad", z2dx )
                                   CALL iom_put( "strd_sad", z2dy )
-                                  CALL wrk_dealloc( jpi, jpj, z2dx, z2dy )
                                ENDIF
       CASE( jptra_totad  ) ;   CALL iom_put( "ttrd_totad" , ptrdx )      ! total   advection
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! Memory allocation
 
    IMPLICIT NONE
@@ -91,8 +90,7 @@
       !
       INTEGER ::   ji, jj   ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:) ::   ztswu, ztswv    ! 2D workspace 
-      !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, ztswu, ztswv )
+      REAL(wp), DIMENSION(jpi,jpj) ::   ztswu, ztswv    ! 2D workspace 
+      !!----------------------------------------------------------------------
+
 
       SELECT CASE( ktrd ) 
@@ -122,5 +120,4 @@
       END SELECT
       !
-      CALL wrk_dealloc( jpi, jpj, ztswu, ztswv )
       !
    END SUBROUTINE trd_vor
@@ -160,9 +157,8 @@
       INTEGER ::   ji, jj       ! dummy loop indices
       INTEGER ::   ikbu, ikbv   ! local integers
-      REAL(wp), POINTER, DIMENSION(:,:) :: zudpvor, zvdpvor  ! total cmulative trends
-      !!----------------------------------------------------------------------
-
-      !
-      CALL wrk_alloc( jpi, jpj, zudpvor, zvdpvor )                                     ! Memory allocation
+      REAL(wp), DIMENSION(jpi,jpj) :: zudpvor, zvdpvor  ! total cmulative trends
+      !!----------------------------------------------------------------------
+
+      !
       !
 
@@ -211,5 +207,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, zudpvor, zvdpvor )                                   
       !
    END SUBROUTINE trd_vor_zint_2d
@@ -249,9 +244,8 @@
       !
       INTEGER ::   ji, jj, jk   ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:) :: zubet  , zvbet    ! Beta.V   
-      REAL(wp), POINTER, DIMENSION(:,:) :: zudpvor, zvdpvor  ! total cmulative trends
+      REAL(wp), DIMENSION(jpi,jpj) :: zubet  , zvbet    ! Beta.V   
+      REAL(wp), DIMENSION(jpi,jpj) :: zudpvor, zvdpvor  ! total cmulative trends
       !!----------------------------------------------------------------------
      
-      CALL wrk_alloc( jpi,jpj, zubet, zvbet, zudpvor, zvdpvor )                                   
 
       ! Initialization
@@ -307,5 +301,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj, zubet, zvbet, zudpvor, zvdpvor )                                   
       !
    END SUBROUTINE trd_vor_zint_3d
@@ -324,8 +317,7 @@
       INTEGER  ::   it, itmod        ! local integers
       REAL(wp) ::   zmean            ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:) :: zun, zvn
-      !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, zun, zvn )                                   
+      REAL(wp), DIMENSION(jpi,jpj) :: zun, zvn
+      !!----------------------------------------------------------------------
+
 
       !  =================
@@ -460,5 +452,4 @@
       IF( kt == nitend )   CALL histclo( nidvor )
       !
-      CALL wrk_dealloc( jpi, jpj, zun, zvn )                                   
       !
    END SUBROUTINE trd_vor_iom
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90	(revision 7910)
@@ -24,5 +24,4 @@
    USE prtctl          ! Print control
    USE timing          ! Timing
-   USE wrk_nemo        ! Memory Allocation
    USE phycst, ONLY: vkarmn
 
@@ -95,5 +94,5 @@
       INTEGER  ::   ikbt, ikbu, ikbv             ! local integers
       REAL(wp) ::   zvu, zuv, zecu, zecv, ztmp   ! temporary scalars
-      REAL(wp), POINTER, DIMENSION(:,:) ::  zbfrt, ztfrt
+      REAL(wp), DIMENSION(jpi,jpj) ::  zbfrt, ztfrt
       !!----------------------------------------------------------------------
       !
@@ -102,5 +101,4 @@
       IF( nn_bfr == 2 ) THEN                 ! quadratic bottom friction only
          !
-         CALL wrk_alloc( jpi, jpj, zbfrt, ztfrt )
 
          IF ( ln_loglayer.AND. .NOT.ln_linssh ) THEN ! "log layer" bottom friction coefficient
@@ -203,5 +201,4 @@
          IF(ln_ctl)   CALL prt_ctl( tab2d_1=bfrua, clinfo1=' bfr  - u: ', mask1=umask,        &
             &                       tab2d_2=bfrva, clinfo2=       ' v: ', mask2=vmask,ovlap=1 )
-         CALL wrk_dealloc( jpi,jpj,zbfrt, ztfrt )
       ENDIF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90	(revision 7910)
@@ -25,5 +25,4 @@
    USE prtctl          ! Print control
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
    USE timing          ! Timing
 
@@ -100,10 +99,9 @@
       REAL(wp) ::   zavft, zavfs    !   -      -
       REAL(wp) ::   zavdt, zavds    !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3
+      REAL(wp), DIMENSION(jpi,jpj) ::   zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('zdf_ddm')
       !
-      CALL wrk_alloc( jpi,jpj, zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 )
       !
       !                                                ! ===============
@@ -215,5 +213,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj, zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 )
       !
       IF( nn_timing == 1 )  CALL timing_stop('zdf_ddm')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90	(revision 7910)
@@ -23,5 +23,4 @@
    USE iom             ! for iom_put
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE wrk_nemo        ! work arrays
    USE timing          ! Timing
 
@@ -56,5 +55,5 @@
       !
       INTEGER ::   ji, jj, jk   ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zavt_evd, zavm_evd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zavt_evd, zavm_evd
       !!----------------------------------------------------------------------
       !
@@ -68,5 +67,4 @@
       ENDIF
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zavt_evd, zavm_evd ) 
       !
       zavt_evd(:,:,:) = avt(:,:,:)           ! set avt prior to evd application
@@ -115,5 +113,4 @@
       IF( l_trdtra ) CALL trd_tra( kt, 'TRA', jp_tem, jptra_evd, zavt_evd )
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zavt_evd, zavm_evd ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('zdf_evd')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90	(revision 7910)
@@ -28,5 +28,4 @@
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
    USE lib_mpp        ! MPP manager
-   USE wrk_nemo       ! work arrays
    USE prtctl         ! Print control
    USE in_out_manager ! I/O manager
@@ -138,23 +137,21 @@
       REAL(wp) ::   prod, buoy, diss, zdiss, sm         !   -      -
       REAL(wp) ::   gh, gm, shr, dif, zsqen, zav        !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zdep
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zkar
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zflxs       ! Turbulence fluxed induced by internal waves 
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zhsro       ! Surface roughness (surface waves)
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   eb          ! tke at time before
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   mxlb        ! mixing length at time before
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   shear       ! vertical shear
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   eps         ! dissipation rate
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwall_psi   ! Wall function use in the wb case (ln_sigpsi)
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   psi         ! psi at time now
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   z_elem_a    ! element of the first  matrix diagonal
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   z_elem_b    ! element of the second matrix diagonal
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   z_elem_c    ! element of the third  matrix diagonal
+      REAL(wp), DIMENSION(jpi,jpj) ::   zdep
+      REAL(wp), DIMENSION(jpi,jpj) ::   zkar
+      REAL(wp), DIMENSION(jpi,jpj) ::   zflxs       ! Turbulence fluxed induced by internal waves 
+      REAL(wp), DIMENSION(jpi,jpj) ::   zhsro       ! Surface roughness (surface waves)
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   eb          ! tke at time before
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   mxlb        ! mixing length at time before
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   shear       ! vertical shear
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   eps         ! dissipation rate
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwall_psi   ! Wall function use in the wb case (ln_sigpsi)
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   psi         ! psi at time now
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   z_elem_a    ! element of the first  matrix diagonal
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   z_elem_b    ! element of the second matrix diagonal
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   z_elem_c    ! element of the third  matrix diagonal
       !!--------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('zdf_gls')
       !
-      CALL wrk_alloc( jpi,jpj,       zdep, zkar, zflxs, zhsro )
-      CALL wrk_alloc( jpi,jpj,jpk,   eb, mxlb, shear, eps, zwall_psi, z_elem_a, z_elem_b, z_elem_c, psi  )
       
       ! Preliminary computing
@@ -824,6 +821,4 @@
       avmv_k(:,:,:) = avmv(:,:,:)
       !
-      CALL wrk_dealloc( jpi,jpj,       zdep, zkar, zflxs, zhsro )
-      CALL wrk_dealloc( jpi,jpj,jpk,   eb, mxlb, shear, eps, zwall_psi, z_elem_a, z_elem_b, z_elem_c, psi )
       !
       IF( nn_timing == 1 )  CALL timing_stop('zdf_gls')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90	(revision 7910)
@@ -20,5 +20,4 @@
    USE iom             ! I/O library
    USE lib_mpp         ! MPP library
-   USE wrk_nemo        ! work arrays
    USE timing          ! Timing
 
@@ -80,10 +79,9 @@
       INTEGER  ::   iikn, iiki, ikt ! local integer
       REAL(wp) ::   zN2_c           ! local scalar
-      INTEGER, POINTER, DIMENSION(:,:) ::   imld   ! 2D workspace
+      INTEGER, DIMENSION(jpi,jpj) ::   imld   ! 2D workspace
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('zdf_mxl')
       !
-      CALL wrk_alloc( jpi,jpj, imld )
 
       IF( kt == nit000 ) THEN
@@ -144,5 +142,4 @@
       IF(ln_ctl)   CALL prt_ctl( tab2d_1=REAL(nmln,wp), clinfo1=' nmln : ', tab2d_2=hmlp, clinfo2=' hmlp : ', ovlap=1 )
       !
-      CALL wrk_dealloc( jpi,jpj, imld )
       !
       IF( nn_timing == 1 )  CALL timing_stop('zdf_mxl')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90	(revision 7910)
@@ -27,5 +27,4 @@
    USE lbclnk         ! ocean lateral boundary condition (or mpp link)
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -121,10 +120,9 @@
       REAL(wp) ::   zcoef, zdku, zdkv, zri, z05alp, zflageos  ! temporary scalars
       REAL(wp) ::   zrhos, zustar
-      REAL(wp), POINTER, DIMENSION(:,:) ::   zwx, ekm_dep  
+      REAL(wp), DIMENSION(jpi,jpj) ::   zwx, ekm_dep  
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('zdf_ric')
       !
-      CALL wrk_alloc( jpi,jpj, zwx, ekm_dep )
       !                                                ! ===============
       DO jk = 2, jpkm1                                 ! Horizontal slab
@@ -229,5 +227,4 @@
       CALL lbc_lnk( avmu, 'U', 1. )   ;   CALL lbc_lnk( avmv, 'V', 1. )
       !
-      CALL wrk_dealloc( jpi,jpj, zwx, ekm_dep )
       !
       IF( nn_timing == 1 )  CALL timing_stop('zdf_ric')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90	(revision 7910)
@@ -50,5 +50,4 @@
    USE iom            ! I/O manager library
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -231,7 +230,7 @@
       REAL(wp) ::   zzd_up, zzd_lw                  !    -         -
 !!bfr      REAL(wp) ::   zebot                           !    -         -
-      INTEGER , POINTER, DIMENSION(:,:  ) ::   imlc
-      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zhlc
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv
+      INTEGER , DIMENSION(jpi,jpj) ::   imlc
+      REAL(wp), DIMENSION(jpi,jpj) ::   zhlc
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv
       REAL(wp)                            ::   zri  !   local Richardson number
       !!--------------------------------------------------------------------
@@ -239,7 +238,4 @@
       IF( nn_timing == 1 )  CALL timing_start('tke_tke')
       !
-      CALL wrk_alloc( jpi,jpj,       imlc )    ! integer
-      CALL wrk_alloc( jpi,jpj,       zhlc ) 
-      CALL wrk_alloc( jpi,jpj,jpk,   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv ) 
       !
       zbbrau = rn_ebb / rau0       ! Local constant initialisation
@@ -483,7 +479,4 @@
       CALL lbc_lnk( en, 'W', 1. )      ! Lateral boundary conditions (sign unchanged)
       !
-      CALL wrk_dealloc( jpi,jpj,       imlc )    ! integer
-      CALL wrk_dealloc( jpi,jpj,       zhlc ) 
-      CALL wrk_dealloc( jpi,jpj,jpk,   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('tke_tke')
@@ -531,10 +524,9 @@
       REAL(wp) ::   zdku, zri, zsqen            !   -      -
       REAL(wp) ::   zdkv, zemxl, zemlm, zemlp   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmpdl, zmxlm, zmxld
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmpdl, zmxlm, zmxld
       !!--------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tke_avn')
 
-      CALL wrk_alloc( jpi,jpj,jpk, zmpdl, zmxlm, zmxld ) 
 
       !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
@@ -701,5 +693,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,jpk, zmpdl, zmxlm, zmxld ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('tke_avn')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90	(revision 7910)
@@ -25,5 +25,4 @@
    USE iom            ! I/O Manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -108,12 +107,10 @@
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
       REAL(wp) ::   ztpc         ! scalar workspace
-      REAL(wp), POINTER, DIMENSION(:,:)   ::   zkz
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zav_tide
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zkz
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zav_tide
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('zdf_tmx')
       !
-      CALL wrk_alloc( jpi,jpj,       zkz )
-      CALL wrk_alloc( jpi,jpj,jpk,   zav_tide )
       !
       !                          ! ----------------------- !
@@ -179,6 +176,4 @@
       IF(ln_ctl)   CALL prt_ctl(tab3d_1=zav_tide , clinfo1=' tmx - av_tide: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk)
       !
-      CALL wrk_dealloc( jpi,jpj,       zkz )
-      CALL wrk_dealloc( jpi,jpj,jpk,   zav_tide )
       !
       IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx')
@@ -212,15 +207,13 @@
       INTEGER  ::   ji, jj, jk    ! dummy loop indices
       REAL(wp) ::   zcoef, ztpc   ! temporary scalar
-      REAL(wp), DIMENSION(:,:)  , POINTER ::   zkz                        ! 2D workspace
-      REAL(wp), DIMENSION(:,:)  , POINTER ::   zsum1 , zsum2 , zsum       !  -      -
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   zempba_3d_1, zempba_3d_2   ! 3D workspace
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   zempba_3d  , zdn2dz        !  -      -
-      REAL(wp), DIMENSION(:,:,:), POINTER ::   zavt_itf                   !  -      -
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zkz                        ! 2D workspace
+      REAL(wp), DIMENSION(jpi,jpj)   ::   zsum1 , zsum2 , zsum       !  -      -
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zempba_3d_1, zempba_3d_2   ! 3D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zempba_3d  , zdn2dz        !  -      -
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zavt_itf                   !  -      -
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('tmx_itf')
       !
-      CALL wrk_alloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum )
-      CALL wrk_alloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf )
 
       !                             ! compute the form function using N2 at each time step
@@ -308,6 +301,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum )
-      CALL wrk_dealloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf )
       !
       IF( nn_timing == 1 )  CALL timing_stop('tmx_itf')
@@ -355,9 +346,9 @@
       INTEGER  ::   ios
       REAL(wp) ::   ztpc, ze_z   ! local scalars
-      REAL(wp), DIMENSION(:,:)  , POINTER ::  zem2, zek1     ! read M2 and K1 tidal energy
-      REAL(wp), DIMENSION(:,:)  , POINTER ::  zkz            ! total M2, K1 and S2 tidal energy
-      REAL(wp), DIMENSION(:,:)  , POINTER ::  zfact          ! used for vertical structure function
-      REAL(wp), DIMENSION(:,:)  , POINTER ::  zhdep          ! Ocean depth 
-      REAL(wp), DIMENSION(:,:,:), POINTER ::  zpc, zav_tide  ! power consumption
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zem2, zek1     ! read M2 and K1 tidal energy
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zkz            ! total M2, K1 and S2 tidal energy
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zfact          ! used for vertical structure function
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zhdep          ! Ocean depth 
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zpc, zav_tide  ! power consumption
       !!
       NAMELIST/namzdf_tmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf
@@ -366,6 +357,4 @@
       IF( nn_timing == 1 )  CALL timing_start('zdf_tmx_init')
       !
-      CALL wrk_alloc( jpi,jpj,       zem2, zek1, zkz, zfact, zhdep )
-      CALL wrk_alloc( jpi,jpj,jpk,   zpc, zav_tide )
       !
       REWIND( numnam_ref )             ! Namelist namzdf_tmx in reference namelist : Tidal Mixing
@@ -534,6 +523,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep )
-      CALL wrk_dealloc( jpi,jpj,jpk, zpc, zav_tide )
       !
       IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx_init')
@@ -559,5 +546,4 @@
    USE iom            ! I/O Manager
    USE lib_mpp        ! MPP library
-   USE wrk_nemo       ! work arrays
    USE timing         ! Timing
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
@@ -669,17 +655,15 @@
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
       REAL(wp) ::   ztpc         ! scalar workspace
-      REAL(wp), DIMENSION(:,:)  , POINTER ::  zfact     ! Used for vertical structure
-      REAL(wp), DIMENSION(:,:)  , POINTER ::  zhdep     ! Ocean depth
-      REAL(wp), DIMENSION(:,:,:), POINTER ::  zwkb      ! WKB-stretched height above bottom
-      REAL(wp), DIMENSION(:,:,:), POINTER ::  zweight   ! Weight for high mode vertical distribution
-      REAL(wp), DIMENSION(:,:,:), POINTER ::  znu_t     ! Molecular kinematic viscosity (T grid)
-      REAL(wp), DIMENSION(:,:,:), POINTER ::  znu_w     ! Molecular kinematic viscosity (W grid)
-      REAL(wp), DIMENSION(:,:,:), POINTER ::  zReb      ! Turbulence intensity parameter
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zfact     ! Used for vertical structure
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zhdep     ! Ocean depth
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zwkb      ! WKB-stretched height above bottom
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zweight   ! Weight for high mode vertical distribution
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  znu_t     ! Molecular kinematic viscosity (T grid)
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  znu_w     ! Molecular kinematic viscosity (W grid)
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zReb      ! Turbulence intensity parameter
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('zdf_tmx')
       !
-      CALL wrk_alloc( jpi,jpj,       zfact, zhdep )
-      CALL wrk_alloc( jpi,jpj,jpk,   zwkb, zweight, znu_t, znu_w, zReb )
 
       !                          ! ----------------------------- !
@@ -900,6 +884,4 @@
       CALL iom_put( "emix_tmx", emix_tmx )
       
-      CALL wrk_dealloc( jpi,jpj,       zfact, zhdep )
-      CALL wrk_dealloc( jpi,jpj,jpk,   zwkb, zweight, znu_t, znu_w, zReb )
 
       IF(ln_ctl)   CALL prt_ctl(tab3d_1=zav_wave , clinfo1=' tmx - av_wave: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/C14/trcatm_c14.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/C14/trcatm_c14.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/C14/trcatm_c14.F90	(revision 7910)
@@ -45,5 +45,5 @@
       REAL(wp) ::   yn20 =  20.     ! 20 degrees north
       REAL(wp) ::   yn40 =  40.     ! 40 degrees north
-      REAL(wp), POINTER, DIMENSION(:)   :: zco2, zyrco2  ! temporary arrays for swap
+      REAL(wp), DIMENSION(nrecco2)   :: zco2, zyrco2  ! temporary arrays for swap
       !
       !!----------------------------------------------------------------------
@@ -78,6 +78,4 @@
       !
          IF(kc14typ==2) THEN
-            CALL wrk_alloc( nrecco2,zco2)
-            CALL wrk_alloc( nrecco2,zyrco2)
             zco2(:)=spco2(:)
             zyrco2(:)=tyrco2(:)
@@ -88,6 +86,4 @@
                tyrco2(izco2)=1950._wp-zyrco2(jn)         ! BP to AD dates
             END DO
-            CALL wrk_dealloc(nrecco2,zco2)
-            CALL wrk_dealloc(nrecco2,zyrco2)
          ENDIF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/C14/trcwri_c14.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/C14/trcwri_c14.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/C14/trcwri_c14.F90	(revision 7910)
@@ -36,6 +36,6 @@
       INTEGER              :: ji,jj,jk,jn   ! dummy loop indexes
       REAL(wp)             :: zage,zarea,ztemp   ! temporary
-      REAL(wp), POINTER, DIMENSION(:,:)   :: zres, z2d ! temporary storage 2D
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d , zz3d ! temporary storage 3D
+      REAL(wp), DIMENSION(jpi,jpj)   :: zres, z2d ! temporary storage 2D
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: z3d , zz3d ! temporary storage 3D
       !!---------------------------------------------------------------------
  
@@ -50,6 +50,4 @@
       IF( iom_use("DeltaC14") .OR. iom_use("C14Age") .OR. iom_use("RAge")   ) THEN
          !
-         CALL wrk_alloc( jpi, jpj     , z2d, zres )
-         CALL wrk_alloc( jpi, jpj, jpk, z3d, zz3d )
          !
          zage = -1._wp / rlam14 / rsiyea  ! factor for radioages in year
@@ -87,6 +85,4 @@
          CALL iom_put( "RAge" , zage * z2d(:,:) )                     ! Reservoir age [yr]
          !
-         CALL wrk_dealloc( jpi, jpj     , z2d, zres )
-         CALL wrk_dealloc( jpi, jpj, jpk, z3d, zz3d )
          !
       ENDIF
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcsms_my_trc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcsms_my_trc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcsms_my_trc.F90	(revision 7910)
@@ -43,5 +43,5 @@
       INTEGER, INTENT(in) ::   kt   ! ocean time-step index
       INTEGER ::   jn   ! dummy loop index
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrmyt
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztrmyt
       !!----------------------------------------------------------------------
       !
@@ -52,5 +52,4 @@
       IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
 
-      IF( l_trdtrc )  CALL wrk_alloc( jpi, jpj, jpk, ztrmyt )
 
       CALL trc_bc ( kt )       ! tracers: surface and lateral Boundary Conditions
@@ -64,5 +63,4 @@
             CALL trd_trc( ztrmyt, jn, jptra_sms, kt )   ! save trends
           END DO
-          CALL wrk_dealloc( jpi, jpj, jpk, ztrmyt )
       END IF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90	(revision 7910)
@@ -96,6 +96,6 @@
       REAL(wp) ::   znh4a, zdeta, zdoma, zzoobod, zboddet, zdomaju
       REAL(wp) ::   ze3t
-      REAL(wp), POINTER,   DIMENSION(:,:,:) :: zw2d
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zw3d
+      REAL(wp),   DIMENSION(jpi,jpj,17) :: zw2d
+      REAL(wp), DIMENSION(jpi,jpj,jpk,3) :: zw3d
       CHARACTER (len=25) :: charout
       !!---------------------------------------------------------------------
@@ -104,6 +104,4 @@
       !
       IF( lk_iomput ) THEN
-         CALL wrk_alloc( jpi, jpj,     17, zw2d )
-         CALL wrk_alloc( jpi, jpj, jpk, 3, zw3d )
       ENDIF
 
@@ -384,6 +382,4 @@
       !
       IF( lk_iomput ) THEN
-         CALL wrk_dealloc( jpi, jpj,     17, zw2d )
-         CALL wrk_dealloc( jpi, jpj, jpk, 3, zw3d )
       ENDIF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zexp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zexp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zexp.F90	(revision 7910)
@@ -64,5 +64,5 @@
       INTEGER  ::   ji, jj, jk, jl, ikt
       REAL(wp) ::   zgeolpoc, zfact, zwork, ze3t, zsedpocd, zmaskt
-      REAL(wp), POINTER, DIMENSION(:,:)   ::  zsedpoca
+      REAL(wp), DIMENSION(jpi,jpj)   ::  zsedpoca
       CHARACTER (len=25) :: charout
       !!---------------------------------------------------------------------
@@ -72,5 +72,4 @@
       IF( kt == nittrc000 )   CALL p2z_exp_init
 
-      CALL wrk_alloc( jpi, jpj, zsedpoca ) 
       zsedpoca(:,:) = 0.
 
@@ -147,5 +146,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, zsedpoca)   ! temporary save of trends
 
       IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
@@ -166,6 +164,6 @@
       INTEGER  ::   ji, jj, jk
       REAL(wp) ::   zmaskt, zfluo, zfluu
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zrro
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdm0
+      REAL(wp), DIMENSION(jpi,jpj) :: zrro
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdm0
       !!---------------------------------------------------------------------
 
@@ -178,6 +176,4 @@
       !
       ! Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj,      zrro )
-      CALL wrk_alloc( jpi, jpj, jpk, zdm0 )
 
 
@@ -246,6 +242,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj,      zrro )
-      CALL wrk_dealloc( jpi, jpj, jpk, zdm0 )
       !
    END SUBROUTINE p2z_exp_init
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90	(revision 7910)
@@ -65,6 +65,6 @@
       REAL(wp) ::   zkr, zkg            ! total absorption coefficient in red and green
       REAL(wp) ::   zcoef               ! temporary scalar
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zpar100, zpar0m
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zparr, zparg
+      REAL(wp), DIMENSION(jpi,jpj) :: zpar100, zpar0m
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zparr, zparg
       !!---------------------------------------------------------------------
       !
@@ -72,6 +72,4 @@
       !
       ! Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj,      zpar100, zpar0m )
-      CALL wrk_alloc( jpi, jpj, jpk, zparr, zparg    )
 
       IF( kt == nittrc000 ) THEN
@@ -140,6 +138,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj,      zpar100, zpar0m )
-      CALL wrk_dealloc( jpi, jpj, jpk, zparr, zparg    )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p2z_opt')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsed.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsed.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsed.F90	(revision 7910)
@@ -61,6 +61,6 @@
       INTEGER  ::   ji, jj, jk, jl, ierr
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwork, ztra
+      REAL(wp), DIMENSION(jpi,jpj) :: zw2d
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwork, ztra
       !!---------------------------------------------------------------------
       !
@@ -74,5 +74,4 @@
 
       ! Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj, jpk, zwork, ztra )
 
       ! sedimentation of detritus  : upstream scheme
@@ -100,5 +99,4 @@
       IF( lk_iomput )  THEN
          IF( iom_use( "TDETSED" ) ) THEN
-            CALL wrk_alloc( jpi, jpj, zw2d )
             zw2d(:,:) =  ztra(:,:,1) * e3t_n(:,:,1) * 86400._wp
             DO jk = 2, jpkm1
@@ -106,9 +104,7 @@
             END DO
             CALL iom_put( "TDETSED", zw2d )
-            CALL wrk_dealloc( jpi, jpj, zw2d )
          ENDIF
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zwork, ztra )
       !
 
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zche.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zche.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zche.F90	(revision 7910)
@@ -562,10 +562,8 @@
    LOGICAL   ::  l_exitnow
    REAL(wp), PARAMETER :: pz_exp_threshold = 1.0
-   REAL(wp), POINTER, DIMENSION(:,:,:) :: zalknw_inf, zalknw_sup, rmask, zh_min, zh_max, zeqn_absmin
+   REAL(wp), DIMENSION(jpi,jpj,jpk) :: zalknw_inf, zalknw_sup, rmask, zh_min, zh_max, zeqn_absmin
 
    IF( nn_timing == 1 )  CALL timing_start('solve_at_general')
       !  Allocate temporary workspace
-   CALL wrk_alloc( jpi, jpj, jpk, zalknw_inf, zalknw_sup, rmask )
-   CALL wrk_alloc( jpi, jpj, jpk, zh_min, zh_max, zeqn_absmin )
 
    CALL anw_infsup( zalknw_inf, zalknw_sup )
@@ -797,6 +795,4 @@
    END DO
    !
-   CALL wrk_dealloc( jpi, jpj, jpk, zalknw_inf, zalknw_sup, rmask )
-   CALL wrk_dealloc( jpi, jpj, jpk, zh_min, zh_max, zeqn_absmin )
 
 
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90	(revision 7910)
@@ -74,7 +74,7 @@
       REAL(wp) :: dissol, zligco
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig, precip
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zstrn, zstrn2
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zTL1, zFe3, ztotlig, precip
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zFeL1, zFeL2, zTL2, zFe2, zFeP
+      REAL(wp), DIMENSION(jpi,jpj) :: zstrn, zstrn2
       !!---------------------------------------------------------------------
       !
@@ -82,11 +82,8 @@
       !
       ! Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip )
       zFe3 (:,:,:) = 0.
       zFeL1(:,:,:) = 0.
       zTL1 (:,:,:) = 0.
       IF( ln_fechem ) THEN
-         CALL wrk_alloc( jpi, jpj,      zstrn, zstrn2 )
-         CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP )
          zFe2 (:,:,:) = 0.
          zFeL2(:,:,:) = 0.
@@ -360,8 +357,5 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip )
       IF( ln_fechem )  THEN
-         CALL wrk_dealloc( jpi, jpj,      zstrn, zstrn2 )
-         CALL wrk_dealloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP )
       ENDIF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90	(revision 7910)
@@ -80,10 +80,9 @@
       REAL(wp) ::   zyr_dec, zdco2dt
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx, zw2d, zpco2atm  
+      REAL(wp), DIMENSION(jpi,jpj) :: zkgco2, zkgo2, zh2co3, zoflx, zw2d, zpco2atm  
       !!---------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('p4z_flx')
       !
-      CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx, zpco2atm )
       !
 
@@ -187,5 +186,4 @@
 
       IF( lk_iomput .AND. knt == nrdttrc ) THEN
-         CALL wrk_alloc( jpi, jpj, zw2d )  
          IF( iom_use( "Cflx"  ) )  THEN
             zw2d(:,:) = oce_co2(:,:) / e1e2t(:,:) * rfact2r
@@ -211,8 +209,6 @@
          CALL iom_put( "tcflxcum" , t_oce_co2_flx_cum )      ! molC
          !
-         CALL wrk_dealloc( jpi, jpj, zw2d )
-      ENDIF
-      !
-      CALL wrk_dealloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx, zpco2atm )
+      ENDIF
+      !
       !
       IF( nn_timing == 1 )  CALL timing_stop('p4z_flx')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90	(revision 7910)
@@ -62,10 +62,9 @@
       REAL(wp) ::   zomegaca, zexcess, zexcess0
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zcaldiss, zhinit, zhi, zco3sat
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zco3, zcaldiss, zhinit, zhi, zco3sat
       !!---------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('p4z_lys')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat )
       !
       zco3    (:,:,:) = 0.
@@ -139,5 +138,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p4z_lys')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90	(revision 7910)
@@ -72,5 +72,5 @@
       REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zw3d
 
       !!---------------------------------------------------------------------
@@ -78,5 +78,4 @@
       IF( nn_timing == 1 )  CALL timing_start('p4z_meso')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zgrazing )
       zgrazing(:,:,:) = 0._wp
 
@@ -218,5 +217,4 @@
       !
       IF( lk_iomput .AND. knt == nrdttrc ) THEN
-         CALL wrk_alloc( jpi, jpj, jpk, zw3d )
          IF( iom_use( "GRAZ2" ) ) THEN
             zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)  !   Total grazing of phyto by zooplankton
@@ -227,5 +225,4 @@
             CALL iom_put( "PCAL", zw3d )  
          ENDIF
-         CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
       ENDIF
       !
@@ -236,5 +233,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zgrazing )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p4z_meso')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90	(revision 7910)
@@ -71,5 +71,5 @@
       REAL(wp) :: zgrazp, zgrazm, zgrazsd
       REAL(wp) :: zgrazmf, zgrazsf, zgrazpf
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zw3d
       CHARACTER (len=25) :: charout
       !!---------------------------------------------------------------------
@@ -77,5 +77,4 @@
       IF( nn_timing == 1 )  CALL timing_start('p4z_micro')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zgrazing )
       !
       DO jk = 1, jpkm1
@@ -179,10 +178,8 @@
       IF( lk_iomput ) THEN
          IF( knt == nrdttrc ) THEN
-           CALL wrk_alloc( jpi, jpj, jpk, zw3d )
            IF( iom_use( "GRAZ1" ) ) THEN
               zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)  !  Total grazing of phyto by zooplankton
               CALL iom_put( "GRAZ1", zw3d )
            ENDIF
-           CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
          ENDIF
       ENDIF
@@ -194,5 +191,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zgrazing )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p4z_micro')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90	(revision 7910)
@@ -66,8 +66,8 @@
       REAL(wp) ::   zchl
       REAL(wp) ::   zc0 , zc1 , zc2, zc3, z1_dep
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zetmp5
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zqsr100, zqsr_corr
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpar, ze0, ze1, ze2, ze3, zchl3d
+      REAL(wp), DIMENSION(jpi,jpj) :: zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4
+      REAL(wp), DIMENSION(jpi,jpj) :: zetmp5
+      REAL(wp), DIMENSION(jpi,jpj) :: zqsr100, zqsr_corr
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpar, ze0, ze1, ze2, ze3, zchl3d
       !!---------------------------------------------------------------------
       !
@@ -75,8 +75,4 @@
       !
       ! Allocate temporary workspace
-                   CALL wrk_alloc( jpi, jpj,      zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 )
-                   CALL wrk_alloc( jpi, jpj,      zqsr100, zqsr_corr )
-      IF( ln_p5z ) CALL wrk_alloc( jpi, jpj,      zetmp5 )
-                   CALL wrk_alloc( jpi, jpj, jpk, zpar   , ze0, ze1, ze2, ze3, zchl3d )
 
       IF( knt == 1 .AND. ln_varpar ) CALL p4z_opt_sbc( kt )
@@ -245,8 +241,4 @@
       ENDIF
       !
-                   CALL wrk_dealloc( jpi, jpj,      zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 )
-                   CALL wrk_dealloc( jpi, jpj,      zqsr100, zqsr_corr )
-      IF( ln_p5z ) CALL wrk_dealloc( jpi, jpj,      zetmp5 )
-                   CALL wrk_dealloc( jpi, jpj, jpk, zpar   ,  ze0, ze1, ze2, ze3, zchl3d )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p4z_opt')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90	(revision 7910)
@@ -64,6 +64,6 @@
       REAL(wp) ::   zrfact2
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:  )   :: totprod, totthick, totcons 
-      REAL(wp), POINTER, DIMENSION(:,:,:)   :: zremipoc, zremigoc, zorem3, ztremint
+      REAL(wp), DIMENSION(jpi,jpj)   :: totprod, totthick, totcons 
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   :: zremipoc, zremigoc, zorem3, ztremint
       REAL(wp), POINTER, DIMENSION(:,:,:,:) :: alphag
       !!---------------------------------------------------------------------
@@ -72,6 +72,4 @@
       !
       ! Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj,      totprod,  totthick, totcons )
-      CALL wrk_alloc( jpi, jpj, jpk, zremipoc, zremigoc, zorem3, ztremint )
       ALLOCATE( alphag(jpi,jpj,jpk,jcpoc) )
 
@@ -466,6 +464,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj,      totprod,  totthick, totcons )
-      CALL wrk_dealloc( jpi, jpj, jpk, zremipoc, zremigoc, zorem3, ztremint )
       DEALLOCATE( alphag )
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90	(revision 7910)
@@ -77,10 +77,10 @@
       REAL(wp) ::   zfact
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zstrn, zw2d, zmixnano, zmixdiat
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopeadn, zpislopeadd, zysopt, zw3d   
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprdia, zprbio, zprdch, zprnch   
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorcan, zprorcad, zprofed, zprofen
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpronewn, zpronewd
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxl_fac, zmxl_chl
+      REAL(wp), DIMENSION(jpi,jpj) :: zstrn, zw2d, zmixnano, zmixdiat
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadd, zysopt, zw3d   
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprdia, zprbio, zprdch, zprnch   
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprorcan, zprorcad, zprofed, zprofen
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpronewn, zpronewd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmxl_fac, zmxl_chl
       !!---------------------------------------------------------------------
       !
@@ -88,8 +88,4 @@
       !
       !  Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj,      zmixnano, zmixdiat, zstrn )
-      CALL wrk_alloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt ) 
-      CALL wrk_alloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl )
-      CALL wrk_alloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd )
       !
       zprorcan(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp ; zprofed (:,:,:) = 0._wp
@@ -368,6 +364,4 @@
     IF( lk_iomput ) THEN
        IF( knt == nrdttrc ) THEN
-          CALL wrk_alloc( jpi, jpj,      zw2d )
-          CALL wrk_alloc( jpi, jpj, jpk, zw3d )
           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s
           !
@@ -470,6 +464,4 @@
           IF( iom_use( "tintpp" ) )  CALL iom_put( "tintpp" , tpp * zfact )  !  global total integrated primary production molC/s
           !
-          CALL wrk_dealloc( jpi, jpj,      zw2d )
-          CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
        ENDIF
      ENDIF
@@ -481,8 +473,4 @@
      ENDIF
      !
-     CALL wrk_dealloc( jpi, jpj,  zmixnano, zmixdiat,    zstrn )
-     CALL wrk_dealloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt ) 
-     CALL wrk_dealloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl )
-     CALL wrk_dealloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd )
      !
      IF( nn_timing == 1 )  CALL timing_stop('p4z_prod')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90	(revision 7910)
@@ -67,6 +67,6 @@
       REAL(wp) ::   zosil, ztem, zdenitnh4, zolimic, zolimin, zolimip, zdenitrn, zdenitrp
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztempbac
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, zfacsi, zw3d, zfacsib
+      REAL(wp), DIMENSION(jpi,jpj) :: ztempbac
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zdepprod, zfacsi, zw3d, zfacsib
       !!---------------------------------------------------------------------
       !
@@ -74,6 +74,4 @@
       !
       ! Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj,      ztempbac                  )
-      CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zfacsi, zfacsib )
 
       ! Initialisation of temprary arrys
@@ -267,5 +265,4 @@
 
       IF( knt == nrdttrc ) THEN
-          CALL wrk_alloc( jpi, jpj, jpk, zw3d )
           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s
           !
@@ -279,9 +276,6 @@
           ENDIF
           !
-          CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
        ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj,      ztempbac                  )
-      CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zfacsi, zfacsib )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p4z_rem')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90	(revision 7910)
@@ -62,10 +62,10 @@
       !
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zsidep, zwork1, zwork2, zwork3
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdenit2d, zironice, zbureff
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zwsbio3, zwsbio4, zwscal
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zsedcal, zsedsi, zsedc
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrpo4, ztrdop, zirondep, zsoufer, zpdep, zlight
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zwsfep
+      REAL(wp), DIMENSION(jpi,jpj) :: zsidep, zwork1, zwork2, zwork3
+      REAL(wp), DIMENSION(jpi,jpj) :: zdenit2d, zironice, zbureff
+      REAL(wp), DIMENSION(jpi,jpj) :: zwsbio3, zwsbio4, zwscal
+      REAL(wp), DIMENSION(jpi,jpj) :: zsedcal, zsedsi, zsedc
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztrpo4, ztrdop, zirondep, zsoufer, zpdep, zlight
+      REAL(wp), DIMENSION(jpi,jpj) :: zwsfep
 
       !!---------------------------------------------------------------------
@@ -76,10 +76,4 @@
       !
       ! Allocate temporary workspace
-                      CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zbureff )
-                      CALL wrk_alloc( jpi, jpj, zwsbio3, zwsbio4, zwscal )
-                      CALL wrk_alloc( jpi, jpj, zsedcal,  zsedsi, zsedc )
-                      CALL wrk_alloc( jpi, jpj, jpk, zlight, zsoufer )
-      IF( ln_p5z )    CALL wrk_alloc( jpi, jpj, jpk, ztrpo4, ztrdop )
-      IF( ln_ligand ) CALL wrk_alloc( jpi, jpj, zwsfep )
 
 
@@ -98,5 +92,4 @@
       IF( ln_ironice ) THEN  
          !                                              
-         CALL wrk_alloc( jpi, jpj, zironice )
          !                                              
          DO jj = 1, jpj
@@ -115,5 +108,4 @@
             &   CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1) ) ! iron flux from ice
          !
-         CALL wrk_dealloc( jpi, jpj, zironice )
          !                                              
       ENDIF
@@ -123,6 +115,4 @@
       IF( ln_dust ) THEN
          !                                              
-         CALL wrk_alloc( jpi, jpj,      zsidep )
-         CALL wrk_alloc( jpi, jpj, jpk, zpdep, zirondep      )
          !                                              ! Iron and Si deposition at the surface
          IF( ln_solub ) THEN
@@ -153,6 +143,4 @@
             ENDIF
          ENDIF
-         CALL wrk_dealloc( jpi, jpj,      zsidep )
-         CALL wrk_dealloc( jpi, jpj, jpk, zpdep, zirondep      )
          !                                              
       ENDIF
@@ -516,10 +504,4 @@
       ENDIF
       !
-                      CALL wrk_dealloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zbureff )
-                      CALL wrk_dealloc( jpi, jpj, zwsbio3, zwsbio4, zwscal )
-                      CALL wrk_dealloc( jpi, jpj, zsedcal,  zsedsi, zsedc )
-                      CALL wrk_dealloc( jpi, jpj, jpk, zlight, zsoufer )
-      IF( ln_p5z )    CALL wrk_dealloc( jpi, jpj, jpk, ztrpo4, ztrdop )
-      IF( ln_ligand ) CALL wrk_dealloc( jpi, jpj, zwsfep )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p4z_sed')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90	(revision 7910)
@@ -65,6 +65,6 @@
       REAL(wp) ::   zfact, zwsmax, zmax
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d
+      REAL(wp), DIMENSION(jpi,jpj) :: zw2d
       !!---------------------------------------------------------------------
       !
@@ -212,6 +212,4 @@
      IF( lk_iomput ) THEN
        IF( knt == nrdttrc ) THEN
-          CALL wrk_alloc( jpi, jpj,      zw2d )
-          CALL wrk_alloc( jpi, jpj, jpk, zw3d )
           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s
           !
@@ -250,6 +248,4 @@
           IF( iom_use( "tcexp" ) )  CALL iom_put( "tcexp" , t_oce_co2_exp * zfact )   ! molC/s
           ! 
-          CALL wrk_dealloc( jpi, jpj,      zw2d )
-          CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
         ENDIF
       ENDIF
@@ -302,5 +298,5 @@
       INTEGER  ::   ji, jj, jk, jn
       REAL(wp) ::   zigma,zew,zign, zflx, zstep
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztraz, zakz, zwsink2, ztrb 
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztraz, zakz, zwsink2, ztrb 
       !!---------------------------------------------------------------------
       !
@@ -308,5 +304,4 @@
       !
       ! Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj, jpk, ztraz, zakz, zwsink2, ztrb )
 
       zstep = rfact2 / REAL( kiter, wp ) / 2.
@@ -389,5 +384,4 @@
       psinkflx(:,:,:)   = 2. * psinkflx(:,:,:)
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, ztraz, zakz, zwsink2, ztrb )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p4z_sink2')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90	(revision 7910)
@@ -424,5 +424,5 @@
       CHARACTER(LEN=100)   ::   cltxt
       INTEGER :: jk
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwork
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwork
       !!----------------------------------------------------------------------
 
@@ -444,5 +444,4 @@
       ENDIF
 
-      CALL wrk_alloc( jpi, jpj, jpk, zwork )
       !
       IF( iom_use( "pno3tot" ) .OR. ( ln_check_mass .AND. kt == nitend )  ) THEN
@@ -510,5 +509,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zwork )
       !
       ! Global budget of N SMS : denitrification in the water column and in the sediment
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmeso.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmeso.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmeso.F90	(revision 7910)
@@ -85,5 +85,5 @@
       CHARACTER (len=25) :: charout
       REAL(wp) :: zrfact2, zmetexcess
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zw3d
 
       !!---------------------------------------------------------------------
@@ -91,5 +91,4 @@
       IF( nn_timing == 1 )  CALL timing_start('p5z_meso')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zgrazing )
       zgrazing(:,:,:) = 0._wp
 
@@ -342,5 +341,4 @@
       !
       IF( lk_iomput .AND. knt == nrdttrc ) THEN
-         CALL wrk_alloc( jpi, jpj, jpk, zw3d )
          IF( iom_use( "GRAZ2" ) ) THEN
             zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)  !   Total grazing of phyto by zooplankton
@@ -351,5 +349,4 @@
             CALL iom_put( "PCAL", zw3d )
          ENDIF
-         CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
       ENDIF
       !
@@ -360,5 +357,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zgrazing )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p5z_meso')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmicro.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmicro.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmicro.F90	(revision 7910)
@@ -82,5 +82,5 @@
       REAL(wp) :: zgrazdc, zgrazdn, zgrazdp, zgrazdf, zgraznf, zgrazz
       REAL(wp) :: zgrazpc, zgrazpn, zgrazpp, zgrazpf, zbeta, zrfact2, zmetexcess
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zw3d
       CHARACTER (len=25) :: charout
       !!---------------------------------------------------------------------
@@ -88,5 +88,4 @@
       IF( nn_timing == 1 )  CALL timing_start('p5z_micro')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zgrazing )
       !
       zmetexcess = 0.0
@@ -290,10 +289,8 @@
       !
       IF( lk_iomput .AND. knt == nrdttrc ) THEN
-         CALL wrk_alloc( jpi, jpj, jpk, zw3d )
          IF( iom_use( "GRAZ1" ) ) THEN
             zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)  !  Total grazing of phyto by zooplankton
             CALL iom_put( "GRAZ1", zw3d )
          ENDIF
-         CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
       ENDIF
       !
@@ -304,5 +301,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zgrazing )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p5z_micro')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zprod.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zprod.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zprod.F90	(revision 7910)
@@ -81,19 +81,19 @@
       REAL(wp) ::   zfact, zrfact2
       CHARACTER (len=25) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zmixnano, zmixpico, zmixdiat, zstrn
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopeadn, zpislopeadp, zpislopeadd
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprbio, zprpic, zprdia, zysopt
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprchln, zprchlp, zprchld
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorcan, zprorcap, zprorcad 
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprofed, zprofep, zprofen
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpronewn, zpronewp, zpronewd
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zproregn, zproregp, zproregd
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpropo4n, zpropo4p, zpropo4d
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprodopn, zprodopp, zprodopd
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zrespn, zrespp, zrespd, zprnut
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zcroissn, zcroissp, zcroissd
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxl_fac, zmxl_chl
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zw2d
+      REAL(wp), DIMENSION(jpi,jpj) :: zmixnano, zmixpico, zmixdiat, zstrn
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadp, zpislopeadd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprbio, zprpic, zprdia, zysopt
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprchln, zprchlp, zprchld
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprorcan, zprorcap, zprorcad 
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprofed, zprofep, zprofen
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpronewn, zpronewp, zpronewd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zproregn, zproregp, zproregd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpropo4n, zpropo4p, zpropo4d
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprodopn, zprodopp, zprodopd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zrespn, zrespp, zrespd, zprnut
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zcroissn, zcroissp, zcroissd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmxl_fac, zmxl_chl
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d
+      REAL(wp), DIMENSION(jpi,jpj) :: zw2d
       !!---------------------------------------------------------------------
       !
@@ -101,13 +101,4 @@
       !
       !  Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj,      zmixnano, zmixpico, zmixdiat, zstrn )
-      CALL wrk_alloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl )
-      CALL wrk_alloc( jpi, jpj, jpk, zpislopeadn, zpislopeadp, zpislopeadd, zysopt ) 
-      CALL wrk_alloc( jpi, jpj, jpk, zprdia, zprpic, zprbio, zprorcan, zprorcap, zprorcad )
-      CALL wrk_alloc( jpi, jpj, jpk, zprofed, zprofep, zprofen )
-      CALL wrk_alloc( jpi, jpj, jpk, zpronewn, zpronewp, zpronewd, zproregn, zproregp, zproregd )
-      CALL wrk_alloc( jpi, jpj, jpk, zpropo4n, zpropo4p, zpropo4d, zrespn, zrespp, zrespd, zprnut )
-      CALL wrk_alloc( jpi, jpj, jpk, zprchln, zprchlp, zprchld, zprodopn, zprodopp, zprodopd )
-      CALL wrk_alloc( jpi, jpj, jpk, zcroissp, zcroissn, zcroissd )
       !
       zprorcan(:,:,:) = 0._wp ; zprorcap(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp
@@ -474,6 +465,4 @@
     IF( lk_iomput ) THEN
        IF( knt == nrdttrc ) THEN
-          CALL wrk_alloc( jpi, jpj,      zw2d )
-          CALL wrk_alloc( jpi, jpj, jpk, zw3d )
           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s
           !
@@ -550,6 +539,4 @@
           IF( iom_use( "tintpp" ) )  CALL iom_put( "tintpp" , tpp * zfact )  !  global total integrated primary production molC/s
           !
-          CALL wrk_dealloc( jpi, jpj,      zw2d )
-          CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
        ENDIF
      ENDIF
@@ -561,13 +548,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi, jpj,      zmixnano, zmixpico, zmixdiat, zstrn )
-      CALL wrk_dealloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl )
-      CALL wrk_dealloc( jpi, jpj, jpk, zpislopeadn, zpislopeadp, zpislopeadd, zysopt )                           
-      CALL wrk_dealloc( jpi, jpj, jpk, zprdia, zprpic, zprbio, zprorcan, zprorcap, zprorcad )
-      CALL wrk_dealloc( jpi, jpj, jpk, zprofed, zprofep, zprofen ) 
-      CALL wrk_dealloc( jpi, jpj, jpk, zpronewn, zpronewp, zpronewd, zproregn, zproregp, zproregd )
-      CALL wrk_dealloc( jpi, jpj, jpk, zpropo4n, zpropo4p, zpropo4d, zrespn, zrespp, zrespd, zprnut )
-      CALL wrk_dealloc( jpi, jpj, jpk, zprchln, zprchlp, zprchld, zprodopn, zprodopp, zprodopd )
-      CALL wrk_dealloc( jpi, jpj, jpk, zcroissp, zcroissn, zcroissd )
       !
       IF( nn_timing == 1 )  CALL timing_stop('p5z_prod')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90	(revision 7910)
@@ -78,10 +78,9 @@
       INTEGER ::   jk   ! dummy loop index
       CHARACTER (len=22) ::   charout
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zun, zvn, zwn  ! effective velocity
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zun, zvn, zwn  ! effective velocity
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )   CALL timing_start('trc_adv')
       !
-      CALL wrk_alloc( jpi,jpj,jpk,   zun, zvn, zwn )
       !                                               !==  effective transport  ==!
       IF( l_offline ) THEN
@@ -135,5 +134,4 @@
       END IF
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zun, zvn, zwn )
       !
       IF( nn_timing == 1 )  CALL timing_stop('trc_adv')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl.F90	(revision 7910)
@@ -49,5 +49,5 @@
       INTEGER, INTENT( in ) ::   kt   ! ocean time-step 
       CHARACTER (len=22) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   ztrtrd
+      REAL(wp), DIMENSION(jpi,jpj,jpk,jptra) ::   ztrtrd
       !!----------------------------------------------------------------------
       !
@@ -60,5 +60,4 @@
 
       IF( l_trdtrc )  THEN
-         CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrtrd ) ! temporary save of trends
          ztrtrd(:,:,:,:)  = tra(:,:,:,:)
       ENDIF
@@ -91,5 +90,4 @@
            CALL trd_tra( kt, 'TRC', jn, jptra_bbl, ztrtrd(:,:,:,jn) )
         END DO
-        CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd ) ! temporary save of trends
       ENDIF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90	(revision 7910)
@@ -85,15 +85,13 @@
       INTEGER ::   ji, jj, jk, jn, jl   ! dummy loop indices
       CHARACTER (len=22) ::   charout
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrtrd
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrcdta   ! 3D  workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrtrd
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrcdta   ! 3D  workspace
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('trc_dmp')
       !
-      IF( l_trdtrc )   CALL wrk_alloc( jpi, jpj, jpk, ztrtrd )   ! temporary save of trends
       !
       IF( nb_trcdta > 0 ) THEN  ! Initialisation of tracer from a file that may also be used for damping
          !
-         CALL wrk_alloc( jpi, jpj, jpk, ztrcdta )    ! Memory allocation
          !                                                          ! ===========
          DO jn = 1, jptra                                           ! tracer loop
@@ -150,8 +148,6 @@
          END DO                                                     ! tracer loop
          !                                                          ! ===========
-         CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta )
-      ENDIF
-      !
-      IF( l_trdtrc )  CALL wrk_dealloc( jpi, jpj, jpk, ztrtrd )
+      ENDIF
+      !
       !                                          ! print mean trends (used for debugging)
       IF( ln_ctl ) THEN
@@ -243,5 +239,5 @@
       INTEGER :: ji , jj, jk, jn, jl, jc                    ! dummy loop indicesa
       INTEGER :: isrow                                      ! local index
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrcdta       ! 3D  workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztrcdta       ! 3D  workspace
 
       !!----------------------------------------------------------------------
@@ -355,5 +351,4 @@
          IF(lwp)  WRITE(numout,*)
          !
-         CALL wrk_alloc( jpi, jpj, jpk, ztrcdta )   ! Memory allocation
          !
          DO jn = 1, jptra
@@ -373,5 +368,4 @@
              ENDIF
           ENDDO
-          CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta )
       ENDIF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90	(revision 7910)
@@ -68,6 +68,6 @@
       REAL(wp)           :: zdep
       CHARACTER (len=22) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   zahu, zahv
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   ztrtrd
+      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::   zahu, zahv
+      REAL(wp), DIMENSION(jpi,jpj,jpk,jptra) ::   ztrtrd
       !!----------------------------------------------------------------------
       !
@@ -75,9 +75,7 @@
       !
       IF( l_trdtrc )  THEN
-         CALL wrk_alloc( jpi,jpj,jpk,jptra,   ztrtrd )
          ztrtrd(:,:,:,:)  = tra(:,:,:,:)
       ENDIF
       !                                  !* set the lateral diffusivity coef. for passive tracer      
-      CALL wrk_alloc( jpi,jpj,jpk,   zahu, zahv )
       zahu(:,:,:) = rldf * ahtu(:,:,:) 
       zahv(:,:,:) = rldf * ahtv(:,:,:)
@@ -115,5 +113,4 @@
            CALL trd_tra( kt, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) )
         END DO
-        CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd )
       ENDIF
       !                
@@ -124,5 +121,4 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,jpk,   zahu, zahv )
       !
       IF( nn_timing == 1 )   CALL timing_stop('trc_ldf')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90	(revision 7910)
@@ -82,5 +82,5 @@
       REAL(wp) ::   zfact            ! temporary scalar
       CHARACTER (len=22) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  ztrdt 
+      REAL(wp), DIMENSION(jpi,jpj,jpk,jptra) ::  ztrdt 
       !!----------------------------------------------------------------------
       !
@@ -102,5 +102,4 @@
 
       IF( l_trdtrc )  THEN             ! trends: store now fields before the Asselin filter application
-         CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrdt )
          ztrdt(:,:,:,:)  = trn(:,:,:,:)
       ENDIF
@@ -137,5 +136,4 @@
             END DO
          END DO
-         CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrdt ) 
       END IF
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 7910)
@@ -139,5 +139,5 @@
       REAL(wp) :: ztrcorb, ztrmasb   ! temporary scalars
       REAL(wp) :: zcoef, ztrcorn, ztrmasn   !    "         "
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrtrdb, ztrtrdn   ! workspace arrays
+      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrtrdb, ztrtrdn   ! workspace arrays
       REAL(wp) :: zs2rdt
       LOGICAL ::   lldebug = .FALSE.
@@ -145,5 +145,4 @@
 
  
-      IF( l_trdtrc )  CALL wrk_alloc( jpi, jpj, jpk, ztrtrdb, ztrtrdn )
       
       IF( PRESENT( cpreserv )  ) THEN   !  total tracer concentration is preserved 
@@ -226,5 +225,4 @@
       ENDIF
 
-      IF( l_trdtrc )  CALL wrk_dealloc( jpi, jpj, jpk, ztrtrdb, ztrtrdn )
 
    END SUBROUTINE trc_rad_sms
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90	(revision 7910)
@@ -65,6 +65,6 @@
       REAL(wp) ::   zswitch, zftra, zcd, zdtra, ztfx, ztra         ! temporary scalars
       CHARACTER (len=22) :: charout
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zsfx
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrtrd
+      REAL(wp), DIMENSION(jpi,jpj) :: zsfx
+      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztrtrd
 
       !!---------------------------------------------------------------------
@@ -73,6 +73,4 @@
       !
       ! Allocate temporary workspace
-                      CALL wrk_alloc( jpi,jpj,       zsfx   )
-      IF( l_trdtrc )  CALL wrk_alloc( jpi,jpj,jpk,   ztrtrd )
       !
       zrtrn = 1.e-15_wp
@@ -190,6 +188,4 @@
                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' )
       ENDIF
-                      CALL wrk_dealloc( jpi,jpj,       zsfx   )
-      IF( l_trdtrc )  CALL wrk_dealloc( jpi,jpj,jpk,   ztrtrd )
       !
       IF( nn_timing == 1 )  CALL timing_stop('trc_sbc')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90	(revision 7910)
@@ -55,5 +55,5 @@
       INTEGER               ::  jk, jn
       CHARACTER (len=22)    :: charout
-      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   ztrtrd   ! 4D workspace
+      REAL(wp), DIMENSION(jpi,jpj,jpk,jptra) ::   ztrtrd   ! 4D workspace
       !!---------------------------------------------------------------------
       !
@@ -61,5 +61,4 @@
       !
       IF( l_trdtrc )  THEN
-         CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrtrd )
          ztrtrd(:,:,:,:)  = tra(:,:,:,:)
       ENDIF
@@ -77,5 +76,4 @@
             CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) )
          END DO
-         CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd )
       ENDIF
       !                                          ! print mean trends (used for debugging)
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trdmxl_trc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trdmxl_trc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/TRP/trdmxl_trc.F90	(revision 7910)
@@ -34,5 +34,4 @@
    USE prtctl            ! print control
    USE sms_pisces        ! PISCES bio-model
-   USE wrk_nemo          ! Memory allocation
 
    IMPLICIT NONE
@@ -102,8 +101,7 @@
       !
       INTEGER ::   ji, jj, jk, isum
-      REAL(wp), POINTER, DIMENSION(:,:) :: zvlmsk
-      !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, zvlmsk )
+      REAL(wp), DIMENSION(jpi,jpj) :: zvlmsk
+      !!----------------------------------------------------------------------
+
 
       ! I. Definition of control surface and integration weights
@@ -188,5 +186,4 @@
       END SELECT
       !
-      CALL wrk_dealloc( jpi, jpj, zvlmsk )
       !
    END SUBROUTINE trd_mxl_trc_zint
@@ -246,14 +243,14 @@
       REAL(wp) ::   zavt, zfn, zfn2
       !
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmltot             ! d(trc)/dt over the anlysis window (incl. Asselin)
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlres             ! residual = dh/dt entrainment term
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlatf             ! for storage only
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlrad             ! for storage only (for trb<0 corr in trcrad)
-      !
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmltot2            ! -+
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlres2            !  | working arrays to diagnose the trends
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmltrdm2           !  | associated with the time meaned ML
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlatf2            !  | passive tracers
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlrad2            !  | (-> for trb<0 corr in trcrad)
+      REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmltot             ! d(trc)/dt over the anlysis window (incl. Asselin)
+      REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlres             ! residual = dh/dt entrainment term
+      REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlatf             ! for storage only
+      REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlrad             ! for storage only (for trb<0 corr in trcrad)
+      !
+      REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmltot2            ! -+
+      REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlres2            !  | working arrays to diagnose the trends
+      REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmltrdm2           !  | associated with the time meaned ML
+      REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlatf2            !  | passive tracers
+      REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlrad2            !  | (-> for trb<0 corr in trcrad)
       !
       CHARACTER (LEN=10) ::   clvar
@@ -261,6 +258,4 @@
 
       ! Set-up pointers into sub-arrays of workspaces
-      CALL wrk_alloc( jpi, jpj, jptra, ztmltot , ztmlres , ztmlatf , ztmlrad             )
-      CALL wrk_alloc( jpi, jpj, jptra, ztmltot2, ztmlres2, ztmlatf2, ztmlrad2, ztmltrdm2 )
 
       IF( nn_dttrc  /= 1  )   CALL ctl_stop( " Be careful, trends diags never validated " )
@@ -742,6 +737,4 @@
       IF( lrst_trc )   CALL trd_mxl_trc_rst_write( kt )  ! this must be after the array swap above (III.3)
 
-      CALL wrk_dealloc( jpi, jpj, jptra, ztmltot , ztmlres , ztmlatf , ztmlrad             )
-      CALL wrk_dealloc( jpi, jpj, jptra, ztmltot2, ztmlres2, ztmlatf2, ztmlrad2, ztmltrdm2 )
       !
    END SUBROUTINE trd_mxl_trc
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90	(revision 7910)
@@ -68,8 +68,7 @@
       CHARACTER (len=20), ALLOCATABLE, DIMENSION(:) ::   cl
       CHARACTER (len=10) ::   cl2
-      REAL(wp), POINTER, DIMENSION(:,:,:)  :: zmask, ztab3d 
-      !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi, jpj, jpk, zmask, ztab3d )
+      REAL(wp), DIMENSION(jpi,jpj,jpk)  :: zmask, ztab3d 
+      !!----------------------------------------------------------------------
+
       ALLOCATE( cl(jptra) )
       !                                      ! Arrays, scalars initialization 
@@ -148,5 +147,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zmask, ztab3d )
       DEALLOCATE( cl )
       !
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/trcsub.F90
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/trcsub.F90	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/trcsub.F90	(revision 7910)
@@ -457,5 +457,5 @@
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
       REAL(wp) ::   zcoefu, zcoefv, zcoeff, z2dt, z1_2dt, z1_rau0   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:) :: zhdiv
+      REAL(wp), DIMENSION(jpi,jpj) :: zhdiv
       !!---------------------------------------------------------------------
       !
@@ -463,5 +463,4 @@
       !
       ! Allocate temporary workspace
-      CALL wrk_alloc( jpi,jpj,   zhdiv )
 
       IF( kt == nittrc000 ) THEN
@@ -518,5 +517,4 @@
       END DO
       !
-      CALL wrk_dealloc( jpi,jpj,   zhdiv )
       !
       IF( nn_timing == 1 )  CALL timing_stop('trc_sub_ssh')
Index: /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/TOOLS/MISCELLANEOUS/rewrite_nemo.sh
===================================================================
--- /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/TOOLS/MISCELLANEOUS/rewrite_nemo.sh	(revision 7909)
+++ /branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/TOOLS/MISCELLANEOUS/rewrite_nemo.sh	(revision 7910)
@@ -174,6 +174,6 @@
 # OPA_SRC/DYN/divcur.F90
 #./OPA_SRC/DYN/divcur.F90:      CALL wrk_alloc( jpi+4, jpj  , zwv, kjstart = -1 )
-sed -e "s/DIMENSION(jpi+4,jpj)/DIMENSION(-1:jpi+2,jpj)/" OPA_SRC/DYN/divcur.F90 > tmp$$
-mv tmp$$ OPA_SRC/DYN/divcur.F90
+#sed -e "s/DIMENSION(jpi+4,jpj)/DIMENSION(-1:jpi+2,jpj)/" OPA_SRC/DYN/divcur.F90 > tmp$$
+#mv tmp$$ OPA_SRC/DYN/divcur.F90
 
 # OPA_SRC/LDF/ldfslp.F90
@@ -185,6 +185,6 @@
 # OPA_SRC/ZDF/zdfkpp.F90
 #./OPA_SRC/ZDF/zdfkpp.F90:      CALL wrk_alloc( jpi,3, zmoek, kjstart = 0 )
-sed -e "s/DIMENSION(jpi,3) *::* zmoek/DIMENSION(jpi,0:2) ::   zmoek/" OPA_SRC/ZDF/zdfkpp.F90 > tmp$$
-mv tmp$$ OPA_SRC/ZDF/zdfkpp.F90
+#sed -e "s/DIMENSION(jpi,3) *::* zmoek/DIMENSION(jpi,0:2) ::   zmoek/" OPA_SRC/ZDF/zdfkpp.F90 > tmp$$
+#mv tmp$$ OPA_SRC/ZDF/zdfkpp.F90
 
 # links 
@@ -192,9 +192,4 @@
 # find . -type l
 #
-# ./LIM_SRC_2/limrhg.F90
-cd LIM_SRC_2
-ln -sf ../LIM_SRC_3/limrhg.F90 .
-cd ..
-
 # ./OOO_SRC/dtadyn.F90
 cd OOO_SRC
