UNPKG

jalhyd

Version:

JaLHyd, a Javascript Library for Hydraulics

169 lines 6.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Cloisons = 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"); class Cloisons extends internal_modules_4.ParallelStructure { constructor(prms, dbg = false) { super(prms, dbg); this.setCalculatorType(internal_modules_1.CalculatorType.Cloisons); this._intlType = "Cloison"; } /** * paramètres castés au bon type */ get prms() { return this._prms; } getLoisAdmissibles() { return internal_modules_6.loiAdmissiblesCloisons; } /** * Is the Nub used in a PAB? */ get isInPAB() { return (this.parent !== undefined && this.parent instanceof internal_modules_2.Pab); } Equation(sVarCalc) { this.updatePrms(); return super.Equation(sVarCalc); } /** * Calcul du débit total, de la cote amont ou aval ou d'un paramètre d'une structure * @param sVarCalc Nom du paramètre à calculer : * "Q", "Z1", "DH" ou "n.X" avec "n" l'index de l'ouvrage et "X" son paramètre * @param rInit Valeur initiale */ Calc(sVarCalc, rInit) { let sVC = sVarCalc; if (sVarCalc === "DH") { sVC = "Z2"; rInit = this.prms.Z1.v - this.prms.DH.v; } this.updatePrms(); const r = super.Calc(sVC, rInit); if (!r.ok) { // Error during calculation return r; } // Transformation Z2 => DH if (sVarCalc === "DH") { r.vCalc = this.prms.Z1.v - r.vCalc; } // Ajout du calcul de la puissance dissipée const prms = this.getParamValuesAfterCalc(sVarCalc, r); const ro = 1000; // masse volumique de l'eau en kg/m3 const g = 9.81; // accélération de la gravité terrestre en m/s2. r.resultElement.values.PV = ro * g * this.prms.Q.v * (prms.Z1 - prms.Z2) / (prms.LB * prms.BB * prms.PB); // Ajout de la cote de radier de bassin r.resultElement.values.ZRMB = this.prms.ZRMB.v; r.resultElement.values.ZRAM = this.prms.ZRAM.v; // Ajout de ZDV pour les seuils for (const s of this.structures) { if (s.prms.h1.visible) { s.result.resultElement.addExtraResult("ZDV", this.prms.Z1.v - s.prms.h1.v); } // calcul de la pelle if (s.getPropValue("loiDebit") !== internal_modules_6.LoiDebit.OrificeSubmerged) { const pelle = s.prms.ZDV.v - this.prms.ZRAM.v; s.result.resultElement.values.P = pelle; if (pelle < -1E-7) { // si c'est enfoncé d'un dixième de micron ça va const m = new internal_modules_7.Message(internal_modules_7.MessageCode.WARNING_NEGATIVE_SILL); s.result.resultElement.log.add(m); // merge in parent for GUI display this.result.resultElement.log.add(m); } } } // Ajout de la charge aval et de l'ennoiement pour tous les ouvrages sauf les orifices for (const st of this.structures) { if (!st.isOrifice) { const h1 = st.prms.h1.v; const h2 = st.prms.h2.v; st.result.resultElement.addExtraResult("H2", h2); st.result.resultElement.addExtraResult("SUBMERGENCE", internal_modules_2.Structure.computeSubmergencePercentage(h1, h2)); } } return r; } adjustChildParameters(child) { const prms = child.prms; if (!this.isInPAB && prms.ZDV.visible) { // Dans le contexte hors PAB // Pour les seuils (i.e. Structures avec cote de radier de seuil) // on remplace ZDV par h1 la charge sur le seuil prms.h1.visible = true; prms.ZDV.visible = false; } if (child.prms instanceof internal_modules_5.StructureKiviParams) { // hide ZRAM for KIVI, in Cloisons and PAB context only child.prms.ZRAM.visible = false; } } /** * paramétrage de la calculabilité des paramètres */ setParametersCalculability() { super.setParametersCalculability(); this.prms.LB.calculability = internal_modules_3.ParamCalculability.FREE; this.prms.BB.calculability = internal_modules_3.ParamCalculability.FREE; this.prms.PB.calculability = internal_modules_3.ParamCalculability.FREE; this.prms.DH.calculability = internal_modules_3.ParamCalculability.DICHO; this.prms.Z1.calculability = internal_modules_3.ParamCalculability.FREE; this.prms.ZRMB.calculability = internal_modules_3.ParamCalculability.FREE; this.prms.ZRAM.calculability = internal_modules_3.ParamCalculability.FREE; this.prms.QA.calculability = internal_modules_3.ParamCalculability.FREE; } static resultsUnits() { return Cloisons._resultsUnits; } exposeResults() { this._resultsFamilies = { PV: undefined, ZRAM: undefined, ZRMB: undefined, P: undefined }; } updatePrms() { if (this.prms.DH.visible !== false) { // if NONE => PAB context. it doesn't need update of elevations if (this.calculatedParam !== this.prms.DH) { // Z2 is the variable to find if DH is the calculated param this.prms.Z2.v = this.prms.Z1.v - this.prms.DH.v; } this.prms.ZRMB.v = this.prms.Z1.v - this.prms.PB.v - this.prms.DH.v; this.prms.ZRAM.v = this.prms.ZRMB.v + this.prms.DH.v / 2; for (const structure of this.structures) { const prms = structure.prms; if (prms.h1.visible) { // MAJ de ZDV des seuils à partir de la charge prms.ZDV.v = this.prms.Z1.v - prms.h1.v; } if (structure.prms instanceof internal_modules_5.StructureKiviParams) { structure.prms.ZRAM.v = this.prms.Z1.v - this.prms.PB.v; } } } } } exports.Cloisons = Cloisons; /** * { symbol => string } map that defines units for extra results */ Cloisons._resultsUnits = { PV: "W/m³", ZRAM: "m", ZRMB: "m", Q: "m³/s", YMOY: "m", ZDV: "m", P: "m", H2: "m", SUBMERGENCE: "%" }; //# sourceMappingURL=cloisons.js.map