Commit 19f3ba9b authored by Mathias Chouet's avatar Mathias Chouet 🍝
Browse files

Merge branch '206-regime-uniforme-erreur-de-calcul-de-la-vitesse' into 'master'

Resolve "Régime uniforme: Erreur de calcul de la vitesse"

Closes #206

See merge request cassiopee/jalhyd!68
parents bdf67e7a b0d0a420
......@@ -5,75 +5,42 @@ import { SessionSettings } from "../../../src/session_settings";
import { MessageCode } from "../../../src/util/message";
import { precDist } from "../../test_config";
import { checkResult } from "../../test_func";
import { acSection } from "../../../src/open-channel/section/section_type";
function generateRectangularSection(): cSnRectang {
const prms = new ParamsSectionRectang(
0.8, // tirant d'eau
2.5, // largeur de fond
40, // Ks=Strickler
1.5676680, // Q=Débit
0.001, // If=pente du fond
1, // YB=hauteur de berge
);
return new cSnRectang(prms, false);
}
function generateRegimeUniforme(sect: acSection): RegimeUniforme {
return new RegimeUniforme(sect, false);
}
let ruRect1 = generateRegimeUniforme(generateRectangularSection());
describe("Class RegimeUniforme / section rectangulaire :", () => {
describe("pas de débordement : ", () => {
/**
* test de la largeur de fond (= largeur de berge pour le rectangulaire)
*/
it("LargeurBerge should be 2.5", () => {
const prms = new ParamsSectionRectang(0.8, // tirant d'eau
undefined, // largeur de fond
40, // Ks=Strickler
1.568, // Q=Débit
0.001, // If=pente du fond
1, // YB=hauteur de berge
);
SessionSettings.precision = precDist;
const sect = new cSnRectang(prms, false);
const ru = new RegimeUniforme(sect, false);
checkResult(ru.Calc("LargeurBerge", 0), 2.5);
});
it("Strickler should be 30.619", () => {
const prms = new ParamsSectionRectang(0.8, // tirant d'eau
2.5, // largeur de fond
undefined, // Ks=Strickler
1.2, // Q=Débit
0.001, // If=pente du fond
1, // YB=hauteur de berge
);
SessionSettings.precision = precDist;
const sect = new cSnRectang(prms);
const ru = new RegimeUniforme(sect);
checkResult(ru.Calc("Ks", 1e-8), 30.619);
});
it("If should be 0.001", () => {
const prms = new ParamsSectionRectang(0.8, // tirant d'eau
2.5, // largeur de fond
40, // Ks=Strickler
1.568, // Q=Débit
undefined, // If=pente du fond
1, // YB=hauteur de berge
);
SessionSettings.precision = precDist;
const sect = new cSnRectang(prms);
const ru = new RegimeUniforme(sect, false);
// nom variable à calculer, valeur de Ks
checkResult(ru.Calc("If", 0.001), 0.001);
});
it("Q should be 1.568", () => {
const prms = new ParamsSectionRectang(0.8, // tirant d'eau
2.5, // largeur de fond
40, // Ks=Strickler
undefined, // Q=Débit
0.001, // If=pente du fond
1, // YB=hauteur de berge
);
SessionSettings.precision = precDist;
const sect = new cSnRectang(prms);
const ru = new RegimeUniforme(sect);
checkResult(ru.Calc("Q", 0), 1.568);
});
beforeEach(() => {
ruRect1 = generateRegimeUniforme(generateRectangularSection());
SessionSettings.precision = 1E-7;
})
for (const p of ruRect1.calculableParameters) {
it(`${p.symbol} should be ${p.singleValue}`, () => {
const ref: number = p.singleValue;
p.singleValue = undefined;
p.initValue = 1e-8;
ruRect1.calculatedParam = p;
checkResult(ruRect1.CalcSerie(), ref);
expect(ruRect1.result.values.V).toBeCloseTo(0.784, 3);
});
}
it("Q should be 0.731", () => {
const prms = new ParamsSectionRectang(1.1, // tirant d'eau
......
......@@ -43,10 +43,6 @@ export class RegimeUniforme extends SectionNub {
throw new Error("RegimeUniforme.Equation() : invalid variable name " + sVarCalc);
}
// Vitesse moyenne
const V = this.section.CalcSection("V", this.section.prms.Y.v);
r.resultElement.values.V = V.vCalc;
return r;
}
......@@ -58,6 +54,11 @@ export class RegimeUniforme extends SectionNub {
*/
public Calc(sVarCalc?: string, rInit?: number): Result {
const r = super.Calc(sVarCalc, rInit);
// Vitesse moyenne
const V = this.section.CalcSection("V", this.section.prms.Y.v);
r.resultElement.values.V = V.vCalc;
// Est-ce que ça déborde ?
if (this.section.prms.Y.v > this.section.prms.YB.v) {
r.resultElement.log.add(new Message(MessageCode.WARNING_SECTION_OVERFLOW));
......@@ -73,11 +74,12 @@ export class RegimeUniforme extends SectionNub {
}
// tslint:disable-next-line:no-empty
protected setParametersCalculability() {}
protected setParametersCalculability() { }
protected adjustChildParameters(): void {
this.section.prms.Q.calculability = ParamCalculability.EQUATION;
this.section.prms.Y.calculability = ParamCalculability.EQUATION;
this.section.prms.YB.calculability = ParamCalculability.FREE;
}
protected exposeResults() {
......
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