regime_uniforme_puissance.spec.ts 9.41 KiB
/// <reference path="../node_modules/@types/jasmine/index.d.ts" />
import { Result } from "../src/base";
import { MessageCode } from "../src/util/message";
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
            let sect = new cSnPuiss(undefined, prms);
            let ru = new RegimeUniforme(sect, false);
            check(ru.Calc("k"), 0.635);
        });
        it('LargeurBerge should be 3.473', () => {
            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
            let sect = new cSnPuiss(undefined, prms);
            let ru = new RegimeUniforme(sect, false);
            check(ru.Calc("LargeurBerge"), 3.473);
        });
        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
            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
                1.2,  //  Q=Débit
                undefined, //  If=pente du fond
                precDist, // précision
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
1 // YB= hauteur de berge ); 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 ); 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 ); 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 ); 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(MessageCode.ERROR_DICHO_INIT_DOMAIN); }); it('k should be 0.635', () => { let prms = new ParamsSectionPuiss(undefined, // coef 2, // tirant d'eau 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 );
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
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 ); 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 ); 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 ); 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(MessageCode.ERROR_DICHO_INITVALUE_HIGH); }); 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 ); let sect = new cSnPuiss(undefined, prms); let ru = new RegimeUniforme(sect); ru.dichoStartIntervalMaxSteps = 1;
211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
let res: Result = ru.Calc("Ks", 1e-8); expect(res.vCalc).toBeUndefined(); expect(res.code).toBe(MessageCode.ERROR_DICHO_INITVALUE_LOW); }); it('If should be 0.001', () => { let prms = new ParamsSectionPuiss(0.5, // coef 2, // tirant d'eau 4, // largeur de berge 4.366, // Ks=Strickler 1.2, // Q=Débit undefined, // If=pente du fond precDist, // précision 1 // YB= hauteur de berge ); let sect = new cSnPuiss(undefined, prms); let ru = new RegimeUniforme(sect, false); check(ru.Calc("If"), 0.001); }); it('Q should be 10.993', () => { let prms = new ParamsSectionPuiss(0.5, // coef 2, // 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 ); let sect = new cSnPuiss(undefined, prms); let ru = new RegimeUniforme(sect, false); check(ru.Calc("Q"), 10.993); }); 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 ); let sect = new cSnPuiss(undefined, paramCnl); let ru = new RegimeUniforme(sect, false); check(ru.Calc("Y"), 0.742); }); }); });