Index: branches/dev_004_VVL/NEMO/OPA_SRC/DOM/dom_oce.F90
===================================================================
--- branches/dev_004_VVL/NEMO/OPA_SRC/DOM/dom_oce.F90	(revision 1384)
+++ branches/dev_004_VVL/NEMO/OPA_SRC/DOM/dom_oce.F90	(revision 1385)
@@ -114,4 +114,12 @@
 #if defined key_vvl
    LOGICAL, PUBLIC, PARAMETER ::   lk_vvl = .TRUE.    !: variable grid flag
+   !! All coordinates
+   !! ---------------
+   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   gdep3w_1           !: depth of T-points (sum of e3w) (m)
+   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   gdept_1, gdepw_1   !: analytical depth at T-W  points (m)
+   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   e3v_1  , e3f_1     !: analytical vertical scale factors at  V--F
+   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   e3t_1  , e3u_1     !:                                       T--U  points (m)
+   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   e3vw_1             !: analytical vertical scale factors at  VW--
+   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   e3w_1  , e3uw_1    !:                                       W--UW  points (m)
 #else
    LOGICAL, PUBLIC, PARAMETER ::   lk_vvl = .FALSE.   !: fixed grid flag
Index: branches/dev_004_VVL/NEMO/OPA_SRC/DOM/domvvl.F90
===================================================================
--- branches/dev_004_VVL/NEMO/OPA_SRC/DOM/domvvl.F90	(revision 1384)
+++ branches/dev_004_VVL/NEMO/OPA_SRC/DOM/domvvl.F90	(revision 1385)
@@ -78,14 +78,14 @@
 #endif
 
-      fsdept_0(:,:,:) = gdept (:,:,:)
-      fsdepw_0(:,:,:) = gdepw (:,:,:)
-      fsde3w_0(:,:,:) = gdep3w(:,:,:)
-      fse3t_0 (:,:,:) = e3t   (:,:,:)
-      fse3u_0 (:,:,:) = e3u   (:,:,:)
-      fse3v_0 (:,:,:) = e3v   (:,:,:)
-      fse3f_0 (:,:,:) = e3f   (:,:,:)
-      fse3w_0 (:,:,:) = e3w   (:,:,:)
-      fse3uw_0(:,:,:) = e3uw  (:,:,:)
-      fse3vw_0(:,:,:) = e3vw  (:,:,:)
+      fsdept(:,:,:) = gdept (:,:,:)
+      fsdepw(:,:,:) = gdepw (:,:,:)
+      fsde3w(:,:,:) = gdep3w(:,:,:)
+      fse3t (:,:,:) = e3t   (:,:,:)
+      fse3u (:,:,:) = e3u   (:,:,:)
+      fse3v (:,:,:) = e3v   (:,:,:)
+      fse3f (:,:,:) = e3f   (:,:,:)
+      fse3w (:,:,:) = e3w   (:,:,:)
+      fse3uw(:,:,:) = e3uw  (:,:,:)
+      fse3vw(:,:,:) = e3vw  (:,:,:)
 
       ! mu computation
Index: branches/dev_004_VVL/NEMO/OPA_SRC/DOM/domzgr_substitute.h90
===================================================================
--- branches/dev_004_VVL/NEMO/OPA_SRC/DOM/domzgr_substitute.h90	(revision 1384)
+++ branches/dev_004_VVL/NEMO/OPA_SRC/DOM/domzgr_substitute.h90	(revision 1385)
@@ -8,27 +8,4 @@
    !!            3.1  !  2009-02  (G. Madec, M. Leclair)  pure z* coordinate
    !!----------------------------------------------------------------------
-#if defined key_zco
-#   define  fsdept(i,j,k)  gdept_0(k)
-#   define  fsdepw(i,j,k)  gdepw_0(k)
-#   define  fsde3w(i,j,k)  gdepw_0(k)
-#   define  fse3t(i,j,k)   e3t_0(k)
-#   define  fse3u(i,j,k)   e3t_0(k)
-#   define  fse3v(i,j,k)   e3t_0(k)
-#   define  fse3f(i,j,k)   e3t_0(k)
-#   define  fse3w(i,j,k)   e3w_0(k)
-#   define  fse3uw(i,j,k)  e3w_0(k)
-#   define  fse3vw(i,j,k)  e3w_0(k)
-#else
-#   define  fsdept(i,j,k)  gdept(i,j,k)
-#   define  fsdepw(i,j,k)  gdepw(i,j,k)
-#   define  fsde3w(i,j,k)  gdep3w(i,j,k)
-#   define  fse3t(i,j,k)   e3t(i,j,k)
-#   define  fse3u(i,j,k)   e3u(i,j,k)
-#   define  fse3v(i,j,k)   e3v(i,j,k)
-#   define  fse3f(i,j,k)   e3f(i,j,k)
-#   define  fse3w(i,j,k)   e3w(i,j,k)
-#   define  fse3uw(i,j,k)  e3uw(i,j,k)
-#   define  fse3vw(i,j,k)  e3vw(i,j,k)
-#endif
 #if defined key_zco
 ! reference for pure z-coordinate (1D - no i,j and time dependency)
@@ -57,5 +34,16 @@
 #endif
 #if defined key_vvl
-! s* or z*-coordinate (3D + time dependency)
+! s* or z*-coordinate (3D + time dependency) + use of additional now arrays (..._1)
+#   define  fsdept(i,j,k)  gdept_1(i,j,k)
+#   define  fsdepw(i,j,k)  gdepw_1(i,j,k)
+#   define  fsde3w(i,j,k)  gdep3w_1(i,j,k)
+#   define  fse3t(i,j,k)   e3t_1(i,j,k)
+#   define  fse3u(i,j,k)   e3u_1(i,j,k)
+#   define  fse3v(i,j,k)   e3v_1(i,j,k)
+#   define  fse3f(i,j,k)   e3f_1(i,j,k)
+#   define  fse3w(i,j,k)   e3w_1(i,j,k)
+#   define  fse3uw(i,j,k)  e3uw_1(i,j,k)
+#   define  fse3vw(i,j,k)  e3vw_1(i,j,k)
+
 #   define  fsdept_b(i,j,k)  (fsdept_0(i,j,k)*(1+sshb(i,j)*mut(i,j,k)))
 #   define  fsdepw_b(i,j,k)  (fsdepw_0(i,j,k)*(1+sshb(i,j)*mut(i,j,k)))
@@ -91,6 +79,16 @@
 #   define  fse3vw_a(i,j,k)  (fse3vw_0(i,j,k)*(1+sshv_a(i,j)*muv(i,j,k)))
 #else
-! time dependent coordinate (1D or 3D)
-! s- or zps-coordinate (3D no time dependency)
+! z- or s-coordinate (1D or 3D + no time dependency) use reference in all cases
+#   define  fsdept(i,j,k)  fsdept_0(i,j,k)
+#   define  fsdepw(i,j,k)  fsdepw_0(i,j,k)
+#   define  fsde3w(i,j,k)  fsde3w_0(i,j,k)
+#   define  fse3t(i,j,k)   fse3t_0(i,j,k)
+#   define  fse3u(i,j,k)   fse3u_0(i,j,k)
+#   define  fse3v(i,j,k)   fse3v_0(i,j,k)
+#   define  fse3f(i,j,k)   fse3f_0(i,j,k)
+#   define  fse3w(i,j,k)   fse3w_0(i,j,k)
+#   define  fse3uw(i,j,k)  fse3uw_0(i,j,k)
+#   define  fse3vw(i,j,k)  fse3vw_0(i,j,k)
+
 #   define  fsdept_b(i,j,k)  fsdept_0(i,j,k)
 #   define  fsdepw_b(i,j,k)  fsdepw_0(i,j,k)
