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