An error occurred while loading the file. Please try again.
-
Grand Francois authored4e7067c3
/// <reference path="../node_modules/@types/jasmine/index.d.ts" />
import { Result } from "../src/base";
import { ErrorCode } from "../src/util/error";
import { RegimeUniforme } from "../src/regime_uniforme";
import { ParamsSectionPuiss, cSnPuiss } from "../src/section/section_puissance";
import { precDist, equalEpsilon } from "./nubtest";
function check(val1: Result, val2: number, eps: number = precDist) {
expect(equalEpsilon(val1.vCalc, val2, eps)).toBeTruthy("expected " + val2 + ", got " + val1.vCalc);
}
describe('Class RegimeUniforme / section puissance :', () => {
describe('pas de débordement :', () => {
it('k should be 0.635', () => {
let prms = new ParamsSectionPuiss(undefined, // coef
0.8, // tirant d'eau
4, // largeur de berge
40, // Ks=Strickler
1.2, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect, false);
check(ru.Calc("k"), 0.635);
});
it('LargeurBerge should be 3.474', () => {
let prms = new ParamsSectionPuiss(0.5, // coef
0.8, // tirant d'eau
undefined, // largeur de berge
40, // Ks=Strickler
1.2, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect, false);
check(ru.Calc("LargeurBerge"), 3.474);
});
it('Strickler should be 33.774', () => {
let prms = new ParamsSectionPuiss(0.5, // coef
0.8, // tirant d'eau
4, // largeur de berge
undefined, // Ks=Strickler
1.2, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect, false);
check(ru.Calc("Ks", 1e-8), 33.774);
});
it('If should be 0.002', () => {
let prms = new ParamsSectionPuiss(0.5, // coef
0.8, // tirant d'eau
4, // largeur de berge
40, // Ks=Strickler
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
1.2, // Q=Débit
undefined, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect, false);
check(ru.Calc("If", 0, 0.00001), 0.00071, 0.00001);
});
it('Q should be 1.421', () => {
let prms = new ParamsSectionPuiss(0.5, // coef
0.8, // tirant d'eau
4, // largeur de berge
40, // Ks=Strickler
undefined, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect, false);
check(ru.Calc("Q"), 1.421);
});
it('Y should be 0.742', () => {
let paramCnl = new ParamsSectionPuiss(0.5, // coef
undefined, // tirant d'eau
4, // largeur de berge
40, // Ks=Strickler
1.2, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, paramCnl);
let ru = new RegimeUniforme(sect, false);
check(ru.Calc("Y"), 0.742);
});
});
describe('débordement :', () => {
it('k should be undefined', () => {
let prms = new ParamsSectionPuiss(undefined, // coef
2, // tirant d'eau
4, // largeur de berge
40, // Ks=Strickler
1.2, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect, false);
let res: Result = ru.Calc("k");
expect(res.vCalc).toBeUndefined();
expect(res.code).toBe(ErrorCode.ERROR_DICHO_INIT_DOMAIN);
});
it('k should be 0.635', () => {
let prms = new ParamsSectionPuiss(undefined, // coef
2, // tirant d'eau
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
4, // largeur de berge
40, // Ks=Strickler
10, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect, false);
check(ru.Calc("k"), 0.933);
});
it('LargeurBerge should be 0.721', () => {
let prms = new ParamsSectionPuiss(0.5, // coef
2, // tirant d'eau
undefined, // largeur de berge
40, // Ks=Strickler
1.2, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect, false);
check(ru.Calc("LargeurBerge"), 0.721);
});
it('Strickler should be 4.367', () => {
let prms = new ParamsSectionPuiss(0.5, // coef
2, // tirant d'eau
4, // largeur de berge
undefined, // Ks=Strickler
1.2, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect, false);
check(ru.Calc("Ks", 1e-8), 4.367);
});
it('Ks should be undefined', () => {
let prms = new ParamsSectionPuiss(0.5, // coef
2, // tirant d'eau
4, // largeur de berge
undefined, // Ks=Strickler
1.2, // Q=Débit
0.001, // If=pente du fond
precDist, // précision
1 // YB= hauteur de berge
// YCL=Condition limite en cote à l'amont ou à l'aval
);
let sect = new cSnPuiss(undefined, prms);
let ru = new RegimeUniforme(sect);
ru.dichoStartIntervalMaxSteps = 3;
let res: Result = ru.Calc("Ks", 5000000);
expect(res.vCalc).toBeUndefined();
expect(res.code).toBe(ErrorCode.ERROR_DICHO_INITVALUE_HIGH);
});
it('Ks should be undefined', () => {
let prms = new ParamsSectionPuiss(0.5, // coef