From d89bc96394551d92f68106c66ef2dd4d0e809e9e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Thu, 23 Mar 2023 08:56:08 +0100
Subject: [PATCH] refactor: check submergence percentage in structure derived
 classes

refs #302
---
 src/structure/structure.ts                    | 31 ++++++++++---------
 src/structure/structure_weir_submerged.ts     |  7 +++++
 .../structure_weir_submerged_larinier.ts      |  7 +++++
 3 files changed, 31 insertions(+), 14 deletions(-)

diff --git a/src/structure/structure.ts b/src/structure/structure.ts
index 3f5b891a..951c1e25 100644
--- a/src/structure/structure.ts
+++ b/src/structure/structure.ts
@@ -77,24 +77,27 @@ export abstract class Structure extends ChildNub {
         return 100;
     }
 
-    private checkSubmergenceMin(loi: LoiDebit, min: number) {
-        if (this.loiDebit === loi) {
-            const h2h1ratio = this.prms.h2.v / this.prms.h1.v;
-            if (h2h1ratio < min) {
-                this._result.resultElement.addMessage(new Message(
-                    MessageCode.ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN,
-                    {
-                        submergencePerc: this.computeSubmergencePercentage().toString(),
-                        min: min
-                    }
-                ));
-            }
+    /**
+     * mÊthode gÊnÊrique de vÊrification que l'ennoiemment est supÊrieur à une valeur donnÊe
+     * @param min valeur minimum de l'ennoiemment
+     */
+    protected checkSubmergenceMin(min: number) {
+        const h2h1ratio = this.prms.h2.V / this.prms.h1.V;
+        if (h2h1ratio < min) {
+            this._result.resultElement.addMessage(new Message(
+                MessageCode.ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN,
+                {
+                    submergencePerc: this.computeSubmergencePercentage().toString(),
+                    min: min
+                }
+            ));
         }
     }
 
+    /**
+     * fonction appelÊe dans Calc() pour vÊrifier l'ennoiemment (cf. classes dÊrivÊes)
+     */
     public checkSubmergence() {
-        this.checkSubmergenceMin(LoiDebit.WeirSubmergedLarinier, 0.5);
-        this.checkSubmergenceMin(LoiDebit.WeirSubmerged, 0.6);
     }
 
     /** Constante utile : Racine de 2g */
diff --git a/src/structure/structure_weir_submerged.ts b/src/structure/structure_weir_submerged.ts
index 727c1ab3..f64e39ca 100644
--- a/src/structure/structure_weir_submerged.ts
+++ b/src/structure/structure_weir_submerged.ts
@@ -19,6 +19,13 @@ export class StructureWeirSubmerged extends RectangularStructure {
         this.prms.CdWS.visible = true;
     }
 
+    /**
+     * vÊrification que l'ennoiemment est supÊrieur à une valeur donnÊe
+     */
+    public checkSubmergence() {
+        this.checkSubmergenceMin(0.6);
+    }
+
     public Calc(sVarCalc: string, rInit?: number): Result {
         this.currentResultElement = super.Calc(sVarCalc, rInit);
         const h2h1ratio = this.prms.h2.v / this.prms.h1.v;
diff --git a/src/structure/structure_weir_submerged_larinier.ts b/src/structure/structure_weir_submerged_larinier.ts
index 22db3d6e..a2e21b1c 100644
--- a/src/structure/structure_weir_submerged_larinier.ts
+++ b/src/structure/structure_weir_submerged_larinier.ts
@@ -25,6 +25,13 @@ export class StructureWeirSubmergedLarinier extends RectangularStructure {
         return this._prms as RectangularStructureParams;
     }
 
+    /**
+     * vÊrification que l'ennoiemment est supÊrieur à une valeur donnÊe
+     */
+    public checkSubmergence() {
+        this.checkSubmergenceMin(0.5);
+    }
+
     public Calc(sVarCalc: string, rInit?: number): Result {
         this.currentResultElement = super.Calc(sVarCalc, rInit);
         const h2h1ratio = this.prms.h2.v / this.prms.h1.v;
-- 
GitLab