diff --git a/src/structure/factory_structure.ts b/src/structure/factory_structure.ts index 912003139efb808efcbcdb37fe04b14a001fe4cc..5d356b6a17cba9befdb5a300dbe2b78d844616b6 100644 --- a/src/structure/factory_structure.ts +++ b/src/structure/factory_structure.ts @@ -12,7 +12,7 @@ import { LoiDebit, StructureProperties, StructureType } from "./structure_props" import { StructureTriangularTruncWeirFree, TriangularTruncStructureParams } from "./structure_triangular_trunc_weir_free"; import { StructureTriangularWeirFree, TriangularStructureParams } from "./structure_triangular_weir_free"; import { StructureWeirFree } from "./structure_weir_free"; - +import { StructureWeirSubmergedLarinier } from "./structure_weir_submerged_larinier"; export function CreateStructure(structureType: StructureType, loiDebit: LoiDebit, dbg: boolean = false): Structure { const oCd: {[s: string]: number} = {SeuilR: 0.4, VanneR: 0.6, SeuilT: 1.36}; @@ -71,6 +71,9 @@ export function CreateStructure(structureType: StructureType, loiDebit: LoiDebit case LoiDebit.WeirFree: return new StructureWeirFree(rectStructPrms, dbg); + case LoiDebit.WeirSubmergedLarinier: + return new StructureWeirSubmergedLarinier(rectStructPrms, dbg); + case LoiDebit.KIVI: const structKiviPrm: StructureKiviParams = new StructureKiviParams( 8.516, // Q diff --git a/src/structure/structure_props.ts b/src/structure/structure_props.ts index d7835ef44d4fed4e57e5f6bacc58b0d644eb3e78..ed63b6b506174d198a10b34226e94458cf7ccb80 100644 --- a/src/structure/structure_props.ts +++ b/src/structure/structure_props.ts @@ -22,13 +22,15 @@ export enum LoiDebit { // Loi de débit seuil triangulaire dénoyé TriangularWeirFree, // Loi de débit seuil triangulaire tronqué - TriangularTruncWeirFree + TriangularTruncWeirFree, + // Loi de débit seuil noyé (Larinier 1992) + WeirSubmergedLarinier } export const loiAdmissibles: { [key: string]: LoiDebit[] } = { SeuilRectangulaire: [ LoiDebit.Cem88d, LoiDebit.Cem88v, LoiDebit.Cunge80, LoiDebit.WeirFree, - LoiDebit.KIVI + LoiDebit.KIVI, LoiDebit.WeirSubmergedLarinier ], SeuilTriangulaire: [ LoiDebit.TriangularWeirFree diff --git a/src/structure/structure_weir_submerged_larinier.ts b/src/structure/structure_weir_submerged_larinier.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3468ac4fbeff4041c132ac789d61c267ce11b98 --- /dev/null +++ b/src/structure/structure_weir_submerged_larinier.ts @@ -0,0 +1,35 @@ +import { Result } from "../util/result"; +import { RectangularStructure } from "./rectangular_structure"; +import { RectangularStructureParams } from "./rectangular_structure_params"; +import { Structure, StructureFlowMode, StructureFlowRegime } from "./structure"; + +export { RectangularStructureParams }; + +/** + * Equation de la fente noyé + * d'après Larinier, M., Travade, F., Porcher, J.-P., Gosset, C., 1992. + * Passes à poissons : expertise et conception des ouvrages de franchissement + */ +export class StructureWeirSubmergedLarinier extends RectangularStructure { + /** + * Calcul analytique Q = f(Cd, L, h1, h2, W) seuil dénoyé + * @param sVarCalc Variable à calculer (doit être "Q") + */ + public Equation(sVarCalc: string): Result { + Structure.CheckEquation(sVarCalc); + const data = this.getResultData(); + + const v = this.prms.Cd.v * this.prms.L.v * Structure.R2G + * this.prms.h1.v * Math.sqrt(this.prms.h1.v - this.prms.h2.v); + + return new Result(v, data); + } + + protected getFlowRegime() { + return StructureFlowRegime.SUBMERGED; + } + + protected getFlowMode() { + return StructureFlowMode.WEIR; + } +}