jalhyd
Version:
JaLHyd, a Javascript Library for Hydraulics
178 lines • 8.52 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreateStructure = void 0;
// Classes générales sur les structures
const internal_modules_1 = require("../internal_modules");
const internal_modules_2 = require("../internal_modules");
// Equations de débit
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");
const internal_modules_12 = require("../internal_modules");
const internal_modules_13 = require("../internal_modules");
const internal_modules_14 = require("../internal_modules");
const internal_modules_15 = require("../internal_modules");
const internal_modules_16 = require("../internal_modules");
const internal_modules_17 = require("../internal_modules");
const internal_modules_18 = require("../internal_modules");
const internal_modules_19 = require("../internal_modules");
const internal_modules_20 = require("../internal_modules");
const internal_modules_21 = require("../internal_modules");
const internal_modules_22 = require("../internal_modules");
const internal_modules_23 = require("../internal_modules");
const internal_modules_24 = require("../internal_modules");
const internal_modules_25 = require("../internal_modules");
const internal_modules_26 = require("../internal_modules");
const internal_modules_27 = require("../internal_modules");
const internal_modules_28 = require("../internal_modules");
function CreateStructure(loiDebit, parentNub, dbg = false, nullParams = false) {
let ret;
const oCd = { SeuilR: 0.4, VanneR: 0.6, VanneRS: 0.8, SeuilT: 1.36 };
const rectStructPrms = new internal_modules_1.RectangularStructureParams(0, // Q
100, // ZDV
102, // Z1
101.5, // Z2
2, // L
oCd.SeuilR, // Cd de seuil par défaut
0.5, // W (pour les seuils réglé automatiquement à infinity par w.visible = false)
nullParams);
const vanLevPrms = new internal_modules_20.StructureVanLevParams(0, 100, 102, 101.5, 0.4, 0.4, 0.5, 99.5, 100.5, undefined, nullParams);
// Cd pour une vanne rectangulaire
rectStructPrms.CdGR.singleValue = oCd.VanneR;
rectStructPrms.CdGRS.singleValue = oCd.VanneRS;
// Instanciation of the equation
switch (loiDebit) {
case internal_modules_2.LoiDebit.WeirCem88d:
ret = new internal_modules_22.StructureWeirCem88d(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.WeirCem88v:
ret = new internal_modules_23.StructureWeirCem88v(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.GateCem88d:
ret = new internal_modules_3.StructureGateCem88d(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.GateCem88v:
ret = new internal_modules_4.StructureGateCem88v(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.GateCunge80:
ret = new internal_modules_5.StructureGateCunge80(rectStructPrms, dbg);
rectStructPrms.CdCunge.singleValue = 1;
break;
case internal_modules_2.LoiDebit.WeirCunge80:
ret = new internal_modules_24.StructureWeirCunge80(rectStructPrms, dbg);
rectStructPrms.CdCunge.singleValue = 1;
break;
case internal_modules_2.LoiDebit.RectangularOrificeFree:
ret = new internal_modules_12.StructureRectangularOrificeFree(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.RectangularOrificeSubmerged:
ret = new internal_modules_13.StructureRectangularOrificeSubmerged(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.WeirFree:
ret = new internal_modules_25.StructureWeirFree(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.WeirSubmergedLarinier:
if (!nullParams) {
rectStructPrms.L.singleValue = 0.2;
rectStructPrms.CdWSL.singleValue = 0.75;
rectStructPrms.ZDV.singleValue = 100;
rectStructPrms.h1.singleValue = 2;
}
ret = new internal_modules_27.StructureWeirSubmergedLarinier(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.WeirSubmerged:
rectStructPrms.CdWS.singleValue = 0.9;
ret = new internal_modules_26.StructureWeirSubmerged(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.KIVI:
const structKiviPrm = new internal_modules_7.StructureKiviParams(8.516, // Q
101.5, // ZDV
103, // Z1
102, // Z2
2, // L
oCd.SeuilR, // alpha
0.001, // béta
100, // ZRAM : cote Radier Amont
nullParams);
if (!nullParams) {
structKiviPrm.h1.singleValue = 1.5;
}
ret = new internal_modules_6.StructureKivi(structKiviPrm, dbg);
break;
case internal_modules_2.LoiDebit.TriangularWeirFree:
case internal_modules_2.LoiDebit.TriangularWeirBroad:
const structTriangPrms = new internal_modules_18.TriangularStructureParams(0, // Q
100, // ZDV
102, // Z1
100, // Z2
45, // Alpha2
oCd.SeuilT, // Cd pour un seuil triangulaire
Infinity, // W = Infinity par défaut pour un seuil
nullParams);
if (loiDebit === internal_modules_2.LoiDebit.TriangularWeirFree) {
ret = new internal_modules_16.StructureTriangularWeir(structTriangPrms, dbg);
}
else {
ret = new internal_modules_17.StructureTriangularWeirBroad(structTriangPrms, dbg);
}
break;
case internal_modules_2.LoiDebit.TriangularTruncWeirFree:
const structTriTruncPrms = new internal_modules_15.TriangularTruncStructureParams(0, // Q
100.1, // ZDV
102, // Z1
100.1, // Z2
0.9, // BT
101, // ZT
oCd.SeuilT, // Cd pour un seuil triangulaire
Infinity, // W = Infinity par défaut pour un seuil
nullParams);
ret = new internal_modules_14.StructureTriangularTruncWeirFree(structTriTruncPrms, dbg);
break;
case internal_modules_2.LoiDebit.OrificeSubmerged:
ret = new internal_modules_10.StructureOrificeSubmerged(new internal_modules_11.StructureOrificeSubmergedParams(0, // Q
102, // Z1
101.5, // Z2
0.7, // Cd
0.1, // S
nullParams), dbg);
break;
case internal_modules_2.LoiDebit.OrificeFree:
ret = new internal_modules_8.StructureOrificeFree(new internal_modules_9.StructureOrificeFreeParams(0, // Q
102, // Z1
101.5, // Z2
0.7, // Cd
0.1, // S
101, // Zco
nullParams), dbg);
break;
case internal_modules_2.LoiDebit.WeirVillemonte:
ret = new internal_modules_28.StructureWeirVillemonte(rectStructPrms, dbg);
break;
case internal_modules_2.LoiDebit.VanLevVillemonte:
ret = new internal_modules_21.StructureVanLevVillemonte(vanLevPrms, dbg);
break;
case internal_modules_2.LoiDebit.VanLevLarinier:
if (!nullParams) {
vanLevPrms.CdWSL.singleValue = 0.75;
}
ret = new internal_modules_19.StructureVanLevLarinier(vanLevPrms, dbg);
break;
default:
throw new Error(`type de LoiDebit ${internal_modules_2.LoiDebit[loiDebit]} non pris en charge`);
}
// set reference to parent
if (parentNub) {
ret.setParent(parentNub);
// Set Structure Type
ret.setPropValue("structureType", internal_modules_2.StructureProperties.findCompatibleStructure(loiDebit, parentNub));
}
return ret;
}
exports.CreateStructure = CreateStructure;
//# sourceMappingURL=factory_structure.js.map