diff --git a/CHANGES.rst b/CHANGES.rst
index 90a08089d11134ee4383c3664ba9f3feb64f0948..83f9b31d45dd1373db2d6a95f6a88d145ae84bf9 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -4,4 +4,88 @@ Changes
 
 .. todo::
 
-   List the main additions of the the new release
+  
+# List the main additions of the new 4.2 release - February 2022
+
+This document lsts the improvements and new features of the 4.2 release compared to the previous 4.0.
+If you are willing to port an existing configuration in order to start using this new release, it is sugggested to also look at the 4.2 Migration Guide (link to add).
+
+Improvements and new features of 4.2 release
+
+## KERNEL
+
+- Quasi Eulerian Coordinates
+
+- New vertical scale factors management
+
+- New HPG schemes, Runge Kutta (preparatory stages includes time-pointer changes, DO LOOP macros
+
+- Full Shallow Water equations setup
+
+## AIR SEA INTERACTIONS
+
+- Currents feedbacks
+
+- Mass-flux convection scheme (still not compatible with TOP & PISCES)
+
+- Bulk improvements 
+
+- ABL1D model & tools improvements
+
+- Wave forcing improvements
+
+- Atmospheric boundary layer
+
+## AGRIF
+
+- Improvement of Agrif for global configurations (periodic, north fold zoom, HPC), AGRIF vertical interpolation
+
+## SI3
+
+- EAP & VP rheology (V&V to complete)
+
+- Melt ponds (preliminary implementation)
+
+## ENHANCE
+
+- Ocean column properties in NEMO-ICB
+
+- OSMOSIS
+
+- Update tidal mixing 
+
+## TOP
+
+- Ice sheet iron sources
+
+- Scheme for vertical penetration of visible light
+
+## DATA interface
+
+- OBS modifications
+
+## IO Manager
+
+- Restart read write with XIOS
+
+## VALIDATION
+
+- Tests cases now available with most  new developments
+
+- SETTE validation script improvements
+
+- OASIS test case for ocean atmosphere coupled interface
+
+## HPC
+
+- Extra Halo extension
+
+- Mixed precision preparatory phase
+
+- MPI Communication cleanup & improvements using MPI3
+
+- Loop fusion
+
+- Tiling
+
+- Improved computational performance of solar penetration scheme
diff --git a/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg b/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg
index 24a0667fdb27b1e5c4e673aae7216b6da817e35a..7f302e9a0770f7aafe9596bf6d99a9449fe77169 100644
--- a/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg
+++ b/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg
@@ -403,15 +403,15 @@
    ln_tsdiff   = .true.    !  account for differential T/S mixing (T) or not (F)
 
    cn_dir      = './'      !  root directory for the iwm data location
-   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________!
-   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask !
-   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   !
-   sn_mpb      = 'zdfiwm_forcing'              , -12.              , 'power_bot' , .false.  , .true. , 'yearly' , '' , ''  , ''
-   sn_mpc      = 'zdfiwm_forcing'              , -12.              , 'power_cri' , .false.  , .true. , 'yearly' , '' , ''  , ''
-   sn_mpn      = 'zdfiwm_forcing'              , -12.              , 'power_nsq' , .false.  , .true. , 'yearly' , '' , ''  , ''
-   sn_mps      = 'zdfiwm_forcing'              , -12.              , 'power_sho' , .false.  , .true. , 'yearly' , '' , ''  , ''
-   sn_dsb      = 'zdfiwm_forcing'              , -12.              , 'scale_bot' , .false.  , .true. , 'yearly' , '' , ''  , ''
-   sn_dsc      = 'zdfiwm_forcing'              , -12.              , 'scale_cri' , .false.  , .true. , 'yearly' , '' , ''  , ''
+   !___________!_________________________!___________________!_____________!_____________!________!___________!__________________!__________!_______________!
+   !           !        file name        ! frequency (hours) ! variable    ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask !
+   !           !                         !  (if <0  months)  !   name      !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   !
+   sn_mpb      = 'zdfiwm_forcing_orca2'  ,       -12.        , 'power_bot' ,   .false.   , .true. , 'yearly' , '' , ''  , ''
+   sn_mpc      = 'zdfiwm_forcing_orca2'  ,       -12.        , 'power_cri' ,   .false.   , .true. , 'yearly' , '' , ''  , ''
+   sn_mpn      = 'zdfiwm_forcing_orca2'  ,       -12.        , 'power_nsq' ,   .false.   , .true. , 'yearly' , '' , ''  , ''
+   sn_mps      = 'zdfiwm_forcing_orca2'  ,       -12.        , 'power_sho' ,   .false.   , .true. , 'yearly' , '' , ''  , ''
+   sn_dsb      = 'zdfiwm_forcing_orca2'  ,       -12.        , 'scale_bot' ,   .false.   , .true. , 'yearly' , '' , ''  , ''
+   sn_dsc      = 'zdfiwm_forcing_orca2'  ,       -12.        , 'scale_cri' ,   .false.   , .true. , 'yearly' , '' , ''  , ''
 /
 !!======================================================================
 !!                  ***  Diagnostics namelists  ***                   !!
diff --git a/cfgs/SHARED/namelist_top_ref b/cfgs/SHARED/namelist_top_ref
index edc231127bb95e47cb6738ff43035048c2ded707..08aa0139b5a469031f4e03362939ba8de3cc3fd6 100644
--- a/cfgs/SHARED/namelist_top_ref
+++ b/cfgs/SHARED/namelist_top_ref
@@ -100,15 +100,20 @@
    nitermax      =  2   !  number of iterations for sedimentation
 /
 !-----------------------------------------------------------------------
+&namtrc_dcy      !  Diurnal cycle
+!-----------------------------------------------------------------------
+   ln_trcdc2dm   =  .false.   !  Diurnal cycle for TOP
+/
+!-----------------------------------------------------------------------
 &namtrc_opt      !  light availability in the water column
 !-----------------------------------------------------------------------
-!              !  file name       ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask !
-!              !                  !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      !
-   sn_par      = 'par.orca'       ,     24            , 'fr_par'  ,  .true.      , .true. , 'yearly'  , ''       , ''       , ''
-   cn_dir      = './'        ! root directory for the location of the dynamical files
-   ln_varpar   =  .true.     ! Read PAR from file
-   parlux      =  0.43       ! Fraction of shortwave as PAR
-   light_loc   = 'center'    ! Light location in the water cell ('center', 'integral')
+!                !  file name       ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask !
+!                !                  !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      !
+   sn_par        = 'par.orca'       ,     24            , 'fr_par'  ,  .true.      , .true. , 'yearly'  , ''       , ''       , ''
+   cn_dir        = './'        ! root directory for the location of the dynamical files
+   ln_varpar     =  .true.     ! Read PAR from file
+   parlux        =  0.43       ! Fraction of shortwave as PAR
+   light_loc     = 'center'    ! Light location in the water cell ('center', 'integral')
 /
 !-----------------------------------------------------------------------
 &namtrc_dmp      !   passive tracer newtonian damping                   (ln_trcdmp=T)
diff --git a/doc/latex/NEMO/main/bibliography.bib b/doc/latex/NEMO/main/bibliography.bib
index 2f509ca2cfb24b957d0ed2f37a9ebee02d928fc2..047b345ff2b55fff5786d746b9455de9c4cc70fd 100644
--- a/doc/latex/NEMO/main/bibliography.bib
+++ b/doc/latex/NEMO/main/bibliography.bib
@@ -562,6 +562,21 @@
   doi           = "10.1175/1520-0485(2003)033<2504:naswth>2.0.co;2"
 }
 
+@article{         cheng.canuto.ea_JAS02,
+   title        = "An Improved Model for the Turbulent PBL",
+   author       = "Y. Cheng and V. M. Canuto and A. M. Howard",
+   doi          = "10.1175/1520-0469(2002)059<1550:AIMFTT>2.0.CO;2",
+   issn         = "0022-4928",
+   issue        = "9",
+   journal      = "Journal of the Atmospheric Sciences",
+   month        = "5",
+   pages        = "1550-1565",
+   publisher    = "American Meteorological Society",
+   volume       = "59",
+   url          = "http://journals.ametsoc.org/doi/10.1175/1520-0469(2002)059<1550:AIMFTT>2.0.CO;2",
+   year         = "2002"
+}
+
 @article{        couvelard_2020,
   author        = "X. Couvelard and F. Lemari{\'e} and G. Samson and J.-L. Redelsperger and F. Ardhuin and R. Benshila and G. Madec",
   doi           = "10.5194/gmd-13-3067-2020",
@@ -613,6 +628,22 @@
   doi           = "10.1017/s0022112076001420"
 }
 
+@article{         cuxart.bougeault_QJRMS00,
+   title        = "A turbulence scheme allowing for mesoscale and large-eddy simulations",
+   author       = "J. Cuxart and P. Bougeault and J. L. Redelsperger",
+   doi          = "10.1002/QJ.49712656202",
+   issn         = "1477-870X",
+   issue        = "562",
+   journal      = "Quarterly Journal of the Royal Meteorological Society",
+   keywords     = "Ensemble,Prandtl numbers,Spectral length,Subgrid,Turbulence Variable turbulent,average scheme,scale scheme",
+   month        = "1",
+   pages        = "1-30",
+   publisher    = "John Wiley & Sons, Ltd",
+   volume       = "126",
+   url          = "https://rmets.onlinelibrary.wiley.com/doi/10.1002/qj.49712656202",
+   year         = "2000",
+}
+
 @article{         dalessio.abdella.ea_JPO98,
   title         = "A new second-order turbulence closure scheme for modeling
                   the oceanic mixed layer",
@@ -701,6 +732,22 @@
   doi           = "10.1175/jpo-d-14-0259.1"
 }
 
+@article{       deardorff.ea_BLM80,
+   title        = "Stratocumulus-capped mixed layers derived from a three-dimensional model",
+   author       = "James W. Deardorff",
+   issn         = "1573-1472",
+   issue        = "4",
+   journal      = "Boundary-Layer Meteorology 1980 18:4",
+   keywords     = "Atmospheric Protection/Air Quality Control/Air Pollution,Atmospheric Sciences,Meteorology",
+   month        = "6",
+   pages        = "495-527",
+   publisher    = "Springer",
+   volume       = "18",
+   url          = "https://link.springer.com/article/10.1007/BF00119502",
+   year         = "1980",
+   doi          = "10.1007/BF00119502"
+}
+
 @article{         debreu.vouland.ea_CG08,
   title         = "{AGRIF}: Adaptive Grid Refinement In Fortran",
   pages         = "8--13",
@@ -1643,6 +1690,35 @@ year            = {1997}
   doi           = "10.3402/tellusa.v19i1.9753"
 }
 
+@article{         lac.chaboureau.ea_GMD18,
+   author       = "Christine Lac and Jean Pierre Chaboureau and Val'{e}ry Masson
+                   and Jean Pierre Pinty and Pierre Tulet and Juan Escobar and
+                   Maud Leriche and Christelle Barthe and Benjamin Aouizerats and
+                  Clotilde Augros and Pierre Aumond and Franck Auguste and
+                  Peter Bechtold and Sarah Berthet and Soline Bielli and
+                  Fr'{e}d'{e}ric Bosseur and Olivier Caumont and Jean Martial Cohard and
+                  Jeanne Colin and Fleur Couvreux and Joan Cuxart and Gaelle Delautier
+                  and Thibaut Dauhut and V'{e}ronique Ducrocq and Jean Baptiste Filippi and
+                  Didier Gazen and Olivier Geoffroy and Francois Gheusi and Rachel Honnert
+                  and Jean Philippe Lafore and Cindy Lebeaupin Brossier and Quentin Libois
+                  and Thibaut Lunet and C'{e}line Mari and Tomislav Maric and Patrick Mascart
+                  and Maxime Mog'{e} and Gilles Molini'{e} and Olivier Nuissier and Florian Pantillon
+                  and Philippe Peyrill'{e} and Julien Pergaud and Emilie Perraud and Joris Pianezze
+                  and Jean Luc Redelsperger and Didier Ricard and Evelyne Richard and S'{e}bastien Riette
+                  and Quentin Rodier and Robert Schoetter and L'{e}o Seyfried and Joel Stein and Karsten Suhre
+                  and Marie Taufour and Odile Thouron and Sandra Turner and Antoine Verrelle and Benoit Vi'{e}
+                  and Florian Visentin and Vincent Vionnet and Philippe Wautelet",
+   doi          = "10.5194/gmd-11-1929-2018",
+   isbn         = "1119292018",
+   issn         = "19919603",
+   issue        = "5",
+   journal      = "Geoscientific Model Development",
+   pages        = "1929-1969",
+   title        = "Overview of the Meso-NH model version 5.4 and its applications",
+   volume       = "11",
+   year         = "2018"
+}
+
 @article{         large.mcwilliams.ea_RG94,
   title         = "Oceanic vertical mixing: {A} review and a model with a
                   nonlocal boundary layer parameterization",
@@ -1809,6 +1885,21 @@ year            = {1997}
   doi           = "10.1016/j.ocemod.2015.06.006"
 }
 
+@article{         lemarie.samson.ea_GMD21,
+   title        = "A simplified atmospheric boundary layer model
+                   for an improved representation of air-sea interactions
+                   in eddying oceanic models:
+                   Implementation and first evaluation in NEMO (4.0)",
+   pages        = "543--572",
+   journal      = "Geoscientific Model Development",
+   volume       = "14",
+   author       = "Florian Lemari\'{e} and Guillaume Samson and Jean Luc Redelsperger
+                   and Herve Giordani and Theo Brivoal and Gurvan Madec",
+   year         = "2021",
+   issn         = "1991-9603",
+   doi          = "10.5194/gmd-14-543-2021"
+}
+
 @article{         lengaigne.madec.ea_JGR03,
   title         = "Impact of isopycnal mixing on the tropical ocean
                   circulation",
diff --git a/doc/latex/NEMO/subfiles/chap_SBC.tex b/doc/latex/NEMO/subfiles/chap_SBC.tex
index 80fbce4addaea6ecb344931e65885db0a8756938..7552a418dad28a6edacc0ab6e5a16e83133143e5 100644
--- a/doc/latex/NEMO/subfiles/chap_SBC.tex
+++ b/doc/latex/NEMO/subfiles/chap_SBC.tex
@@ -41,11 +41,12 @@ The ocean needs seven fields as surface boundary condition:
 \item the atmospheric pressure at the ocean surface $\left( p_a \right)$
 \end{itemize}
 
-Four different ways are available to provide the seven fields to the ocean. They are controlled by
+Five different ways are available to provide these fields to the ocean. They are controlled by
 namelist \nam{sbc}{sbc} variables:
 
 \begin{itemize}
 \item a bulk formulation (\np[=.true.]{ln_blk}{ln\_blk}), featuring a selection of four bulk parameterization algorithms,
+\item an atmospheric boundary layer model (\np[=.true.]{ln_abl}{ln\_abl}) associated with the bulk formulation,
 \item a flux formulation (\np[=.true.]{ln_flx}{ln\_flx}),
 \item a coupled or mixed forced/coupled formulation (exchanges with a atmospheric model via the OASIS coupler),
 (\np{ln_cpl}{ln\_cpl} or \np[=.true.]{ln_mixcpl}{ln\_mixcpl}),
@@ -54,7 +55,7 @@ namelist \nam{sbc}{sbc} variables:
 
 The frequency at which the forcing fields have to be updated is given by the \np{nn_fsbc}{nn\_fsbc} namelist parameter.
 
-When the fields are supplied from data files (bulk, flux and mixed formulations),
+When the fields are supplied from data files (bulk, abl, flux and mixed formulations),
 the input fields do not need to be supplied on the model grid.
 Instead, a file of coordinates and weights can be supplied to map the data from the input fields grid to
 the model points (so called "Interpolation on the Fly", see \autoref{subsec:SBC_iof}).
@@ -84,7 +85,7 @@ These options control:
 \end{itemize}
 
 In this chapter, we first discuss where the surface boundary conditions appear in the model equations.
-Then we present the three ways of providing the surface boundary conditions,
+Then we present the four ways of providing the surface boundary conditions,
 followed by the description of the atmospheric pressure and the river runoff.
 Next, the scheme for interpolation on the fly is described.
 Finally, the different options that further modify the fluxes applied to the ocean are discussed.
@@ -748,6 +749,40 @@ respectively (found in \textit{sbcblk\_skin\_coare.F90}).
 % surface layer (hereafter ASL), and hence, depend on $U_B$, $T_s$, $T_z$, $q_s$
 % and $q_z$.
 
+%% =================================================================================================
+\subsection{Ice-Atmosphere Bulk formulae}
+\label{subsec:SBC_blk_ice}
+
+\texttt{\#out\_of\_place:}
+ For sea-ice, three possibilities can be selected:
+a constant transfer coefficient (1.4e-3; default
+value), \citet{lupkes.gryanik.ea_JGRA12} (\np{ln_Cd_L12}{ln\_Cd\_L12}),
+and \citet{lupkes.gryanik_JGR15} (\np{ln_Cd_L15}{ln\_Cd\_L15}) parameterizations
+\texttt{\#out\_of\_place.}
+
+Surface turbulent fluxes between sea-ice and the atmosphere can be computed in three different ways:
+
+\begin{itemize}
+\item Constant value (\forcode{Cd_ice=1.4e-3}):
+  default constant value used for momentum and heat neutral transfer coefficients
+\item \citet{lupkes.gryanik.ea_JGRA12} (\np[=.true.]{ln_Cd_L12}{ln\_Cd\_L12}):
+  This scheme adds a dependency on edges at leads, melt ponds and flows
+  of the constant neutral air-ice drag. After some approximations,
+  this can be resumed to a dependency on ice concentration (A).
+  This drag coefficient has a parabolic shape (as a function of ice concentration)
+  starting at 1.5e-3 for A=0, reaching 1.97e-3 for A=0.5 and going down 1.4e-3 for A=1.
+  It is theoretically applicable to all ice conditions (not only MIZ).
+\item \citet{lupkes.gryanik_JGR15} (\np[=.true.]{ln_Cd_L15}{ln\_Cd\_L15}):
+  Alternative turbulent transfer coefficients formulation between sea-ice
+  and atmosphere with distinct momentum and heat coefficients depending
+  on sea-ice concentration and atmospheric stability (no melt-ponds effect for now).
+  The parameterization is adapted from ECHAM6 atmospheric model.
+  Compared to Lupkes2012 scheme, it considers specific skin and form drags
+  to compute neutral transfer coefficients for both heat and momentum fluxes.
+  Atmospheric stability effect on transfer coefficient is also taken into account.
+\end{itemize}
+
+%% =================================================================================================
 \subsection{Prescribed near-surface atmospheric state}
 
 The atmospheric fields used depend on the bulk formulae used.  In forced mode,
@@ -822,61 +857,121 @@ Air humidity can be provided as three different parameters: specific humidity
 parameters)...
 
 %% =================================================================================================
-%\subsection[Ocean-Atmosphere Bulk formulae (\textit{sbcblk\_algo\_coare3p0.F90, sbcblk\_algo\_coare3p6.F90, %sbcblk\_algo\_ecmwf.F90, sbcblk\_algo\_ncar.F90})]{Ocean-Atmosphere Bulk formulae (\mdl{sbcblk\_algo\_coare3p0}, %\mdl{sbcblk\_algo\_coare3p6}, \mdl{sbcblk\_algo\_ecmwf}, \mdl{sbcblk\_algo\_ncar})}
-%\label{subsec:SBC_blk_ocean}
-
-%Four different bulk algorithms are available to compute surface turbulent momentum and heat fluxes over the ocean.
-%COARE 3.0, COARE 3.6 and ECMWF schemes mainly differ by their roughness lenghts computation and consequently
-%their neutral transfer coefficients relationships with neutral wind.
-%\begin{itemize}
-%\item NCAR (\np[=.true.]{ln_NCAR}{ln\_NCAR}): The NCAR bulk formulae have been developed by \citet{large.yeager_trpt04}.
-%  They have been designed to handle the NCAR forcing, a mixture of NCEP reanalysis and satellite data.
-%  They use an inertial dissipative method to compute the turbulent transfer coefficients
-%  (momentum, sensible heat and evaporation) from the 10m wind speed, air temperature and specific humidity.
-%  This \citet{large.yeager_trpt04} dataset is available through
-%  the \href{http://nomads.gfdl.noaa.gov/nomads/forms/mom4/NCAR.html}{GFDL web site}.
-%  Note that substituting ERA40 to NCEP reanalysis fields does not require changes in the bulk formulea themself.
-%  This is the so-called DRAKKAR Forcing Set (DFS) \citep{brodeau.barnier.ea_OM10}.
-%\item COARE 3.0 (\np[=.true.]{ln_COARE_3p0}{ln\_COARE\_3p0}): See \citet{fairall.bradley.ea_JC03} for more details
-%\item COARE 3.6 (\np[=.true.]{ln_COARE_3p6}{ln\_COARE\_3p6}): See \citet{edson.jampana.ea_JPO13} for more details
-%\item ECMWF (\np[=.true.]{ln_ECMWF}{ln\_ECMWF}): Based on \href{https://www.ecmwf.int/node/9204}{IFS (Cy40r1)} %implementation and documentation.
-%  Surface roughness lengths needed for the Obukhov length are computed
-%  following \citet{beljaars_QJRMS95}.
-%\end{itemize}
+\section[Atmospheric Boundary Layer (ABL) model (\textit{sbcabl.F90})]{Atmospheric Boundary Layer (ABL) model (\protect\mdl{sbcabl})}
+\label{sec:SBC_abl}
 
-%% =================================================================================================
-\subsection{Ice-Atmosphere Bulk formulae}
-\label{subsec:SBC_blk_ice}
+An atmospheric boundary layer (ABL) model is available as an alternative choice to the prescribed near-surface atmospheric forcings.
+It computes the wind, air potential temperature and specific humidity evolutions in the lower atmosphere following a single-column approach
+on the same horizontal grid as the ocean component. It represents the adjustement of the air column between the large-scale
+atmospheric forcing and the surface boundary conditions over both ocean and sea-ice through vertical turbulent mixing.
+This 1D implementation of the ABL model (ABL1D) and its validation are described in details in \citet{lemarie.samson.ea_GMD21}.
 
-\texttt{\#out\_of\_place:}
- For sea-ice, three possibilities can be selected:
-a constant transfer coefficient (1.4e-3; default
-value), \citet{lupkes.gryanik.ea_JGRA12} (\np{ln_Cd_L12}{ln\_Cd\_L12}),
-and \citet{lupkes.gryanik_JGR15} (\np{ln_Cd_L15}{ln\_Cd\_L15}) parameterizations
-\texttt{\#out\_of\_place.}
+\subsection{ABL1D pre-processing}
 
-Surface turbulent fluxes between sea-ice and the atmosphere can be computed in three different ways:
+To use it, an atmospheric vertical grid and specific atmospheric forcing files must be provided to ABL1D.
+This is because the model expects atmospheric data on its vertical grid and not only near the surface as usually done.
+Another specificity of ABL1D is that it can be dynamically driven by geostrophic wind or horizontal air pressure gradient,
+instead of being classicaly relaxed toward the large-scale wind forcing.
+
+To generate the ABL1D vertical grid and atmospheric forcings, specific tools and an associated namelist are provided in the ABL\_TOOLS directory.
+They have been developed specifically to deal with ECMWF atmospheric products (such as ERA-Interim, ERA5 and IFS) on their native vertical eta-coordinates.
+The namelist is used to setup the ABL1D vertical grid (\forcode{&nml_dom}), atmospheric forcing options (\forcode{&nml_opt}),
+input atmospheric filenames (\forcode{&nml_fld}) and outputs filenames (\forcode{&nml_out}).
+
+\begin{listing}
+  \nlst{namelist_abl_tools}
+  \label{lst:namelist_abl_tools}
+\end{listing}
+
+Each of the three steps needed to generate the atmospheric forcings corresponds to a tool:
 
 \begin{itemize}
-\item Constant value (\forcode{Cd_ice=1.4e-3}):
-  default constant value used for momentum and heat neutral transfer coefficients
-\item \citet{lupkes.gryanik.ea_JGRA12} (\np[=.true.]{ln_Cd_L12}{ln\_Cd\_L12}):
-  This scheme adds a dependency on edges at leads, melt ponds and flows
-  of the constant neutral air-ice drag. After some approximations,
-  this can be resumed to a dependency on ice concentration (A).
-  This drag coefficient has a parabolic shape (as a function of ice concentration)
-  starting at 1.5e-3 for A=0, reaching 1.97e-3 for A=0.5 and going down 1.4e-3 for A=1.
-  It is theoretically applicable to all ice conditions (not only MIZ).
-\item \citet{lupkes.gryanik_JGR15} (\np[=.true.]{ln_Cd_L15}{ln\_Cd\_L15}):
-  Alternative turbulent transfer coefficients formulation between sea-ice
-  and atmosphere with distinct momentum and heat coefficients depending
-  on sea-ice concentration and atmospheric stability (no melt-ponds effect for now).
-  The parameterization is adapted from ECHAM6 atmospheric model.
-  Compared to Lupkes2012 scheme, it considers specific skin and form drags
-  to compute neutral transfer coefficients for both heat and momentum fluxes.
-  Atmospheric stability effect on transfer coefficient is also taken into account.
+\item main\_uvg\_hpg (optional):\\
+  geostrophic wind or horizontal pressure gradient computation on ECMWF eta-levels
+\item main\_vinterp:\\
+  air potential temperature computation and vertical interpolation from ECWMF vertical eta-levels to ABL z-levels
+\item main\_hdrown:\\
+  3D-fields horizontal drowning (extrapolation over land totally inspired from SOSIE by L. Brodeau)
 \end{itemize}
 
+\subsection{ABL1D namelist}
+
+\begin{listing}
+  \nlst{namsbc_abl}
+  \caption{\forcode{&namsbc_abl}}
+  \label{lst:namsbc_abl}
+\end{listing}
+
+ABL1D model is activated by adding ABL sources directory to the sources list file (\*\_cfgs.txt) and
+by setting \np[=.true.]{ln_abl}{ln\_abl} (and \np[=.false.]{ln_blk}{ln\_bkl}) in \nam{sbc}{sbc}. \\
+It is fully compatible with Nemo Standalone Surface module and can be consequently forced by sea surface temperature and currents external data.\\
+
+Atmospheric forcing files needed by ABL1D must be specified directly using the \np{sn_wndi}{sn\_wndi}, \np{sn_wndj}{sn\_wndj},
+\np{sn_tair}{sn\_tair} and \np{sn_humi}{sn\_humi} parameters from the \nam{sbc_blk}{sbc\_blk}.\\
+When using geostrophic wind (\np[=.true.]{ln_geos_winds}{ln\_geos\_winds})
+or horizontal air pressure gradient (\np[=.true.]{ln_hpgls_frc}{ln\_hpgls\_frc}) as dynamical guide, additional \np{sn_hpgi}{sn\_hpgi}
+and \np{sn_hpgj}{sn\_hpgj} parameters must be provided using geostrophic wind/pressure gradient i/j-components files generated during the pre-processing steps.\\
+Note that due to fldread limitations, the interpolation weight filenames must be different between 2D and
+3D atmospheric forcings (even if it is the same weight file).
+
+\subsubsection{Tracers and Dynamics relaxation time}
+
+ABL1D tracers needs to be relaxed toward atmospheric temperature (\np{sn_tair}{sn\_tair})
+and humidity (\np{sn_humi}{sn\_humi}) forcings to provide a top boundary condition to the model and to avoid the formation of biases due to the lack
+of representation of some important atmopheric processes such as advection and convection.
+This relaxation time can be setup independently inside the ABL and above the ABL and it is expressed in hours.\\
+The recommanded values for the tracers relaxation time is typically 3 times the ocean model timestep inside the ABL (\np{rn_ltra_min}{rn\_ltra\_min})
+and 1 ocean model timestep above the ABL (\np{rn_ltra_max}{rn\_ltra\_max}).\\
+\\
+The dynamical relaxation time inside (\np{rn_ldyn_min}{rn\_ldyn\_min}) and above (\np{rn_ldyn_max}{rn\_ldyn\_max}) the ABL is only needed in two cases:
+\begin{itemize}
+  \item when geostrophic wind / horizontal pressure gradient options are not used.
+  \item when geostrophic wind / horizontal pressure gradient options are used and the geographical domain includes the equatorial band
+  where the geostrophic equilibrium is too weak to contrain efficiently ABL1D dynamics.
+\end{itemize}
+The recommanded minimum and maximum dynamical relaxation values are identical to the tracers relaxation times.\\
+
+\subsubsection{Turbulent vertical mixing lenght and constants}
+
+The ABL1D turbulence scheme used to compute eddy diffusivities for momentum and scalars relies on a TKE pronostic equation (following \citet{cuxart.bougeault_QJRMS00})
+which depends on mixing lenght scales and turbulent constants.
+To address the ABL1D sensitivity to these parameters, various mixing lenght formulations and turbulent constants sets are provided in namelist:
+
+\begin{itemize}
+
+  \item Three different mixing length scales can be selected using \np{nn_amxl}{nn\_amxl}:\\
+    (0) \citet{deardorff.ea_BLM80}\\
+    (1) PBL height distance function (as in Nemo TKE scheme)\\
+    (2) \citet{bougeault.lacarrere_MWR89}\\
+  \item Three different sets of turbulent constants are proposed:\\
+    \citet{cuxart.bougeault_QJRMS00}, \citet{cheng.canuto.ea_JAS02} and \citet{lac.chaboureau.ea_GMD18}\\
+
+  \begin{table}[htbp]
+    \centering
+    \begin{tabular}{|l|c|c|c|}
+      \hline
+               & CBR00  & CCH02  & MNH54  \\
+      \hline
+      rn\_Cm   & 0.0667 & 0.1260 & 0.1260 \\
+      \hline
+      rn\_Ct   & 0.1667 & 0.1430 & 0.1430 \\
+      \hline
+      rn\_Ce   & 0.40   & 0.34   & 0.40   \\
+      \hline
+      rn\_Ceps & 0.700  & 0.845  & 0.850  \\
+      \hline
+      rn\_Ric  & 0.139  & 0.143  &   ?    \\
+      \hline
+      rn\_Rod  & 0.15   & 0.15   & 0.15   \\
+      \hline
+      \end{tabular}
+  \end{table}
+
+\end{itemize}
+
+More details about the turbulence scheme parameters and their effect on ABL properties can be found in \citet{lemarie.samson.ea_GMD21}. 
+
+
 %% =================================================================================================
 \section[Coupled formulation (\textit{sbccpl.F90})]{Coupled formulation (\protect\mdl{sbccpl})}
 \label{sec:SBC_cpl}
diff --git a/doc/namelists/namelist_abl_tools b/doc/namelists/namelist_abl_tools
new file mode 100644
index 0000000000000000000000000000000000000000..42b2a4cfa5f1cd36578bba9c7b6c81da49eddbd1
--- /dev/null
+++ b/doc/namelists/namelist_abl_tools
@@ -0,0 +1,53 @@
+:
+:-----------------------------------------------------------------------------
+: Atmospheric Boundary Layer preprocessing tool 
+:-----------------------------------------------------------------------------
+:
+&nml_dom
+    jpka         =      50,        ! ABL vertical levels number
+    hmax         =   2000.,        ! ABL last level altitude
+    theta_s      =      2.,        ! vertical grid stretching parameters
+    hc           =    100.,        ! 
+    ln_impose_z1 =  .true.,        ! force ABL first level altitude
+    z1           =     10.,        ! ABL firt level imposed altitude [m]
+/
+
+&nml_opt
+    ptemp_method    =        3  ,  ! potential temperature computation method
+    ln_slp_smth     =   .true.  ,  ! smooth slp and ghw at high latitudes only
+    ln_drw_smth     =   .false. ,  ! smooth after drowning
+    ln_slp_log      =   .false. ,  ! read log(slp)
+    ln_read_zsurf   =   .false. ,  ! read surface geopotential
+    ln_hpg_frc      =   .true.  ,  ! compute horizontal pressure gradient
+    ln_geo_wnd      =   .false. ,  ! compute geostrophic wind
+    ln_c1d          =   .false. ,  ! 1D case
+    ln_read_mask    =   .true.  ,  ! read mask file
+    ln_lsm_land     =   .false. ,  ! inverse land & sea masks
+    ln_perio_latbc  =   .true.  ,  ! periodic lateral boundary conditions
+/
+
+&nml_fld
+    cn_dir      = '',
+    mask_var    = 'LSM',
+    file_m      = 'MASK.nc',
+    file_u      = 'U3D.nc',
+    file_v      = 'V3D.nc',
+    file_t      = 'T3D.nc',
+    file_q      = 'Q3D.nc',
+    file_p      = 'P2D.nc',
+    file_z      = 'Z2D.nc',
+    file_geos   = 'UVG_OUT.nc',
+    file_hpg    = 'HPG_OUT.nc',
+/
+
+&nml_out
+    grd_file  = 'dom_cfg_abl_L50Z10.nc',
+    abl_file  = 'ABL_L50Z10_OUT.nc',
+    drwn_file = 'ABL_DRWN_L50Z10_OUT.nc',
+    var_name  = '',
+/
+
+&nml_c1d
+    iloc = 283,
+    jloc =  52,
+/
diff --git a/src/ICE/icedyn_rhg_evp.F90 b/src/ICE/icedyn_rhg_evp.F90
index 2efe027c4f8e0cc917a521ec1f35a20e6f226c70..d550b469a2890b64c1a77f80a84ca0701ec1ceea 100644
--- a/src/ICE/icedyn_rhg_evp.F90
+++ b/src/ICE/icedyn_rhg_evp.F90
@@ -453,7 +453,7 @@ CONTAINS
 
             ! stress at F points (zkt/=0 if landfast)
             zs12(ji,jj)= ( zs12(ji,jj) * zalph2 + zp_delf * ( zds(ji,jj) * z1_ecc2 * (1._wp + zkt) ) * 0.5_wp ) &
-               &         * z1_alph2 * zmsk(ji,jj) ! zmsk is for reducing cpu
+               &         * z1_alph2
 
          END_2D
 
diff --git a/src/OCE/DOM/domzgr_substitute.h90 b/src/OCE/DOM/domzgr_substitute.h90
index 4050f04e108e6ea9b69162598c8bb1776b88ab16..35e60fa876232325883d5c7bc5cd2fb49effd4d3 100644
--- a/src/OCE/DOM/domzgr_substitute.h90
+++ b/src/OCE/DOM/domzgr_substitute.h90
@@ -48,7 +48,7 @@
 #   define  r1_hv(i,j,t)   r1_hv_0(i,j)
 #   define  gdept(i,j,k,t) gdept_0(i,j,k)
 #   define  gdepw(i,j,k,t) gdepw_0(i,j,k)
-#   define  gde3w(i,j,k)   (gdept_0(i,j,k)-ssh(i,j,Kmm))
+#   define  gde3w(i,j,k)   gdept_0(i,j,k)
 #endif
 !!----------------------------------------------------------------------
 
diff --git a/src/OCE/SBC/sbcblk.F90 b/src/OCE/SBC/sbcblk.F90
index a88f532dc52a56a7ac794b9dcb4433e7a34701e8..a686596427053376cce721eb1c0af58acc9ebb99 100644
--- a/src/OCE/SBC/sbcblk.F90
+++ b/src/OCE/SBC/sbcblk.F90
@@ -36,6 +36,7 @@ MODULE sbcblk
    USE phycst         ! physical constants
    USE fldread        ! read input fields
    USE sbc_oce        ! Surface boundary condition: ocean fields
+   USE trc_oce         ! share SMS/Ocean variables
    USE cyclone        ! Cyclone 10m wind form trac of cyclone centres
    USE sbcdcy         ! surface boundary condition: diurnal cycle
    USE sbcwave , ONLY :   cdn_wave ! wave module
@@ -592,6 +593,18 @@ CONTAINS
          wndj_ice(:,:) = sf(jp_wndj)%fnow(:,:,1)
       ENDIF
 #endif
+
+#if defined key_top
+      IF( ln_trcdc2dm )  THEN      !  diurnal cycle in TOP
+         IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN
+            IF( ln_dm2dc )  THEN
+                qsr_mean(:,:) = ( 1. - albo )  * sf(jp_qsr)%fnow(:,:,1)  * tmask(:,:,1)
+            ELSE
+                ncpl_qsr_freq = sf(jp_qsr)%freqh * 3600 !   qsr_mean will be computed in TOP
+            ENDIF
+         ENDIF
+      ENDIF
+#endif
       !
    END SUBROUTINE sbc_blk
 
diff --git a/src/OCE/SBC/sbccpl.F90 b/src/OCE/SBC/sbccpl.F90
index 05070b410a823177a2029e61964eb95a29268c14..eddf626a522f3479f787e155a6dc76ed02900634 100644
--- a/src/OCE/SBC/sbccpl.F90
+++ b/src/OCE/SBC/sbccpl.F90
@@ -1195,8 +1195,6 @@ CONTAINS
          IF( ln_dm2dc .AND. ncpl_qsr_freq /= 86400 )   &
             &   CALL ctl_stop( 'sbc_cpl_rcv: diurnal cycle reconstruction (ln_dm2dc) needs daily couping for solar radiation' )
 
-         IF( ncpl_qsr_freq /= 0) ncpl_qsr_freq = 86400 / ncpl_qsr_freq ! used by top
-
          IF ( ln_wave .AND. nn_components == 0 ) THEN
             ncpl_qsr_freq = 1;
             WRITE(numout,*) 'ncpl_qsr_freq is set to 1 when coupling NEMO with wave (without SAS) '
diff --git a/src/OCE/SBC/sbcflx.F90 b/src/OCE/SBC/sbcflx.F90
index efd86a49e6d5194ecb5addeefed27ec8999a541c..c9ad4fcb5df00ee1384f884615a47ecd87470b2d 100644
--- a/src/OCE/SBC/sbcflx.F90
+++ b/src/OCE/SBC/sbcflx.F90
@@ -14,6 +14,7 @@ MODULE sbcflx
    USE oce             ! ocean dynamics and tracers
    USE dom_oce         ! ocean space and time domain
    USE sbc_oce         ! surface boundary condition: ocean fields
+   USE trc_oce         ! share SMS/Ocean variables
    USE sbcdcy          ! surface boundary condition: diurnal cycle on qsr
    USE phycst          ! physical constants
    !
@@ -134,6 +135,17 @@ CONTAINS
                qsr(ji,jj) =     sf(jp_qsr)%fnow(ji,jj,1) * tmask(ji,jj,1)
             END_2D
          ENDIF
+#if defined key_top
+      IF( ln_trcdc2dm )  THEN      !  diurnal cycle in TOP
+         IF( ln_dm2dc )  THEN
+            DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )
+               qsr_mean(ji,jj) = sf(jp_qsr)%fnow(ji,jj,1)  * tmask(ji,jj,1)
+            END_2D
+         ELSE
+            ncpl_qsr_freq = sf(jp_qsr)%freqh * 3600 !  qsr_mean will be computed in TOP
+         ENDIF
+      ENDIF
+#endif
          DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )                  ! set the ocean fluxes from read fields
             utau(ji,jj) =   sf(jp_utau)%fnow(ji,jj,1)                              * umask(ji,jj,1)
             vtau(ji,jj) =   sf(jp_vtau)%fnow(ji,jj,1)                              * vmask(ji,jj,1)
@@ -164,7 +176,7 @@ CONTAINS
       DO_2D( 0, 0, 0, 0 )
          ztx = ( utau(ji-1,jj  ) + utau(ji,jj) ) * 0.5_wp * ( 2._wp - MIN( umask(ji-1,jj  ,1), umask(ji,jj,1) ) )
          zty = ( vtau(ji  ,jj-1) + vtau(ji,jj) ) * 0.5_wp * ( 2._wp - MIN( vmask(ji  ,jj-1,1), vmask(ji,jj,1) ) )
-         zmod = 0.5_wp * SQRT( ztx * ztx + zty * zty ) * tmask(ji,jj,1)
+         zmod = SQRT( ztx * ztx + zty * zty ) * tmask(ji,jj,1)
          taum(ji,jj) = zmod
          wndm(ji,jj) = SQRT( zmod * zcoef )  !!clem: not used?
       END_2D
diff --git a/src/OCE/trc_oce.F90 b/src/OCE/trc_oce.F90
index d2489107d674bb52ee75dce30b0137be4ba51a60..f7b8309ee1cf970be0bbca6954d5c308ee667b70 100644
--- a/src/OCE/trc_oce.F90
+++ b/src/OCE/trc_oce.F90
@@ -26,9 +26,11 @@ MODULE trc_oce
    LOGICAL , PUBLIC ::   l_co2cpl  = .false.   !: atmospheric pco2 recieved from oasis
    LOGICAL , PUBLIC ::   l_offline = .false.   !: offline passive tracers flag
    REAL(wp), PUBLIC ::   r_si2                 !: largest depth of extinction (blue & 0.01 mg.m-3)  (RGB)
+   LOGICAL , PUBLIC ::   ln_trcdc2dm           !: Diurnal cycle for TOP
    !
    REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   etot3     !: light absortion coefficient
    REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   oce_co2   !: ocean carbon flux
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   qsr_mean  !: daily mean qsr
 
 #if defined key_top 
    !!----------------------------------------------------------------------
@@ -52,7 +54,8 @@ CONTAINS
       !!----------------------------------------------------------------------
       !!                  ***  trc_oce_alloc  ***
       !!----------------------------------------------------------------------
-      ALLOCATE( etot3(jpi,jpj,jpk), oce_co2(jpi,jpj), STAT=trc_oce_alloc )
+      ALLOCATE( etot3(jpi,jpj,jpk), oce_co2(jpi,jpj), qsr_mean(jpi,jpj), STAT=trc_oce_alloc )
+
       IF( trc_oce_alloc /= 0 )   CALL ctl_warn('trc_oce_alloc: failed to allocate etot3 array')
       !
    END FUNCTION trc_oce_alloc
diff --git a/src/OFF/dtadyn.F90 b/src/OFF/dtadyn.F90
index a1b1045d03af154121a0db503fc8a4c84bb168f7..7d66832b088bb99cce01becf27cf54f0ab5b5eb4 100644
--- a/src/OFF/dtadyn.F90
+++ b/src/OFF/dtadyn.F90
@@ -359,6 +359,8 @@ CONTAINS
 #endif
       ENDIF
       !
+      ncpl_qsr_freq = sf_dyn(jf_qsr)%freqh  * 3600   !  Get qsr frequency ( needed if diurnal cycle in TOP
+      !
       CALL dta_dyn_rnf_init( Kmm )
       !
       CALL dta_dyn( nit000, Kbb, Kmm, Kaa )
diff --git a/src/SAS/sbcssm.F90 b/src/SAS/sbcssm.F90
index 23cdd66e67136615ad70bd63c4d1ccded4b6e3d9..bd72a97a2fce97df86563d71cf83918224b12e7f 100644
--- a/src/SAS/sbcssm.F90
+++ b/src/SAS/sbcssm.F90
@@ -129,9 +129,9 @@ CONTAINS
          ssu_m(:,:) = 0._wp
          ssv_m(:,:) = 0._wp
          ssh_m(:,:) = 0._wp
-         IF( .NOT. ln_linssh ) e3t_m(:,:) = e3t_0(:,:,1) !clem: necessary at least for sas2D
+         e3t_m(:,:) = e3t_0(:,:,1)                       !clem: necessary at least for sas2D
          frq_m(:,:) = 1._wp                              !              - -
-         ssh  (:,:,Kmm) = 0._wp                              !              - -
+         ssh  (:,:,Kmm) = 0._wp                          !              - -
       ENDIF
 
       IF ( nn_ice == 1 ) THEN
@@ -159,7 +159,7 @@ CONTAINS
          CALL iom_put( 'sst_m', sst_m )
          CALL iom_put( 'sss_m', sss_m )
          CALL iom_put( 'ssh_m', ssh_m )
-         IF( .NOT.ln_linssh )   CALL iom_put( 'e3t_m', e3t_m )
+         CALL iom_put( 'e3t_m', e3t_m )
          IF( ln_read_frq    )   CALL iom_put( 'frq_m', frq_m )
       ENDIF
       !
diff --git a/src/TOP/PISCES/P4Z/p4zopt.F90 b/src/TOP/PISCES/P4Z/p4zopt.F90
index 51e95a5dcacc15c49d8e39414942a5445fe90f6c..8daf2edf7158c96c2bc66a17c5225e52ba819a7a 100644
--- a/src/TOP/PISCES/P4Z/p4zopt.F90
+++ b/src/TOP/PISCES/P4Z/p4zopt.F90
@@ -107,7 +107,7 @@ CONTAINS
       ! for an explicit diurnal cycle
       ! (2) no diurnal cycle of SW is active and in that case, QSR is used.
       ! --------------------------------------------
-      IF( l_trcdm2dc ) THEN                     !  diurnal cycle
+      IF( ln_trcdc2dm ) THEN                     !  diurnal cycle
          IF ( ln_p4z_dcyc ) THEN   ! Diurnal cycle in PISCES
             !
             !
diff --git a/src/TOP/trc.F90 b/src/TOP/trc.F90
index 0b713e5ea38128671add9cedc7cd843240602eae..d5b85e041f9f4a1a60f4dfe167cb6bba7b329b68 100644
--- a/src/TOP/trc.F90
+++ b/src/TOP/trc.F90
@@ -45,7 +45,6 @@ MODULE trc
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  gtrv           !: hor. gradient at v-points at bottom ocean level
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  gtrui          !: hor. gradient at u-points at top    ocean level
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  gtrvi          !: hor. gradient at v-points at top    ocean level
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  qsr_mean        !: daily mean qsr
    
    !! passive tracers  (input and output)
    !! ------------------------------------------  
@@ -167,7 +166,7 @@ CONTAINS
          &      neln(jpi,jpj)         , heup(jpi,jpj)         , heup_01(jpi,jpj)      ,       &
          &      etot(jpi,jpj,jpk)     , etot_ndcy(jpi,jpj,jpk)                        ,       &
          &      sbc_trc_b(jpi,jpj,jptra), sbc_trc(jpi,jpj,jptra)                      ,       &  
-         &      cvol(jpi,jpj,jpk)     , trai(jptra)           , qsr_mean(jpi,jpj)     ,       &
+         &      cvol(jpi,jpj,jpk)     , trai(jptra)                                   ,       &
          &      ctrcnm(jptra)         , ctrcln(jptra)         , ctrcun(jptra)         ,       &
          &      ln_trc_ini(jptra)     ,                                                       &
          &      ln_trc_sbc(jptra)     , ln_trc_cbc(jptra)     , ln_trc_obc(jptra)     ,       &
diff --git a/src/TOP/trcnam.F90 b/src/TOP/trcnam.F90
index fdde13d762319a596669beeeee4438d86349eb8c..cacbe617105a4851b262e05392c3fdea4b542782 100644
--- a/src/TOP/trcnam.F90
+++ b/src/TOP/trcnam.F90
@@ -80,6 +80,9 @@ CONTAINS
         WRITE(numout,*) 
         WRITE(numout,*) '   ==>>>   Passive Tracer time step = rn_Dt = ', rn_Dt
       ENDIF
+      !
+                            CALL trc_nam_dcy    ! Diurnal Cycle
+
       !
       IF( l_trdtrc )        CALL trc_nam_trd    ! Passive tracer trends
       !
@@ -225,6 +228,34 @@ CONTAINS
       !
    END SUBROUTINE trc_nam_trc
 
+   SUBROUTINE trc_nam_dcy
+      !!---------------------------------------------------------------------
+      !!                     ***  ROUTINE trc_nam_dcy  ***
+      !!
+      !! ** Purpose :   read options for the passive tracer diagnostics
+      !!
+      !!---------------------------------------------------------------------
+      INTEGER  ::   ios, ierr                 ! Local integer
+      !!
+      NAMELIST/namtrc_dcy/ ln_trcdc2dm
+      !!---------------------------------------------------------------------
+      !
+      IF(lwp) WRITE(numout,*)
+      IF(lwp) WRITE(numout,*) 'trc_nam_dcy : read the passive tracer diurnal cycle options'
+      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~'
+      !
+      READ  ( numnat_ref, namtrc_dcy, IOSTAT = ios, ERR = 905)
+905   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namtrc_dcy in reference namelist' )
+      READ  ( numnat_cfg, namtrc_dcy, IOSTAT = ios, ERR = 906 )
+906   IF( ios >  0 )   CALL ctl_nam ( ios , 'namtrc_dcy in configuration namelist' )
+      IF(lwm) WRITE( numont, namtrc_dcy )
+
+      IF(lwp) THEN
+         WRITE(numout,*) '   Namelist : namtrc_dcy                    '
+         WRITE(numout,*) '      Diurnal cycle for TOP ln_trcdc2dm    = ', ln_trcdc2dm
+      ENDIF
+
+   END SUBROUTINE trc_nam_dcy
 
    SUBROUTINE trc_nam_trd
       !!---------------------------------------------------------------------
diff --git a/src/TOP/trcstp.F90 b/src/TOP/trcstp.F90
index 380924186e23f76e679112b812e3b7ec602bdcda..124269c63a1107824dc2ff42089ed503bd7bdb4c 100644
--- a/src/TOP/trcstp.F90
+++ b/src/TOP/trcstp.F90
@@ -142,12 +142,10 @@ CONTAINS
    SUBROUTINE trc_stp_ctl
       !!----------------------------------------------------------------------
       !!                     ***  ROUTINE trc_stp_ctl  ***
-      !! ** Purpose :        Control  + ocean volume
       !!----------------------------------------------------------------------
       !
       ! Define logical parameter ton control dirunal cycle in TOP
-      l_trcdm2dc = ln_dm2dc .OR. ( ln_cpl .AND. ncpl_qsr_freq /= 1 .AND. ncpl_qsr_freq /= 0 )
-      l_trcdm2dc = l_trcdm2dc .AND. .NOT. l_offline
+      l_trcdm2dc = ( ln_trcdc2dm .AND. .NOT. ln_dm2dc  ) 
       !
       IF( l_trcdm2dc .AND. lwp )   CALL ctl_warn( 'Coupling with passive tracers and used of diurnal cycle.',   &
          &                           'Computation of a daily mean shortwave for some biogeochemical models ' )
@@ -178,13 +176,9 @@ CONTAINS
       IF( ln_timing )   CALL timing_start('trc_mean_qsr')
       !
       IF( kt == nittrc000 ) THEN
-         IF( ln_cpl )  THEN  
-            rdt_sampl = rday / ncpl_qsr_freq
-            nb_rec_per_day = ncpl_qsr_freq
-         ELSE  
-            rdt_sampl = MAX( 3600., rn_Dt )
-            nb_rec_per_day = INT( rday / rdt_sampl )
-         ENDIF
+         !
+         rdt_sampl = REAL( ncpl_qsr_freq )
+         nb_rec_per_day = INT( rday / ncpl_qsr_freq )
          !
          IF(lwp) THEN
             WRITE(numout,*) 
diff --git a/tests/ICE_AGRIF/EXPREF/1_namelist_cfg b/tests/ICE_AGRIF/EXPREF/1_namelist_cfg
index d1028790e36deb9e89b4a3d8779b815cfddbe823..e7a02052b0adb4cb296ff8e63b8fb649a91f6772 100644
--- a/tests/ICE_AGRIF/EXPREF/1_namelist_cfg
+++ b/tests/ICE_AGRIF/EXPREF/1_namelist_cfg
@@ -104,7 +104,7 @@
 !-----------------------------------------------------------------------
 &namagrif      !  AGRIF zoom                                            ("key_agrif")
 !-----------------------------------------------------------------------
-   ln_init_chfrpar = .true.  !  initialize child grids from parent
+   ln_chk_bathy    = .false.  !  =T  check the parent bathymetry
 /
 !!======================================================================
 !!                ***  Top/Bottom boundary condition  ***             !!
diff --git a/tests/ICE_AGRIF/EXPREF/namelist_cfg b/tests/ICE_AGRIF/EXPREF/namelist_cfg
index 4c24668745bbd9ae0d486d8c664885155bb573c9..33b2ce8544be5316446550bc47dbb68f3cdbbb68 100644
--- a/tests/ICE_AGRIF/EXPREF/namelist_cfg
+++ b/tests/ICE_AGRIF/EXPREF/namelist_cfg
@@ -104,6 +104,7 @@
 !-----------------------------------------------------------------------
 &namagrif      !  AGRIF zoom                                            ("key_agrif")
 !-----------------------------------------------------------------------
+   ln_chk_bathy    = .false.  !  =T  check the parent bathymetry
 /
 !!======================================================================
 !!                ***  Top/Bottom boundary condition  ***             !!