diff --git a/spec/pab/cloison_aval.spec.ts b/spec/pab/cloison_aval.spec.ts index 48fc8572781193e0ea267f11a650e7409e440d86..d60ba0dd0afe7048f91b704237310a98a0832096 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 5d30b5a5573d6bdf2f45dc613d54109f3a1b8fcc..eb563edec649e059098ee7ff4af2a95346274951 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 f533640c535afcdb65daa29a92133113b75932f0..0f88fa1515e5b9dba74085af10287f4e0768ac2e 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 0000000000000000000000000000000000000000..cb7b2ddeb07382a12f50df816e3f80be1cfad259 --- /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 56f47b47bacc443fd3082b11f4d9ff5ef7a31c0e..0fffd368109baf23f562389cbb0149f8e7f020ca 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 f340f7433a394b694ede5a63758bb90926a30fc4..1a9eb7bdc4fe2c71f08203e797a5e65c3c4700c8 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;