From d99dde6aed8d87f972f6fa622d0f443c08bdfe02 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 4 Sep 2019 15:53:05 +0200 Subject: [PATCH] Update PAB CloisonAval params for nghyd#268 --- spec/pab/cloison_aval.spec.ts | 3 ++- spec/pab/pab.spec.ts | 7 +++---- src/pab/cloison_aval.ts | 7 ++++++- src/pab/cloison_aval_params.ts | 15 +++++++++++++++ src/pab/pab.ts | 8 ++++---- src/session.ts | 6 ++++-- 6 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 src/pab/cloison_aval_params.ts diff --git a/spec/pab/cloison_aval.spec.ts b/spec/pab/cloison_aval.spec.ts index 48fc8572..d60ba0dd 100644 --- a/spec/pab/cloison_aval.spec.ts +++ b/spec/pab/cloison_aval.spec.ts @@ -1,11 +1,12 @@ import { CloisonAval, ParallelStructureParams } from "../../src/pab/cloison_aval"; +import { CloisonsAvalParams } from "../../src/pab/cloison_aval_params"; import { StructureVanLevLarinier, StructureVanLevParams } from "../../src/structure/structure_vanlev"; import { StructureVanLevVillemonte } from "../../src/structure/structure_vanlev"; import { MessageCode } from "../../src/util/message"; function getCloisonAvalTest(Q: number, Z2: number): CloisonAval { return new CloisonAval( - new ParallelStructureParams(Q, 0, Z2) + new CloisonsAvalParams(Q, 0, Z2, 0) ); } diff --git a/spec/pab/pab.spec.ts b/spec/pab/pab.spec.ts index 5d30b5a5..eb563ede 100644 --- a/spec/pab/pab.spec.ts +++ b/spec/pab/pab.spec.ts @@ -8,12 +8,12 @@ import { ParamValueMode, Session } from "../../src/index"; import { CloisonAval } from "../../src/pab/cloison_aval"; +import { CloisonsAvalParams } from "../../src/pab/cloison_aval_params"; import { Cloisons, CloisonsParams } from "../../src/pab/cloisons"; import { Pab, PabParams } from "../../src/pab/pab"; import { ParallelStructureParams } from "../../src/structure/parallel_structure"; import { RectangularStructureParams } from "../../src/structure/rectangular_structure_params"; import { StructureVanLevParams, StructureVanLevVillemonte } from "../../src/structure/structure_vanlev"; -// tslint:disable-next-line:max-line-length import { StructureWeirSubmergedLarinier } from "../../src/structure/structure_weir_submerged_larinier"; import { StructureWeirVillemonte } from "../../src/structure/structure_weir_villemonte"; import { MessageCode } from "../../src/util/message"; @@ -55,7 +55,7 @@ function createModelCloisonTest(): Cloisons { function createPabTest(): Pab { // Création de la cloison aval - const downWall = new CloisonAval(new ParallelStructureParams(0, 0, 0)); + const downWall = new CloisonAval(new CloisonsAvalParams(0, 0, 0, 0)); const kiviPrms = new RectangularStructureParams ( 0, // Q 73.95, // ZDV @@ -119,7 +119,6 @@ function checkPabResults(p: Pab, vCalc: number) { // Cote de l'eau dernier bassin à l'amont de la cloison aval expect(p.downWall.result.vCalc).toBeCloseTo(75.077, 2); expect(p.downWall.result.values.DH).toBeCloseTo(0.217, 2); - expect(p.downWall.result.values.ZRAM).toBeCloseTo(73.435, 2); expect(p.downWall.result.values.Q).toBeCloseTo(0.773, 2); expect(p.downWall.result.values.x).toBeCloseTo(3.1 * 14, 2); for (let i = 0; i < 14; i++) { @@ -176,7 +175,7 @@ describe("Class Pab: ", () => { describe("Vanne levante sur Cloison aval", () => { beforeEach( () => { pab = createPabTest(); - pab.downWall = new CloisonAval(new ParallelStructureParams(0, 0, 0)); + pab.downWall = new CloisonAval(new CloisonsAvalParams(0, 0, 0, 0)); pab.downWall.addChild( new StructureVanLevVillemonte( new StructureVanLevParams(0.773, 73, 75.090, 74.86, 0.6, 0.4, 0.217, 73.5, 74) diff --git a/src/pab/cloison_aval.ts b/src/pab/cloison_aval.ts index f533640c..0f88fa15 100644 --- a/src/pab/cloison_aval.ts +++ b/src/pab/cloison_aval.ts @@ -5,12 +5,13 @@ import { loiAdmissiblesCloisonAval, LoiDebit } from "../structure/structure_prop import { StructureVanLevLarinier, StructureVanLevVillemonte } from "../structure/structure_vanlev"; import { Message, MessageCode } from "../util/message"; import { Result } from "../util/result"; +import { CloisonsAvalParams } from "./cloison_aval_params"; export { ParallelStructureParams } from "../structure/parallel_structure_params"; export class CloisonAval extends ParallelStructure { - constructor(prms: ParamsEquation, dbg: boolean = false) { + constructor(prms: CloisonsAvalParams, dbg: boolean = false) { super(prms, dbg); this._calcType = CalculatorType.CloisonAval; } @@ -29,6 +30,10 @@ export class CloisonAval extends ParallelStructure { return null; } + public get prms(): CloisonsAvalParams { + return this._prms as CloisonsAvalParams; + } + /** * Returns admissible LoiDebit grouped by StructureType * Only one vanne levante is allowed on a CloisonAval diff --git a/src/pab/cloison_aval_params.ts b/src/pab/cloison_aval_params.ts new file mode 100644 index 00000000..cb7b2dde --- /dev/null +++ b/src/pab/cloison_aval_params.ts @@ -0,0 +1,15 @@ +import { ParamDefinition, ParamFamily } from "../param/param-definition"; +import { ParamDomainValue } from "../param/param-domain"; +import { ParallelStructureParams } from "../structure/parallel_structure_params"; + +export class CloisonsAvalParams extends ParallelStructureParams { + + /** Cote radier amont paroi (m) */ + public ZRAM: ParamDefinition; + + constructor(rQ: number, rZ1: number, rZ2: number, rZRAM: number) { + super(rQ, rZ1, rZ2); + this.ZRAM = new ParamDefinition(this, "ZRAM", ParamDomainValue.ANY, "m", rZRAM, ParamFamily.ELEVATIONS); + this.addParamDefinition(this.ZRAM); + } +} diff --git a/src/pab/pab.ts b/src/pab/pab.ts index 56f47b47..0fffd368 100644 --- a/src/pab/pab.ts +++ b/src/pab/pab.ts @@ -11,6 +11,7 @@ import { Message, MessageCode } from "../util/message"; import { Result } from "../util/result"; import { ResultElement } from "../util/resultelement"; import { CloisonAval, ParallelStructureParams } from "./cloison_aval"; +import { CloisonsAvalParams } from "./cloison_aval_params"; import { Cloisons } from "./cloisons"; import { PabParams } from "./pab_params"; @@ -93,7 +94,9 @@ export class Pab extends Nub { this.addChild(cl); } else { // The last wall is a CloisonAval (= Wall only, without basin) - const dw = new CloisonAval(new ParallelStructureParams(0, 0, 0)); + const zram = this.children[this.children.length - 1].prms.ZRMB.singleValue + - this.children[this.children.length - 1].prms.DH.singleValue / 2; + const dw = new CloisonAval(new CloisonsAvalParams(0, 0, 0, zram)); dw.structures = cl.structures; this.downWall = dw; } @@ -165,9 +168,6 @@ export class Pab extends Nub { if (!this.downWall.result.ok) { return new Result(new Message(MessageCode.ERROR_PAB_CALC_Z1_CLOISON)); } - this.downWall.result.resultElement.values.ZRAM = - this.children[this.children.length - 1].prms.ZRMB.v - - this.children[this.children.length - 1].prms.DH.v / 2; this.downWall.result.resultElement.values.Q = this.downWall.prms.Q.v; this.downWall.result.resultElement.values.x = l; this.debug("Downstream wall"); diff --git a/src/session.ts b/src/session.ts index f340f743..1a9eb7bd 100644 --- a/src/session.ts +++ b/src/session.ts @@ -27,6 +27,7 @@ import { acSection } from "./section/section_type"; // Classes relatives aux structures import { isNumeric } from "./base"; import { CloisonAval } from "./pab/cloison_aval"; +import { CloisonsAvalParams } from "./pab/cloison_aval_params"; import { Cloisons } from "./pab/cloisons"; import { CloisonsParams } from "./pab/cloisons_params"; import { Pab, PabParams } from "./pab/pab"; @@ -418,10 +419,11 @@ export class Session { break; case CalculatorType.CloisonAval: { - prms = new ParallelStructureParams( + prms = new CloisonsAvalParams( 0.5, // Q 102, // Z1 - 101.5 // Z2 + 101.5, // Z2 + 0 // ZRAM ); nub = new CloisonAval(prms, dbg); break; -- GitLab