section_param_rect_conv_newton.spec.ts 4.51 KiB
/// <reference path="../node_modules/@types/jasmine/index.d.ts" />
import { Result } from "../src/base";
import { precDist, equalEpsilon } from "./nubtest";
import { ParamsSectionRectang, cSnRectang } from "../src/section/section_rectang";
import { cLog } from "../src/util/log";
import { MessageCode } from "../src/util/message";
let paramSection: ParamsSectionRectang;
let sect: cSnRectang;
function check(val1: number, val2: number) {
    expect(equalEpsilon(val1, val2)).toBeTruthy("expected " + val2 + ", got " + val1);
describe('Section paramétrée rectangulaire : ', () => {
    beforeEach(() => {
        paramSection = new ParamsSectionRectang(0.8, // tirant d'eau
            2.5, // largeur de fond
            40, //  Ks=Strickler
            10,  //  Q=Débit
            0.001, //  If=pente du fond
            1e-10, // précision
            1 // YB= hauteur de berge
        sect = new cSnRectang(new cLog(), paramSection);
        sect.newtonMaxIter = 5;
    });
    describe('non convergence de la méthode de Newton :', () => {
        it('hauteur critique', () => {
            sect.Calc("Yc");
            expect(sect.log.messages.length).toEqual(1);
            expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE);
        });
        it('hauteur normale', () => {
            sect.Calc("Yn");
            expect(sect.log.messages.length).toEqual(2);
            expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE);
            expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE);
        });
        it('hauteur normale, pente négative', () => {
            sect.prms.If.v = -0.001;
            sect.Calc("Yn");
            expect(sect.log.messages.length).toEqual(1);
            expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_PENTE_NEG_NULLE_HNORMALE_INF);
        });
        it('hauteur fluviale, Y < Yc', () => {
            sect.Calc("Yf");
            expect(sect.log.messages.length).toEqual(3);
            expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE);
            expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE);
            expect(sect.log.messages[2].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HFLU);
        });
        it('hauteur fluviale, Y > Yc', () => {
            sect.prms.Y.v = 2;
            sect.Calc("Yf");
            expect(sect.log.messages.length).toEqual(1);
            expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE);
        });
        it('hauteur torrentielle, Y < Yc', () => {
            sect.Calc("Yt");
            expect(sect.log.messages.length).toEqual(1);
            expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE);
7172737475767778798081828384858687888990919293949596979899100101
}); it('hauteur torrentielle, Y > Yc', () => { sect.prms.Y.v = 2; sect.Calc("Yt"); expect(sect.log.messages.length).toEqual(2); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HTOR); }); it('hauteur conjuguée, Froude < 1', () => { sect.prms.Y.v = 2; sect.Calc("Yco"); console.log(sect.log.toString()); expect(sect.log.messages.length).toEqual(3); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HTOR); expect(sect.log.messages[2].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCONJUG); }); it('hauteur conjuguée, Froude > 1', () => { sect.Calc("Yco"); expect(sect.log.messages.length).toEqual(4); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[2].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HFLU); expect(sect.log.messages[3].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCONJUG); }); }); });