Commit 88558f11 authored by Mathias Chouet's avatar Mathias Chouet 🍝
Browse files

Merge branch...

Merge branch '220-loi-d-ouvrage-cunge80-mettre-le-coefficient-de-debit-par-defaut-a-1' into 'master'

Resolve "Loi d'ouvrage: Cunge80 mettre le coefficient de débit par défaut à 1"

Closes #221 and #220

See merge request cassiopee/jalhyd!72
parents 6b8ccc21 6469d678
......@@ -39,7 +39,7 @@ describe("iterator : ", () => {
pst.addChild(st);
const symbs = [
"Q", "Z1", "Z2", "CdWR", "CdGR", "CdWSL", "CdWS", "h1", "h2", "L", "Q", "W", "Z1", "Z2", "ZDV"
"Q", "Z1", "Z2", "CdWR", "CdGR", "CdCunge", "CdWSL", "CdWS", "h1", "h2", "L", "Q", "W", "Z1", "Z2", "ZDV"
];
const vals = [1, 2, 3];
checkParams(pst.parameterIterator, symbs, vals);
......
import { CreateStructure, LoiDebit, MessageCode, Session } from "../../src/index";
import { CreateStructure, MessageCode, Session } from "../../src/index";
import { LoiDebit } from "../../src/structure/structure_props";
import { Cloisons } from "../../src/pab/cloisons";
import { CloisonsParams } from "../../src/pab/cloisons_params";
import { RectangularStructureParams } from "../../src/structure/rectangular_structure_params";
......@@ -52,7 +53,7 @@ describe("Class Cloisons: ", () => {
});
describe("testPS", () => {
testParallelStructures(CreateParalleleStructureTest(getEmptyCloisonsTest()));
testParallelStructures(CreateParalleleStructureTest(getEmptyCloisonsTest(), [LoiDebit.GateCunge80]));
});
describe("Exemple Formation Cassiopée 2018-09", () => {
......
......@@ -7,7 +7,7 @@ import { Result } from "../../src/util/result";
import { precDigits } from "../test_config";
import { checkResult } from "../test_func";
export function CreateParalleleStructureTest(parallelStructure: ParallelStructure):
export function CreateParalleleStructureTest(parallelStructure: ParallelStructure, exceptLoiDebit?: LoiDebit[]):
{ps: ParallelStructure, ld: number[]} {
// Ajout d'une structure de chaque type dans ParallelStructure
const loiDebits: number[] = [];
......@@ -16,8 +16,10 @@ export function CreateParalleleStructureTest(parallelStructure: ParallelStructur
const loiAdmStruct = loisAdmissibles[StructureType[s]];
if (loiAdmStruct !== undefined) {
for (const la of loiAdmStruct) {
parallelStructure.addChild(CreateStructure(la, parallelStructure, false));
loiDebits.push(la);
if(exceptLoiDebit === undefined || !exceptLoiDebit.includes(la)) {
parallelStructure.addChild(CreateStructure(la, parallelStructure, false));
loiDebits.push(la);
}
}
}
}
......@@ -190,6 +192,7 @@ export function testParallelStructures(o: { ps: ParallelStructure, ld: number[]
// Cas normal : On teste la valeur calculée
if (ParamCalculability.DICHO === prm.calculability) {
it(`should return ${ref}`, () => {
// console.log(o.ps.serialise());
checkResult(o.ps.CalcSerie(), ref);
/* checkResult(o.ps.Calc({
uid: o.ps.structures[i].uid,
......
......@@ -81,10 +81,12 @@ export function CreateStructure(loiDebit: LoiDebit, parentNub?: ParallelStructur
case LoiDebit.GateCunge80:
ret = new StructureGateCunge80(rectStructPrms, dbg);
rectStructPrms.CdCunge.singleValue = 1;
break;
case LoiDebit.WeirCunge80:
ret = new StructureWeirCunge80(rectStructPrms, dbg);
rectStructPrms.CdCunge.singleValue = 1;
break;
case LoiDebit.RectangularOrificeFree:
......
......@@ -13,6 +13,7 @@ export abstract class RectangularStructure extends Structure {
this.prms.CdWR.visible = false;
this.prms.CdWS.visible = false;
this.prms.CdWSL.visible = false;
this.prms.CdCunge.visible = false;
}
/**
......
......@@ -21,6 +21,9 @@ export class RectangularStructureParams extends StructureParams {
public CdWSL: ParamDefinition;
// tslint:disable-next-line:variable-name
public CdWS: ParamDefinition;
// tslint:disable-next-line:variable-name
public CdCunge: ParamDefinition;
/**
* Constructeur d'une structure rectangulaire
......@@ -45,5 +48,7 @@ export class RectangularStructureParams extends StructureParams {
this.addParamDefinition(this.CdWSL);
this.CdWS = new ParamDefinition(this, "CdWS", domainCd, undefined, rCd);
this.addParamDefinition(this.CdWS);
this.CdCunge = new ParamDefinition(this, "CdCunge", domainCd, undefined, rCd);
this.addParamDefinition(this.CdCunge);
}
}
......@@ -17,7 +17,7 @@ export class StructureGateCunge80 extends RectangularStructure {
this._isZDVcalculable = false;
}
this.prms.W.visible = true;
this.prms.CdGR.visible = true;
this.prms.CdCunge.visible = true;
}
/**
......@@ -32,21 +32,21 @@ export class StructureGateCunge80 extends RectangularStructure {
case StructureFlowRegime.FREE:
if (data.ENUM_StructureFlowMode === StructureFlowMode.WEIR) {
const R32: number = 3 * Math.sqrt(3) / 2;
v = this.prms.CdGR.v * this.prms.L.v * Structure.R2G / R32 * Math.pow(this.prms.h1.v, 1.5);
v = this.prms.CdCunge.v * this.prms.L.v * Structure.R2G / R32 * Math.pow(this.prms.h1.v, 1.5);
this.debug("StructureCunge80.Equation WEIR FREE Q=" + v);
} else {
v = this.prms.CdGR.v * this.prms.L.v * Structure.R2G
v = this.prms.CdCunge.v * this.prms.L.v * Structure.R2G
* this.W * Math.pow(this.prms.h1.v - this.W, 0.5);
this.debug("StructureCunge80.Equation ORIFICE FREE Q=" + v);
}
break;
case StructureFlowRegime.SUBMERGED:
if (data.ENUM_StructureFlowMode === StructureFlowMode.WEIR) {
v = this.prms.CdGR.v * this.prms.L.v * Structure.R2G * this.prms.h2.v
v = this.prms.CdCunge.v * this.prms.L.v * Structure.R2G * this.prms.h2.v
* Math.sqrt(this.prms.h1.v - this.prms.h2.v);
this.debug("StructureCunge80.Equation WEIR SUBMERGED Q=" + v);
} else {
v = this.prms.CdGR.v * this.prms.L.v * Structure.R2G
v = this.prms.CdCunge.v * this.prms.L.v * Structure.R2G
* this.W * Math.sqrt(this.prms.h1.v - this.prms.h2.v);
this.debug("StructureCunge80.Equation ORIFICE SUBMERGED Q=" + v);
}
......@@ -86,5 +86,6 @@ export class StructureGateCunge80 extends RectangularStructure {
protected setParametersCalculability() {
super.setParametersCalculability();
this.prms.W.calculability = ParamCalculability.DICHO;
this.prms.CdCunge.calculability = ParamCalculability.DICHO;
}
}
......@@ -78,7 +78,7 @@ export const loiAdmissiblesCloisons: { [key: string]: LoiDebit[] } = {
LoiDebit.OrificeSubmerged
],
SeuilRectangulaire: [
LoiDebit.WeirSubmergedLarinier, LoiDebit.WeirVillemonte
LoiDebit.WeirSubmergedLarinier, LoiDebit.WeirVillemonte, LoiDebit.WeirCunge80
],
SeuilTriangulaire: [
LoiDebit.TriangularWeirFree, LoiDebit.TriangularWeirBroad
......@@ -86,6 +86,9 @@ export const loiAdmissiblesCloisons: { [key: string]: LoiDebit[] } = {
SeuilTriangulaireTrunc: [
LoiDebit.TriangularTruncWeirFree
],
VanneRectangulaire: [
LoiDebit.GateCunge80
]
};
export const loiAdmissiblesDever: { [key: string]: LoiDebit[] } = {
......@@ -105,7 +108,7 @@ export const loiAdmissiblesCloisonAval: { [key: string]: LoiDebit[] } = {
LoiDebit.OrificeSubmerged
],
SeuilRectangulaire: [
LoiDebit.WeirSubmergedLarinier, LoiDebit.WeirVillemonte
LoiDebit.WeirSubmergedLarinier, LoiDebit.WeirVillemonte, LoiDebit.WeirCunge80
],
VanneLevante: [
LoiDebit.VanLevVillemonte, LoiDebit.VanLevLarinier
......@@ -115,6 +118,9 @@ export const loiAdmissiblesCloisonAval: { [key: string]: LoiDebit[] } = {
],
SeuilTriangulaireTrunc: [
LoiDebit.TriangularTruncWeirFree
],
VanneRectangulaire: [
LoiDebit.GateCunge80
]
};
......
Markdown is supported
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