From dae6be04bd45a21b00ab862088595b59fb6ac9b2 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 22 May 2019 15:55:49 +0200 Subject: [PATCH] CreateStructure: set parent Nub pointer --- src/structure/factory_structure.ts | 53 ++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/src/structure/factory_structure.ts b/src/structure/factory_structure.ts index 48d711d0..164b908a 100644 --- a/src/structure/factory_structure.ts +++ b/src/structure/factory_structure.ts @@ -20,7 +20,9 @@ import { StructureWeirFree } from "./structure_weir_free"; import { StructureWeirSubmergedLarinier } from "./structure_weir_submerged_larinier"; export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructure, - dbg: boolean = false): Structure { + dbg: boolean = false +): Structure { + let ret: Structure; const oCd: {[s: string]: number} = {SeuilR: 0.4, VanneR: 0.6, SeuilT: 1.36}; const rectStructPrms: RectangularStructureParams = new RectangularStructureParams( 0, // Q @@ -47,35 +49,44 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur switch (loiDebit) { case LoiDebit.WeirCem88d: rectStructPrms.Cd.v = oCd.SeuilR; // Cd Cem88d en seuil - return new StructureWeirCem88d(rectStructPrms, dbg); + ret = new StructureWeirCem88d(rectStructPrms, dbg); + break; case LoiDebit.WeirCem88v: rectStructPrms.Cd.v = oCd.VanneR; // Cd Cem88d en seuil - return new StructureWeirCem88v(rectStructPrms, dbg); + ret = new StructureWeirCem88v(rectStructPrms, dbg); + break; case LoiDebit.GateCem88d: rectStructPrms.Cd.v = oCd.SeuilR; // Cd Cem88d en vanne - return new StructureGateCem88d(rectStructPrms, dbg); + ret = new StructureGateCem88d(rectStructPrms, dbg); + break; case LoiDebit.GateCem88v: rectStructPrms.Cd.v = oCd.VanneR; // Cd Cem88d en vanne - return new StructureGateCem88v(rectStructPrms, dbg); + ret = new StructureGateCem88v(rectStructPrms, dbg); + break; case LoiDebit.Cunge80: rectStructPrms.Cd.v = oCd.VanneR; // Cd Cunge80 qu'on soit en seuil ou vanne - return new StructureCunge80(rectStructPrms, dbg); + ret = new StructureCunge80(rectStructPrms, dbg); + break; case LoiDebit.RectangularOrificeFree: - return new StructureRectangularOrificeFree(rectStructPrms, dbg); + ret = new StructureRectangularOrificeFree(rectStructPrms, dbg); + break; case LoiDebit.RectangularOrificeSubmerged: - return new StructureRectangularOrificeSubmerged(rectStructPrms, dbg); + ret = new StructureRectangularOrificeSubmerged(rectStructPrms, dbg); + break; case LoiDebit.WeirFree: - return new StructureWeirFree(rectStructPrms, dbg); + ret = new StructureWeirFree(rectStructPrms, dbg); + break; case LoiDebit.WeirSubmergedLarinier: - return new StructureWeirSubmergedLarinier(rectStructPrms, dbg); + ret = new StructureWeirSubmergedLarinier(rectStructPrms, dbg); + break; case LoiDebit.KIVI: const structKiviPrm: StructureKiviParams = new StructureKiviParams( @@ -87,7 +98,9 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur oCd.SeuilR, // alpha 0.001, // béta 100); // ZRAM : cote Radier Amont - return new StructureKivi(structKiviPrm, dbg); + ret = new StructureKivi(structKiviPrm, dbg); + break; + case LoiDebit.TriangularWeirFree: const structTriangPrms: TriangularStructureParams = new TriangularStructureParams( 0, // Q @@ -98,7 +111,9 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur oCd.SeuilT // Cd pour un seuil triangulaire // W = Infinity par défaut pour un seuil ); - return new StructureTriangularWeir(structTriangPrms, dbg); + ret = new StructureTriangularWeir(structTriangPrms, dbg); + break; + case LoiDebit.TriangularTruncWeirFree: const structTriTruncPrms: TriangularTruncStructureParams = new TriangularTruncStructureParams( 0, // Q @@ -110,9 +125,11 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur oCd.SeuilT // Cd pour un seuil triangulaire // W = Infinity par défaut pour un seuil ); - return new StructureTriangularTruncWeirFree(structTriTruncPrms, dbg); + ret = new StructureTriangularTruncWeirFree(structTriTruncPrms, dbg); + break; + case LoiDebit.OrificeSubmerged: - return new StructureOrificeSubmerged( + ret = new StructureOrificeSubmerged( new StructureOrificeSubmergedParams( 0, // Q 102, // Z1 @@ -122,8 +139,16 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur ), dbg ); + break; default: throw new Error(`type de LoiDebit ${LoiDebit[loiDebit]} non pris en charge`); } + + // set reference to parent + if (parentNub) { + ret.parent = parentNub; + } + + return ret; } -- GitLab