value_ref_variable_extraresult.spec.ts 2.36 KiB
// tslint:disable-next-line:max-line-length
import { CourbeRemous, CourbeRemousParams, cSnRectang, MethodeResolution, ParamsSectionRectang, Result } from "../../src";
/**
 * IMPORTANT !
 * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine")
 * Pour exécuter ce code dans le débugger.
 * Faire de même avec le fichier test_func.ts
 */
// import { describe, expect, it, xdescribe, xit } from "../mock_jasmine";
describe("référence d'un paramètre à un résultat complémentaire multivalué : ", () => {
    it("test 1", () => {
        // cas de figure :
        // courbe de remous / section rectangulaire, méthode Euler explicite,
        // faible pente, pas de ressaut, Yamont > Yc, Yaval > Yn
        // on itère sur la courbe fluviale
        const prms = new ParamsSectionRectang(undefined, // tirant d'eau
            2.5, // largeur de fond
            40, //  Ks=Strickler
            2, // Q=Débit
            0.001, // If=pente du fond
            0.001, // précision
            1 // YB=hauteur de berge
        const sect = new cSnRectang(prms);
        const prem = new CourbeRemousParams(sect, 0.5, // Yamont = tirant amont
            1, // Yaval = tirant aval
            100,  // Long= Longueur du bief
            5,  // Dx=Pas d'espace
            MethodeResolution.EulerExplicite
        const rem = new CourbeRemous(prem);
        const res: Result = rem.calculRemous(undefined);
        // données de validation : version Typescript (Oct 2017) méthode des trapèzes
        const f = [0.9872500000000014, 0.9872500000000014, 0.9872500000000014,
            0.9872500000000014, 0.9880000000000013, 0.9887500000000012,
            0.9895000000000012, 0.9902500000000011, 0.991000000000001,
            0.9917500000000009, 0.9925000000000008, 0.9932500000000007,
            0.9940000000000007, 0.9947500000000006, 0.9955000000000005,
            0.9962500000000004, 0.9970000000000003, 0.9977500000000002,
            0.9985000000000002, 0.9992500000000001, 1];
        const vs = rem.getLinkableValues("flu");
        expect(Object.keys(vs).length).toEqual(1);
        const vs2 = vs[0].value;
        expect(vs2.name).toEqual("flu");
        let i = 0;
        for (const v of vs2.valuesIterator) {
            expect(f[i]).toBeDefined();
            expect(Math.abs(v - f[i++]) < 0.01).toBeTruthy();
    });
});