From a993808e98cf38ea5921646dbca2e2d6d9a0af51 Mon Sep 17 00:00:00 2001
From: "francois.grand" <francois.grand@irstea.fr>
Date: Mon, 20 Nov 2017 15:01:54 +0100
Subject: [PATCH] =?UTF-8?q?remous=20:=20correction=20d'un=20bug=20de=20cal?=
 =?UTF-8?q?cul=20du=20param=C3=A8tre=20suppl=C3=A9mentaire=20lorsqu'un=20l?=
 =?UTF-8?q?a=20ligne=20fluviale=20ou=20torrentiel=20=C3=A9tait=20vide?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 spec/remous_rect_trapezes_pentefaible.spec.ts | 60 +++++++++++++++++++
 src/remous.ts                                 |  2 +-
 2 files changed, 61 insertions(+), 1 deletion(-)

diff --git a/spec/remous_rect_trapezes_pentefaible.spec.ts b/spec/remous_rect_trapezes_pentefaible.spec.ts
index 10c56dbe..a8c9c1fd 100644
--- a/spec/remous_rect_trapezes_pentefaible.spec.ts
+++ b/spec/remous_rect_trapezes_pentefaible.spec.ts
@@ -378,4 +378,64 @@ describe('Class Remous / section rectangulaire :', () => {
 
         compareLog(rem.log, expLog);
     });
+
+    it("faible pente, pas de fluvial, torrentiel tronqué, calcul Hs", () => {
+        let prms = new ParamsSectionRectang(undefined, // tirant d'eau
+            2.5, // largeur de fond
+            40, //  Ks=Strickler
+            2, // Q=Débit
+            0.001, // If=pente du fond
+            precDist, // précision
+            1 // YB=hauteur de berge
+        );
+
+        let sect = new cSnRectang(prms);
+
+        let prem = new CourbeRemousParams(sect, 0.15, // Yamont = tirant amont
+            0.4, // Yaval = tirant aval
+            100,  // Long= Longueur du bief
+            5,  // Dx=Pas d'espace
+            MethodeResolution.Trapezes
+        );
+
+        let rem = new CourbeRemous(prem);
+
+        let res = rem.calculRemous("Hs");
+
+        // données de validation : version PHP (Oct 2017) méthode trapèzes
+
+        expect(Object.keys(res["flu"]).length == 0).toBeTruthy("la ligne d'eau fluviale ne devrait comporter aucune valeur");
+
+        let t = { 0.000: 0.15, 5.000: 0.239, 10.000: 0.34 };
+        compareObject("Ytorrentiel", res["tor"], t, 0.008);
+
+        let x = [0.000, 5.000, 10.000];
+        compareArray("abscisses", res["trX"], x);
+
+        let extraHS = { 0.000: 1.6, 5.000: 0.808, 10.000: 0.618 };
+        compareObject("extra (Hs)", res["tRes"], extraHS, 0.001);
+
+        let expLog = new cLog();
+        let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
+        m.extraVar["B"] = 2.5;
+        expLog.add(m);
+
+        m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
+        m.extraVar["Yc"] = 0.403;
+        expLog.add(m);
+
+        m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
+        m.extraVar["Yn"] = 0.953;
+        expLog.add(m);
+
+        expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
+
+        expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+
+        m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE);
+        m.extraVar["x"] = 15;
+        expLog.add(m);
+
+        compareLog(rem.log, expLog);
+    });
 });
diff --git a/src/remous.ts b/src/remous.ts
index 3df80f27..de53b50c 100644
--- a/src/remous.ts
+++ b/src/remous.ts
@@ -664,7 +664,7 @@ export class CourbeRemous extends Nub {
 		// Calcul de la variable à calculer
 
 		let tRes: { [key: number]: number } = {};
-		if (val_a_cal != undefined && nFlu != 0 && nTor != 0) {
+		if (val_a_cal != undefined && (nFlu != 0 || nTor != 0)) {
 			for (let rX of trX) {
 				let rY = undefined;
 				let hasFlu: boolean = crbFlu[+rX] != undefined;
-- 
GitLab