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;
+    }
+}