• Mathias Chouet's avatar
    Fix #69, #182 · adb30c1f
    Mathias Chouet authored
    added jasmine tests (indirect linked parameters, value modes consistency)
    improved session management
    protection against special "Pr" case in many parameter iterations
    fixed many parameters-related bugs in Section / Remous / Strcuture
    adb30c1f
value_ref_variable_extraresult.spec.ts 2.20 KiB
// tslint:disable-next-line:max-line-length
import { CreateStructure, cSnCirc, LoiDebit, ParamsSectionCirc, StructureType, Session } from "../../src";
import { RegimeUniforme } from "../../src/regime_uniforme";
import { Dever, DeverParams } from "../../src/structure/dever";
/**
 * 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 : déversoir / seuil rectangulaire
        // on itère sur la cote amont
        // master Nub
        const prms1 = new DeverParams(0.5, 102, 10, 99);
        prms1.Pr.v = 0.01;
        const nub1 = new Dever(prms1);
        nub1.addStructure(
            CreateStructure(
                StructureType.SeuilRectangulaire,
                LoiDebit.WeirFree,
                nub1,
                false
        // variating Z1
        prms1.Z1.setValues(110, 204, 10);
        nub1.calculatedParam = prms1.Q;
        // slave Nub
        const paramSect = new ParamsSectionCirc(
            2, // diamètre
            0.6613,  // tirant d'eau
            40, //  Ks=Strickler
            1.2,  //  Q=Débit
            0.001, //  If=pente du fond
            1, // YB= hauteur de berge
        const sect = new cSnCirc(paramSect);
        const nub2 = new RegimeUniforme(sect);
        Session.getInstance().clear();
        Session.getInstance().registerNub(nub1);
        Session.getInstance().registerNub(nub2);
        // link and calc
        nub2.calculatedParam = paramSect.Ks;
        nub2.prms.Q.defineReference(nub1, "CvQT");
        nub2.CalcSerie();
        const refVals = [ 113.534, 321.398, 590.624, 909.467, 1271.138,
                          1671.060, 2105.872, 2572.971, 3070.261, 3596.009 ];
        let i = 0;
        for (const v of nub2.getParameter("Q").valueList) {
            expect(v).toBeDefined();
            expect(v).toBeCloseTo(refVals[i]);
            i++;
    });
});