diff --git a/spec/pre_barrage/pre-barrage.spec.ts b/spec/pre_barrage/pre-barrage.spec.ts index 544b4fa46f6956e09152871f23ca4726c2d4d929..49f3348a96429aef4705f71abb431dfcb1eb81c2 100644 --- a/spec/pre_barrage/pre-barrage.spec.ts +++ b/spec/pre_barrage/pre-barrage.spec.ts @@ -328,7 +328,7 @@ describe("Class PreBarrage:", () => { Session.getInstance().unserialise(sess); const pb = Session.getInstance().findNubByUid("YjJhMX") as PreBarrage; const res = pb.CalcSerie(); - expect(res.ok).toBe(false); + expect(res.ok).toBe(true); expect(res.resultElements.length).toBe(5); }); }); @@ -656,6 +656,7 @@ describe("Class PreBarrage:", () => { it("downstream water elevation > upstream water elevation", () => { const pb = createPreBarrageTest(); pb.prms.Z2.singleValue = pb.prms.Z1.singleValue + 1; + pb.prms.Q.setCalculated(); const res = pb.CalcSerie(); expect(res.ok).toBe(false); expect(res.resultElement.log.messages.length).toBe(1); diff --git a/spec/pre_barrage/prebarrage_jalhyd279.spec.ts b/spec/pre_barrage/prebarrage_jalhyd279.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..69cd94e3ad700dd3590b6f1a59f83fd4b20d0d58 --- /dev/null +++ b/spec/pre_barrage/prebarrage_jalhyd279.spec.ts @@ -0,0 +1,30 @@ +import { PreBarrage, Session } from "../../src/index"; +import { checkResultConsistency } from "../test_func"; + +let sessionJson: string; +describe("PreBarrage", () => { + beforeEach(()=> { + sessionJson = `{"header":{"source":"jalhyd","format_version":"1.3","created":"2020-10-01T06:43:50.495Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"cG9yaG","props":{"calcType":"PreBarrage"},"meta":{"title":"Prébarrages"},"children":[{"uid":"c29nYW","props":{"calcType":"PbBassin"},"children":[],"parameters":[{"symbol":"S","mode":"SINGLE","value":13.8},{"symbol":"ZF","mode":"SINGLE","value":95}]},{"uid":"ajB2cn","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":"c29nYW"},"children":[{"uid":"dGtvMW","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":"a2t5eG","props":{"calcType":"PbCloison","upstreamBasin":"c29nYW","downstreamBasin":""},"children":[{"uid":"enJhZT","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":"ODUxdn","props":{"calcType":"PbCloison","upstreamBasin":"","downstreamBasin":""},"children":[{"uid":"YWFqdm","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":[]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":1},{"symbol":"Z1","mode":"CALCUL"},{"symbol":"Z2","mode":"SINGLE","value":100}]}]}`; + }); + describe("jalhyd#279", () => { + it("Discharge in first bassin should be greater than 0.4", () => { + // tslint:disable-next-line:max-line-length + Session.getInstance().unserialise(sessionJson); + const nub = Session.getInstance().findNubByUid("cG9yaG") as PreBarrage; + // nub.DBG = true; + nub.CalcSerie(); + expect(nub.bassins[0].result.values.Q).toBeGreaterThan(0.4); + }); + }); + describe("jalhyd#280", () => { + it("With Z2 > Z1, calculation should succeed", () => { + // tslint:disable-next-line:max-line-length + Session.getInstance().unserialise(sessionJson); + const nub = Session.getInstance().findNubByUid("cG9yaG") as PreBarrage; + // nub.DBG = true; + nub.prms.Z2.setValue(102); + nub.CalcSerie(); + expect(nub.result.ok).toBeTrue(); + }); + }); +}); diff --git a/src/prebarrage/pre_barrage.ts b/src/prebarrage/pre_barrage.ts index 116995592a5a835e86f7773eaa818b979e80b22c..2b5c22d5056d9a25a311f13e175ae70816a8ee92 100644 --- a/src/prebarrage/pre_barrage.ts +++ b/src/prebarrage/pre_barrage.ts @@ -453,7 +453,7 @@ export class PreBarrage extends Nub { // B. messages generating cases: calculation goes on const res = new Result(new ResultElement(), this); // downstream water elevation > upstream water elevation ? - if (this.prms.Z2.v > this.prms.Z1.v) { + if (this.calculatedParam === this.prms.Q && this.prms.Z2.v > this.prms.Z1.v) { res.resultElement.log.add(new Message(MessageCode.ERROR_PREBARRAGE_Z2_SUP_Z1)); } // for each basin: is apron elevation > upstream water elevation ? @@ -533,7 +533,7 @@ export class PreBarrage extends Nub { // Calculation of repartition regarding actual water elevations let QT2: number = 0; for (const c of cloisons) { - c.prms.Q.initValue = c.prms.Q.v; + c.prms.Q.initValue = Math.max(0, c.prms.Q.v); c.Calc("Q"); // Relax! On ne prend pas toute la modification proposée ! if(c.prms.Q.v > 0) {