UNPKG

jalhyd

Version:

JaLHyd, a Javascript Library for Hydraulics

228 lines 9.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Par = exports.ParType = void 0; const internal_modules_1 = require("../internal_modules"); const internal_modules_2 = require("../internal_modules"); const internal_modules_3 = require("../internal_modules"); const internal_modules_4 = require("../internal_modules"); const internal_modules_5 = require("../internal_modules"); const internal_modules_6 = require("../internal_modules"); const internal_modules_7 = require("../internal_modules"); const internal_modules_8 = require("../internal_modules"); const internal_modules_9 = require("../internal_modules"); const internal_modules_10 = require("../internal_modules"); const internal_modules_11 = require("../internal_modules"); /** Type de Passe à Ralentisseurs */ var ParType; (function (ParType) { ParType[ParType["PLANE"] = 0] = "PLANE"; ParType[ParType["FATOU"] = 1] = "FATOU"; ParType[ParType["SUPERACTIVE"] = 2] = "SUPERACTIVE"; ParType[ParType["CHEVRON"] = 3] = "CHEVRON"; })(ParType = exports.ParType || (exports.ParType = {})); class Par extends internal_modules_11.FishPass { constructor(prms, dbg = false) { super(prms, dbg); this.setCalculatorType(internal_modules_1.CalculatorType.Par); this._defaultCalculatedParam = prms.Q; this.resetDefaultCalculatedParam(); this._props.addObserver(this); this.parType = ParType.PLANE; } get prms() { return this._prms; } get parType() { return this.getPropValue("parType"); } set parType(e) { this.setPropValue("parType", e); } Calc(sVarCalc, rInit) { // possible error result const r = new internal_modules_3.Result(new internal_modules_9.ResultElement()); let hasError = false; // if P is given and L is not calculated, check P value if (this.calculatedParam !== this.prms.L && this.prms.P.v !== undefined) { const standardP = this.parCalc.CalcP(); const minP = standardP * 0.9; const maxP = standardP * 1.05; if ((0, internal_modules_10.isLowerThan)(this.prms.P.v, minP) || (0, internal_modules_10.isGreaterThan)(this.prms.P.v, maxP)) { const m = new internal_modules_8.Message(internal_modules_8.MessageCode.ERROR_PAR_P_DEVIATES_MORE_THAN_10_5_PCT); m.extraVar.stdP = standardP; r.resultElement.addMessage(m); hasError = true; } } // Check admissible values for S, L, N, a, M const status = this.parCalc.checkInput(); if (status.fatal) { for (const m of status.messages) { r.resultElement.addMessage(m); } hasError = true; } // Check that input data is in the range given by abacuses switch (this.calculatedParam) { case this.prms.ha: // check qStar const qStar = this.parCalc.CalcQStar(); if ((0, internal_modules_10.isLowerThan)(qStar, this.parCalc.minQstar) || (0, internal_modules_10.isGreaterThan)(qStar, this.parCalc.maxQstar)) { const mqstar = new internal_modules_8.Message(internal_modules_8.MessageCode.ERROR_PAR_QSTAR_OUT_OF_RANGE); mqstar.extraVar.val = this.prms.Q.V; mqstar.extraVar.min = this.parCalc.CalcQFromQStar(this.parCalc.minQstar); mqstar.extraVar.max = this.parCalc.CalcQFromQStar(this.parCalc.maxQstar); r.resultElement.addMessage(mqstar); hasError = true; } break; case this.prms.Q: const m = this.checkHaAbacus(); if (m !== undefined) { r.resultElement.addMessage(m); hasError = true; } } // if any fatal error occurred if (hasError) { this.currentResultElement = r; return this.result; } super.Calc(sVarCalc, rInit); // add checkInput()'s non fatal warnings to current result for (const m of status.messages) { this.result.resultElement.addMessage(m); } if (!this.result.ok) return this.result; // extra results this.parCalc.addExtraResults(this.result); // pass type independent extra results if (this.prms.Z1.v !== undefined) { // cote du déversoir à l'amont this.result.resultElement.values.ZD1 = this.parCalc.ZD1; if (this.prms.Z2.v !== undefined) { const P = this.result.resultElement.values.P; // calculated by addExtraResults() const ZR1 = this.result.resultElement.values.ZR1; // calculated by addExtraResults() // nombre de ralentisseurs // tslint:disable-next-line:variable-name const Nb = this.parCalc.CalcNb(); // depends on Z1 and Z2 this.result.resultElement.values.Nb = Nb; // cote de déversement à l'aval de la passe const ZD2 = this.parCalc.ZD1 - this.parCalc.CalcLs() * this.prms.S.v / Math.sqrt(1 + this.prms.S.v * this.prms.S.v); this.result.resultElement.values.ZD2 = ZD2; // DEBUG // cote de radier de l'aval de la passe this.result.resultElement.values.ZR2 = ZD2 - (this.parCalc.ZD1 - ZR1); // longueur de la passe en suivant la pente const LPI = this.parCalc.CalcLs(); this.result.resultElement.values.LPI = LPI; // longueur de la passe en projection horizontale this.result.resultElement.values.LPH = this.parCalc.CalcLh(); } } return this.result; } checkHaAbacus() { let m; if ((0, internal_modules_10.isLowerThan)(this.parCalc.ha, this.parCalc.minHa) || (0, internal_modules_10.isGreaterThan)(this.parCalc.ha, this.parCalc.maxHa)) { m = new internal_modules_8.Message(internal_modules_8.MessageCode.ERROR_PAR_HA_OUT_OF_RANGE); m.extraVar.val = this.parCalc.ha; m.extraVar.min = this.parCalc.minHa; m.extraVar.max = this.parCalc.maxHa; } return m; } Equation(sVarCalc) { let v; switch (sVarCalc) { case "Q": v = this.parCalc.CalcQFromHa(); break; case "ha": v = this.parCalc.CalcHa(); break; default: throw new Error("Par.Equation() : invalid variable name " + sVarCalc); } return new internal_modules_3.Result(v, this); } getFirstAnalyticalParameter() { // use ha in dicho, when calculating L, to prevent negative sqrt() in doCalcQYFromHa() return this.prms.ha; } update(sender, data) { if (data.action === "propertyChange") { if (data.name === "parType") { switch (data.value) { case ParType.PLANE: this.parCalc = new internal_modules_4.ParTypePlane(this.prms); break; case ParType.FATOU: this.parCalc = new internal_modules_5.ParTypeFatou(this.prms); break; case ParType.SUPERACTIVE: this.parCalc = new internal_modules_6.ParTypeSuperactive(this.prms); break; case ParType.CHEVRON: this.parCalc = new internal_modules_7.ParTypeChevron(this.prms); break; default: throw new Error("Par.update() : invalid Par Type name " + data.value); } this.updateParamsVisibility(); } } } updateParamsVisibility() { this.prms.L.visible = ([ParType.PLANE, ParType.FATOU].includes(this.parType)); this.prms.a.visible = ([ParType.SUPERACTIVE, ParType.CHEVRON].includes(this.parType)); this.prms.N.visible = ([ParType.SUPERACTIVE, ParType.CHEVRON].includes(this.parType)); this.prms.M.visible = (this.parType === ParType.CHEVRON); } setParametersCalculability() { this.prms.Q.calculability = internal_modules_2.ParamCalculability.EQUATION; this.prms.ha.calculability = internal_modules_2.ParamCalculability.EQUATION; } static resultsUnits() { return Par._resultsUnits; } exposeResults() { this._resultsFamilies = { h: undefined, qStar: undefined, V: undefined, Nb: undefined, ZD1: undefined, ZR1: undefined, ZD2: undefined, ZR2: undefined, ZM: undefined, LPI: undefined, LPH: undefined, L: undefined }; } } exports.Par = Par; /** * { symbol => string } map that defines units for extra results */ Par._resultsUnits = { h: "m", qStar: "m³/s", V: "m/s", ZD1: "m", ZR1: "m", ZD2: "m", ZR2: "m", ZM: "m", LPI: "m", LPH: "m", B: "m", C: "m", D: "m", H: "m", Hmin: "m", Hmax: "m" }; //# sourceMappingURL=par.js.map