Commit dae6be04 authored by Mathias Chouet's avatar Mathias Chouet :spaghetti:
Browse files

CreateStructure: set parent Nub pointer

Showing with 39 additions and 14 deletions
+39 -14
...@@ -20,7 +20,9 @@ import { StructureWeirFree } from "./structure_weir_free"; ...@@ -20,7 +20,9 @@ import { StructureWeirFree } from "./structure_weir_free";
import { StructureWeirSubmergedLarinier } from "./structure_weir_submerged_larinier"; import { StructureWeirSubmergedLarinier } from "./structure_weir_submerged_larinier";
export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructure, 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 oCd: {[s: string]: number} = {SeuilR: 0.4, VanneR: 0.6, SeuilT: 1.36};
const rectStructPrms: RectangularStructureParams = new RectangularStructureParams( const rectStructPrms: RectangularStructureParams = new RectangularStructureParams(
0, // Q 0, // Q
...@@ -47,35 +49,44 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur ...@@ -47,35 +49,44 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur
switch (loiDebit) { switch (loiDebit) {
case LoiDebit.WeirCem88d: case LoiDebit.WeirCem88d:
rectStructPrms.Cd.v = oCd.SeuilR; // Cd Cem88d en seuil rectStructPrms.Cd.v = oCd.SeuilR; // Cd Cem88d en seuil
return new StructureWeirCem88d(rectStructPrms, dbg); ret = new StructureWeirCem88d(rectStructPrms, dbg);
break;
case LoiDebit.WeirCem88v: case LoiDebit.WeirCem88v:
rectStructPrms.Cd.v = oCd.VanneR; // Cd Cem88d en seuil rectStructPrms.Cd.v = oCd.VanneR; // Cd Cem88d en seuil
return new StructureWeirCem88v(rectStructPrms, dbg); ret = new StructureWeirCem88v(rectStructPrms, dbg);
break;
case LoiDebit.GateCem88d: case LoiDebit.GateCem88d:
rectStructPrms.Cd.v = oCd.SeuilR; // Cd Cem88d en vanne rectStructPrms.Cd.v = oCd.SeuilR; // Cd Cem88d en vanne
return new StructureGateCem88d(rectStructPrms, dbg); ret = new StructureGateCem88d(rectStructPrms, dbg);
break;
case LoiDebit.GateCem88v: case LoiDebit.GateCem88v:
rectStructPrms.Cd.v = oCd.VanneR; // Cd Cem88d en vanne rectStructPrms.Cd.v = oCd.VanneR; // Cd Cem88d en vanne
return new StructureGateCem88v(rectStructPrms, dbg); ret = new StructureGateCem88v(rectStructPrms, dbg);
break;
case LoiDebit.Cunge80: case LoiDebit.Cunge80:
rectStructPrms.Cd.v = oCd.VanneR; // Cd Cunge80 qu'on soit en seuil ou vanne 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: case LoiDebit.RectangularOrificeFree:
return new StructureRectangularOrificeFree(rectStructPrms, dbg); ret = new StructureRectangularOrificeFree(rectStructPrms, dbg);
break;
case LoiDebit.RectangularOrificeSubmerged: case LoiDebit.RectangularOrificeSubmerged:
return new StructureRectangularOrificeSubmerged(rectStructPrms, dbg); ret = new StructureRectangularOrificeSubmerged(rectStructPrms, dbg);
break;
case LoiDebit.WeirFree: case LoiDebit.WeirFree:
return new StructureWeirFree(rectStructPrms, dbg); ret = new StructureWeirFree(rectStructPrms, dbg);
break;
case LoiDebit.WeirSubmergedLarinier: case LoiDebit.WeirSubmergedLarinier:
return new StructureWeirSubmergedLarinier(rectStructPrms, dbg); ret = new StructureWeirSubmergedLarinier(rectStructPrms, dbg);
break;
case LoiDebit.KIVI: case LoiDebit.KIVI:
const structKiviPrm: StructureKiviParams = new StructureKiviParams( const structKiviPrm: StructureKiviParams = new StructureKiviParams(
...@@ -87,7 +98,9 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur ...@@ -87,7 +98,9 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur
oCd.SeuilR, // alpha oCd.SeuilR, // alpha
0.001, // béta 0.001, // béta
100); // ZRAM : cote Radier Amont 100); // ZRAM : cote Radier Amont
return new StructureKivi(structKiviPrm, dbg); ret = new StructureKivi(structKiviPrm, dbg);
break;
case LoiDebit.TriangularWeirFree: case LoiDebit.TriangularWeirFree:
const structTriangPrms: TriangularStructureParams = new TriangularStructureParams( const structTriangPrms: TriangularStructureParams = new TriangularStructureParams(
0, // Q 0, // Q
...@@ -98,7 +111,9 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur ...@@ -98,7 +111,9 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur
oCd.SeuilT // Cd pour un seuil triangulaire oCd.SeuilT // Cd pour un seuil triangulaire
// W = Infinity par défaut pour un seuil // W = Infinity par défaut pour un seuil
); );
return new StructureTriangularWeir(structTriangPrms, dbg); ret = new StructureTriangularWeir(structTriangPrms, dbg);
break;
case LoiDebit.TriangularTruncWeirFree: case LoiDebit.TriangularTruncWeirFree:
const structTriTruncPrms: TriangularTruncStructureParams = new TriangularTruncStructureParams( const structTriTruncPrms: TriangularTruncStructureParams = new TriangularTruncStructureParams(
0, // Q 0, // Q
...@@ -110,9 +125,11 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur ...@@ -110,9 +125,11 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur
oCd.SeuilT // Cd pour un seuil triangulaire oCd.SeuilT // Cd pour un seuil triangulaire
// W = Infinity par défaut pour un seuil // W = Infinity par défaut pour un seuil
); );
return new StructureTriangularTruncWeirFree(structTriTruncPrms, dbg); ret = new StructureTriangularTruncWeirFree(structTriTruncPrms, dbg);
break;
case LoiDebit.OrificeSubmerged: case LoiDebit.OrificeSubmerged:
return new StructureOrificeSubmerged( ret = new StructureOrificeSubmerged(
new StructureOrificeSubmergedParams( new StructureOrificeSubmergedParams(
0, // Q 0, // Q
102, // Z1 102, // Z1
...@@ -122,8 +139,16 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur ...@@ -122,8 +139,16 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur
), ),
dbg dbg
); );
break;
default: default:
throw new Error(`type de LoiDebit ${LoiDebit[loiDebit]} non pris en charge`); throw new Error(`type de LoiDebit ${LoiDebit[loiDebit]} non pris en charge`);
} }
// set reference to parent
if (parentNub) {
ret.parent = parentNub;
}
return ret;
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment