• Mathias Chouet's avatar
    refactor nubs · 7b6e5403
    Mathias Chouet authored
    merged cParamsCanal and ParamsSection
    Structures are now only defined by their LoiDebit (no more StructureType)
    Session : fixed serialization of lately registered Nubs
    Sections are now defined by a CalculatorType and a NodeType
    fixed bug in findFirstSingleParameter
    added tests for session serialisation
    7b6e5403
structure_triangular_weir_free.ts 2.08 KiB
import { ParamCalculability } from "../param/param-definition";
import { Result } from "../util/result";
import { Structure, StructureFlowMode, StructureFlowRegime } from "./structure";
import { LoiDebit } from "./structure_props";
import { TriangularStructureParams } from "./structure_triangular_weir_free_params";
export { TriangularStructureParams };
/**
 * Equation classique seuil triangulaire dénoyé
export class StructureTriangularWeirFree extends Structure {
    constructor(prms: TriangularStructureParams, dbg: boolean = false) {
        super(prms, dbg);
        this._loiDebit = LoiDebit.TriangularWeirFree;
    /**
     * paramètres castés au bon type
    get prms(): TriangularStructureParams {
        return this._prms as TriangularStructureParams;
    /**
     * Calcul analytique Q = f(Cd, L, h1, h2, W) seuil dénoyé
     * @param sVarCalc Variable à calculer (doit être "Q")
    public Equation(sVarCalc: string): Result {
        Structure.CheckEquation(sVarCalc);
        const data = this.getResultData();
        const v = this.prms.Cd.v * this.getTanFromDegrees(this.prms.alpha2.v)
            * Math.pow(this.prms.h1.v, 2.5);
        return new Result(v, this, data);
    /**
     * Calcul de l'aire d'écoulement sur le seuil
    public calcA(): number {
        return Math.pow(Math.max(this.prms.h1.v, this.prms.h2.v), 2) * this.getTanFromDegrees(this.prms.alpha2.v);
    protected getFlowRegime() {
        return StructureFlowRegime.FREE;
    protected getFlowMode() {
        return StructureFlowMode.WEIR;
    /**
     * Compute Tangent with angle in degrees
     * @param degrees Angle (degrees)
    protected getTanFromDegrees(degrees: number) {
        return Math.tan(degrees * Math.PI / 180);
    /**
     * paramétrage de la calculabilité des paramètres
    protected setParametersCalculability() {
        super.setParametersCalculability();
        this.prms.alpha2.calculability = ParamCalculability.DICHO;
        this.prms.Cd.calculability = ParamCalculability.DICHO;
7172
}