Commit 50ca78fc authored by Grand Francois's avatar Grand Francois
Browse files

ouvrages :

- enum StructureType renommé en LoiDebit
- ajout enum StructureType pour les types d'ouvrage (seuil rectangulaire, vanne circulaire, ...)
- modif de la factory d'ouvrages
- modif des tests unitaires en conséquence
Showing with 70 additions and 24 deletions
+70 -24
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
* Pour exécuter ce code dans le débugger. * Pour exécuter ce code dans le débugger.
* Faire de même avec le fichier test_func.ts * Faire de même avec le fichier test_func.ts
*/ */
// import { describe, expect, it, xdescribe } from "../mock_jasmine"; // import { describe, expect, it, xdescribe, xit } from "../mock_jasmine";
import { ParamCalculability, ParamDefinition, ParamsEquation } from "../../src/param"; import { ParamCalculability, ParamDefinition, ParamsEquation } from "../../src/param";
import { CreateStructure, StructureType } from "../../src/structure/factory_structure"; import { CreateStructure, LoiDebit, StructureType } from "../../src/structure/factory_structure";
import { ParallelStructure } from "../../src/structure/parallel_structure"; import { ParallelStructure } from "../../src/structure/parallel_structure";
import { ParallelStructureParams } from "../../src/structure/parallel_structure_params"; import { ParallelStructureParams } from "../../src/structure/parallel_structure_params";
import { Structure } from "../../src/structure/structure"; import { Structure } from "../../src/structure/structure";
...@@ -48,7 +48,7 @@ function itParallelStructure(sVarCalc: string, rVcalc: number, Q?: number) { ...@@ -48,7 +48,7 @@ function itParallelStructure(sVarCalc: string, rVcalc: number, Q?: number) {
const res: Result = pstruct.Calc(sVarCalc); const res: Result = pstruct.Calc(sVarCalc);
checkResult(res, rVcalc); checkResult(res, rVcalc);
if (Q !== undefined) { if (Q !== undefined) {
for (let i = 1 ; i < res.nbResults ; i++) { for (let i = 1; i < res.nbResults; i++) {
checkResult(res.extractResult(i), Q); checkResult(res.extractResult(i), Q);
} }
} }
...@@ -65,17 +65,22 @@ const ps2: ParallelStructure = new ParallelStructure( ...@@ -65,17 +65,22 @@ const ps2: ParallelStructure = new ParallelStructure(
); );
// Ajout d'une structure de chaque type dans ParallelStructure // Ajout d'une structure de chaque type dans ParallelStructure
for (const i of EnumEx.getValues(StructureType)) { for (const s of EnumEx.getValues(StructureType))
ps2.addStructure(CreateStructure(i)); for (const i of EnumEx.getValues(LoiDebit)) {
} try {
ps2.addStructure(CreateStructure(s, i));
}
catch (e) {
}
}
ps2.prms.Q.v = ps2.Calc("Q").vCalc; ps2.prms.Q.v = ps2.Calc("Q").vCalc;
// tslint:disable-next-line:prefer-for-of // tslint:disable-next-line:prefer-for-of
describe("Class ParallelStructure: ", () => { describe("Class ParallelStructure: ", () => {
for (let i = 0 ; i < ps2.structures.length ; i++) { for (let i = 0; i < ps2.structures.length; i++) {
const st: Structure = ps2.structures[i]; const st: Structure = ps2.structures[i];
describe(`this.structures[${i}]: Structure${StructureType[i]}: `, () => { describe(`this.structures[${i}]: Structure${LoiDebit[i]}: `, () => {
// tslint:disable-next-line:forin // tslint:disable-next-line:forin
for (const prm of st.prms) { for (const prm of st.prms) {
if (prm.calculability === ParamCalculability.DICHO && if (prm.calculability === ParamCalculability.DICHO &&
......
...@@ -8,6 +8,12 @@ import { StructureOrificeSubmerged } from "./structure_orifice_submerged"; ...@@ -8,6 +8,12 @@ import { StructureOrificeSubmerged } from "./structure_orifice_submerged";
import { StructureWeirFree } from "./structure_weir_free"; import { StructureWeirFree } from "./structure_weir_free";
export enum StructureType { export enum StructureType {
VanneRectangulaire, SeuilRectangulaire,
// VanneCirculaire,
// VanneTrapezoidale, SeuilTrapezoidal
}
export enum LoiDebit {
// loi de débit Déversoir / Orifice Cemagref 1988 // loi de débit Déversoir / Orifice Cemagref 1988
Cem88d, Cem88d,
// loi de débit Déversoir / Vanne de fond Cemagref 1988 // loi de débit Déversoir / Vanne de fond Cemagref 1988
...@@ -22,28 +28,63 @@ export enum StructureType { ...@@ -22,28 +28,63 @@ export enum StructureType {
WeirFree WeirFree
} }
export function CreateStructure(structureType: StructureType): Structure { const loiAdmissibles: { [key: string]: LoiDebit[] } = {
const structPrms: RectangularStructureParams = new RectangularStructureParams( "VanneRectangulaire": [LoiDebit.Cem88d, LoiDebit.Cem88v, LoiDebit.WeirFree, LoiDebit.Cunge80],
0, // Q "SeuilRectangulaire": [LoiDebit.Cem88d, LoiDebit.Cem88v, LoiDebit.Cunge80, LoiDebit.OrificeFree, LoiDebit.OrificeSubmerged]
100, // ZDV }
102, // Z1
101.5, // Z2 export function CreateStructure(structureType: StructureType, loiDebit: LoiDebit): Structure {
2, // L
0.6, // Cd
0.5 // W
);
switch (structureType) { switch (structureType) {
case StructureType.Cem88d: case StructureType.VanneRectangulaire:
var structPrms: RectangularStructureParams = new RectangularStructureParams(
0, // Q
100, // ZDV
102, // Z1
101.5, // Z2
2, // L
0.6, // Cd
0.5 // W
);
if (!(loiDebit in loiAdmissibles["VanneRectangulaire"])) {
throw new Error(`la loi de débit ${LoiDebit[loiDebit]} n'est pas admissible pour les vannes rectangulaires`);
}
break;
case StructureType.SeuilRectangulaire:
structPrms = new RectangularStructureParams(
0, // Q
100, // ZDV
102, // Z1
101.5, // Z2
2, // L
0.6 // Cd
);
if (!(loiDebit in loiAdmissibles["SeuilRectangulaire"])) {
throw new Error(`la loi de débit ${LoiDebit[loiDebit]} n'est pas admissible pour les seuils rectangulaires`);
}
break;
default:
throw new Error(`type de structure ${StructureType[structureType]} non pris en charge`);
}
switch (loiDebit) {
case LoiDebit.Cem88d:
return new StructureCem88d(structPrms); return new StructureCem88d(structPrms);
case StructureType.Cem88v:
case LoiDebit.Cem88v:
return new StructureCem88v(structPrms); return new StructureCem88v(structPrms);
case StructureType.Cunge80:
case LoiDebit.Cunge80:
return new StructureCunge80(structPrms); return new StructureCunge80(structPrms);
case StructureType.OrificeFree:
case LoiDebit.OrificeFree:
return new StructureOrificeFree(structPrms); return new StructureOrificeFree(structPrms);
case StructureType.OrificeSubmerged:
case LoiDebit.OrificeSubmerged:
return new StructureOrificeSubmerged(structPrms); return new StructureOrificeSubmerged(structPrms);
case StructureType.WeirFree:
case LoiDebit.WeirFree:
const st: StructureWeirFree = new StructureWeirFree(structPrms); const st: StructureWeirFree = new StructureWeirFree(structPrms);
st.prms.Cd.v = 0.4; st.prms.Cd.v = 0.4;
return st; return st;
......
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