jalhyd
Version:
JaLHyd, a Javascript Library for Hydraulics
130 lines • 6 kB
JavaScript
"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