Opened 5 years ago
Closed 5 years 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: | |
Cc: |
Description
Context
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?
Analysis
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.
Fix
easy: in dyn_ldf_lap, multiply pu_rhs by umask and pv_rhs by vmask.
Commit History (1)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
12790 | smasson | 2020-04-21T22:33:29+02:00 | trunk: fix coastal boundary conditions in dyn_ldf_blp, see #2448 |
Change History (2)
comment:1 Changed 5 years ago by smasson
comment:2 Changed 5 years 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$ ./sette_rpt.sh 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------------------!! !----restart----! 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 !----repro----! 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 and 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
In 12790: