Opened 5 months ago

Closed 5 months ago

#2448 closed Bug (fixed)

wrong coastal boundary condition in dyn_ldf_blp

Reported by: smasson Owned by: systeam
Priority: high Milestone:
Component: LDF Version: trunk
Severity: major Keywords:



This bug affects the coastal boundary conditions of dyn_ldf_blp…

Note that if the southern/western boundary is closed, the bug does not affect the points located just along the southern/western edge of the global domain.

It could explain a part of the problem that occurred at the southern boundary of ORCA grids along the southern boundary of the Weddell sea?


After several discussions with Gurvan… I hope I get it right…

For example, consider the laplacian for a 1 V-point located along a southern coastline

           |              |
ocen side  |      D1      |
           |              |
coast: === C1 == Vlap == C2
           |              |
land side  |      D2      |
           |              |

C1 and C2 are the curl at F-points. They are multiplied by fmask because of ahmf. In free slip, they are equal to 0.
D1 and D2 are the divergence at T-points. D2 = 0 but not D1.
So in any case, Vlap won't be equal to 0 if we don't multiply it by vmask.

If Vlap were not equal to 0, this would be a source term in the laplacian diffusion trend, which is incompatible with the fact that V must always remain equal to 0 at the coast.
So V always equals to 0 at the coast imposes that its laplacian cannot be different from 0.

  • in the dyn_ldf_lap case, this is not a problem as the trend will later be multipled by vmask.
  • in dyn_ldf_blp, the output of the first call of dyn_ldf_lap (zulap, zvlap) won't be correctly masked when used as input arguments in the second call of dyn_ldf_lap. This is the source of the bug!

Same story, all along the coast, on each directions…

Note that, in case of closed boundaries conditions, the call to lbc_lnk between the 2 calls of dyn_ldf_lap in dyn_ldf_blp will put 0 on the first row/column that will correct the bug for ocean coastal plots located on the second line/row.


easy: in dyn_ldf_lap, multiply pu_rhs by umask and pv_rhs by vmask.

Commit History (1)


trunk: fix coastal boundary conditions in dyn_ldf_blp, see #2448

Change History (2)

comment:1 Changed 5 months ago by smasson

In 12790:

trunk: fix coastal boundary conditions in dyn_ldf_blp, see #2448

comment:2 Changed 5 months ago by smasson

  • Resolution set to fixed
  • Status changed from new to closed

fixed in [12790]
[12790] passes all sette tests with X64_IRENE and X64_IRENE_GCC
As expected, [12790] changes the results of configuration using dyn_ldf_blp
⇒ in sette tests, AMM12 is modified.

-bash-4.2$ ./

Current code is : NEMO/trunk @ r12791  ( last change @ r12790 )

SETTE validation report generated for :

       NEMO/trunk @ r12790 (last changed revision)

       on X64_IRENE_GCC arch file

!!---------------1st pass------------------!!

WGYRE_PISCES_ST              run.stat    restartability  passed :  12790
WGYRE_PISCES_ST              tracer.stat restartability  passed :  12790
WORCA2_ICE_PISCES_ST         run.stat    restartability  passed :  12790
WORCA2_ICE_PISCES_ST         tracer.stat restartability  passed :  12790
WORCA2_OFF_PISCES_ST         tracer.stat restartability  passed :  12790
WAMM12_ST                    run.stat    restartability  passed :  12790
WORCA2_SAS_ICE_ST            run.stat    restartability  passed :  12790
WAGRIF_DEMO_ST               run.stat    restartability  passed :  12790
WSPITZ12_ST                  run.stat    restartability  passed :  12790
WISOMIP_ST                   run.stat    restartability  passed :  12790
WOVERFLOW_ST                 run.stat    restartability  passed :  12790
WLOCK_EXCHANGE_ST            run.stat    restartability  passed :  12790
WVORTEX_ST                   run.stat    restartability  passed :  12790
WICE_AGRIF_ST                run.stat    restartability  passed :  12790

WGYRE_PISCES_ST              run.stat    reproducibility passed :  12790
WGYRE_PISCES_ST              tracer.stat reproducibility passed :  12790
WORCA2_ICE_PISCES_ST         run.stat    reproducibility passed :  12790
WORCA2_ICE_PISCES_ST         tracer.stat reproducibility passed :  12790
WORCA2_OFF_PISCES_ST         tracer.stat reproducibility passed :  12790
WAMM12_ST                    run.stat    reproducibility passed :  12790
WORCA2_SAS_ICE_ST            run.stat    reproducibility passed :  12790
WORCA2_ICE_OBS_ST            run.stat    reproducibility passed :  12790
WAGRIF_DEMO_ST               run.stat    reproducibility passed :  12790
WSPITZ12_ST                  run.stat    reproducibility passed :  12790
WISOMIP_ST                   run.stat    reproducibility passed :  12790
WVORTEX_ST                   run.stat    reproducibility passed :  12790
WICE_AGRIF_ST                run.stat    reproducibility passed :  12790

   !----agrif check----!
ORCA2 AGRIF vs ORCA2 NOAGRIF run.stat    unchanged  -    passed :  12790 12790

   !----result comparison check----!

check result differences between :
VALID directory : /ccc/work/cont005/ra0542/massons/NEMO_ALL_VALIDATIONS/trunk/NEMO_VALIDATION at rev 12790
REFERENCE directory : /ccc/work/cont005/ra0542/massons/NEMO_ALL_VALIDATIONS/trunk/NEMO_VALIDATION at rev 12650

WGYRE_PISCES_ST       run.stat    files are identical
WGYRE_PISCES_ST       tracer.stat files are identical
WORCA2_ICE_PISCES_ST  run.stat    files are identical
WORCA2_ICE_PISCES_ST  tracer.stat files are identical
WORCA2_OFF_PISCES_ST  tracer.stat files are identical
WAMM12_ST             run.stat    files are DIFFERENT (results are different after  2  time steps)
WISOMIP_ST            run.stat    files are identical
WORCA2_SAS_ICE_ST     run.stat    files are identical
WAGRIF_DEMO_ST        run.stat    files are identical
WSPITZ12_ST           run.stat    files are identical
WISOMIP_ST            run.stat    files are identical
WVORTEX_ST            run.stat    files are identical
WICE_AGRIF_ST         run.stat    files are identical
Note: See TracTickets for help on using tickets.