UNPKG

jalhyd

Version:

JaLHyd, a Javascript Library for Hydraulics

130 lines 6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StructureGateCem88v = 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"); /** * Equation CEM88V : déversoir / vanne de fond (pelle faible) Cemagref 1988 */ class StructureGateCem88v extends internal_modules_3.RectangularStructure { constructor(prms, dbg = false) { super(prms, dbg); this.setLoiDebit(internal_modules_5.LoiDebit.GateCem88v); this.prms.W.visible = true; this.prms.CdGR.visible = true; } /** * Calcul analytique Q = f(Cd, L, h1, h2, W) CEM88V * @param sVarCalc Variable à calculer (doit être "Q") */ CalcQ() { const data = this.getResultData(); let v; const mu0 = 2 / 3 * this.prms.CdGR.v; let KF; if (data.ENUM_StructureFlowRegime !== internal_modules_4.StructureFlowRegime.FREE) { KF = this.getKF(Math.sqrt(1 - this.prms.h2.v / this.prms.h1.v), this.getAlfa(this.prms.h2.v)); } switch (data.ENUM_StructureFlowMode) { case internal_modules_4.StructureFlowMode.WEIR: const muf = mu0 - 0.08; switch (data.ENUM_StructureFlowRegime) { case internal_modules_4.StructureFlowRegime.FREE: v = muf * this.prms.L.v * internal_modules_4.Structure.R2G * Math.pow(this.prms.h1.v, 1.5); break; case internal_modules_4.StructureFlowRegime.SUBMERGED: // console.log("KF="+KF+" muf="+muf); v = KF * muf * this.prms.L.v * internal_modules_4.Structure.R2G * Math.pow(this.prms.h1.v, 1.5); break; } break; case internal_modules_4.StructureFlowMode.ORIFICE: const mu = mu0 - 0.08 / (this.prms.h1.v / this.W); const mu1 = mu0 - 0.08 / (this.prms.h1.v / this.W - 1); if (data.ENUM_StructureFlowRegime === internal_modules_4.StructureFlowRegime.FREE) { v = this.prms.L.v * internal_modules_4.Structure.R2G * (mu * Math.pow(this.prms.h1.v, 1.5) - mu1 * Math.pow(this.prms.h1.v - this.W, 1.5)); } else { if (data.ENUM_StructureFlowRegime === internal_modules_4.StructureFlowRegime.PARTIAL) { v = this.prms.L.v * internal_modules_4.Structure.R2G * (KF * mu * Math.pow(this.prms.h1.v, 1.5) - mu1 * Math.pow(this.prms.h1.v - this.W, 1.5)); } else { const KF1 = this.getKF(Math.sqrt(1 - (this.prms.h2.v - this.W) / (this.prms.h1.v - this.W)), this.getAlfa(this.prms.h2.v - this.W)); v = this.prms.L.v * internal_modules_4.Structure.R2G * (KF * mu * Math.pow(this.prms.h1.v, 1.5) - KF1 * mu1 * Math.pow(this.prms.h1.v - this.W, 1.5)); } } } this.debug("StructureWeirCem88v.Equation(h1=" + this.prms.h1.v + ",h2=" + this.prms.h2.v + ",W=" + this.W + ") => Q=" + v); return new internal_modules_2.Result(v, this, data); } /** * Give the flow regime for Equation CEM88V : free, partially submerged or submerged flow */ getFlowRegime() { const mode = this.getFlowMode(); // Weir have only two flow regimes: free and submerged flow let alfa; switch (mode) { case internal_modules_4.StructureFlowMode.WEIR: alfa = 0.75; break; case internal_modules_4.StructureFlowMode.ORIFICE: alfa = this.getAlfa(this.prms.h2.v); break; } if (this.prms.h2.v <= alfa * this.prms.h1.v) { this.debug("StructureWeirCem88v.getFlowRegime(h1=" + this.prms.h1.v + ",h2=" + this.prms.h2.v + ",W=" + this.W + ")=FREE"); return internal_modules_4.StructureFlowRegime.FREE; } else { alfa = this.getAlfa(this.prms.h2.v - this.W); if (mode === internal_modules_4.StructureFlowMode.ORIFICE && this.prms.h2.v <= alfa * this.prms.h1.v + (1 - alfa) * this.W) { this.debug("StructureWeirCem88v.getFlowRegime(h1=" + this.prms.h1.v + ",h2=" + this.prms.h2.v + ",W=" + this.W + ")=PARTIAL"); return internal_modules_4.StructureFlowRegime.PARTIAL; } else { this.debug("StructureWeirCem88v.getFlowRegime(h1=" + this.prms.h1.v + ",h2=" + this.prms.h2.v + ",W=" + this.W + ")=SUBMERGED"); return internal_modules_4.StructureFlowRegime.SUBMERGED; } } } /** * paramétrage de la calculabilité des paramètres */ setParametersCalculability() { super.setParametersCalculability(); this.prms.W.calculability = internal_modules_1.ParamCalculability.DICHO; } getAlfa(h2) { let alfa = 1 - 0.14 * (h2) / this.W; alfa = Math.min(Math.max(alfa, 0.4), 0.75); // console.log("alfa=" + alfa); return alfa; } getKF(x, alfa) { const beta1 = -2 * alfa + 2.6; let KF; if (x > 0.2) { KF = 1 - Math.pow(1 - x / Math.sqrt(1 - alfa), beta1); } else { KF = 5 * x * (1 - Math.pow(1 - 0.2 / Math.sqrt(1 - alfa), beta1)); } // console.log("KF(x="+x+")="+KF); return KF; } } exports.StructureGateCem88v = StructureGateCem88v; //# sourceMappingURL=structure_gate_cem88v.js.map