diff --git a/e2e/calculator.po.ts b/e2e/calculator.po.ts
index 64c8ae5bcb93b331b0ebb41ac8377bfc3374fa63..ee185aaa7edf94f01e03acb3fcbfe63d09108acc 100644
--- a/e2e/calculator.po.ts
+++ b/e2e/calculator.po.ts
@@ -356,6 +356,17 @@ export class CalculatorPage {
         return style.indexOf("color: red;") !== -1;
     }
 
+    /**
+     * return true if the nth log entry is a warning
+     */
+    async nthLogEntryIsWarning(n: number) {
+        const errs = await $$("log-entry");
+        const e = errs[n];
+        const icon = await e.$("div mat-icon");
+        const style = await icon.getAttribute("style");
+        return style.indexOf("color: orange;") !== -1;
+    }
+
     async clickSaveCalcButton() {
         await scrollPageToTop();
         return await $("#save-calc").click();
diff --git a/e2e/ouvrages-empty-fields.e2e-spec.ts b/e2e/ouvrages-empty-fields.e2e-spec.ts
index 24078502a66f73fe9559fde6eee826a9fc10b755..b0cebdc6486fc33c7d58e6c9cd42c491b4a6a8f1 100644
--- a/e2e/ouvrages-empty-fields.e2e-spec.ts
+++ b/e2e/ouvrages-empty-fields.e2e-spec.ts
@@ -2,8 +2,9 @@ import { ListPage } from "./list.po";
 import { CalculatorPage } from "./calculator.po";
 import { PreferencesPage } from "./preferences.po";
 import { Navbar } from "./navbar.po";
-import { changeSelectValue } from "./util.po";
+import { changeSelectValue, openApplication, openCalculator } from "./util.po";
 import { browser, $, $$, expect } from '@wdio/globals'
+import { AppPage } from "./app.po";
 
 /**
  * Check that created/cloned structures have empty fields when
@@ -14,13 +15,14 @@ describe("ngHyd - check that created/cloned structures have empty fields - ", ()
     let listPage: ListPage;
     let calcPage: CalculatorPage;
     let navBar: Navbar;
+    let startPage: AppPage;
 
     beforeAll(() => {
         prefPage = new PreferencesPage();
         listPage = new ListPage();
         calcPage = new CalculatorPage();
         navBar = new Navbar();
-        //browser.manage().window().setPosition(2000, 30);
+        startPage = new AppPage();
     });
 
     beforeEach(async () => {
@@ -33,12 +35,10 @@ describe("ngHyd - check that created/cloned structures have empty fields - ", ()
 
     async function setup() {
         // start page
-        await navBar.clickNewCalculatorButton();
-        await browser.pause(200);
+        await openApplication(startPage);
 
         // open structures calculator
-        await listPage.clickMenuEntryForCalcType(8);
-        await browser.pause(200);
+        await openCalculator(8, navBar, listPage);
     }
 
     it("when a structure calculator is created", async () => {
diff --git a/e2e/pab-submergence-error.e2e-spec.ts b/e2e/pab-submergence-error.e2e-spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1009d941026951bcb61b25ab031acb3f22bd1d21
--- /dev/null
+++ b/e2e/pab-submergence-error.e2e-spec.ts
@@ -0,0 +1,61 @@
+import { CalculatorPage } from "./calculator.po";
+import { Navbar } from "./navbar.po";
+import { AppPage } from "./app.po";
+import { PreferencesPage } from "./preferences.po";
+import { browser, $, $$, expect } from '@wdio/globals'
+
+/**
+ * Clone calculators
+ */
+describe("Passe à Bassins - ", () => {
+    let startPage: AppPage;
+    let calcPage: CalculatorPage;
+    let navBar: Navbar;
+    let prefPage: PreferencesPage;
+
+    beforeAll(() => {
+        startPage = new AppPage();
+        calcPage = new CalculatorPage();
+        navBar = new Navbar();
+        prefPage = new PreferencesPage();
+    });
+
+    beforeEach(async () => {
+        // disable evil option "empty fields on module creation"
+        await prefPage.setEmptyFields(false);
+    });
+
+    it("check submergence error occurs", async () => {
+        await startPage.navigateTo();
+        await browser.pause(200);
+
+        // open PAB example
+        const examples = await $$("#examples-list .load-example");
+        await examples[0].click();
+        await browser.pause(500);
+
+        // select PAB module
+        await navBar.openNthCalculator(5);
+        await browser.pause(300);
+
+        // modify downstream water elevation
+        const inpZ2 = await calcPage.getInputById("Z2");
+        await inpZ2.setValue("27");
+        await browser.pause(100);
+
+        // calculate PAB
+        const calcButton = await calcPage.getCalculateButton();
+        await calcButton.click();
+        await browser.pause(300);
+
+        // check that result is empty
+        const hasResults = await calcPage.hasResults();
+        expect(hasResults).toBe(false);
+
+        // check presence of log messages
+        expect(await calcPage.nbLogEntries()).toBe(3);
+        expect(await calcPage.nthLogEntryIsError(0)).toBe(true);
+        expect(await calcPage.nthLogEntryIsError(1)).toBe(true);
+        expect(await calcPage.nthLogEntryIsWarning(2)).toBe(true);
+    });
+});
diff --git a/e2e/pab.e2e-spec.ts b/e2e/pab.e2e-spec.ts
index 28f88a928f0135cb1d009e516268ad570fe95319..a46cf7912e2861152fe2ef2ea30aecff55c44afb 100644
--- a/e2e/pab.e2e-spec.ts
+++ b/e2e/pab.e2e-spec.ts
@@ -62,7 +62,7 @@ describe("ngHyd − Passe à Bassins", () => {
             await listPage.clickMenuEntryForCalcType(12);
             const c_Z1 = await calcPage.getInputById("Z1");
             await c_Z1.setValue("78.27");
-            const c_Z2 = await calcPage.getInputById("Z1");
+            const c_Z2 = await calcPage.getInputById("Z2");
             await c_Z2.setValue("74.86");
 
             // PAB - nombre
@@ -124,21 +124,23 @@ describe("ngHyd − Passe à Bassins", () => {
             await scrollPageToTop();
             // generate PAB
             const genButton = await calcPage.getGeneratePabButton();
-            await genButton.isExisting();
-            await genButton.isDisplayed();
+            // await genButton.isExisting();
+            // await genButton.isDisplayed();
             await genButton.click();
             await browser.pause(1000);
             const nbBassins = await calcPage.getInputById("generatePabNbBassins");
             await nbBassins.setValue("9");
 
             // click "Generate"
-            await $("dialog-generate-pab button#do-generate").click();
+            // await $("dialog-generate-pab button#do-generate").click();
+            const doGen = await $("dialog-generate-pab button#do-generate");
+            await doGen.click();
             await browser.pause(1000);
 
             // calculate PAB
             const calcButtonPAB = await calcPage.getCalculateButton();
             await calcButtonPAB.click();
-            await browser.pause(200);
+            await browser.pause(500);
 
             // check that result is not empty
             const hasResults = await calcPage.hasResults();
@@ -185,8 +187,10 @@ describe("ngHyd − Passe à Bassins", () => {
             const genButton = await calcPage.getGeneratePabButton();
             await genButton.click();
             await browser.pause(1000);
+
             const debit = await calcPage.getInputById("generatePabDebit");
-            expect(await debit.getValue()).toBe("0.564");
+            expect(await debit.getValue()).toBe("1.128");
+            await debit.clearValue();
             // send "1.6" in 3 movements, because "." triggers an error and Angular can't cope with the subsequent keys
             await debit.setValue("1");
             await debit.addValue(".");
diff --git a/e2e/parallel-structures.e2e-spec.ts b/e2e/parallel-structures.e2e-spec.ts
index 54ebb02952312ad799e8a46d01de02c1611f098a..f5f12df4bf09e7a6295d865effd4f949a11a0613 100644
--- a/e2e/parallel-structures.e2e-spec.ts
+++ b/e2e/parallel-structures.e2e-spec.ts
@@ -8,101 +8,102 @@ import { SideNav } from "./sidenav.po";
 import { browser, $, $$, expect } from '@wdio/globals'
 
 describe("Parallel structures - ", () => {
-    let startPage: AppPage;
-    let listPage: ListPage;
-    let navBar: Navbar;
-    let calcPage: CalculatorPage;
-    let prefPage: PreferencesPage;
-    let sideNav: SideNav;
+        let startPage: AppPage;
+        let listPage: ListPage;
+        let navBar: Navbar;
+        let calcPage: CalculatorPage;
+        let prefPage: PreferencesPage;
+        let sideNav: SideNav;
 
-    beforeAll(() => {
-        startPage = new AppPage();
-        listPage = new ListPage();
-        navBar = new Navbar();
-        calcPage = new CalculatorPage();
-        prefPage = new PreferencesPage();
-        sideNav = new SideNav();
-    });
+        beforeAll(() => {
+                startPage = new AppPage();
+                listPage = new ListPage();
+                navBar = new Navbar();
+                calcPage = new CalculatorPage();
+                prefPage = new PreferencesPage();
+                sideNav = new SideNav();
+        });
 
-    beforeEach(async () => {
-        // disable evil option "empty fields on module creation"
-        await prefPage.navigateTo();
-        await prefPage.disableEvilEmptyFields();
-        await browser.pause(200);
-    });
+        beforeEach(async () => {
+                // disable evil option "empty fields on module creation"
+                await prefPage.navigateTo();
+                await prefPage.disableEvilEmptyFields();
+                await browser.pause(200);
+        });
 
-    it("check calculated parameter remains the same when copying a structure", async () => {
-        // open "fish ladder: cross walls" calculator
-        await navBar.clickNewCalculatorButton();
-        await browser.pause(200);
-        await listPage.clickMenuEntryForCalcType(10);
-        await browser.pause(200);
+        it("check calculated parameter remains the same when copying a structure", async () => {
+                // open "fish ladder: cross walls" calculator
+                await navBar.clickNewCalculatorButton();
+                await browser.pause(200);
+                await listPage.clickMenuEntryForCalcType(10);
+                await browser.pause(200);
 
-        // check L in first structure calc toggle is not checked
-        const L1 = await calcPage.getInputById("0_L");
+                // check L in first structure calc toggle is not checked
+                const L1 = await calcPage.getInputById("0_L");
 
-        // const h11 = calcPage.getInputById("0_h1");
+                // const h11 = calcPage.getInputById("0_h1");
 
-        // set L to calculated in first structure
-        await calcPage.setParamMode(L1, "cal");
-        await browser.pause(500);
+                // set L to calculated in first structure
+                await calcPage.setParamMode(L1, "cal");
+                await browser.pause(500);
 
-        // check L calc toggle is  checked
-        expect(await calcPage.inputIsInCalculatedMode(L1)).toBe(true);
+                // check L calc toggle is  checked
+                expect(await calcPage.inputIsInCalculatedMode(L1)).toBe(true);
 
-        // copy 1st structure
-        const copyStruct = await calcPage.getCopyStructureButton();
+                // copy 1st structure
+                const copyStruct = await calcPage.getCopyStructureButton();
 
-        await browser.execute(e => { e.click() }, copyStruct); // await copyStruct.click() fails with "element not interactable" error
-        await browser.pause(200);
+                await browser.execute(e => { e.click() }, copyStruct); // await copyStruct.click() fails with "element not interactable" error
+                await browser.pause(200);
 
-        await calcPage.closeSnackBar();
-        await browser.pause(200);
+                await calcPage.closeSnackBar();
+                await browser.pause(200);
 
-        // check L in first structure is still in "calc" state
-        expect(await calcPage.inputIsInCalculatedMode(L1)).toBe(true);
+                // check L in first structure is still in "calc" state
+                expect(await calcPage.inputIsInCalculatedMode(L1)).toBe(true);
 
-        // // check L in second structure is still in "fix" state
-        const L2 = await calcPage.getInputById("1_L");
-        expect(await calcPage.inputIsInFixedMode(L2)).toBe(true);
-    });
+                // // check L in second structure is still in "fix" state
+                const L2 = await calcPage.getInputById("1_L");
+                expect(await calcPage.inputIsInFixedMode(L2)).toBe(true);
+        });
 
-    //TODO à réactiver après fusion de #618 dans devel
-    xit("check submergence error", async () => {
-        await startPage.navigateTo();
-        await browser.pause(200);
+        it("check submergence error", async () => {
+                await startPage.navigateTo();
+                await browser.pause(200);
 
-        await loadSession(navBar, sideNav, "./session/session-erreur-ennoiement-614.json");
-        await browser.pause(1000);
+                await loadSession(navBar, sideNav, "./session/session-erreur-ennoiement-614.json");
+                await browser.pause(1000);
 
-        // first calculator
+                // first calculator
 
-        await navBar.clickCalculatorTab(0);
-        await browser.pause(200);
+                await navBar.clickCalculatorTab(0);
+                await browser.pause(200);
 
-        // run calculation
-        let btnCalc = await calcPage.getCalculateButton();
-        await btnCalc.click();
-        await browser.pause(500);
+                // run calculation
+                let btnCalc = await calcPage.getCalculateButton();
+                await btnCalc.click();
+                await browser.pause(500);
 
-        // check error message in log
-        expect(await calcPage.nbLogEntries()).toBe(1);
+                // check error message in log
+                expect(await calcPage.nbLogEntries()).toBe(2);
 
-        expect(await calcPage.nthLogEntryIsError(0)).toBe(true);
+                expect(await calcPage.nthLogEntryIsError(0)).toBe(true);
+                expect(await calcPage.nthLogEntryIsWarning(1)).toBe(true);
 
-        // second calculator
+                // second calculator
 
-        await navBar.clickCalculatorTab(1);
-        await browser.pause(200);
+                await navBar.clickCalculatorTab(1);
+                await browser.pause(200);
 
-        // run calculation
-        btnCalc = await calcPage.getCalculateButton();
-        await btnCalc.click();
-        await browser.pause(500);
+                // run calculation
+                btnCalc = await calcPage.getCalculateButton();
+                await btnCalc.click();
+                await browser.pause(500);
 
-        // check error message in log
-        expect(await calcPage.nbLogEntries()).toBe(1);
+                // check error message in log
+                expect(await calcPage.nbLogEntries()).toBe(2);
 
-        expect(await calcPage.nthLogEntryIsError(0)).toBe(true);
-    });
+                expect(await calcPage.nthLogEntryIsError(0)).toBe(true);
+                expect(await calcPage.nthLogEntryIsWarning(1)).toBe(true);
+        });
 });
diff --git a/e2e/prebarrages-results.e2e-spec.ts b/e2e/prebarrages-results.e2e-spec.ts
index 09c79d23b2f5527fdb744664d70aa3023ce6a2ee..b7e83b5126a6df649dd4ff40a3d9163c2b0a7a30 100644
--- a/e2e/prebarrages-results.e2e-spec.ts
+++ b/e2e/prebarrages-results.e2e-spec.ts
@@ -3,7 +3,8 @@ import { CalculatorPage } from "./calculator.po";
 import { Navbar } from "./navbar.po";
 import { PreferencesPage } from "./preferences.po";
 import { browser, $, $$, expect } from '@wdio/globals'
-import { scrollToElement } from "./util.po";
+import { loadSession, scrollToElement } from "./util.po";
+import { SideNav } from "./sidenav.po";
 
 /**
  * Clone calculators
@@ -13,12 +14,14 @@ describe("Prébarrages results - ", () => {
     let calcPage: CalculatorPage;
     let navBar: Navbar;
     let prefPage: PreferencesPage;
+    let sidenav: SideNav;
 
     beforeAll(() => {
         listPage = new ListPage();
         calcPage = new CalculatorPage();
         navBar = new Navbar();
         prefPage = new PreferencesPage();
+        sidenav = new SideNav();
         jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 1000;
     });
 
@@ -56,4 +59,29 @@ describe("Prébarrages results - ", () => {
             expect(hasResults).toBe(true);
         }
     });
+
+    it("an error in calculation must lead to empty results for all walls/basins", async () => {
+        // load session file
+        await loadSession(navBar, sidenav, "./session/session-prebarrage-calculation-error.json");
+
+        // click "compute" button
+        const calcButton = await calcPage.getCalculateButton();
+        await calcButton.click();
+        await browser.pause(300);
+
+        // check no result is available
+        const nodes = await $$("g.nodes > g");
+        const nb = nodes.length;
+        for (let n = 0; n < nb; n++) {
+            const node = nodes[n];
+            await scrollToElement(node);
+            await browser.pause(100);
+            await node.click();
+            await browser.pause(200);
+
+            // check that result is empty
+            const hasResults = await calcPage.hasResults();
+            expect(hasResults).toBe(false);
+        }
+    });
 });
diff --git a/e2e/predam-log.e2e-spec.ts b/e2e/predam-log.e2e-spec.ts
index 11326ca7b30206e7257009c10ad00cdef48ee4bc..07c936d1e62a863c69faf2e90a69623da2c44d80 100644
--- a/e2e/predam-log.e2e-spec.ts
+++ b/e2e/predam-log.e2e-spec.ts
@@ -3,18 +3,25 @@ import { ListPage } from "./list.po";
 import { Navbar } from "./navbar.po";
 import { PreferencesPage } from "./preferences.po"
 import { browser, $, $$, expect } from '@wdio/globals'
+import { changeSelectValue, loadSession, scrollToElement } from "./util.po";
+import { AppPage } from "./app.po";
+import { SideNav } from "./sidenav.po";
 
-describe("check that low iteration count leads to log messages", () => {
+describe("predams - ", () => {
     let listPage: ListPage;
     let prefPage: PreferencesPage;
     let navBar: Navbar;
     let calcPage: CalculatorPage;
+    let startPage: AppPage;
+    let sideNav: SideNav;
 
     beforeAll(() => {
         prefPage = new PreferencesPage();
         listPage = new ListPage();
         navBar = new Navbar();
         calcPage = new CalculatorPage();
+        startPage = new AppPage();
+        sideNav = new SideNav();
     });
 
     beforeEach(async () => {
@@ -25,7 +32,7 @@ describe("check that low iteration count leads to log messages", () => {
         await browser.pause(100);
     });
 
-    it("", async () => {
+    it("check that low iteration count leads to log messages", async () => {
         // set low iteration count
         await prefPage.setIterationCount(5);
 
@@ -42,4 +49,133 @@ describe("check that low iteration count leads to log messages", () => {
         // check log messages presence
         expect(await calcPage.hasLog()).toBe(true);
     });
+
+    it("check log messages in predams example", async () => {
+        await startPage.navigateTo();
+        await browser.pause(200);
+
+        // open predams example
+        const examples = await $$("#examples-list .load-example");
+        await examples[6].click();
+        await browser.pause(500);
+
+        // click "Amont-B2" 
+        const nodes = await $$("g.nodes > g");
+        const node = nodes[9];
+        await scrollToElement(node);
+        await browser.pause(100);
+        await node.click();
+        await browser.pause(200);
+
+        // change discharge law to Larinier
+        const sel = await calcPage.getSelectById("select_loidebit");
+        await changeSelectValue(sel, 3);
+        await browser.pause(100);
+
+        // calculate module
+        const calcBtn = await calcPage.getCalculateButton();
+        await calcBtn.click();
+        await browser.pause(300);
+
+        // check log messages presence
+        expect(await calcPage.hasLog()).toBe(true);
+    });
+
+    it("check submergence error does not trigger too soon", async () => {
+        await startPage.navigateTo();
+        await browser.pause(200);
+
+        await loadSession(navBar, sideNav, "./session/session-submergence-error-Larinier.json");
+
+        // calculate module
+        const calcBtn = await calcPage.getCalculateButton();
+        await calcBtn.click();
+        await browser.pause(300);
+
+        // check log messages absence
+        expect(await calcPage.hasLog()).toBe(false);
+    });
+
+    it("check submergence error and results if dichotomy did not converge", async () => {
+        await startPage.navigateTo();
+        await browser.pause(200);
+
+        // open predams example
+        const examples = await $$("#examples-list .load-example");
+        await examples[6].click();
+        await browser.pause(500);
+
+        // modify iteration count,precision
+        await prefPage.navigateTo();
+        await browser.pause(200);
+        await prefPage.setIterationCount(10);
+        await prefPage.setComputePrecision(1e-15);
+
+        // back to module
+        await navBar.openNthCalculator(0);
+        await browser.pause(500);
+
+        // calculate module
+        const calcBtn = await calcPage.getCalculateButton();
+        await calcBtn.click();
+        await browser.pause(300);
+
+        // check log messages presence
+        expect(await calcPage.hasLog()).toBe(true);
+        expect(await calcPage.nbLogEntries()).toBe(12);
+
+        // check that results are not empty (dichotomy did not convergence but results should be displayed anyway)
+        const hasResults = await calcPage.hasResults();
+        expect(hasResults).toBe(true);
+    });
+
+    it("check results (dichotomy did not converge + submergence error)", async () => {
+        await startPage.navigateTo();
+        await browser.pause(200);
+
+        // open predams example
+        const examples = await $$("#examples-list .load-example");
+        await examples[6].click();
+        await browser.pause(500);
+
+        // modify iteration count,precision (should trigger submergence+dichotomy non convergence errors)
+        await prefPage.navigateTo();
+        await browser.pause(200);
+        await prefPage.setIterationCount(20);
+        await prefPage.setComputePrecision(1e-15);
+
+        // back to module
+        await navBar.openNthCalculator(0);
+        await browser.pause(500);
+
+        // click "Amont-B2" 
+        const nodes = await $$("g.nodes > g");
+        const node = nodes[9];
+        await scrollToElement(node);
+        await browser.pause(100);
+        await node.click();
+        await browser.pause(200);
+
+        // change discharge law to Larinier
+        const sel = await calcPage.getSelectById("select_loidebit");
+        await changeSelectValue(sel, 3);
+        await browser.pause(100);
+
+        // calculate module
+        const calcBtn = await calcPage.getCalculateButton();
+        await calcBtn.click();
+        await browser.pause(300);
+
+        // check that results are empty
+        const hasResults = await calcPage.hasResults();
+        expect(hasResults).toBe(false);
+
+        // check log messages
+        expect(await calcPage.hasLog()).toBe(true);
+        expect(await calcPage.nbLogEntries()).toBe(4);
+        expect(await calcPage.nthLogEntryIsWarning(0)).toBe(true);
+        expect(await calcPage.nthLogEntryIsError(1)).toBe(true);
+        expect(await calcPage.nthLogEntryIsWarning(2)).toBe(true);
+        expect(await calcPage.nthLogEntryIsError(3)).toBe(true);
+    });
 });
diff --git a/e2e/preferences.po.ts b/e2e/preferences.po.ts
index 4a3a5755cc3ebf7aec84f2e198608662da8ff6fc..57f921dd1a82ccab94ffe320daf0f57a9161d67f 100644
--- a/e2e/preferences.po.ts
+++ b/e2e/preferences.po.ts
@@ -84,4 +84,9 @@ export class PreferencesPage {
         const input = await this.getInputFromName("nmi");
         await input.setValue(n.toString());
     }
+
+    async setComputePrecision(p: number) {
+        const input = await this.getInputFromName("cp");
+        await input.setValue(p.toString());
+    }
 }
diff --git a/e2e/session/session-prebarrage-calculation-error.json b/e2e/session/session-prebarrage-calculation-error.json
new file mode 100644
index 0000000000000000000000000000000000000000..b8f6f4f8566e75709b4d5dfc83a91d9062bf1c84
--- /dev/null
+++ b/e2e/session/session-prebarrage-calculation-error.json
@@ -0,0 +1 @@
+{"header":{"source":"jalhyd","format_version":"1.3","created":"2023-05-16T06:32:05.999Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"b2kxNm","props":{"calcType":"PreBarrage"},"meta":{"title":"Prébarrages"},"children":[{"uid":"Zjczdz","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":13.8},{"symbol":"ZF","mode":"SINGLE","value":95}]},{"uid":"dWJrZX","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":15.4},{"symbol":"ZF","mode":"SINGLE","value":94.7}]},{"uid":"dzMxN2","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":16.2},{"symbol":"ZF","mode":"SINGLE","value":94.7}]},{"uid":"ZXZua2","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":17.5},{"symbol":"ZF","mode":"SINGLE","value":94.4}]},{"uid":"YmR5aD","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":32.1},{"symbol":"ZF","mode":"SINGLE","value":94.25}]},{"uid":"bDN2OW","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":35},{"symbol":"ZF","mode":"SINGLE","value":94.1}]},{"uid":"MWxycH","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":"Zjczdz"},"children":[{"uid":"MmZ2aG","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.3},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"eW9jZH","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.3},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"c3Zpb2","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":"dWJrZX"},"children":[{"uid":"bTQ2cG","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96},{"symbol":"L","mode":"SINGLE","value":1},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"N24zM2","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96.25},{"symbol":"L","mode":"SINGLE","value":5},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"MG4wNG","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":"YmR5aD"},"children":[{"uid":"azV4dj","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96.25},{"symbol":"L","mode":"SINGLE","value":3.5},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"YjJra2","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":"bDN2OW"},"children":[{"uid":"aDd4Y3","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96.25},{"symbol":"L","mode":"SINGLE","value":3.6},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"enE4cn","props":{"calcType":"PbCloison","upstreamBasin":"Zjczdz","downstreamBasin":"dzMxN2"},"children":[{"uid":"ZHczZ2","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"aXRjZ3","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96.25},{"symbol":"L","mode":"SINGLE","value":5.2},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"NXNoNG","props":{"calcType":"PbCloison","upstreamBasin":"dWJrZX","downstreamBasin":"dzMxN2"},"children":[{"uid":"eXFqeH","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.85},{"symbol":"L","mode":"SINGLE","value":4.38},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"bGhodG","props":{"calcType":"PbCloison","upstreamBasin":"dWJrZX","downstreamBasin":"ZXZua2"},"children":[{"uid":"b3Z3OD","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.85},{"symbol":"L","mode":"SINGLE","value":3},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"MDZ3aH","props":{"calcType":"PbCloison","upstreamBasin":"dWJrZX","downstreamBasin":"YmR5aD"},"children":[{"uid":"NXJ1OW","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.5},{"symbol":"L","mode":"SINGLE","value":1},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"b3pjZX","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.5},{"symbol":"L","mode":"SINGLE","value":1},{"symbol":"CdCunge","mode":"SINGLE","value":0.4}]}],"parameters":[]},{"uid":"emZ2bX","props":{"calcType":"PbCloison","upstreamBasin":"dzMxN2","downstreamBasin":"ZXZua2"},"children":[{"uid":"cGllNj","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.7},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"aWFseW","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.65},{"symbol":"L","mode":"SINGLE","value":5.74},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"bG1ucj","props":{"calcType":"PbCloison","upstreamBasin":"ZXZua2","downstreamBasin":"YmR5aD"},"children":[{"uid":"MDJsaD","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.4},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"ZzY2bT","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.35},{"symbol":"L","mode":"SINGLE","value":6},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"dGNnZz","props":{"calcType":"PbCloison","upstreamBasin":"YmR5aD","downstreamBasin":"bDN2OW"},"children":[{"uid":"dnNqeX","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.25},{"symbol":"L","mode":"SINGLE","value":0.7},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"ODFkZ2","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.05},{"symbol":"L","mode":"SINGLE","value":9.5},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"amprcm","props":{"calcType":"PbCloison","upstreamBasin":"bDN2OW","downstreamBasin":""},"children":[{"uid":"OG02MT","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.1},{"symbol":"L","mode":"SINGLE","value":0.95},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"MHVxZn","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.75},{"symbol":"L","mode":"SINGLE","value":10.2},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":0.844},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":94.45}]}]}
\ No newline at end of file
diff --git a/e2e/session/session-submergence-error-Larinier.json b/e2e/session/session-submergence-error-Larinier.json
new file mode 100644
index 0000000000000000000000000000000000000000..4c61453f20e0c7948e333e3a748f6d44cdbd655f
--- /dev/null
+++ b/e2e/session/session-submergence-error-Larinier.json
@@ -0,0 +1 @@
+{"header":{"source":"jalhyd","format_version":"1.3","created":"2023-05-17T07:40:56.534Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"b2kxNm","props":{"calcType":"PreBarrage"},"meta":{"title":"Prébarrages"},"children":[{"uid":"Zjczdz","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":13.8},{"symbol":"ZF","mode":"SINGLE","value":95}]},{"uid":"dWJrZX","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":15.4},{"symbol":"ZF","mode":"SINGLE","value":94.7}]},{"uid":"dzMxN2","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":16.2},{"symbol":"ZF","mode":"SINGLE","value":94.7}]},{"uid":"ZXZua2","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":17.5},{"symbol":"ZF","mode":"SINGLE","value":94.4}]},{"uid":"YmR5aD","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":32.1},{"symbol":"ZF","mode":"SINGLE","value":94.25}]},{"uid":"bDN2OW","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":35},{"symbol":"ZF","mode":"SINGLE","value":94.1}]},{"uid":"MWxycH","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":"Zjczdz"},"children":[{"uid":"cG80a2","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.3},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"aDVuZj","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96.25},{"symbol":"L","mode":"SINGLE","value":4.4},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"c3Zpb2","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":"dWJrZX"},"children":[{"uid":"ZmFibX","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96},{"symbol":"L","mode":"SINGLE","value":1},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"N24zM2","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96.25},{"symbol":"L","mode":"SINGLE","value":5},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"MG4wNG","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":"YmR5aD"},"children":[{"uid":"azV4dj","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96.25},{"symbol":"L","mode":"SINGLE","value":3.5},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"YjJra2","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":"bDN2OW"},"children":[{"uid":"aDd4Y3","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96.25},{"symbol":"L","mode":"SINGLE","value":3.6},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"enE4cn","props":{"calcType":"PbCloison","upstreamBasin":"Zjczdz","downstreamBasin":"dzMxN2"},"children":[{"uid":"ZHczZ2","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"aXRjZ3","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":96.25},{"symbol":"L","mode":"SINGLE","value":5.2},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"NXNoNG","props":{"calcType":"PbCloison","upstreamBasin":"dWJrZX","downstreamBasin":"dzMxN2"},"children":[{"uid":"eXFqeH","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.85},{"symbol":"L","mode":"SINGLE","value":4.38},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"bGhodG","props":{"calcType":"PbCloison","upstreamBasin":"dWJrZX","downstreamBasin":"ZXZua2"},"children":[{"uid":"b3Z3OD","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.85},{"symbol":"L","mode":"SINGLE","value":3},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"MDZ3aH","props":{"calcType":"PbCloison","upstreamBasin":"dWJrZX","downstreamBasin":"YmR5aD"},"children":[{"uid":"NTBzZm","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.5},{"symbol":"L","mode":"SINGLE","value":1},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"b3pjZX","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.75},{"symbol":"L","mode":"SINGLE","value":3},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"emZ2bX","props":{"calcType":"PbCloison","upstreamBasin":"dzMxN2","downstreamBasin":"ZXZua2"},"children":[{"uid":"cGllNj","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.7},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"aWFseW","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.65},{"symbol":"L","mode":"SINGLE","value":5.74},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"bG1ucj","props":{"calcType":"PbCloison","upstreamBasin":"ZXZua2","downstreamBasin":"YmR5aD"},"children":[{"uid":"MDJsaD","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.4},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"ZzY2bT","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.35},{"symbol":"L","mode":"SINGLE","value":6},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"dGNnZz","props":{"calcType":"PbCloison","upstreamBasin":"YmR5aD","downstreamBasin":"bDN2OW"},"children":[{"uid":"dnNqeX","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.25},{"symbol":"L","mode":"SINGLE","value":0.7},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"ODFkZ2","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":95.05},{"symbol":"L","mode":"SINGLE","value":9.5},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]},{"uid":"amprcm","props":{"calcType":"PbCloison","upstreamBasin":"bDN2OW","downstreamBasin":""},"children":[{"uid":"OG02MT","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.1},{"symbol":"L","mode":"SINGLE","value":0.95},{"symbol":"CdCunge","mode":"SINGLE","value":1}]},{"uid":"MHVxZn","props":{"calcType":"Structure","loiDebit":"WeirCunge80","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":94.75},{"symbol":"L","mode":"SINGLE","value":10.2},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":0.844},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":94.45}]}]}
\ No newline at end of file
diff --git a/e2e/util.po.ts b/e2e/util.po.ts
index c6cd6471e9815ede92cd6f774a44838232c03ab9..ec4a1c033b66cb66ab8daf209b96b23c1c6db958 100644
--- a/e2e/util.po.ts
+++ b/e2e/util.po.ts
@@ -2,13 +2,13 @@ import { browser, $, $$, expect } from '@wdio/globals'
 import { Navbar } from './navbar.po';
 import { SideNav } from './sidenav.po';
 import { ListPage } from './list.po';
-
+import { AppPage } from './app.po';
 /**
  * scroll page to make element visible
  */
 export async function scrollToElement(elem) {
     await browser.execute(e => { e.scrollIntoView({ block: 'center' }) }, elem);
-    await browser.pause(100);
+    await browser.pause(200);
 }
 
 /**
@@ -31,6 +31,19 @@ export function expectNumber(msg: string, val: number, expected: number) {
     expect(val).toEqual(expected);
 }
 
+/**
+ * execute expect() on a boolean and displays a failure message
+ * @param msg message in caase of failure
+ * @param val value to check
+ * @param expected expected value
+ */
+export function expectBoolean(msg: string, val: boolean, expected: boolean) {
+    if (val !== expected) {
+        console.log(msg, "got", val, "expected", expected);
+    }
+    expect(val).toEqual(expected);
+}
+
 export async function changeSelectValue(elt, index: number) {
     await scrollToElement(elt);
     await browser.pause(100);
@@ -58,18 +71,29 @@ export async function newSession(navBar: Navbar, sideNav: SideNav) {
     }
 }
 
+/**
+ * open application if necessary (ie. if no URL has been open)
+ */
+export async function openApplication(startPage: AppPage) {
+    const url = await browser.getUrl();
+    if (url.indexOf("localhost") === -1) {
+        await startPage.navigateTo();
+        await browser.pause(500);
+    }
+}
+
 export async function openCalculator(id: number, navBar: Navbar, listPage: ListPage) {
     const ncButton = await navBar.getNewCalculatorButton();
     if (await ncButton.isExisting()) {
         await scrollToElement(ncButton);
         if (await ncButton.isDisplayed()) {
             await ncButton.click()
-            await browser.pause(200);
+            await browser.pause(300);
         }
     }
 
     await listPage.clickMenuEntryForCalcType(id);
-    await browser.pause(200);
+    await browser.pause(500);
 }
 
 /**
diff --git a/jalhyd_branch b/jalhyd_branch
index c8375d882015b74a13a4efd4a1693afde5aad1c3..9426cd15474d33fe7b65ba1e719ff221566e36dc 100644
--- a/jalhyd_branch
+++ b/jalhyd_branch
@@ -1 +1 @@
-343-courbe-de-remous-rendre-facultatif-l-une-des-deux-conditions-limites-en-cote
+302-structure-ajouter-une-erreur-sur-l-ennoiement
diff --git a/src/app/results/prebarrage-results.ts b/src/app/results/prebarrage-results.ts
index 411c4edd7354211f1dc1bea5f54c180ae3590da9..b5f894b705e63b1b1ef8b388e7efee37d7db9b0a 100644
--- a/src/app/results/prebarrage-results.ts
+++ b/src/app/results/prebarrage-results.ts
@@ -127,7 +127,7 @@ export class PrebarrageResults extends MultiDimensionResults implements IObserva
     }
 
     public get hasWallResults(): boolean {
-        return this.cloisonResults  && this.cloisonResults.result && ! this.cloisonResults.result.hasOnlyErrors;
+        return this.cloisonResults?.result?.ok;
     }
 
     /** retourne true si au moins un calcul a échoué (le log a un code négatif) */
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index b31fc6330b5b2de4bd86edeefe7fcff5786c7fa5..de71e8bbbce84461d413a6540659e57d45673ed2 100755
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -6,6 +6,7 @@
     "WARNING_ORIFICE_FREE_DOWNSTREAM_ELEVATION_POSSIBLE_SUBMERSION": "Downstream elevation is higher than orifice center elevation (%submergencePerc%% submergence)",
     "WARNING_NOTCH_SUBMERGENCE_GREATER_THAN_07": "Notch submergence (%submergencePerc%%) is higher than recommended boundary (70%)",
     "WARNING_SLOT_SUBMERGENCE_NOT_BETWEEN_07_AND_09": "Slot submergence (%submergencePerc%%) is not in the recommended boundaries (70 to 90%)",
+    "ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN": "Slot submergence (%submergencePerc%%) is lower than %min%%",
     "WARNING_WEIR_SUBMERGENCE_LOWER_THAN_08": "Weir submergence factor (%submergencePerc%%) is lower than the recommended boundary (80%)",
     "WARNING_INFO_COUNT_SHORT": "%d info(s)",
     "WARNING_WARNING_COUNT_SHORT": "%d warning(s)",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index 21aca059bcbca69d01786097c849cecafa1e842d..fa314521578af872f57c717ca91fafdc2379e03f 100755
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -6,6 +6,7 @@
     "WARNING_ORIFICE_FREE_DOWNSTREAM_ELEVATION_POSSIBLE_SUBMERSION": "La cote de l'eau aval est plus élevée que la cote du centre de l'orifice (ennoiement %submergencePerc% %)",
     "WARNING_NOTCH_SUBMERGENCE_GREATER_THAN_07": "L'ennoiement de l'échancrure (%submergencePerc% %) est supérieur à la limite conseillée de 70 %",
     "WARNING_SLOT_SUBMERGENCE_NOT_BETWEEN_07_AND_09": "L'ennoiement de la fente (%submergencePerc% %) ne se situe pas entre les valeurs limites conseillées de 70 à 90 %",
+    "ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN": "L'ennoiement de la fente (%submergencePerc% %) est inférieur à %min% %",
     "WARNING_WEIR_SUBMERGENCE_LOWER_THAN_08": "L'ennoiement du seuil noyé (%submergencePerc% %) est inférieur à la limite conseillée de 80% ",
     "WARNING_INFO_COUNT_SHORT": "%d info(s)",
     "WARNING_WARNING_COUNT_SHORT": "%d avertissement(s)",