From 35c57c6fc075d4c6a367d772056e1aa880c5414c Mon Sep 17 00:00:00 2001 From: David Dorchies <david.dorchies@irstea.fr> Date: Wed, 20 Jun 2018 21:59:06 +0200 Subject: [PATCH] =?UTF-8?q?#28=20Ajout=20de=20la=20loi=20de=20la=20fente?= =?UTF-8?q?=20noy=C3=A9e=20(Larinier=201992)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/structure/factory_structure.ts | 5 ++- src/structure/structure_props.ts | 6 ++-- .../structure_weir_submerged_larinier.ts | 35 +++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 src/structure/structure_weir_submerged_larinier.ts diff --git a/src/structure/factory_structure.ts b/src/structure/factory_structure.ts index 91200313..5d356b6a 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 d7835ef4..ed63b6b5 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 00000000..f3468ac4 --- /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; + } +} -- GitLab