From 45c0173b2eb49418ffce8398023db9c75dcb51ab Mon Sep 17 00:00:00 2001
From: Alexander BREUGEM <alexander.breugem@imdc.be>
Date: Thu, 13 Feb 2025 22:35:03 +0000
Subject: [PATCH] Definition of the vertical mesh by keywords in the TELEMAC-3D
 steering file New dimension for keyword MESH TRANSFORMATION (array with 1
 value per plane, not a single value) 2 new keywords: - SIGMA DISTRIBUTION OF
 PLANES - PRESCRIBED ELEVATION OF PLANES They allow to avoid to implement any
 Fortran file (USER_MESH_TRANSF)

---
 NEWS.txt                                      |   4 +
 .../telemac3d/user/latex/general_setup.tex    |  69 +++++++-
 examples/telemac3d/Cooper/t3d_cooperCas.cas   |  64 +++++++
 .../user_fortranCas}/user_t3d_corfon.f        |   7 +-
 examples/telemac3d/Cooper/vnv_Cooper.py       |  41 ++++-
 examples/telemac3d/m2wave/t3d_m2waveCas.cas   |  71 ++++++++
 .../m2wave/user_fortranCas/user_bord3d.f      | 101 +++++++++++
 examples/telemac3d/m2wave/vnv_m2wave.py       |  64 +++++++
 .../tetra/user_fortran/user_mesh_transf.f     |   5 +
 .../telemac3d/vent/f3d_ventDoubleSigma1.slf   |   3 +
 .../telemac3d/vent/f3d_ventDoubleSigma2.slf   |   3 +
 examples/telemac3d/vent/f3d_ventMixed.slf     |   3 +
 examples/telemac3d/vent/f3d_ventZlayer.slf    |   3 +
 examples/telemac3d/vent/geo_vent.slf          |   4 +-
 .../telemac3d/vent/t3d_ventDoubleSigma1.cas   |  61 +++++++
 .../telemac3d/vent/t3d_ventDoubleSigma2.cas   |  76 +++++++++
 .../telemac3d/vent/t3d_ventMixedSigmaZ.cas    |  77 +++++++++
 examples/telemac3d/vent/t3d_ventSigma.cas     |  76 +++++++++
 examples/telemac3d/vent/t3d_ventZplane.cas    |  76 +++++++++
 examples/telemac3d/vent/vnv_vent.py           | 161 +++++++++++++++++-
 sources/telemac3d/calcot.f                    |   4 +-
 sources/telemac3d/condim.f                    | 104 ++++++++++-
 sources/telemac3d/declarations_telemac3d.f    |  20 +++
 sources/telemac3d/lecdon_telemac3d.F          |  90 +++++++++-
 sources/telemac3d/telemac3d.dico              |  89 +++++++++-
 25 files changed, 1250 insertions(+), 26 deletions(-)
 create mode 100644 examples/telemac3d/Cooper/t3d_cooperCas.cas
 rename examples/telemac3d/{vent/user_fortran => Cooper/user_fortranCas}/user_t3d_corfon.f (92%)
 create mode 100644 examples/telemac3d/m2wave/t3d_m2waveCas.cas
 create mode 100644 examples/telemac3d/m2wave/user_fortranCas/user_bord3d.f
 create mode 100644 examples/telemac3d/vent/f3d_ventDoubleSigma1.slf
 create mode 100644 examples/telemac3d/vent/f3d_ventDoubleSigma2.slf
 create mode 100644 examples/telemac3d/vent/f3d_ventMixed.slf
 create mode 100644 examples/telemac3d/vent/f3d_ventZlayer.slf
 create mode 100644 examples/telemac3d/vent/t3d_ventDoubleSigma1.cas
 create mode 100644 examples/telemac3d/vent/t3d_ventDoubleSigma2.cas
 create mode 100644 examples/telemac3d/vent/t3d_ventMixedSigmaZ.cas
 create mode 100644 examples/telemac3d/vent/t3d_ventSigma.cas
 create mode 100644 examples/telemac3d/vent/t3d_ventZplane.cas

diff --git a/NEWS.txt b/NEWS.txt
index 8e553e71ae..211ac7208c 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -1,6 +1,10 @@
 Latest changes
 ==============
 
+TELEMAC-3D: New keywords SIGMA DISTRIBUTION OF PLANES and
+PRESCRIBED ELEVATION OF PLANES to set vertical planes directly in the steering
+file
+
 TOMAWAC: fix time series for wave directions
 
 MASCARET: Reference Documentation has been added
diff --git a/documentation/telemac3d/user/latex/general_setup.tex b/documentation/telemac3d/user/latex/general_setup.tex
index 5b462133d4..2e16f1d3fd 100644
--- a/documentation/telemac3d/user/latex/general_setup.tex
+++ b/documentation/telemac3d/user/latex/general_setup.tex
@@ -88,10 +88,10 @@ the \telfile{USER\_MESH\_TRANSF} subroutine is required.
 
 A value of 2 (Figure \ref{fig:mesh_transf2}) will allow the user to define the
 distribution of levels (e.g. refinement near surface) while maintaining the
-levels mobility (sigma transformation with given proportions). The latter
-choice implies that the user will program his/her distribution in the
-\telfile{USER\_MESH\_TRANSF} subroutine to define the \telfile{ZSTAR} array
-that describes
+levels mobility (sigma transformation with given proportions).
+Historically, the latter choice implies that the user will program the
+distribution in the \telfile{USER\_MESH\_TRANSF} subroutine to define the
+\telfile{ZSTAR} array that describes
 the distribution of levels along the vertical as a percentage of the water depth.
 Changes to make are:
 
@@ -131,6 +131,35 @@ ZSTAR%R(5)=0.8D0
 \label{fig:mesh_transf2}
 \end{figure}
 
+Since release 9.1, it is also possible to define the sigma coordinates in the
+steering file, using the keyword \telkey{SIGMA DISTRIBUTION OF PLANES}.
+In order to have maximum flexibility, the keyword \telkey{MESH TRANSFORMATION}
+can be defined for each horizontal level.
+However, this is not necessary. If one wants to use the same kind of
+mesh transformation (sigma levels or z levels) for each horizontal level,
+one value of \telkey{MESH TRANSFORMATION} is sufficient.
+In case the vertical distribution is prescribed in the steering file,
+it is not necessary to use any user defined Fortran routine:
+When specifying the sigma levels in the steering file, they need to be given
+for each horizontal level, for which the keyword \telkey{MESH TRANSFORMATION}
+is set to 2. Two examples are shown below:
+
+\begin{lstlisting}[language=TelemacCas]
+/Example with a single value of the keyword MESH TRANSFORMATION
+NUMBER OF HORIZONTAL LEVELS : 6
+MESH TRANSFORMATION : 2
+SIGMA DISTRIBUTION OF PLANES : 0.;0.02;0.1;0.4;0.8;1.
+
+\end{lstlisting}
+
+\begin{lstlisting}[language=TelemacCas]
+/Example with MESH TRANSFORMATION defined for each horizontal level
+NUMBER OF HORIZONTAL LEVELS : 6
+MESH TRANSFORMATION : 2;2;2;2;2;2
+SIGMA DISTRIBUTION OF PLANES : 0.;0.02;0.1;0.4;0.8;1.
+
+\end{lstlisting}
+
 In order to refine the mesh near the bottom or the free surface without any user
 Fortran implementation, the keyword \telkey{MESH TRANSFORMATION} can be set to
 4.
@@ -186,7 +215,7 @@ the distribution is specified by the \telfile{ZSTAR} variable),
 to value 1 of the \telfile{TRANSF\_PLANE} variable).
 \end{itemize}
 
-This latter choice requires the user to make changes in the
+Historically, this latter choice requires the user to make changes in the
 \telfile{USER\_MESH\_TRANSF} subroutine:
 
 \begin{itemize}
@@ -234,6 +263,36 @@ ZPLANE%R(6)=0.D0
 Various programming examples are provided as comments in the
 \telfile{USER\_MESH\_TRANSF} subroutine.\\
 
+Since release 9.1, it is also possible to prescribe the vertical layer
+distribution in the steering file, without using any user defined Fortran.
+In that case, the type of vertical level is prescribed with the keyword
+\telkey{MESH TRANSFORMATION}, with a value of 1 for an equally distributed
+sigma level, 2 for a sigma level with a prescribed distribution, and 3 for a
+z level. For each level with a value of 3 for the \telkey{MESH TRANSFORMATION},
+the vertical elevation can be described using the keyword
+\telkey{PRESCRIBED ELEVATION OF PLANES}. For each level with a value of 2
+for the \telkey{MESH TRANSFORMATION}, the sigma distribution is described with
+the keyword \telkey{SIGMA DISTRIBUTION OF PLANES}.
+No additional information is needed for levels with a value of 1 for the
+\telkey{MESH TRANSFORMATION}.
+The example above can be obtained using:
+
+\begin{lstlisting}[language=TelemacCas]
+NUMBER OF HORIZONTAL LEVELS : 12
+
+/specify mesh transformation for each level
+MESH TRANSFER : 2;2;2;2;2;3;1;1;1;1;1;1
+
+/sigma distribution for the lowest five levels
+SIGMA DISTRIBUTION OF PLANES : 0.;0.2;0.5;0.7;0.8
+
+/elevation of plane 6
+PRESCRIBED ELEVATION OF PLANES : 0.
+
+/no information need to be given for the highest 6 sigma levels
+
+\end{lstlisting}
+
 The triangular based prismatic elements can optionally be split into
 tetrahedrons. This option is enabled using the \telkey{ELEMENT} keyword can
 take the value 'PRISM' (default value) or 'TETRAHEDRON'.\\
diff --git a/examples/telemac3d/Cooper/t3d_cooperCas.cas b/examples/telemac3d/Cooper/t3d_cooperCas.cas
new file mode 100644
index 0000000000..4dcef6c48c
--- /dev/null
+++ b/examples/telemac3d/Cooper/t3d_cooperCas.cas
@@ -0,0 +1,64 @@
+FORTRAN FILE                    : 'user_fortranCas'
+BOUNDARY CONDITIONS FILE        : geo_cooper.cli
+GEOMETRY FILE                   : geo_cooper.slf
+3D RESULT FILE                  : r3d_cooper.slf
+2D RESULT FILE                  : r2d_cooper.slf
+/
+MESH TRANSFORMATION : 1;1;1;1;1;1;3;1;1;1;1
+PRESCRIBED ELEVATION OF PLANES : -4.
+/----------------------------------------------------------------------
+TITLE : 'BOX SOURCE. Discharge = 20 m3/s. Buoyant tracer.'
+VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B'
+VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,TA1'
+NUMBER OF HORIZONTAL LEVELS = 11
+TIME STEP = 5.
+NUMBER OF TIME STEPS = 360
+GRAPHIC PRINTOUT PERIOD = 180 / every 15 minutes
+LISTING PRINTOUT PERIOD = 60
+/----------------------------------------------------------------------
+SCHEME FOR ADVECTION OF VELOCITIES : 4
+SCHEME FOR ADVECTION OF TRACERS    : 4
+COEFFICIENT FOR HORIZONTAL DIFFUSION OF TRACERS : 0.
+COEFFICIENT FOR VERTICAL DIFFUSION OF TRACERS   : 0.1
+ACCURACY FOR DIFFUSION OF TRACERS : 1.E-15
+PRECONDITIONING FOR DIFFUSION OF TRACERS : 34  / TO ACCELERATE THE CONVERGENCE
+/----------------------------------------------------------------------
+COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES = 1.E-4
+COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES   = 0.
+PRECONDITIONING FOR DIFFUSION OF VELOCITIES : 34  / TO ACCELERATE THE CONVERGENCE
+/----------------------------------------------------------------------
+HORIZONTAL TURBULENCE MODEL : 1
+VERTICAL TURBULENCE MODEL : 2
+MIXING LENGTH MODEL       : 1   / OLD DEFAULT VALUE UNTIL V8P5
+LAW OF BOTTOM FRICTION : 5
+FRICTION COEFFICIENT FOR THE BOTTOM = 0.01
+/----------------------------------------------------------------------
+ACCURACY FOR PROPAGATION = 1.E-8
+/----------------------------------------------------------------------
+MASS-BALANCE : YES
+/----------------------------------------------------------------------/
+INITIAL CONDITIONS : 'CONSTANT ELEVATION'
+INITIAL ELEVATION : 0.0
+INITIAL VALUES OF TRACERS : 0.
+/----------------------------------------------------------------------
+ABSCISSAE OF SOURCES = 2000.0
+ORDINATES OF SOURCES = 2000.0
+ELEVATIONS OF SOURCES = -5.0
+WATER DISCHARGE OF SOURCES = 20.0
+VALUE OF THE TRACERS AT THE SOURCES = 333.33
+/----------------------------------------------------------------------
+NUMBER OF TRACERS = 1
+DENSITY LAW : 4
+BETA EXPANSION COEFFICIENT FOR TRACERS = 0.0003
+/BETA EXPANSION COEFFICIENT FOR TRACERS = 0.
+STANDARD VALUES FOR TRACERS : 0.
+/----------------------------------------------------------------------
+/  NON-HYDROSTATIC PART
+/----------------------------------------------------------------------
+PRECONDITIONING FOR PPE : 34 / TO ACCELERATE THE CONVERGENCE
+NON-HYDROSTATIC VERSION : YES
+/
+/ DEFAULT VALUES UNTIL V8P0 KEPT FOR NON REGRESSION
+SCHEME OPTION FOR ADVECTION OF VELOCITIES = 1
+SOLVER FOR PPE = 1
+SCHEME OPTION FOR ADVECTION OF TRACERS = 1
diff --git a/examples/telemac3d/vent/user_fortran/user_t3d_corfon.f b/examples/telemac3d/Cooper/user_fortranCas/user_t3d_corfon.f
similarity index 92%
rename from examples/telemac3d/vent/user_fortran/user_t3d_corfon.f
rename to examples/telemac3d/Cooper/user_fortranCas/user_t3d_corfon.f
index 6920e770c3..54ceb5d28a 100644
--- a/examples/telemac3d/vent/user_fortran/user_t3d_corfon.f
+++ b/examples/telemac3d/Cooper/user_fortranCas/user_t3d_corfon.f
@@ -61,10 +61,15 @@
 !
 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 !
+      INTEGER I
+      DOUBLE PRECISION EIKON
 !
 !-----------------------------------------------------------------------
 !
-      CALL OV('X=X+C     ', X=ZF, C=-10.D0, DIM1=NPOIN2)
+      DO I=1,NPOIN2
+        EIKON=((X(I)-2000.D0)**2 + (Y(I)-2000.D0)**2)/10000.D0
+        ZF(I) = -10.D0 +4.D0 * EXP(-EIKON)
+      ENDDO
 !
 !-----------------------------------------------------------------------
 !
diff --git a/examples/telemac3d/Cooper/vnv_Cooper.py b/examples/telemac3d/Cooper/vnv_Cooper.py
index 2920c672f3..cf747228a5 100644
--- a/examples/telemac3d/Cooper/vnv_Cooper.py
+++ b/examples/telemac3d/Cooper/vnv_Cooper.py
@@ -28,7 +28,6 @@ class VnvStudy(AbstractVnvStudy):
                        'telemac3d',
                        't3d_cooper.cas')
 
-
         # Cooper parallel mode
         cas = TelemacCas('t3d_cooper.cas', get_dico('telemac3d'))
         cas.set('PARALLEL PROCESSORS', 4)
@@ -37,7 +36,21 @@ class VnvStudy(AbstractVnvStudy):
                        'telemac3d',
                        't3d_cooper_par.cas',
                        cas=cas)
+        del cas
+        
+        # Cooper scalar mode
+        self.add_study('vnv_3',
+                       'telemac3d',
+                       't3d_cooperCas.cas')
 
+        # Cooper parallel mode
+        cas = TelemacCas('t3d_cooperCas.cas', get_dico('telemac3d'))
+        cas.set('PARALLEL PROCESSORS', 4)
+
+        self.add_study('vnv_4',
+                       'telemac3d',
+                       't3d_cooperCas_par.cas',
+                       cas=cas)
         del cas
 
         # Post-treatment
@@ -46,7 +59,6 @@ class VnvStudy(AbstractVnvStudy):
                        'p3d_cooper.cas')
 
 
-
     def _check_results(self):
         """
         Post-treatment processes
@@ -67,6 +79,31 @@ class VnvStudy(AbstractVnvStudy):
                             'vnv_2:T3DRES',
                             eps=[1.E-10])
 
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_3:T3DRES',
+                            'f3d_cooper.slf',
+                            eps=[1.E-10])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_4:T3DRES',
+                            'f3d_cooper.slf',
+                            eps=[1.E-10])
+
+        # Comparison between sequential and parallel run.
+        self.check_epsilons('vnv_3:T3DRES',
+                            'vnv_4:T3DRES',
+                            eps=[1.E-10])
+
+        # Comparison between Fortran and steering file defined layering
+        self.check_epsilons('vnv_1:T3DRES',
+                            'vnv_3:T3DRES',
+                            eps=[1.E-15])
+
+        # Comparison between Fortran and steering file defined layering
+        self.check_epsilons('vnv_2:T3DRES',
+                            'vnv_4:T3DRES',
+                            eps=[1.E-15])
+
 
     def _post(self):
         """
diff --git a/examples/telemac3d/m2wave/t3d_m2waveCas.cas b/examples/telemac3d/m2wave/t3d_m2waveCas.cas
new file mode 100644
index 0000000000..0fc3ac6dae
--- /dev/null
+++ b/examples/telemac3d/m2wave/t3d_m2waveCas.cas
@@ -0,0 +1,71 @@
+/-------------------------------------------------------------------/
+/   TELEMAC-3D  -  VALIDATION TEST CASE NUMBER 17 -  02/2000        /
+/                        M2 TIDE COMPONENT                          /
+/-------------------------------------------------------------------/
+/
+/----------------------------------------------
+/  COMPUTER INFORMATIONS
+/----------------------------------------------
+/
+GEOMETRY FILE             = geo_m2wave.slf
+FORTRAN FILE              = 'user_fortranCas'
+BOUNDARY CONDITIONS FILE  = geo_m2wave.cli
+2D RESULT FILE            = r2d_m2wave.slf
+3D RESULT FILE            = r3d_m2wave.slf
+FORMATTED DATA FILE 1     = fo1_m2wave.txt
+/
+/----------------------------------------------
+/  GENERAL INFORMATIONS - OUTPUTS
+/----------------------------------------------
+/
+TITLE = 'M2 TIDE COMPONENT'
+VARIABLES FOR 2D GRAPHIC PRINTOUTS =
+'U,V,H,S,B,W,MAXZ,TMXZ'
+VARIABLES FOR 3D GRAPHIC PRINTOUTS =
+'Z,U,V'
+GRAPHIC PRINTOUT PERIOD = 149
+LISTING PRINTOUT PERIOD = 100
+NUMBER OF FIRST TIME STEP FOR GRAPHIC PRINTOUTS = 894
+TIME STEP = 150.
+NUMBER OF TIME STEPS      = 1192
+/
+/----------------------------------------------
+/  PHYSICAL PARAMETERS
+/----------------------------------------------
+/
+LAW OF BOTTOM FRICTION              = 2
+FRICTION COEFFICIENT FOR THE BOTTOM = 40.
+CORIOLIS                            = YES
+VERTICAL TURBULENCE MODEL           = 2
+MIXING LENGTH MODEL                 = 3
+/
+/----------------------------------------------
+/  NUMERICAL PARAMETERS
+/----------------------------------------------
+/
+NUMBER OF HORIZONTAL LEVELS = 7
+MESH TRANSFORMATION = 2
+SIGMA DISTRIBUTION OF PLANES =
+0.D0;
+0.02D0;
+0.1D0;
+0.2D0;
+0.5D0;
+0.75D0;
+1.D0 
+NUMBER OF PRIVATE ARRAYS = 1
+TIDAL FLATS              = YES
+TREATMENT OF NEGATIVE DEPTHS  = 2
+SPHERICAL COORDINATES    = YES
+SPATIAL PROJECTION TYPE  = 2
+LATITUDE OF ORIGIN POINT = 48.
+LONGITUDE OF ORIGIN POINT = 0.
+ADVECTION STEP           = NO
+COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES = 0.
+SUPG OPTION              = 0
+SOLVER FOR PROPAGATION   = 7
+MASS-LUMPING FOR DEPTH   = 1.
+HYDROSTATIC INCONSISTENCY FILTER   = NO
+NON-HYDROSTATIC VERSION = NO
+/
+FREE SURFACE GRADIENT COMPATIBILITY : 0.9
diff --git a/examples/telemac3d/m2wave/user_fortranCas/user_bord3d.f b/examples/telemac3d/m2wave/user_fortranCas/user_bord3d.f
new file mode 100644
index 0000000000..feb7b2056e
--- /dev/null
+++ b/examples/telemac3d/m2wave/user_fortranCas/user_bord3d.f
@@ -0,0 +1,101 @@
+!                   **********************
+                    SUBROUTINE USER_BORD3D
+!                   **********************
+!
+!
+!***********************************************************************
+! TELEMAC3D   V7P3
+!***********************************************************************
+!
+!brief    SPECIFIC BOUNDARY CONDITIONS NOT IMPLEMENTED IN USUAL BORD3D.
+!
+!warning  MAY BE MODIFIED BY THE USER
+!
+!history  C.-T. PHAM (LNHE)
+!+        04/04/2017
+!+        V7P3
+!+   Creation from BORD3D and 4 examples of TELEMAC-3D:
+!+   stratification, tetra, NonLinearWave and Viollet
+!+   Prescribed stratification over the vertical along a liquid boundary
+!+   for stratification and tetra cases
+!+   Specific boundary conditions for H, U, V and P for lateral
+!+   boundaries for NonLinearWave case
+!+   Specific boundary conditions for U, V, temp, epsilon for Viollet
+!+
+!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!
+      USE BIEF
+      USE DECLARATIONS_TELEMAC
+      USE DECLARATIONS_TELEMAC3D, ONLY: HBOR, NPTFR2, T3D_FILES, T3DFO1,
+     & BOUNDARY_COLOUR,ZF, AT, LT,MESH2D
+!      USE INTERFACE_TELEMAC3D
+!
+      USE DECLARATIONS_SPECIAL
+      IMPLICIT NONE
+!
+!
+!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+!
+!
+!  TABLEAUX ISSUS DU FICHIER 26 , DONNANT LES CONDITIONS AUX LIMITES
+!
+      DOUBLE PRECISION HB(77),PHASEB(77),HC(77),PHASEC(77)
+!
+      DOUBLE PRECISION PI,AN,ARG,T,W
+!
+      INTEGER NBORL(77),NPTFRL,I,KK,ID,K
+      INTEGER, POINTER :: NBOR(:)
+!
+!  TABLEAUX DE DONNEES TEMPORELLES
+!
+      SAVE HB,PHASEB,PHASEC,NBORL,HC
+!
+!-----------------------------------------------------------------------
+!
+!  LECTURE SUR LE FICHIER 26 DE HB ET PHASEB, CALCULES
+!  PAR INTERPOLATION SUR CHAQUE POINT FRONTIERE
+!
+      NBOR=>MESH2D%NBOR%I
+      PI = 4.D0*ATAN(1.D0)
+      NPTFRL = 77
+      IF(LT.EQ.0) THEN
+        DO K = 1, NPTFR2
+          HBOR%R(K) = 1.D0
+        ENDDO
+      ENDIF
+      IF(ABS(AT-150.D0).LT.1.D-5) THEN
+        ID = T3D_FILES(T3DFO1)%LU
+        REWIND ID
+        DO K= 1, NPTFRL
+          READ(ID,*) I,HB(K),PHASEB(K),HC(K),PHASEC(K)
+          PHASEB(K) = PI/180.D0*PHASEB(K)
+          PHASEC(K) = PI/180.D0*PHASEC(K)
+          NBORL(K) = I
+        ENDDO
+      ENDIF
+!
+      T = 44714.D0
+      W = 2.D0*PI/T
+!
+      DO K= 1 , NPTFRL
+        ARG = MOD (W*AT - PHASEB(K),2.D0*PI)
+        AN  = HB(K) * COS(ARG)
+        ARG = MOD (2.D0*W*AT - PHASEC(K),2.D0*PI)
+        AN  = AN + HC(K) * COS(ARG)
+        IF (AT.LT.2500.D0) AN = AN*0.0004D0*AT
+        IF(NCSIZE.GT.0) THEN
+          DO KK=1,NPTFR2
+            IF(BOUNDARY_COLOUR%I(KK).EQ.NBORL(K)) THEN
+              HBOR%R(KK) = AN-ZF%R(NBOR(KK))
+            ENDIF
+          ENDDO
+        ELSE
+          HBOR%R(NBORL(K)) = AN-ZF%R(NBOR(NBORL(K)))
+        ENDIF
+      ENDDO
+!
+!-----------------------------------------------------------------------
+!
+      RETURN
+      END
diff --git a/examples/telemac3d/m2wave/vnv_m2wave.py b/examples/telemac3d/m2wave/vnv_m2wave.py
index 676060e884..9747b7341b 100644
--- a/examples/telemac3d/m2wave/vnv_m2wave.py
+++ b/examples/telemac3d/m2wave/vnv_m2wave.py
@@ -36,6 +36,19 @@ class VnvStudy(AbstractVnvStudy):
                        't3d_m2wave_par.cas',
                        cas=cas)
         del cas
+        # scalar mode
+        self.add_study('vnv_3',
+                       'telemac3d',
+                       't3d_m2waveCas.cas')
+        # parallel mode
+        cas = TelemacCas('t3d_m2waveCas.cas', get_dico('telemac3d'))
+        cas.set('PARALLEL PROCESSORS', 4)
+
+        self.add_study('vnv_4',
+                       'telemac3d',
+                       't3d_m2waveCas_par.cas',
+                       cas=cas)
+        del cas
 
 
     def _check_results(self):
@@ -73,6 +86,57 @@ class VnvStudy(AbstractVnvStudy):
         self.check_epsilons('vnv_1:T3DRES',
                             'vnv_2:T3DRES',
                             eps=[1.e-8])
+                            
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_3:T3DHYD',
+                            'f2d_m2wave.slf',
+                            eps=[1.e-8])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_4:T3DHYD',
+                            'f2d_m2wave.slf',
+                            eps=[1.e-8])
+
+        # Comparison between sequential and parallel run.
+        self.check_epsilons('vnv_3:T3DHYD',
+                            'vnv_4:T3DHYD',
+                            eps=[1.e-8])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_3:T3DRES',
+                            'f3d_m2wave.slf',
+                            eps=[1.e-8])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_4:T3DRES',
+                            'f3d_m2wave.slf',
+                            eps=[1.e-8])
+
+        # Comparison between sequential and parallel run.
+        self.check_epsilons('vnv_3:T3DRES',
+                            'vnv_4:T3DRES',
+                            eps=[1.e-8])                            
+
+        # Comparison between Fortran and steering file defined layering
+        self.check_epsilons('vnv_1:T3DHYD',
+                            'vnv_3:T3DHYD',
+                            eps=[1.e-15])
+
+        # Comparison between Fortran and steering file defined layering
+        self.check_epsilons('vnv_2:T3DHYD',
+                            'vnv_4:T3DHYD',
+                            eps=[1.e-15])
+ 
+        # Comparison between Fortran and steering file defined layering
+        self.check_epsilons('vnv_1:T3DRES',
+                            'vnv_3:T3DRES',
+                            eps=[1.e-15])
+
+        # Comparison between Fortran and steering file defined layering
+        self.check_epsilons('vnv_2:T3DRES',
+                            'vnv_4:T3DRES',
+                            eps=[1.e-15])
+
 
     def _post(self):
         """
diff --git a/examples/telemac3d/tetra/user_fortran/user_mesh_transf.f b/examples/telemac3d/tetra/user_fortran/user_mesh_transf.f
index 7641f867b3..75065f721b 100644
--- a/examples/telemac3d/tetra/user_fortran/user_mesh_transf.f
+++ b/examples/telemac3d/tetra/user_fortran/user_mesh_transf.f
@@ -24,9 +24,14 @@
       IMPLICIT NONE
 !
 !-----------------------------------------------------------------------
+!
+      INTEGER IPLAN
 !
 !-----------------------------------------------------------------------
 !
+      DO IPLAN=1,NPLAN
+        TRANSF_PLANE%I(IPLAN)=1
+      ENDDO
       TRANSF_PLANE%I(4)=3
       ZPLANE%R(4)=-0.2D0
 !
diff --git a/examples/telemac3d/vent/f3d_ventDoubleSigma1.slf b/examples/telemac3d/vent/f3d_ventDoubleSigma1.slf
new file mode 100644
index 0000000000..660c2f2837
--- /dev/null
+++ b/examples/telemac3d/vent/f3d_ventDoubleSigma1.slf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1849b860e4f48e6715e182a4fbc2eaa255cf87c15841857ee1402b1299fa7ad1
+size 334140
diff --git a/examples/telemac3d/vent/f3d_ventDoubleSigma2.slf b/examples/telemac3d/vent/f3d_ventDoubleSigma2.slf
new file mode 100644
index 0000000000..78f36a0184
--- /dev/null
+++ b/examples/telemac3d/vent/f3d_ventDoubleSigma2.slf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cde47d3fc1a94f01b414ea414ab9820dbbb3d10dd4a51e3d57742cf780776152
+size 334140
diff --git a/examples/telemac3d/vent/f3d_ventMixed.slf b/examples/telemac3d/vent/f3d_ventMixed.slf
new file mode 100644
index 0000000000..95c01ee656
--- /dev/null
+++ b/examples/telemac3d/vent/f3d_ventMixed.slf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32946437c4addf199c28b6a59281f11e8e91bdcbd6125043b227545d59813e4e
+size 334140
diff --git a/examples/telemac3d/vent/f3d_ventZlayer.slf b/examples/telemac3d/vent/f3d_ventZlayer.slf
new file mode 100644
index 0000000000..5608b336d9
--- /dev/null
+++ b/examples/telemac3d/vent/f3d_ventZlayer.slf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f6c85f7112272f96bd14a290eacfe49bcb5e43ffe3fcdf5f3529f58ca3b7d96
+size 334140
diff --git a/examples/telemac3d/vent/geo_vent.slf b/examples/telemac3d/vent/geo_vent.slf
index 7cdd2e65fc..263ac2eb6b 100644
--- a/examples/telemac3d/vent/geo_vent.slf
+++ b/examples/telemac3d/vent/geo_vent.slf
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:c742f3debcf978a005082d9518d6c6344592890df629331d4cea20a218936163
-size 11824
+oid sha256:05bf47370d0e12a8a51d75448bfb3273c607109963ab2a73d8687a5f468280fe
+size 13132
diff --git a/examples/telemac3d/vent/t3d_ventDoubleSigma1.cas b/examples/telemac3d/vent/t3d_ventDoubleSigma1.cas
new file mode 100644
index 0000000000..8d35cd2c90
--- /dev/null
+++ b/examples/telemac3d/vent/t3d_ventDoubleSigma1.cas
@@ -0,0 +1,61 @@
+/----------------------------------------------------------------------
+/                      ENVIRONNEMENT INFORMATIQUE
+/----------------------------------------------------------------------
+BOUNDARY CONDITIONS FILE : geo_vent.cli
+GEOMETRY FILE            : geo_vent.slf
+2D RESULT FILE           : r2d_vent.slf
+3D RESULT FILE           : r3d_vent.slf
+/----------------------------------------------------------------------
+/                        OPTIONS GENERALES
+/----------------------------------------------------------------------
+INITIAL CONDITIONS : 'ZERO ELEVATION'
+MESH TRANSFORMATION : 1;1;1;1;1;1;1;1;3;1;1;1;1;1;1
+PRESCRIBED ELEVATION OF PLANES : -3.
+/
+TITLE : 'TEST CANAL Soumis a un vent'
+/
+VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF'
+VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ'
+TIME STEP : 10.
+NUMBER OF TIME STEPS : 2000
+GRAPHIC PRINTOUT PERIOD : 2000
+LISTING PRINTOUT PERIOD : 100
+/
+NUMBER OF HORIZONTAL LEVELS : 15
+/----------------------------------------------------------------------
+/                       OPTIONS NUMERIQUES
+/----------------------------------------------------------------------
+MASS-BALANCE  : YES
+/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS'
+VERTICAL TURBULENCE MODEL : 2
+MIXING LENGTH MODEL : 6
+/
+COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1
+COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES   : 1.E-6
+/
+SCHEME FOR ADVECTION OF VELOCITIES : 5
+/
+/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7
+IMPLICITATION FOR DEPTH      : 0.6
+IMPLICITATION FOR VELOCITIES : 0.6
+/----------------------------------------------------------------------
+/             VENT (10 m/s  direction OUEST)
+/----------------------------------------------------------------------
+WIND                          : YES
+/ COEFFICIENT REFAIT DANS BORD3D
+COEFFICIENT OF WIND INFLUENCE : 1.625E-6
+WIND VELOCITY ALONG X         : 10.
+WIND VELOCITY ALONG Y         :  0.
+/----------------------------------------------------------------------
+ACCURACY FOR PROPAGATION : 1.E-15
+SOLVER FOR PPE   : 1
+PRECONDITIONING FOR PPE : 34
+/
+/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION
+LAW OF BOTTOM FRICTION = 2
+/
+/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION
+FRICTION COEFFICIENT FOR THE BOTTOM = 60.
+/
+/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION
+COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO
diff --git a/examples/telemac3d/vent/t3d_ventDoubleSigma2.cas b/examples/telemac3d/vent/t3d_ventDoubleSigma2.cas
new file mode 100644
index 0000000000..8d0ea75229
--- /dev/null
+++ b/examples/telemac3d/vent/t3d_ventDoubleSigma2.cas
@@ -0,0 +1,76 @@
+/----------------------------------------------------------------------
+/                      ENVIRONNEMENT INFORMATIQUE
+/----------------------------------------------------------------------
+BOUNDARY CONDITIONS FILE : geo_vent.cli
+GEOMETRY FILE            : geo_vent.slf
+2D RESULT FILE           : r2d_vent.slf
+3D RESULT FILE           : r3d_vent.slf
+/----------------------------------------------------------------------
+/                        OPTIONS GENERALES
+/----------------------------------------------------------------------
+INITIAL CONDITIONS : 'ZERO ELEVATION'
+MESH TRANSFORMATION : 2;2;2;2;2;2;2;2;3;2;2;2;2;2;2
+PRESCRIBED ELEVATION OF PLANES : -3.
+SIGMA DISTRIBUTION OF PLANES :
+    0.;
+0.1071;
+0.2143;
+0.3214;
+0.4643;
+0.6071;
+0.7500;
+0.8929;
+0.2500;
+0.5000;
+0.7500;
+0.9000;
+0.9667;
+1.
+/
+TITLE : 'TEST CANAL Soumis a un vent'
+/
+VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF'
+VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ'
+TIME STEP : 10.
+NUMBER OF TIME STEPS : 2000
+GRAPHIC PRINTOUT PERIOD : 2000
+LISTING PRINTOUT PERIOD : 100
+/
+NUMBER OF HORIZONTAL LEVELS : 15
+/----------------------------------------------------------------------
+/                       OPTIONS NUMERIQUES
+/----------------------------------------------------------------------
+MASS-BALANCE  : YES
+/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS'
+VERTICAL TURBULENCE MODEL : 2
+MIXING LENGTH MODEL : 6
+/
+COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1
+COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES   : 1.E-6
+/
+SCHEME FOR ADVECTION OF VELOCITIES : 5
+/
+/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7
+IMPLICITATION FOR DEPTH      : 0.6
+IMPLICITATION FOR VELOCITIES : 0.6
+/----------------------------------------------------------------------
+/             VENT (10 m/s  direction OUEST)
+/----------------------------------------------------------------------
+WIND                          : YES
+/ COEFFICIENT REFAIT DANS BORD3D
+COEFFICIENT OF WIND INFLUENCE : 1.625E-6
+WIND VELOCITY ALONG X         : 10.
+WIND VELOCITY ALONG Y         :  0.
+/----------------------------------------------------------------------
+ACCURACY FOR PROPAGATION : 1.E-15
+SOLVER FOR PPE   : 1
+PRECONDITIONING FOR PPE : 34
+/
+/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION
+LAW OF BOTTOM FRICTION = 2
+/
+/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION
+FRICTION COEFFICIENT FOR THE BOTTOM = 60.
+/
+/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION
+COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO
diff --git a/examples/telemac3d/vent/t3d_ventMixedSigmaZ.cas b/examples/telemac3d/vent/t3d_ventMixedSigmaZ.cas
new file mode 100644
index 0000000000..b562f82fa1
--- /dev/null
+++ b/examples/telemac3d/vent/t3d_ventMixedSigmaZ.cas
@@ -0,0 +1,77 @@
+/----------------------------------------------------------------------
+/                      ENVIRONNEMENT INFORMATIQUE
+/----------------------------------------------------------------------
+BOUNDARY CONDITIONS FILE : geo_vent.cli
+GEOMETRY FILE            : geo_vent.slf
+2D RESULT FILE           : r2d_vent.slf
+3D RESULT FILE           : r3d_vent.slf
+/----------------------------------------------------------------------
+/                        OPTIONS GENERALES
+/----------------------------------------------------------------------
+INITIAL CONDITIONS : 'ZERO ELEVATION'
+MESH TRANSFORMATION : 2;2;2;2;2;2;2;2;3;3;3;3;3;3;3
+PRESCRIBED ELEVATION OF PLANES :
+-3.00;
+-2.25;
+-1.50;
+-0.75;
+-0.30;
+-0.10;
+ 0.
+SIGMA DISTRIBUTION OF PLANES :
+    0.;
+0.1071;
+0.2143;
+0.3214;
+0.4643;
+0.6071;
+0.7500;
+0.8929
+/
+TITLE : 'TEST CANAL Soumis a un vent'
+/
+VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF'
+VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ'
+TIME STEP : 10.
+NUMBER OF TIME STEPS : 2000
+GRAPHIC PRINTOUT PERIOD : 2000
+LISTING PRINTOUT PERIOD : 100
+/
+NUMBER OF HORIZONTAL LEVELS : 15
+/----------------------------------------------------------------------
+/                       OPTIONS NUMERIQUES
+/----------------------------------------------------------------------
+MASS-BALANCE  : YES
+/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS'
+VERTICAL TURBULENCE MODEL : 2
+MIXING LENGTH MODEL : 6
+/
+COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1
+COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES   : 1.E-6
+/
+SCHEME FOR ADVECTION OF VELOCITIES : 5
+/
+/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7
+IMPLICITATION FOR DEPTH      : 0.6
+IMPLICITATION FOR VELOCITIES : 0.6
+/----------------------------------------------------------------------
+/             VENT (10 m/s  direction OUEST)
+/----------------------------------------------------------------------
+WIND                          : YES
+/ COEFFICIENT REFAIT DANS BORD3D
+COEFFICIENT OF WIND INFLUENCE : 1.625E-6
+WIND VELOCITY ALONG X         : 10.
+WIND VELOCITY ALONG Y         :  0.
+/----------------------------------------------------------------------
+ACCURACY FOR PROPAGATION : 1.E-15
+SOLVER FOR PPE   : 1
+PRECONDITIONING FOR PPE : 34
+/
+/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION
+LAW OF BOTTOM FRICTION = 2
+/
+/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION
+FRICTION COEFFICIENT FOR THE BOTTOM = 60.
+/
+/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION
+COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO
diff --git a/examples/telemac3d/vent/t3d_ventSigma.cas b/examples/telemac3d/vent/t3d_ventSigma.cas
new file mode 100644
index 0000000000..2df5c1f20c
--- /dev/null
+++ b/examples/telemac3d/vent/t3d_ventSigma.cas
@@ -0,0 +1,76 @@
+/----------------------------------------------------------------------
+/                      ENVIRONNEMENT INFORMATIQUE
+/----------------------------------------------------------------------
+BOUNDARY CONDITIONS FILE : geo_vent.cli
+GEOMETRY FILE            : geo_vent.slf
+2D RESULT FILE           : r2d_vent.slf
+3D RESULT FILE           : r3d_vent.slf
+/----------------------------------------------------------------------
+/                        OPTIONS GENERALES
+/----------------------------------------------------------------------
+INITIAL CONDITIONS : 'ZERO ELEVATION'
+MESH TRANSFORMATION : 2
+SIGMA DISTRIBUTION OF PLANES : 
+0.D0;
+0.075D0;
+0.15D0;
+0.225D0;
+0.325D0;
+0.425D0;
+0.525D0;
+0.625D0;
+0.7D0;
+0.775D0;
+0.85D0;
+0.925D0;
+0.97D0;
+0.99D0;
+1.D0
+/
+TITLE : 'TEST CANAL Soumis a un vent'
+/
+VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF'
+VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ'
+TIME STEP : 10.
+NUMBER OF TIME STEPS : 2000
+GRAPHIC PRINTOUT PERIOD : 2000
+LISTING PRINTOUT PERIOD : 100
+/
+NUMBER OF HORIZONTAL LEVELS : 15
+/----------------------------------------------------------------------
+/                       OPTIONS NUMERIQUES
+/----------------------------------------------------------------------
+MASS-BALANCE  : YES
+/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS'
+VERTICAL TURBULENCE MODEL : 2
+MIXING LENGTH MODEL : 6
+/
+COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1
+COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES   : 1.E-6
+/
+SCHEME FOR ADVECTION OF VELOCITIES : 5
+/
+/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7
+IMPLICITATION FOR DEPTH      : 0.6
+IMPLICITATION FOR VELOCITIES : 0.6
+/----------------------------------------------------------------------
+/             VENT (10 m/s  direction OUEST)
+/----------------------------------------------------------------------
+WIND                          : YES
+/ COEFFICIENT REFAIT DANS BORD3D
+COEFFICIENT OF WIND INFLUENCE : 1.625E-6
+WIND VELOCITY ALONG X         : 10.
+WIND VELOCITY ALONG Y         :  0.
+/----------------------------------------------------------------------
+ACCURACY FOR PROPAGATION : 1.E-15
+SOLVER FOR PPE   : 1
+PRECONDITIONING FOR PPE : 34
+/
+/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION
+LAW OF BOTTOM FRICTION = 2
+/
+/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION
+FRICTION COEFFICIENT FOR THE BOTTOM = 60.
+/
+/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION
+COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO
diff --git a/examples/telemac3d/vent/t3d_ventZplane.cas b/examples/telemac3d/vent/t3d_ventZplane.cas
new file mode 100644
index 0000000000..0503b4870f
--- /dev/null
+++ b/examples/telemac3d/vent/t3d_ventZplane.cas
@@ -0,0 +1,76 @@
+/----------------------------------------------------------------------
+/                      ENVIRONNEMENT INFORMATIQUE
+/----------------------------------------------------------------------
+BOUNDARY CONDITIONS FILE : geo_vent.cli
+GEOMETRY FILE            : geo_vent.slf
+2D RESULT FILE           : r2d_vent.slf
+3D RESULT FILE           : r3d_vent.slf
+/----------------------------------------------------------------------
+/                        OPTIONS GENERALES
+/----------------------------------------------------------------------
+INITIAL CONDITIONS : 'ZERO ELEVATION'
+MESH TRANSFORMATION : 3
+PRESCRIBED ELEVATION OF PLANES : 
+-10.00;
+ -9.25;
+ -8.50;
+ -7.75;
+ -6.75;
+ -5.75;
+ -4.75;
+ -3.75;
+ -3.00;
+ -2.25;
+ -1.50;
+ -0.75;
+ -0.30;
+ -0.10;
+  0.00
+/
+TITLE : 'TEST CANAL Soumis a un vent'
+/
+VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF'
+VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ'
+TIME STEP : 10.
+NUMBER OF TIME STEPS : 2000
+GRAPHIC PRINTOUT PERIOD : 2000
+LISTING PRINTOUT PERIOD : 100
+/
+NUMBER OF HORIZONTAL LEVELS : 15
+/----------------------------------------------------------------------
+/                       OPTIONS NUMERIQUES
+/----------------------------------------------------------------------
+MASS-BALANCE  : YES
+/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS'
+VERTICAL TURBULENCE MODEL : 2
+MIXING LENGTH MODEL : 6
+/
+COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1
+COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES   : 1.E-6
+/
+SCHEME FOR ADVECTION OF VELOCITIES : 5
+/
+/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7
+IMPLICITATION FOR DEPTH      : 0.6
+IMPLICITATION FOR VELOCITIES : 0.6
+/----------------------------------------------------------------------
+/             VENT (10 m/s  direction OUEST)
+/----------------------------------------------------------------------
+WIND                          : YES
+/ COEFFICIENT REFAIT DANS BORD3D
+COEFFICIENT OF WIND INFLUENCE : 1.625E-6
+WIND VELOCITY ALONG X         : 10.
+WIND VELOCITY ALONG Y         :  0.
+/----------------------------------------------------------------------
+ACCURACY FOR PROPAGATION : 1.E-15
+SOLVER FOR PPE   : 1
+PRECONDITIONING FOR PPE : 34
+/
+/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION
+LAW OF BOTTOM FRICTION = 2
+/
+/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION
+FRICTION COEFFICIENT FOR THE BOTTOM = 60.
+/
+/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION
+COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO
diff --git a/examples/telemac3d/vent/vnv_vent.py b/examples/telemac3d/vent/vnv_vent.py
index 3b4d5c0f72..a056148781 100644
--- a/examples/telemac3d/vent/vnv_vent.py
+++ b/examples/telemac3d/vent/vnv_vent.py
@@ -28,7 +28,6 @@ class VnvStudy(AbstractVnvStudy):
                        'telemac3d',
                        't3d_vent.cas')
 
-
         # vent parallel mode
         cas = TelemacCas('t3d_vent.cas', get_dico('telemac3d'))
         cas.set('PARALLEL PROCESSORS', 4)
@@ -37,7 +36,82 @@ class VnvStudy(AbstractVnvStudy):
                        'telemac3d',
                        't3d_vent_par.cas',
                        cas=cas)
+        del cas
+
+        #NEW CASES WITH DIFFERENT VERTICAL LAYERING
+        # vent scalar mode
+        self.add_study('vnv_3',
+                       'telemac3d',
+                       't3d_ventSigma.cas')
+
+        # vent parallel mode
+        cas = TelemacCas('t3d_ventSigma.cas', get_dico('telemac3d'))
+        cas.set('PARALLEL PROCESSORS', 4)
+
+        self.add_study('vnv_4',
+                       'telemac3d',
+                       't3d_ventSigma_par.cas',
+                       cas=cas)
+        del cas
+
+        # vent scalar mode
+        self.add_study('vnv_5',
+                       'telemac3d',
+                       't3d_ventZplane.cas')
 
+        # vent parallel mode
+        cas = TelemacCas('t3d_ventZplane.cas', get_dico('telemac3d'))
+        cas.set('PARALLEL PROCESSORS', 4)
+
+        self.add_study('vnv_6',
+                       'telemac3d',
+                       't3d_ventZplane_par.cas',
+                       cas=cas)
+        del cas
+
+        # vent scalar mode
+        self.add_study('vnv_7',
+                       'telemac3d',
+                       't3d_ventDoubleSigma1.cas')
+
+        # vent parallel mode
+        cas = TelemacCas('t3d_ventDoubleSigma1.cas', get_dico('telemac3d'))
+        cas.set('PARALLEL PROCESSORS', 4)
+
+        self.add_study('vnv_8',
+                       'telemac3d',
+                       't3d_ventDoubleSigma1_par.cas',
+                       cas=cas)
+        del cas
+
+        # vent scalar mode
+        self.add_study('vnv_9',
+                       'telemac3d',
+                       't3d_ventDoubleSigma2.cas')
+
+        # vent parallel mode
+        cas = TelemacCas('t3d_ventDoubleSigma2.cas', get_dico('telemac3d'))
+        cas.set('PARALLEL PROCESSORS', 4)
+
+        self.add_study('vnv_10',
+                       'telemac3d',
+                       't3d_ventDoubleSigma2_par.cas',
+                       cas=cas)
+        del cas
+
+        # vent scalar mode
+        self.add_study('vnv_11',
+                       'telemac3d',
+                       't3d_ventMixedSigmaZ.cas')
+
+        # vent parallel mode
+        cas = TelemacCas('t3d_ventMixedSigmaZ.cas', get_dico('telemac3d'))
+        cas.set('PARALLEL PROCESSORS', 4)
+
+        self.add_study('vnv_12',
+                       'telemac3d',
+                       't3d_ventMixedSigmaZ_par.cas',
+                       cas=cas)
         del cas
 
         # post-treatment
@@ -46,7 +120,6 @@ class VnvStudy(AbstractVnvStudy):
                        'p3d_vent.cas')
 
 
-
     def _check_results(self):
         """
         Post-treatment processes
@@ -67,6 +140,90 @@ class VnvStudy(AbstractVnvStudy):
                             'vnv_2:T3DRES',
                             eps=[1.E-10])
 
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_3:T3DRES',
+                            'f3d_vent.slf',
+                            eps=[1.E-10])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_4:T3DRES',
+                            'f3d_vent.slf',
+                            eps=[1.E-10])
+
+        # Comparison between sequential and parallel run.
+        self.check_epsilons('vnv_3:T3DRES',
+                            'vnv_4:T3DRES',
+                            eps=[1.E-10])
+
+        # Comparison between Fortran and steering file defined layering
+        self.check_epsilons('vnv_1:T3DRES',
+                            'vnv_3:T3DRES',
+                            eps=[1.E-15])
+
+        # Comparison between Fortran and steering file defined layering
+        self.check_epsilons('vnv_2:T3DRES',
+                            'vnv_4:T3DRES',
+                            eps=[1.E-15])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_5:T3DRES',
+                            'f3d_ventZlayer.slf',
+                            eps=[1.E-10])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_6:T3DRES',
+                            'f3d_ventZlayer.slf',
+                            eps=[1.E-10])
+
+        # Comparison between sequential and parallel run.
+        self.check_epsilons('vnv_5:T3DRES',
+                            'vnv_6:T3DRES',
+                            eps=[1.E-10])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_7:T3DRES',
+                            'f3d_ventDoubleSigma1.slf',
+                            eps=[1.E-10])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_8:T3DRES',
+                            'f3d_ventDoubleSigma1.slf',
+                            eps=[1.E-10])
+
+        # Comparison between sequential and parallel run.
+        self.check_epsilons('vnv_7:T3DRES',
+                            'vnv_8:T3DRES',
+                            eps=[1.E-10])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_9:T3DRES',
+                            'f3d_ventDoubleSigma2.slf',
+                            eps=[1.E-10])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_10:T3DRES',
+                            'f3d_ventDoubleSigma2.slf',
+                            eps=[1.E-10])
+
+        # Comparison between sequential and parallel run.
+        self.check_epsilons('vnv_9:T3DRES',
+                            'vnv_10:T3DRES',
+                            eps=[1.E-10])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_11:T3DRES',
+                            'f3d_ventMixed.slf',
+                            eps=[1.E-10])
+
+        # Comparison with the last time frame of the reference file.
+        self.check_epsilons('vnv_12:T3DRES',
+                            'f3d_ventMixed.slf',
+                            eps=[1.E-10])
+
+        # Comparison between sequential and parallel run.
+        self.check_epsilons('vnv_11:T3DRES',
+                            'vnv_12:T3DRES',
+                            eps=[1.E-10])
 
     def _post(self):
         """
diff --git a/sources/telemac3d/calcot.f b/sources/telemac3d/calcot.f
index 87d696c980..a4b9f99aa2 100644
--- a/sources/telemac3d/calcot.f
+++ b/sources/telemac3d/calcot.f
@@ -134,8 +134,10 @@
             ENDDO
 !           SIGMA TRANSFORMATION FOR PLANES I1 TO I2
 !           BETWEEN ALREADY TREATED PLANES I1-1 AND I2+1
+!           TRANSF_PLANE .EQ.5 IS NEEDED TO HANDLE THE FIRST STAP OF AMR
             DO IPLAN=I1,I2
-              IF(TRANSF_PLANE%I(IPLAN).EQ.1) THEN
+              IF(TRANSF_PLANE%I(IPLAN).EQ.1.OR.
+     &           TRANSF_PLANE%I(IPLAN).EQ.5) THEN
                 ZSTAR%R(IPLAN)=FLOAT(IPLAN-I1+1)/FLOAT(I2-I1+2)
 !             ELSE
 !               ZSTAR%R(IPLAN) HAS BEEN GIVEN BY USER IN CONDIM
diff --git a/sources/telemac3d/condim.f b/sources/telemac3d/condim.f
index 1db580c98e..36b5925563 100644
--- a/sources/telemac3d/condim.f
+++ b/sources/telemac3d/condim.f
@@ -93,7 +93,7 @@
 !
 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
 !
-      INTEGER IPLAN,I,J
+      INTEGER IPLAN,I,J,ISIGMA,IZPLAN
       DOUBLE PRECISION DU,DL,TMP
 !
 !-----------------------------------------------------------------------
@@ -160,11 +160,14 @@
 !
 !     STANDARD BELOW IS: EVENLY SPACED PLANES, NO OTHER DATA REQUIRED
 !
-      DO IPLAN = 1,NPLAN
-        TRANSF_PLANE%I(IPLAN)=1
-      ENDDO
 !     MESH TRANSFORMATION 4 CAN BE STEERED BY TRANSF_COEF KEYWORD
 !     WITHOUT IMPLEMENTING ANYTHING
+
+!     COPY MESH TRANSFER FROM STEERING FILE
+      DO IPLAN=1,NPLAN
+        TRANSF_PLANE%I(IPLAN)=TRANSF_TMP(IPLAN)
+      ENDDO
+
       IF(TRANSF.EQ.4) THEN
         ! MESH STRETCHING USING TANH PROFILE (AS IN GOTM)
         DO IPLAN=1,NPLAN
@@ -185,9 +188,102 @@
           ENDDO
         ENDIF
       ENDIF
+!
+!     APPLY LEVELS FROM THE STEERING FILE
+!
+      IF(NZSTAR.GT.0.OR.NZPLANE.GT.0) THEN
+        ISIGMA = 0
+        IZPLAN = 0
+        DO IPLAN=1,NPLAN
+          IF(TRANSF_TMP(IPLAN).EQ.2) THEN
+            ISIGMA = ISIGMA+1
+            ZSTAR%R(IPLAN) = ZSTAR_TMP(ISIGMA)
+          ELSEIF(TRANSF_TMP(IPLAN).EQ.3) THEN
+            IZPLAN = IZPLAN+1
+            ZPLANE%R(IPLAN) = ZPLANE_TMP(IZPLAN)
+          ENDIF
+        ENDDO
+      ENDIF
+
+      DEALLOCATE(TRANSF_TMP)
+      DEALLOCATE(ZSTAR_TMP)
+      DEALLOCATE(ZPLANE_TMP)
+
 !     OTHERWISE: USER_MESH_TRANSF
       ! USER FUNCTION
       CALL USER_MESH_TRANSF
+
+!     FURTHER CHECKS
+
+!     MESH TRANSFER THAT SHOULD NOT BE MIXED
+      IF(ANY(TRANSF_PLANE%I.EQ.0).AND.ANY(TRANSF_PLANE%I.NE.0)) THEN
+        WRITE(LU,*) 'MESH TRANSFER = 0 MUST BE USED FOR ',
+     &    'ALL VERTICAL LEVELS OR NONE'
+        CALL PLANTE(1)
+      ENDIF
+      IF(ANY(TRANSF_PLANE%I.EQ.4).AND.ANY(TRANSF_PLANE%I.NE.4)) THEN
+        WRITE(LU,*) 'MESH TRANSFER = 4 MUST BE USED FOR ',
+     &    'ALL VERTICAL LEVELS OR NONE'
+        CALL PLANTE(1)
+      ENDIF
+      IF(ANY(TRANSF_PLANE%I.EQ.5).AND.ANY(TRANSF_PLANE%I.NE.5)) THEN
+        WRITE(LU,*) 'MESH TRANSFER = 5 MUST BE USED FOR ',
+     &    'ALL VERTICAL LEVELS OR NONE'
+        CALL PLANTE(1)
+      ENDIF
+
+!     MESH TRANSFER THAT SHOULD NOT BE ADJACENT
+      DO I=1,NPLAN-1
+        IF((TRANSF_PLANE%I(I).EQ.1.AND.TRANSF_PLANE%I(I+1).EQ.2)
+     & .OR.(TRANSF_PLANE%I(I).EQ.2.AND.TRANSF_PLANE%I(I+1).EQ.1))
+     &   THEN
+          WRITE(LU,*) 'MESH TRANSFER = 1 AND MESH TRANSFER = 2',
+     &      'IN LEVELS ', I, I+1, ' MUST NOT BE ADJACENT'
+          CALL PLANTE(1)
+        ENDIF
+      ENDDO
+
+!     INCREASING VALUES OF Z AND SIGMA
+      DO I=1,NPLAN-1
+        IF((TRANSF_PLANE%I(I).EQ.2.AND.TRANSF_PLANE%I(I+1).EQ.2)
+     &  .AND.ZSTAR%R(I+1).LE.ZSTAR%R(I)) THEN
+          WRITE(LU,*) 'SIGMA COORDINATE (ZSTAR) DOES NOT INCREASE ',
+     &     'BETWEEN LEVELS ', I, I+1
+          CALL PLANTE(1)
+        ENDIF
+      ENDDO
+      DO I=1,NPLAN-1
+        IF((TRANSF_PLANE%I(I).EQ.3.AND.TRANSF_PLANE%I(I+1).EQ.3)
+     &  .AND.ZPLANE%R(I+1).LE.ZPLANE%R(I)) THEN
+          WRITE(LU,*) 'Z COORDINATE (ZPLANE) DOES NOT INCREASE ',
+     &     'BETWEEN LEVELS ', I, I+1
+          CALL PLANTE(1)
+        ENDIF
+      ENDDO
+
+!     SIGMA COORDINATES BETWEEN 0 AND 1
+      DO I=1,NPLAN
+        IF(TRANSF_PLANE%I(I).EQ.2.AND.
+     &     (ZSTAR%R(I).LT.0.D0.OR.ZSTAR%R(I).GT.1.D0)) THEN
+          WRITE(LU,*)
+     &      'SIGMA COORDINATE (ZSTAR) MUST BE BETWEEN 0 AND 1',
+     &     ' IN LEVEL ',I
+          CALL PLANTE(1)
+        ENDIF
+      ENDDO
+
+!     SIGMA COORDINATES AT 0 AND 1 AT THE BOTTOM AND TOP
+      IF(TRANSF_PLANE%I(1).EQ.2.AND.(ABS(ZSTAR%R(1)).GT.1.D-9)) THEN
+        WRITE(LU,*) 'SIGMA COORDINATE AT THE BOTTOM AUTOMATICALLY ',
+     &              'SET TO 0'
+        ZSTAR%R(1) = 0.D0
+      ENDIF
+      IF(TRANSF_PLANE%I(NPLAN).EQ.2.AND.
+     &   (ABS(ZSTAR%R(NPLAN)-1.D0).GT.1.D-9)) THEN
+        WRITE(LU,*) 'SIGMA COORDINATE AT THE SURFACE AUTOMATICALLY ',
+     &              'SET TO 1'
+        ZSTAR%R(NPLAN) = 1.D0
+      ENDIF
 !
 !***********************************************************************
 !
diff --git a/sources/telemac3d/declarations_telemac3d.f b/sources/telemac3d/declarations_telemac3d.f
index aca7547c13..b2e06ee028 100644
--- a/sources/telemac3d/declarations_telemac3d.f
+++ b/sources/telemac3d/declarations_telemac3d.f
@@ -1725,6 +1725,18 @@
 !
       INTEGER, ALLOCATABLE :: CTRLSC(:)
 !
+!     TEMPORARY STORAGE FOR READING LAYER TYPE FROM THE STEERING FILE
+!
+      INTEGER, ALLOCATABLE :: TRANSF_TMP(:)
+!
+!     NUMBER OF Z PLANES IN TEMPORARY ARRAY ZPLANE_TMP
+!
+      INTEGER NZPLANE
+!
+!     NUMBER OF SIGMA PLANES IN TEMPORARY ARRAY ZSTAR_TMP
+!
+      INTEGER NZSTAR
+!
 !-----------------------------------------------------------------------
 ! (5) LOGICAL VALUES
 !-----------------------------------------------------------------------
@@ -2358,6 +2370,14 @@
 !
       DOUBLE PRECISION TRANSF_COEF(2)
 !
+!     TEMPORARY STORAGE FOR READING SIGMA LAYERS FROM THE STEERING FILE
+!
+      DOUBLE PRECISION, ALLOCATABLE :: ZSTAR_TMP(:)
+!
+!     TEMPORARY STORAGE FOR READING Z LAYERS FROM THE STEERING FILE
+!
+      DOUBLE PRECISION, ALLOCATABLE :: ZPLANE_TMP(:)
+!
 !-----------------------------------------------------------------------
 ! (7) STRINGS
 !-----------------------------------------------------------------------
diff --git a/sources/telemac3d/lecdon_telemac3d.F b/sources/telemac3d/lecdon_telemac3d.F
index 89a3c3a451..ac75864426 100644
--- a/sources/telemac3d/lecdon_telemac3d.F
+++ b/sources/telemac3d/lecdon_telemac3d.F
@@ -179,7 +179,7 @@
 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 !
       LOGICAL CONVEC,YES2D,GRAP_PRINT2D
-      INTEGER I,J,K,NTRTOT,ITRAC,TEMP_SCHDTA,NFR,NTRACE1
+      INTEGER I,J,K,NTRTOT,ITRAC,TEMP_SCHDTA,NFR,NTRACE1,IPLAN
       INTEGER NTRACET
 !
       CHARACTER(LEN=8) MNEMO(MAXVAR)
@@ -926,7 +926,93 @@
           PROFVEL(K) = MOTINT( ADRESS(1,95) + K-1 )
         ENDDO
       ENDIF
-      TRANSF= MOTINT( ADRESS(1,96) )
+
+!     TREATEMENT OF VERTICAL LAYERING
+      ALLOCATE(TRANSF_TMP(NPLAN))
+!
+      IF(DIMEN(1,96).EQ.0) THEN
+!       DEFAULT CASE
+        TRANSF = 1
+        DO IPLAN=1,NPLAN
+          TRANSF_TMP(IPLAN) = TRANSF
+        ENDDO
+      ELSEIF(DIMEN(1,96).EQ.1) THEN
+!       ONLY ONE VALUE SPECIFIED FOR MESH TRANSFORMATION.
+!       HENCE USED FOR ALL LEVELS
+        TRANSF = MOTINT( ADRESS(1,96) )
+        DO IPLAN=1,NPLAN
+          TRANSF_TMP(IPLAN) = TRANSF
+        ENDDO
+      ELSEIF(DIMEN(1,96).EQ.NPLAN) THEN
+!       SPATIALLY VARYING LAYER DISTRIBUTION
+        DO IPLAN=1,NPLAN
+          TRANSF_TMP(IPLAN) = MOTINT( ADRESS(1,96) + IPLAN-1 )
+        ENDDO
+!       FIRST CONSISTENCY CHECK
+        IF(ANY(TRANSF_TMP.EQ.4).OR.ANY(TRANSF_TMP.EQ.5).OR.
+     &     ANY(TRANSF_TMP.EQ.0)) THEN
+          WRITE (LU,*) 'ONLY 1, 2 AND 3 ARE ALLOWED WHEN SPECIFYING THE'
+     &       , ' MESH TRANSFORMATION FOR ALL VERTICAL LEVELS'
+          CALL PLANTE(1)
+        ENDIF
+        TRANSF = MAXVAL(TRANSF_TMP)
+      ELSE
+        WRITE (LU,*) 'WRONG NUMBER OF DATA IN MESH TRANSFORMATION: ',
+     &    DIMEN(1,96)
+        WRITE (LU,*) 'THIS MUST BE EQUAL TO ', NPLAN, ' OR 1.'
+        CALL PLANTE(1)
+      ENDIF
+
+!     READ ARRAYS FOR ZSTAR AND ZPLANE IF AVAILABLE
+      NZPLANE = DIMEN(2,44)
+      NZSTAR  = DIMEN(2,43)
+      ALLOCATE(ZSTAR_TMP(NZSTAR))
+      ALLOCATE(ZPLANE_TMP(NZPLANE))
+
+      IF(NZSTAR.GT.0) THEN
+        IF(NZSTAR.NE.COUNT(TRANSF_TMP.EQ.2)) THEN
+          WRITE(LU,*) 'NUMBER OF SIGMA LEVELS: ',NZSTAR,
+     &     '  MUST BE EQUAL TO THE NUMBER OF LEVELS WITH ',
+     &     'MESH TRANSFORMATION = 2: ',COUNT(TRANSF_TMP.EQ.2)
+          CALL PLANTE(1)
+        ENDIF
+        DO IPLAN = 1,NZSTAR
+          ZSTAR_TMP(IPLAN) = MOTREA(ADRESS(2,43)+IPLAN-1)
+        ENDDO
+        IF(ANY(ZSTAR_TMP.LT.0.D0).OR.ANY(ZSTAR_TMP.GT.1.D0)) THEN
+          WRITE(LU,*) 'SIGMA LEVELS MUST BE BETWEEN 0 AND 1.'
+          CALL PLANTE(1)
+        ENDIF
+      ENDIF
+
+      IF(NZPLANE.GT.0) THEN
+        IF(NZPLANE.NE.COUNT(TRANSF_TMP.EQ.3)) THEN
+          WRITE(LU,*) 'NUMBER OF Z LEVELS: ',NZPLANE,
+     &     '  MUST BE EQUAL TO THE NUMBER OF LEVELS WITH ',
+     &     'MESH TRANSFORMATION = 3: ',COUNT(TRANSF_TMP.EQ.3)
+          CALL PLANTE(1)
+        ENDIF
+        DO IPLAN = 1,NZPLANE
+          ZPLANE_TMP(IPLAN) = MOTREA(ADRESS(2,44)+IPLAN-1)
+        ENDDO
+        DO IPLAN = 1,NZPLANE-1
+!         CHECK ORDER OF THE Z LAYERS
+          IF(ZPLANE_TMP(IPLAN+1)-ZPLANE_TMP(IPLAN).LE.0.D0) THEN
+            WRITE(LU,*) 'Z LEVELS MUST BE IN INCREASING ORDER. '
+            WRITE(LU,*) 'NOT FULFILLED FOR LEVEL ', IPLAN, ' AND ',
+     &       IPLAN+1
+            CALL PLANTE(1)
+          ENDIF
+        ENDDO
+      ENDIF
+
+!     EXTRA CHECK
+      IF(NZSTAR+NZPLANE.GT.NPLAN) THEN
+        WRITE (LU,*) 'MORE LEVELS SPECIFIED ',NZSTAR, '(SIGMA LEVELS)',
+     &  ' AND ',NZPLANE, '(Z LEVELS) THAN AVAILABLE LEVELS ',NPLAN
+        CALL PLANTE(1)
+      ENDIF
+
       TRANSF_COEF(1) = MOTREA( ADRESS(2,7)     )
       TRANSF_COEF(2) = MOTREA( ADRESS(2,7) + 1 )
       IF(ANY(TRANSF_COEF.LT.0.D0)) THEN
diff --git a/sources/telemac3d/telemac3d.dico b/sources/telemac3d/telemac3d.dico
index 701cd773ab..d42549d2f9 100644
--- a/sources/telemac3d/telemac3d.dico
+++ b/sources/telemac3d/telemac3d.dico
@@ -24,7 +24,7 @@
 /---SYSTEME-TELEMAC-------------------------------------------------------------
 /
 / INTEGER INDEX USED: 1-43,45-82,84-87,89-92,95-101,103-127 OUT OF 121
-/ REAL INDEX USED: 1-42,51-107 OUT OF  99
+/ REAL INDEX USED: 1-44,51-107 OUT OF 101
 / LOGICAL INDEX USED: 2-2,5-18,21-28,31-34,51-51,58-61,68-72,76-76,81-84,86-87,90-93 OUT OF  48
 / STRING INDEX USED: 1-4,6-11,13-14,16-23,28-53,55-60,62-79,83-95,98-98,100-103 OUT OF  88
 /
@@ -2518,10 +2518,10 @@ NOM = 'TRANSFORMATION DU MAILLAGE'
 NOM1 = 'MESH TRANSFORMATION'
 TYPE = INTEGER
 INDEX = 96
-TAILLE = 1
-DEFAUT = 1
-DEFAUT1 = 1
+TAILLE = 2
 MNEMO = 'TRANSF'
+APPARENCE =
+'DYNLIST'
 RUBRIQUE =
 'VERTICALE';'';''
 RUBRIQUE1 =
@@ -2538,8 +2538,22 @@ verticaux du maillage. Les choix possibles sont :
 \item 4 : sigma avec facteur de zoom ;
 \item 5 : adaptatif.
 \end{itemize}
+Il peut etre specifie par une valeur unique (la meme valeur est alors
+utilisee pour tous les plans du maillage vertical complet) ou par 1
+valeur par plan.
+Dans le dernier cas, seules les options 1, 2 ou 3 sont autorisees.
+
+Avec l option 2, \telkey{PROPORTION SIGMA DES PLANS} peut aider a
+definir le niveau sigma des plans.
+Avec l option 3, \telkey{COTE IMPOSEE DES PLANS} peut aider a definir
+la cote des plans.
+
 Ce mot-clef doit etre coherent avec le sous-programme
-\telfile{CONDIM}.'
+\telfile{USER\_MESH\_TRANSF} si la distribution est programmee par
+l utilisateur.
+
+Si aucune valeur n est renseignee, la transformation sigma classique
+(1) est utilisee pour tous les plans.'
 AIDE1 =
 'Specifies the distribution of vertical planes of the mesh.
 Possible choices are:
@@ -2552,8 +2566,69 @@ implemented),
 \item 4: sigma with zooming factor,
 \item 5: adaptive mesh.
 \end{itemize}
-This keyword must comply with what is done in \telkey{CONDIM}
-subroutine.'
+It can be specified as a single value (the same value is then used for
+every plane of the full vertical mesh) or as one value per plane.
+In the later case, only options 1, 2 or 3 are allowed.
+
+In case option 2 is used, \telkey{SIGMA DISTRIBUTION OF PLANES} can help
+to define the sigma level of the planes.
+In case option 3 is used, \telkey{PRESCRIBED ELEVATION OF PLANES} can
+help to define the elevation of the planes.
+
+This keyword must comply with what is done in
+\telkey{USER\_MESH\_TRANSF} subroutine if the distribution is
+implemented by the user.
+
+If no value is given, classical sigma transformation (1) is used for
+every plane.'
+/
+NOM = 'PROPORTION SIGMA DES PLANS'
+NOM1 = 'SIGMA DISTRIBUTION OF PLANES'
+TYPE = REAL
+INDEX = 43
+TAILLE = 2
+MNEMO = 'ZSTAR'
+APPARENCE =
+'DYNLIST'
+RUBRIQUE =
+'VERTICALE';'';''
+RUBRIQUE1 =
+'VERTICAL';'';''
+NIVEAU = 1
+AIDE =
+'Specifie la distribution sigma des plans avec
+\telkey{TRANSFORMATION DU MAILLAGE} = 2.
+ATTENTION : ne pas ecrire de valeurs pour les plans pour lesquels
+\telkey{TRANSFORMATION DU MAILLAGE} ne vaut pas 2.'
+AIDE1 =
+'Specifies the sigma distribution for levels with
+\telkey{MESH TRANSFORMATION} equals 2.
+WARNING: do not provide values for levels where
+\telkey{MESH TRANSFORMATION} is not equal to 2.'
+/
+NOM = 'COTE IMPOSEE DES PLANS'
+NOM1 = 'PRESCRIBED ELEVATION OF PLANES'
+TYPE = REAL
+INDEX = 44
+TAILLE = 2
+MNEMO = 'ZPLANE'
+APPARENCE =
+'DYNLIST'
+RUBRIQUE =
+'VERTICALE';'';''
+RUBRIQUE1 =
+'VERTICAL';'';''
+NIVEAU = 1
+AIDE =
+'Specifie les cotes de plans avec
+\telkey{TRANSFORMATION DU MAILLAGE} = 3.
+ATTENTION : ne pas ecrire de valeurs pour les plans pour lesquels
+\telkey{TRANSFORMATION DU MAILLAGE} ne vaut pas 3.'
+AIDE1 =
+'Specifies the z levels for levels with
+\telkey{MESH TRANSFORMATION} equals 3.
+WARNING: do not provide values for levels where
+\telkey{MESH TRANSFORMATION} is not equal to 3.'
 /
 NOM = 'COEFFICIENTS D ETIREMENT DU MAILLAGE'
 NOM1 = 'MESH STRETCHING COEFFICIENTS'
-- 
GitLab