An error occurred while loading the file. Please try again.
-
Grand Francois authored
section paramétrée : ajout des messages dans le journal pour la non convergence des calculs par la méthode de Newton
f875f421
/// <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);
});
});
});