jalhyd
Version:
JaLHyd, a Javascript Library for Hydraulics
93 lines • 3.31 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PbBassin = 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");
class PbBassin extends internal_modules_1.Nub {
constructor(prms, dbg = false) {
super(prms, dbg);
this.setCalculatorType(internal_modules_4.CalculatorType.PbBassin);
this.cloisonsAmont = [];
this.cloisonsAval = [];
this._intlType = "Bassin";
}
/**
* paramètres castés au bon type
*/
get prms() {
return this._prms;
}
Calc(sVarCalc, rInit) {
// if Calc() is called outside of CalcSerie(), _result might not be initialized
if (!this.result) {
this.initNewResultElement();
}
const r = this.result;
r.resultElement.values.Z = this.CalcZ().moy;
r.resultElement.values.Q = this.CalcQ();
r.resultElement.values.YMOY = r.resultElement.values.Z - this.prms.ZF.v;
// Puissance dissipée
let energy = 0; // sum of Energy of upstream walls
for (const w of this.cloisonsAmont) {
energy += w.prms.Q.v * (w.prms.Z1.V - w.prms.Z2.v);
}
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 * energy / r.resultElement.values.YMOY / this.prms.S.v;
return r;
}
Equation(sVarCalc) {
switch (sVarCalc) {
case "Q":
case "Z":
const r = new internal_modules_2.Result();
r.values.Q = this.CalcQ();
r.values.Z = this.CalcZ().moy;
return r;
default:
throw new Error("PbBassin.Equation() : invalid variable name " + sVarCalc);
}
}
/**
* paramétrage de la calculabilité des paramètres
*/
setParametersCalculability() {
this.prms.S.calculability = internal_modules_3.ParamCalculability.FREE;
this.prms.ZF.calculability = internal_modules_3.ParamCalculability.FREE;
}
get parent() {
return super.parent;
}
CalcQ() {
this.Q = 0;
for (const c of this.cloisonsAmont) {
this.Q += Math.max(0, c.prms.Q.v);
}
return this.Q;
}
CalcZ() {
const zStat = this.parent.CalcZ1Cloisons(this.cloisonsAval);
this.Z = zStat.moy;
return zStat;
}
getMinZDV() {
return this.parent.getMinZDV(this.cloisonsAval);
}
/** Returns order of current basin in parent PreBarrage, starting at 1 */
get order() {
return this.parent.findBasinPosition(this.uid) + 1;
}
/**
* Returns a translatable message for basin description, containing order number
*/
get description() {
return new internal_modules_5.Message(internal_modules_5.MessageCode.INFO_PB_BASSIN_DESCRIPTION, {
order: String(this.order)
});
}
}
exports.PbBassin = PbBassin;
//# sourceMappingURL=pb_bassin.js.map