diff --git a/spec/pab/cloisons.spec.ts b/spec/pab/cloisons.spec.ts index 549b1d0a58630595536e1a6b8e110c79dfc56927..2ac797734329621b501beca26c333fb40f91b766 100755 --- a/spec/pab/cloisons.spec.ts +++ b/spec/pab/cloisons.spec.ts @@ -27,7 +27,7 @@ function getCloisonsTest(): Cloisons { const cloisons: Cloisons = getEmptyCloisonsTest(); cloisons.addChild(CreateStructure(LoiDebit.WeirSubmergedLarinier)); cloisons.calculatedParam = cloisons.prms.Q; - cloisons.structures[0].prms.h1.singleValue = 1; + cloisons.structures[0].prms.h1.singleValue = 2; return cloisons; } @@ -37,11 +37,11 @@ describe("Class Cloisons: ", () => { beforeEach(() => { c = getCloisonsTest(); }); - it("vCalc should return 0.47", () => { - expect(c.CalcSerie().vCalc).toBeCloseTo(0.47, 3); + it("vCalc should return 0.94", () => { + expect(c.CalcSerie().vCalc).toBeCloseTo(0.94, 3); }); - it("extraResults.PV should return 230.444", () => { - expect(c.CalcSerie().values.PV).toBeCloseTo(230.444, 1); + it("extraResults.PV should return 460.887", () => { + expect(c.CalcSerie().values.PV).toBeCloseTo(460.887, 1); }); it("ZRMB should be 100.5", () => { c.CalcSerie(); diff --git a/spec/pab/pab.spec.ts b/spec/pab/pab.spec.ts index e91dd0365d0e807cfc7e640015e493d54be3d406..70167e7b276f44a24f62b5e4713ce255e2943a32 100644 --- a/spec/pab/pab.spec.ts +++ b/spec/pab/pab.spec.ts @@ -272,7 +272,7 @@ describe("Class Pab: ", () => { describe("errors inherited from Cloisons −", () => { it("negative sill warning should be present", () => { - const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-05-06T14:44:44.505Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"M29hc3","props":{"calcType":"Pab"},"meta":{"title":"PAB 1"},"children":[{"uid":"eDllOD","props":{"calcType":"Cloisons"},"children":[{"uid":"ZGMwc3","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":98},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"cGs5OX","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":2.349},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101}],"downWall":{"uid":"NzBlcD","props":{"calcType":"CloisonAval"},"children":[{"uid":"cG5xdX","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":97.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"aGM1ZG","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.25}]}}]}`; + const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-05-06T14:44:44.505Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"M29hc3","props":{"calcType":"Pab"},"meta":{"title":"PAB 1"},"children":[{"uid":"eDllOD","props":{"calcType":"Cloisons"},"children":[{"uid":"ZGMwc3","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":98},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"cGs5OX","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":2.349},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101.1}],"downWall":{"uid":"NzBlcD","props":{"calcType":"CloisonAval"},"children":[{"uid":"cG5xdX","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":97.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"aGM1ZG","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.25}]}}]}`; Session.getInstance().clear(); Session.getInstance().unserialise(sess); const pab2 = Session.getInstance().findNubByUid("M29hc3") as Pab; diff --git a/spec/structure/structure_weir_submerged.spec.ts b/spec/structure/structure_weir_submerged.spec.ts index e86a30e73d2a23d25783c790c4191fb3428713b2..e73952c4d509d734af11a02c316ec254fa8d82d2 100644 --- a/spec/structure/structure_weir_submerged.spec.ts +++ b/spec/structure/structure_weir_submerged.spec.ts @@ -6,13 +6,13 @@ import { itCalcQ } from "../structure/functions"; import { precDigits } from "../test_config"; function getStructTest(): StructureWeirSubmerged { - return new StructureWeirSubmerged(new RectangularStructureParams(0, 101, 102, 101.5, 0.2, 0.9), false); + return new StructureWeirSubmerged(new RectangularStructureParams(0, 101, 102, 101.9, 0.2, 0.9), false); } describe("Class StructureWeirSubmerged: ", () => { describe("Calc(Q): ", () => { const Z1: number[] = [102]; - const Q: number[] = [0.282]; + const Q: number[] = [0.227]; const mode: StructureFlowMode = StructureFlowMode.WEIR; const regime: StructureFlowRegime = StructureFlowRegime.SUBMERGED; for (let i = 0; i < Q.length; i++) { @@ -35,10 +35,9 @@ describe("Class StructureWeirSubmerged: ", () => { structTest.prms.Z2.singleValue = 105; structTest.prms.ZDV.singleValue = 100; const res = structTest.CalcSerie().resultElement; - expect(res.log.messages.length).toBe(1); - expect( - res.log.messages[0].code - ).toBe(MessageCode.WARNING_WEIR_SUBMERGENCE_LOWER_THAN_08); + expect(res.log.messages.length).toBe(2); + const ok = res.log.messages[0].code === MessageCode.WARNING_WEIR_SUBMERGENCE_LOWER_THAN_08 || res.log.messages[1].code === MessageCode.WARNING_WEIR_SUBMERGENCE_LOWER_THAN_08; + expect(ok).toBe(true); }); }); }); diff --git a/spec/structure/structure_weir_submerged_larinier.spec.ts b/spec/structure/structure_weir_submerged_larinier.spec.ts index 40c0e16849c710c377d8362211f64e421694fe13..ba486d4c254e5b02cf1f8fc3223866fe413f6889 100644 --- a/spec/structure/structure_weir_submerged_larinier.spec.ts +++ b/spec/structure/structure_weir_submerged_larinier.spec.ts @@ -54,4 +54,16 @@ describe("Class StructureWeirSubmergedLarinier: ", () => { ).toBe(MessageCode.WARNING_SLOT_SUBMERGENCE_NOT_BETWEEN_07_AND_09); }); }); + describe("Calcul avec h2/h1 < 0.5 (=0.4) : ", () => { + it("le log devrait contenir au moins un message d'erreur", () => { + const structTest = getStructTest(); + structTest.prms.Z1.singleValue = 110; + structTest.prms.Z2.singleValue = 104; + structTest.prms.ZDV.singleValue = 100; + const res = structTest.CalcSerie().resultElement; + expect(res.log.messages.length).toBe(2); + const ok = res.log.messages[0].code === MessageCode.ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN || res.log.messages[1].code === MessageCode.ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN; + expect(ok).toBe(true); + }); + }); }); diff --git a/spec/verificateur/verificateur.spec.ts b/spec/verificateur/verificateur.spec.ts index bc4d21b435187fc2da52d6760dc05625ad414cff..78ed594de7aee2fc04cb712d09f9e66b6420eb58 100644 --- a/spec/verificateur/verificateur.spec.ts +++ b/spec/verificateur/verificateur.spec.ts @@ -118,7 +118,7 @@ describe("vérificateur de franchissement −", () => { // contexte Session.getInstance().clear(); // jets plongeants seulement - Session.getInstance().unserialise(`{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-04-23T08:02:44.556Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"eGx2aG","props":{"calcType":"Pab"},"meta":{"title":"PAB 1"},"children":[{"uid":"OGxiN3","props":{"calcType":"Cloisons"},"children":[{"uid":"cnU5bj","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.1},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":0.423},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101}],"downWall":{"uid":"OXdpbm","props":{"calcType":"CloisonAval"},"children":[{"uid":"dmc0Nj","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.6},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.25}]}}]}`); + Session.getInstance().unserialise(`{"header":{"source":"jalhyd","format_version":"1.3","created":"2023-04-17T10:44:42.561Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"eGx2aG","props":{"calcType":"Pab"},"meta":{"title":"PAB 1"},"children":[{"uid":"OGxiN3","props":{"calcType":"Cloisons"},"children":[{"uid":"YXd1ZD","props":{"calcType":"Structure","loiDebit":"WeirVillemonte","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.1},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWR","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":0.5},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101}],"downWall":{"uid":"OXdpbm","props":{"calcType":"CloisonAval"},"children":[{"uid":"OW04cn","props":{"calcType":"Structure","loiDebit":"WeirVillemonte","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.6},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWR","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.25}]}}]}`); const pab = Session.getInstance().findNubByUid("eGx2aG") as Pab; // vérificateur const v = new Verificateur(); @@ -260,7 +260,7 @@ describe("vérificateur de franchissement −", () => { it("Profondeur des bassins insuffisante", () => { // contexte Session.getInstance().clear(); - const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-04-23T12:33:41.272Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"enZvdm","props":{"calcType":"Pab"},"meta":{"title":"PAB"},"children":[{"uid":"d2llZG","props":{"calcType":"Cloisons"},"children":[{"uid":"ZDFven","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":101},{"symbol":"ZRAM","mode":"SINGLE","value":101.25},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":0.47},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":100.7}],"downWall":{"uid":"NzYwbG","props":{"calcType":"CloisonAval"},"children":[{"uid":"cmdzN2","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.75}]}}]}`; + const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2023-04-17T10:51:31.030Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"enZvdm","props":{"calcType":"Pab"},"meta":{"title":"PAB"},"children":[{"uid":"d2llZG","props":{"calcType":"Cloisons"},"children":[{"uid":"cGdmNn","props":{"calcType":"Structure","loiDebit":"WeirVillemonte","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.4},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWR","mode":"SINGLE","value":0.7}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":101},{"symbol":"ZRAM","mode":"SINGLE","value":101.25},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":0.4},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101}],"downWall":{"uid":"NzYwbG","props":{"calcType":"CloisonAval"},"children":[{"uid":"dW9pbD","props":{"calcType":"Structure","loiDebit":"WeirVillemonte","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWR","mode":"SINGLE","value":0.7}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.75}]}}]}`; Session.getInstance().unserialise(sess); const pab = Session.getInstance().findNubByUid("enZvdm") as Pab; // vérificateur @@ -312,7 +312,7 @@ describe("vérificateur de franchissement −", () => { it("Charge trop faible sur échancrures (surface)", () => { // contexte // jets de SURFACE seulement - const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-08-11T13:16:17.677Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"Z2ZpYm","props":{"calcType":"Pab"},"meta":{"title":"PAB"},"children":[{"uid":"a2doNj","props":{"calcType":"Cloisons"},"children":[{"uid":"cTZjbD","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.8},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]},{"uid":"eHZzc2","props":{"calcType":"Cloisons"},"children":[{"uid":"N2J4Z2","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.3},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100},{"symbol":"ZRAM","mode":"SINGLE","value":100.25},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"CALCUL","value":0.059},{"symbol":"Z1","mode":"SINGLE","value":102},{"symbol":"Z2","mode":"SINGLE","value":101.5}],"downWall":{"uid":"b2JobG","props":{"calcType":"CloisonAval"},"children":[{"uid":"ZnlodG","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.8},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":99.75}]}}]}`; + const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-08-11T13:16:17.677Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"Z2ZpYm","props":{"calcType":"Pab"},"meta":{"title":"PAB"},"children":[{"uid":"a2doNj","props":{"calcType":"Cloisons"},"children":[{"uid":"cTZjbD","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirVillemonte"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.8},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]},{"uid":"eHZzc2","props":{"calcType":"Cloisons"},"children":[{"uid":"N2J4Z2","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirVillemonte"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.3},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100},{"symbol":"ZRAM","mode":"SINGLE","value":100.25},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"CALCUL","value":0.059},{"symbol":"Z1","mode":"SINGLE","value":102},{"symbol":"Z2","mode":"SINGLE","value":101.5}],"downWall":{"uid":"b2JobG","props":{"calcType":"CloisonAval"},"children":[{"uid":"ZnlodG","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirVillemonte"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.8},{"symbol":"L","mode":"SINGLE","value":0.4},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":99.75}]}}]}`; Session.getInstance().clear(); Session.getInstance().unserialise(sess); const pab = Session.getInstance().findNubByUid("Z2ZpYm") as Pab; @@ -357,7 +357,7 @@ describe("vérificateur de franchissement −", () => { it("Plusieurs warnings entraînent la non-franchissabilité d'une cloison", () => { // contexte Session.getInstance().clear(); - const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-04-29T10:00:03.138Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"bjlnc2","props":{"calcType":"Espece","species":"SPECIES_CUSTOM"},"meta":{"title":"Croustibat®"},"children":[],"parameters":[{"symbol":"OK","mode":"CALCUL"},{"symbol":"DHMaxS","mode":"SINGLE","value":0.35},{"symbol":"DHMaxP","mode":"SINGLE","value":0.6},{"symbol":"BMin","mode":"SINGLE","value":0.18},{"symbol":"PMinS","mode":"SINGLE","value":0.9},{"symbol":"PMinP","mode":"SINGLE","value":0.9},{"symbol":"LMinS","mode":"SINGLE","value":2.5},{"symbol":"LMinP","mode":"SINGLE","value":25},{"symbol":"HMin","mode":"SINGLE","value":0.3},{"symbol":"YMin","mode":"SINGLE","value":0.4},{"symbol":"VeMax","mode":"SINGLE","value":2.5},{"symbol":"YMinSB","mode":"SINGLE","value":0.2},{"symbol":"YMinPB","mode":"SINGLE","value":0.3},{"symbol":"PVMaxPrec","mode":"SINGLE","value":30000},{"symbol":"PVMaxLim","mode":"SINGLE","value":50000}]},{"uid":"M29hc3","props":{"calcType":"Pab"},"meta":{"title":"PAB 1"},"children":[{"uid":"eDllOD","props":{"calcType":"Cloisons"},"children":[{"uid":"ZGMwc3","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":98},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"cGs5OX","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":2.349},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101}],"downWall":{"uid":"NzBlcD","props":{"calcType":"CloisonAval"},"children":[{"uid":"cG5xdX","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":97.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"aGM1ZG","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.25}]}}]}`; + const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2023-04-17T12:02:45.180Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"bjlnc2","props":{"calcType":"Espece","divingJetSupported":"NOT_SUPPORTED","species":"SPECIES_CUSTOM"},"meta":{"title":"Croustibat®"},"children":[],"parameters":[{"symbol":"OK","mode":"CALCUL"},{"symbol":"DHMaxS","mode":"SINGLE","value":0.35},{"symbol":"DHMaxP","mode":"SINGLE","value":0.6},{"symbol":"BMin","mode":"SINGLE","value":0.18},{"symbol":"PMinS","mode":"SINGLE","value":0.9},{"symbol":"PMinP","mode":"SINGLE","value":0.9},{"symbol":"LMinS","mode":"SINGLE","value":2.5},{"symbol":"LMinP","mode":"SINGLE","value":25},{"symbol":"HMin","mode":"SINGLE","value":0.3},{"symbol":"YMin","mode":"SINGLE","value":0.4},{"symbol":"VeMax","mode":"SINGLE","value":2.5},{"symbol":"YMinSB","mode":"SINGLE","value":0.2},{"symbol":"YMinPB","mode":"SINGLE","value":0.3}]},{"uid":"M29hc3","props":{"calcType":"Pab"},"meta":{"title":"PAB 1"},"children":[{"uid":"eDllOD","props":{"calcType":"Cloisons"},"children":[{"uid":"ZGMwc3","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":98},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"bzM2ZG","props":{"calcType":"Structure","loiDebit":"WeirVillemonte","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.1},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWR","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":2.349},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101}],"downWall":{"uid":"NzBlcD","props":{"calcType":"CloisonAval"},"children":[{"uid":"cG5xdX","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":97.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"aGM1ZG","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.49},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.25}]}}]}`; Session.getInstance().unserialise(sess); const pab = Session.getInstance().findNubByUid("M29hc3") as Pab; const espece = Session.getInstance().findNubByUid("bjlnc2") as Espece; @@ -388,7 +388,7 @@ describe("vérificateur de franchissement −", () => { it("Plusieurs warnings entraînent la non-franchissabilité d'une cloison (2)", () => { // contexte Session.getInstance().clear(); - const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-04-29T10:00:03.138Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"bjlnc2","props":{"calcType":"Espece","species":"SPECIES_CUSTOM"},"meta":{"title":"Croustibat®"},"children":[],"parameters":[{"symbol":"OK","mode":"CALCUL"},{"symbol":"DHMaxS","mode":"SINGLE","value":0.35},{"symbol":"DHMaxP","mode":"SINGLE","value":0.35},{"symbol":"BMin","mode":"SINGLE","value":0.3},{"symbol":"PMinS","mode":"SINGLE","value":1},{"symbol":"PMinP","mode":"SINGLE","value":1},{"symbol":"LMinS","mode":"SINGLE","value":2.5},{"symbol":"LMinP","mode":"SINGLE","value":2.5},{"symbol":"HMin","mode":"SINGLE","value":0.3},{"symbol":"YMin","mode":"SINGLE","value":0.4},{"symbol":"VeMax","mode":"SINGLE","value":2.5},{"symbol":"YMinSB","mode":"SINGLE","value":0.2},{"symbol":"YMinPB","mode":"SINGLE","value":0.3},{"symbol":"PVMaxPrec","mode":"SINGLE","value":30000},{"symbol":"PVMaxLim","mode":"SINGLE","value":50000}]},{"uid":"M29hc3","props":{"calcType":"Pab"},"meta":{"title":"PAB 1"},"children":[{"uid":"eDllOD","props":{"calcType":"Cloisons"},"children":[{"uid":"ZGMwc3","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":98},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"cGs5OX","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":2.349},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101}],"downWall":{"uid":"NzBlcD","props":{"calcType":"CloisonAval"},"children":[{"uid":"cG5xdX","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":97.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"aGM1ZG","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.5},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.25}]}}]}`; + const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2023-04-17T11:40:14.310Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"bjlnc2","props":{"calcType":"Espece","divingJetSupported":"NOT_SUPPORTED","species":"SPECIES_CUSTOM"},"meta":{"title":"Croustibat®"},"children":[],"parameters":[{"symbol":"OK","mode":"CALCUL"},{"symbol":"DHMaxS","mode":"SINGLE","value":0.35},{"symbol":"DHMaxP","mode":"SINGLE","value":0.35},{"symbol":"BMin","mode":"SINGLE","value":0.3},{"symbol":"PMinS","mode":"SINGLE","value":1},{"symbol":"PMinP","mode":"SINGLE","value":1},{"symbol":"LMinS","mode":"SINGLE","value":2.5},{"symbol":"LMinP","mode":"SINGLE","value":2.5},{"symbol":"HMin","mode":"SINGLE","value":0.3},{"symbol":"YMin","mode":"SINGLE","value":0.4},{"symbol":"VeMax","mode":"SINGLE","value":2.5},{"symbol":"YMinSB","mode":"SINGLE","value":0.2},{"symbol":"YMinPB","mode":"SINGLE","value":0.3}]},{"uid":"M29hc3","props":{"calcType":"Pab"},"meta":{"title":"PAB 1"},"children":[{"uid":"eDllOD","props":{"calcType":"Cloisons"},"children":[{"uid":"ZGMwc3","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100.75},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"NWRpcG","props":{"calcType":"Structure","loiDebit":"WeirVillemonte","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.8},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWR","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.5},{"symbol":"ZRAM","mode":"SINGLE","value":100.75},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":2},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101.2}],"downWall":{"uid":"NzBlcD","props":{"calcType":"CloisonAval"},"children":[{"uid":"cG5xdX","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"dWRhdD","props":{"calcType":"Structure","loiDebit":"WeirVillemonte","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWR","mode":"SINGLE","value":0.2}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100}]}}]}`; Session.getInstance().unserialise(sess); const pab = Session.getInstance().findNubByUid("M29hc3") as Pab; const espece = Session.getInstance().findNubByUid("bjlnc2") as Espece; @@ -455,7 +455,7 @@ describe("vérificateur de franchissement −", () => { it("Orifices (structures dont le mode d'écoulement est en charge) non franchissables", () => { // contexte Session.getInstance().clear(); - const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-07-31T09:17:46.283Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"bzRjY3","props":{"calcType":"Pab"},"meta":{"title":"PAB"},"children":[{"uid":"c25hMW","props":{"calcType":"Cloisons"},"children":[{"uid":"MWN2aH","props":{"calcType":"Structure","loiDebit":"OrificeSubmerged"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":0.1},{"symbol":"CdO","mode":"SINGLE","value":0.7}]},{"uid":"bm10ZG","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":0},{"symbol":"ZRAM","mode":"SINGLE","value":0},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":1.5},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":99}],"downWall":{"uid":"cm54MW","props":{"calcType":"CloisonAval"},"children":[{"uid":"dGhleD","props":{"calcType":"Structure","loiDebit":"GateCunge80"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100},{"symbol":"W","mode":"SINGLE","value":0.5},{"symbol":"L","mode":"SINGLE","value":2},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":0}]}},{"uid":"NnB5b2","props":{"calcType":"Espece","divingJetSupported":"SUPPORTED","species":"SPECIES_CUSTOM"},"meta":{"title":"Espèce"},"children":[],"parameters":[{"symbol":"OK","mode":"CALCUL"},{"symbol":"DHMaxS","mode":"SINGLE","value":50},{"symbol":"DHMaxP","mode":"SINGLE","value":2},{"symbol":"BMin","mode":"SINGLE","value":0.1},{"symbol":"PMinS","mode":"SINGLE","value":1},{"symbol":"PMinP","mode":"SINGLE","value":1},{"symbol":"LMinS","mode":"SINGLE","value":2.5},{"symbol":"LMinP","mode":"SINGLE","value":2.5},{"symbol":"HMin","mode":"SINGLE","value":0.3},{"symbol":"YMin","mode":"SINGLE","value":0.4},{"symbol":"VeMax","mode":"SINGLE","value":2.5},{"symbol":"YMinSB","mode":"SINGLE","value":0.2},{"symbol":"YMinPB","mode":"SINGLE","value":0.3},{"symbol":"PVMaxPrec","mode":"SINGLE","value":150},{"symbol":"PVMaxLim","mode":"SINGLE","value":200}]}]}`; + const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2023-04-17T11:54:53.352Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"bzRjY3","props":{"calcType":"Pab"},"meta":{"title":"PAB"},"children":[{"uid":"c25hMW","props":{"calcType":"Cloisons"},"children":[{"uid":"MWN2aH","props":{"calcType":"Structure","loiDebit":"OrificeSubmerged","structureType":"Orifice"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":0.1},{"symbol":"CdO","mode":"SINGLE","value":0.7}]},{"uid":"bm10ZG","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":99},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":0},{"symbol":"ZRAM","mode":"SINGLE","value":0},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":1.5},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":99}],"downWall":{"uid":"cm54MW","props":{"calcType":"CloisonAval"},"children":[{"uid":"dGhleD","props":{"calcType":"Structure","loiDebit":"GateCunge80"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100},{"symbol":"W","mode":"SINGLE","value":0.5},{"symbol":"L","mode":"SINGLE","value":2},{"symbol":"CdCunge","mode":"SINGLE","value":1}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":0}]}},{"uid":"NnB5b2","props":{"calcType":"Espece","divingJetSupported":"SUPPORTED","species":"SPECIES_CUSTOM"},"meta":{"title":"Espèce"},"children":[],"parameters":[{"symbol":"OK","mode":"CALCUL"},{"symbol":"DHMaxS","mode":"SINGLE","value":50},{"symbol":"DHMaxP","mode":"SINGLE","value":2},{"symbol":"BMin","mode":"SINGLE","value":0.1},{"symbol":"PMinS","mode":"SINGLE","value":1},{"symbol":"PMinP","mode":"SINGLE","value":1},{"symbol":"LMinS","mode":"SINGLE","value":2.5},{"symbol":"LMinP","mode":"SINGLE","value":2.5},{"symbol":"HMin","mode":"SINGLE","value":0.3},{"symbol":"YMin","mode":"SINGLE","value":0.4},{"symbol":"VeMax","mode":"SINGLE","value":2.5},{"symbol":"YMinSB","mode":"SINGLE","value":0.2},{"symbol":"YMinPB","mode":"SINGLE","value":0.3}]}]}`; Session.getInstance().unserialise(sess); const pab = Session.getInstance().findNubByUid("bzRjY3") as Pab; const espece = Session.getInstance().findNubByUid("NnB5b2") as Espece; @@ -498,7 +498,7 @@ describe("vérificateur de franchissement −", () => { it("jalhyd#265 (2) - charge minimale sur cloison aval régulée, avec une passe variée", () => { // contexte Session.getInstance().clear(); - const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-09-08T08:58:52.333Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"MnRyeT","props":{"calcType":"Pab"},"meta":{"title":"PAB"},"children":[{"uid":"OWEwZn","props":{"calcType":"Cloisons"},"children":[{"uid":"bHVyZ3","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.8},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"aGd1MX","props":{"calcType":"Structure","loiDebit":"OrificeSubmerged","structureType":"Orifice"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":0.1},{"symbol":"CdO","mode":"SINGLE","value":0.7}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.8},{"symbol":"ZRAM","mode":"SINGLE","value":100.9},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"MINMAX","min":0.14,"max":0.3,"step":0.15,"extensionStrategy":0},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101.5}],"downWall":{"uid":"ZWxnMz","props":{"calcType":"CloisonAval"},"children":[{"uid":"ZHJwcD","props":{"calcType":"Structure","loiDebit":"VanLevVillemonte"},"children":[],"parameters":[{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWR","mode":"SINGLE","value":0.4},{"symbol":"minZDV","mode":"SINGLE","value":100.7},{"symbol":"maxZDV","mode":"SINGLE","value":101.6},{"symbol":"DH","mode":"SINGLE","value":0.2}]},{"uid":"cWw4aX","props":{"calcType":"Structure","loiDebit":"OrificeSubmerged","structureType":"Orifice"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":0.1},{"symbol":"CdO","mode":"SINGLE","value":0.7}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.7}]}},{"uid":"YXBxbn","props":{"calcType":"Verificateur","nubToVerify":"MnRyeT","speciesList":["SPECIES_7b"]},"meta":{"title":"Vérification"},"children":[],"parameters":[]}]}`; + const sess = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-09-08T08:58:52.333Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"MnRyeT","props":{"calcType":"Pab"},"meta":{"title":"PAB"},"children":[{"uid":"OWEwZn","props":{"calcType":"Cloisons"},"children":[{"uid":"bHVyZ3","props":{"calcType":"Structure","loiDebit":"WeirVillemonte","structureType":"SeuilRectangulaire"},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":101.8},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]},{"uid":"aGd1MX","props":{"calcType":"Structure","loiDebit":"OrificeSubmerged","structureType":"Orifice"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":0.1},{"symbol":"CdO","mode":"SINGLE","value":0.7}]}],"parameters":[{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"ZRMB","mode":"SINGLE","value":100.8},{"symbol":"ZRAM","mode":"SINGLE","value":100.9},{"symbol":"QA","mode":"SINGLE","value":0}]}],"parameters":[{"symbol":"Q","mode":"MINMAX","min":0.14,"max":0.3,"step":0.15,"extensionStrategy":0},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":101.5}],"downWall":{"uid":"ZWxnMz","props":{"calcType":"CloisonAval"},"children":[{"uid":"ZHJwcD","props":{"calcType":"Structure","loiDebit":"VanLevVillemonte"},"children":[],"parameters":[{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWR","mode":"SINGLE","value":0.4},{"symbol":"minZDV","mode":"SINGLE","value":100.7},{"symbol":"maxZDV","mode":"SINGLE","value":101.6},{"symbol":"DH","mode":"SINGLE","value":0.2}]},{"uid":"cWw4aX","props":{"calcType":"Structure","loiDebit":"OrificeSubmerged","structureType":"Orifice"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":0.1},{"symbol":"CdO","mode":"SINGLE","value":0.7}]}],"parameters":[{"symbol":"ZRAM","mode":"SINGLE","value":100.7}]}},{"uid":"YXBxbn","props":{"calcType":"Verificateur","nubToVerify":"MnRyeT","speciesList":["SPECIES_7b"]},"meta":{"title":"Vérification"},"children":[],"parameters":[]}]}`; Session.getInstance().unserialise(sess); const pab = Session.getInstance().findNubByUid("MnRyeT") as Pab; const v = Session.getInstance().findNubByUid("YXBxbn") as Verificateur; diff --git a/src/dichotomie.ts b/src/dichotomie.ts index 115d1f6b0afb84c288dbbc5278f15e2bd98cc8d4..140cc546a3709eada09cd63a8d35701d005081b5 100644 --- a/src/dichotomie.ts +++ b/src/dichotomie.ts @@ -37,6 +37,11 @@ export class Dichotomie extends Debug { private _func: () => number; + /** + * si > 0, un calcul dichotomique est en cours + */ + private static _inDicho: number = 0; + /** * Construction de la classe. * @param nub Noeud de calcul contenant la méthode de calcul Equation @@ -68,6 +73,10 @@ export class Dichotomie extends Debug { this._startIntervalMaxSteps = n; } + public static get inDicho(): boolean { + return Dichotomie._inDicho > 0; + } + public CalculX(x: number): number { this.vX = x; return this.Calcul(); @@ -80,6 +89,8 @@ export class Dichotomie extends Debug { * @param rInit valeur initiale approximative de x */ public Dichotomie(rTarget: number, rTol: number, rInit: number): Result { + Dichotomie._inDicho++; + this._target = rTarget; // console.log("-----"); // for (let x = 0; x <= 1; x += 0.1) @@ -109,20 +120,24 @@ export class Dichotomie extends Debug { this.debug( `${this.analyticalSymbol}(${this.sVarCalc}=${s.value}) = ${rTarget}` ); + Dichotomie._inDicho--; return new Result(s.value); } else { this.debug( "Non convergence" ); + Dichotomie._inDicho--; return new Result(new Message(MessageCode.ERROR_DICHO_CONVERGE, { lastApproximation: s.value }), this.nub); } } else { + Dichotomie._inDicho--; return new Result(r.res); } } catch (e) { // un appel à Calcul() a généré une erreur + Dichotomie._inDicho--; return this.nub.result; } } diff --git a/src/nub.ts b/src/nub.ts index e40d9c23efb7f1d431568cf3ff608f3948c9ded7..64e31c46d91211303adee731364c877dcbe67499 100644 --- a/src/nub.ts +++ b/src/nub.ts @@ -17,6 +17,46 @@ import { Result } from "./internal_modules"; import { ResultElement } from "./internal_modules"; import { VariatedDetails } from "./internal_modules"; +class NubIterator implements IterableIterator<Nub> { + private _nubs: Nub[]; + private _index: number; + + constructor(n: Nub) { + this._nubs = []; + this.fill(n); + this._index = 0; + } + + private fill(n: Nub) { + this._nubs.push(n); + for (const c of n.getChildren()) { + this.fill(c); + } + } + + // interface IterableIterator + + public next(): IteratorResult<Nub> { + const i = this._index; + if (this._index < this._nubs.length) { + this._index = i + 1; + return { + done: false, + value: this._nubs[i] + }; + } else { + return { + done: true, + value: undefined + }; + } + } + + [Symbol.iterator](): IterableIterator<Nub> { + return this; + } +} + /** * Classe abstraite de Noeud de calcul dans une session : * classe de base pour tous les calculs @@ -569,7 +609,7 @@ export abstract class Nub extends ComputeNode implements IProperties { stats = this._result.resultElementsLogStats(0, stats); let sn = 1; - const it = this.allChildNubIterator(); + const it = this.directChildNubIterator(); let icn = it.next(); while (!icn.done) { stats = icn.value.result.resultElementsLogStats(sn++, stats); @@ -737,12 +777,19 @@ export abstract class Nub extends ComputeNode implements IProperties { } /** - * @returns iterator on all child nubs (may include extra nubs, see Pab nub) + * @returns iterator on direct child nubs (may include extra nubs, see Pab nub) */ - public allChildNubIterator() { + public directChildNubIterator() { return this._children[Symbol.iterator](); } + /** + * @returns iterator on all child nubs (recursively) + */ + public get allChildNubIterator() { + return new NubIterator(this); + } + /** * Returns true if all parameters are valid; used to check validity of * parameters linked to Nub results @@ -1601,6 +1648,41 @@ export abstract class Nub extends ComputeNode implements IProperties { } } + /** + * @returns true if results for this nub and all its children do not contain errors + */ + public get allResultsOk(): boolean { + for (const n of this.allChildNubIterator) { + if (!n.result.ok) { + return false; + } + } + return true; + } + + /** + * @returns true if all messages in nub hierarchy have the same code + */ + public hasOnlyMessage(code: MessageCode): boolean { + for (const n of this.allChildNubIterator) { + if (!n.result.hasOnlyMessage(code)) { + return false; + } + } + return true; + } + + public get uniqueMessageCodes(): MessageCode[] { + let res: MessageCode[] = []; + for (const n of this.allChildNubIterator) { + if (n.uid === "MDZ3aH") { + debugger + } + res = res.concat(n.result.uniqueMessageCodes); + } + return res; + } + // interface IObservable /** diff --git a/src/pab/pab.ts b/src/pab/pab.ts index f197cd5425da7a0c41eb3b898d00760de0a54db7..727ea2495ea2d5c9ab8aa7a8871cee5426426046 100644 --- a/src/pab/pab.ts +++ b/src/pab/pab.ts @@ -36,9 +36,9 @@ export class Pab extends FishPass { /** * @returns iterator on all child nubs (may include extra nubs, see Pab nub) - * @see Nub.allChildNubIterator() + * @see Nub.directChildNubIterator() */ - public allChildNubIterator() { + public directChildNubIterator() { // clone children array const arr = Object.assign([], this.children); // append wall at downstream diff --git a/src/prebarrage/pre_barrage.ts b/src/prebarrage/pre_barrage.ts index 08122a1b53cd5c8fb221620acfe2fce9e5ec317c..82c9e16431f67fd3e442df3abb262796822c393b 100644 --- a/src/prebarrage/pre_barrage.ts +++ b/src/prebarrage/pre_barrage.ts @@ -1,4 +1,4 @@ -import { Nub } from "../internal_modules"; +import { Nub, Structure } from "../internal_modules"; import { ParamCalculability, ParamDefinition } from "../internal_modules"; import { Result } from "../internal_modules"; import { PreBarrageParams } from "../internal_modules"; @@ -333,7 +333,18 @@ export class PreBarrage extends Nub { return this.result; } + for (const c of this._children) { + if (c instanceof PbCloison) { + c.inhibitSubmergenceError = true; + } + } const res = super.Calc(sVarCalc, rInit); + for (const c of this._children) { + if (c instanceof PbCloison) { + c.inhibitSubmergenceError = false; + } + } + // calculate basins so that they have a proper .result for (const b of this._bassins) { b.Calc(); @@ -341,11 +352,13 @@ export class PreBarrage extends Nub { // calculate Q on all walls so that their result shows Q and not Z1 for (const c of this._children) { if (c instanceof PbCloison) { + c.inhibitSubmergenceError = true; // sauvegarde des messages générés pendant les itérations de dichotomie const logBackup: cLog = c.result.resultElement.log.clone(); c.finalCalc(); // restitution des messages sauvés c.result.resultElement.log.addLog(logBackup); + c.inhibitSubmergenceError = false; } } @@ -356,6 +369,26 @@ export class PreBarrage extends Nub { } } + // recalculate Q on all walls without error inhibition + for (const c of this._children) { + if (c instanceof PbCloison) { + // sauvegarde des messages générés pendant les itérations de dichotomie + const logBackup: cLog = c.result.resultElement.log.clone(); + c.finalCalc(); + // restitution des messages sauvés + c.result.resultElement.log.addLog(logBackup); + } + } + + // if an error occurred in any nub, remove all results + // except if it's a dichotomy convergence error (and only this error) + + if (!this.allResultsOk && !this.hasOnlyMessage(MessageCode.ERROR_DICHO_CONVERGE)) { + for (const c of this.allChildNubIterator) { + c.result.resultElement.removeValues(); + } + } + return res; } diff --git a/src/structure/factory_structure.ts b/src/structure/factory_structure.ts index 31927f6063b25e5b24a2f494c2209286ddef30bf..9c9d641d139108ce851232f227206c9078839aa6 100755 --- a/src/structure/factory_structure.ts +++ b/src/structure/factory_structure.ts @@ -109,8 +109,8 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur if (!nullParams) { rectStructPrms.L.singleValue = 0.2; rectStructPrms.CdWSL.singleValue = 0.75; - rectStructPrms.ZDV.singleValue = 101; - rectStructPrms.h1.singleValue = 1; + rectStructPrms.ZDV.singleValue = 100; + rectStructPrms.h1.singleValue = 2; } ret = new StructureWeirSubmergedLarinier(rectStructPrms, dbg); break; diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts index e22531ae1800083cad07623f6e869d42146e2a73..94346fb5074a6955715c91279416078a8907a0b9 100644 --- a/src/structure/parallel_structure.ts +++ b/src/structure/parallel_structure.ts @@ -33,6 +33,13 @@ export class ParallelStructure extends Nub { }); } + /** + * true to inhibit emission of ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN error in Structure calculations and + * WARNING_SLOT_SUBMERGENCE_NOT_BETWEEN_07_AND_09 warning in StructureWeirSubmergedLarinier. + * Used during predams calculations. + */ + public inhibitSubmergenceError: boolean = false; + /** * paramètres castés au bon type */ @@ -104,6 +111,9 @@ export class ParallelStructure extends Nub { for (let i = 0; i < this._children.length; i++) { if (i !== iExcept) { const res: Result = this._children[i].Calc("Q"); + if (!res.ok) { + return res; + } qTot += res.vCalc; // merge logs calcRes.resultElement.log.addLog(res.log); diff --git a/src/structure/structure.ts b/src/structure/structure.ts index 09e64c33bf7a8e0008784f6f7c6064a6ab8285de..7cb91b8cf4c57d00f55a34b7ae191ba5faaa83bc 100644 --- a/src/structure/structure.ts +++ b/src/structure/structure.ts @@ -1,4 +1,4 @@ -import { ChildNub } from "../internal_modules"; +import { ChildNub, Dichotomie } from "../internal_modules"; import { CalculatorType } from "../internal_modules"; import { ParamCalculability, ParamDefinition, ParamFamily } from "../internal_modules"; import { Props } from "../internal_modules"; @@ -77,6 +77,43 @@ export abstract class Structure extends ChildNub { return 100; } + /** + * méthode générique de vérification que l'ennoiement est supérieur à une valeur donnée + * @param min valeur minimum de l'ennoiement + */ + protected checkSubmergenceMin(res: Result, min: number) { + // on fait le test si on est pas dans un calcul par dichotomie + if (!Dichotomie.inDicho && !(this.parent as ParallelStructure)?.inhibitSubmergenceError) { + const h2h1ratio = this.prms.h2.v / this.prms.h1.v; + if (h2h1ratio < min) { + res.resultElement.addMessage(new Message( + // this._result.globalLog.add(new Message( + MessageCode.ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN, + { + submergencePerc: this.computeSubmergencePercentage().toString(), + min: min * 100 + } + )); + } + } + } + + /** + * fonction appelée dans Calc() pour vérifier l'ennoiement (cf. classes dérivées) + */ + public checkSubmergence(res: Result) { + } + + + // si une erreur d'ennoiement est survenue, on annule les résultats + public static filterResultsOnSubmergenceError(res: Result): boolean { + if (res.resultElement.hasMessage(MessageCode.ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN)) { + res.resultElement.removeValues(); + return true; + } + return false; + } + /** Constante utile : Racine de 2g */ protected static readonly R2G: number = Math.sqrt(2 * 9.81); @@ -96,6 +133,15 @@ export abstract class Structure extends ChildNub { this._intlType = "Ouvrage"; } + /** + * true si la structure est une vanne levante + * @see StructureVanLevLarinier + * @see StructureVanLevVillemonte + */ + protected get isVanneLevante(): boolean { + return false; + } + public get isZDVcalculable(): boolean { return this._isZDVcalculable; } @@ -252,7 +298,10 @@ export abstract class Structure extends ChildNub { } // Calcul normal hors débit nul - return super.Calc(sVarCalc, rInit); + const res = super.Calc(sVarCalc, rInit); + this.checkSubmergence(res); + Structure.filterResultsOnSubmergenceError(res); + return res; } /** diff --git a/src/structure/structure_vanlev_larinier.ts b/src/structure/structure_vanlev_larinier.ts index 002838b5da4ebd2a8c547da824bdb83945119dc4..0f01035454a1d4242b766b388fc235b3ea36b430 100644 --- a/src/structure/structure_vanlev_larinier.ts +++ b/src/structure/structure_vanlev_larinier.ts @@ -15,4 +15,8 @@ export class StructureVanLevLarinier extends StructureWeirSubmergedLarinier { get prms(): StructureVanLevParams { return this._prms as StructureVanLevParams; } + + protected get isVanneLevante(): boolean { + return true; + } } diff --git a/src/structure/structure_vanlev_villemonte.ts b/src/structure/structure_vanlev_villemonte.ts index da61603d45c692b508ef5f50da3bd155a21a3416..9c01ef9f5fe638c286806d1c7203b9438739eefe 100644 --- a/src/structure/structure_vanlev_villemonte.ts +++ b/src/structure/structure_vanlev_villemonte.ts @@ -15,4 +15,8 @@ export class StructureVanLevVillemonte extends StructureWeirVillemonte { get prms(): StructureVanLevParams { return this._prms as StructureVanLevParams; } + + protected get isVanneLevante(): boolean { + return true; + } } diff --git a/src/structure/structure_weir_submerged.ts b/src/structure/structure_weir_submerged.ts index 727c1ab3ad0d17b7767b3c3de772020d5dcc4328..f462873096fb7d6ee68bf68094525ad90c65d984 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'ennoiement est supérieur à une valeur donnée + */ + public checkSubmergence(res: Result) { + this.checkSubmergenceMin(res, 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 22db3d6e11bc9093cf323f3e523547de24dfe485..2051e77959bccbaefecd25d756772b6ab571f294 100644 --- a/src/structure/structure_weir_submerged_larinier.ts +++ b/src/structure/structure_weir_submerged_larinier.ts @@ -1,4 +1,4 @@ -import { Message, MessageCode, ParamCalculability } from "../internal_modules"; +import { Message, MessageCode, ParallelStructure, ParamCalculability } from "../internal_modules"; import { Result } from "../internal_modules"; import { RectangularStructure } from "../internal_modules"; import { RectangularStructureParams } from "../internal_modules"; @@ -25,17 +25,25 @@ export class StructureWeirSubmergedLarinier extends RectangularStructure { return this._prms as RectangularStructureParams; } + /** + * vérification que l'ennoiement est supérieur à une valeur donnée + */ + public checkSubmergence(res: Result) { + this.checkSubmergenceMin(res, 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; - if (h2h1ratio < 0.7 || h2h1ratio > 0.9) { - this._result.resultElement.addMessage(new Message( - MessageCode.WARNING_SLOT_SUBMERGENCE_NOT_BETWEEN_07_AND_09, - { - submergencePerc: this.computeSubmergencePercentage().toString() - } - )); - } + if (!(this.parent as ParallelStructure)?.inhibitSubmergenceError) + if (h2h1ratio < 0.7 || h2h1ratio > 0.9) { + this._result.resultElement.addMessage(new Message( + MessageCode.WARNING_SLOT_SUBMERGENCE_NOT_BETWEEN_07_AND_09, + { + submergencePerc: this.computeSubmergencePercentage().toString() + } + )); + } return this._result; } diff --git a/src/util/log.ts b/src/util/log.ts index 1398d152a2da3180422c4085352b09c193804910..d78c7d924738979c84b433498859f1370e382f35 100644 --- a/src/util/log.ts +++ b/src/util/log.ts @@ -94,6 +94,37 @@ export class cLog { return false; } + public getMessage(mc: MessageCode): Message { + for (const m of this.messages) { + if (m.code === mc) { + return m; + } + } + return undefined; + } + + /** + * @returns true if all messages have the same code + */ + public hasOnlyMessage(code: MessageCode): boolean { + for (const m of this.messages) { + if (m.code !== code) { + return false; + } + } + return true; + } + + public get uniqueMessageCodes(): MessageCode[] { + const res: MessageCode[] = []; + for (const m of this.messages) { + if (res.indexOf(m.code) === -1) { + res.push(m.code); + } + } + return res; + } + /** * compute error, warning, info count in a message list */ diff --git a/src/util/message.ts b/src/util/message.ts index 7f5e56d009dbb1af5b43d03ce361acccd5354cbb..77253f6882a12db3a022a8d7c5328b55b6956aca 100644 --- a/src/util/message.ts +++ b/src/util/message.ts @@ -512,6 +512,11 @@ export enum MessageCode { */ ERROR_STRUCTURE_Z_EGAUX_Q_NON_NUL, + /** + * Structure : l'ennoiement %submergencePerc% est inférieur à %min% + */ + ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN, + /** * Il faut au moins un ouvrage dans une structure */ diff --git a/src/util/result.ts b/src/util/result.ts index a1cb07b4cc629a7b0abb449db9af160a71d133a0..cba512d9e577696839624e314d4317fd690cbf7d 100644 --- a/src/util/result.ts +++ b/src/util/result.ts @@ -1,4 +1,4 @@ -import { JalhydObject } from "../internal_modules"; +import { JalhydObject, MessageCode } from "../internal_modules"; import { Nub } from "../internal_modules"; import { cLog } from "../internal_modules"; import { Message, MessageSeverity } from "../internal_modules"; @@ -132,7 +132,7 @@ export class Result extends JalhydObject { if (re !== undefined) { res.push(re); } - const it: Iterator<Nub> = this._sourceNub.allChildNubIterator(); + const it: Iterator<Nub> = this._sourceNub.directChildNubIterator(); let inub = it.next() while (!inub.done) { let re = inub.value.result._resultElements[index]; @@ -272,6 +272,56 @@ export class Result extends JalhydObject { return true; } + /** + * determine if a message is present in result + * @param code message code to find + * @param recurs if true, search into nub children + */ + public hasMessage(code: MessageCode, recurs: boolean = false): boolean { + if (this._globalLog.contains(code)) { + return true; + } + + for (const r of this._resultElements) { + if (r.log.contains(code)) { + return true; + } + } + + if (recurs && this._sourceNub !== undefined) { + for (const n of this._sourceNub.directChildNubIterator()) { + if (n.result.hasMessage(code, true)) { + return true; + } + } + } + + return false; + } + + /** + * determine if all messages have the same code + * @param code message code to find + */ + public hasOnlyMessage(code: MessageCode): boolean { + if (!this._globalLog.hasOnlyMessage(code)) { + return false; + } + + if (!this.resultElement.log.hasOnlyMessage(code)) { + return false; + } + + return true; + } + + public get uniqueMessageCodes(): MessageCode[] { + let res: MessageCode[] = []; + res = res.concat(this._globalLog.uniqueMessageCodes); + res = res.concat(this.resultElement.log.uniqueMessageCodes); + return res; + } + /** * compute log stats (# of error, warning, info) on all result element */ diff --git a/src/util/resultelement.ts b/src/util/resultelement.ts index 313e464a111501518922a4641ad1aa1718ac2b2e..72b4c02d12e7a54f18966f2fa8e3ad84b511cc02 100644 --- a/src/util/resultelement.ts +++ b/src/util/resultelement.ts @@ -1,4 +1,4 @@ -import { cLog } from "../internal_modules"; +import { MessageCode, cLog } from "../internal_modules"; import { Message, MessageSeverity } from "../internal_modules"; import { Result } from "../internal_modules"; @@ -192,6 +192,13 @@ export class ResultElement { } } + /** + * Removes all values + */ + public removeValues() { + this._values = {}; + } + public toString(): string { if (this.vCalc !== undefined) { return String(this.vCalc); @@ -234,6 +241,15 @@ export class ResultElement { return false; } + public hasMessage(code: MessageCode): boolean { + for (const m of this.log.messages) { + if (m.code === code) { + return true; + } + } + return false; + } + /** * compute error, warning, info count on all log messages */