cond_distri.ts 3.19 KiB
import { Result } from "./base";
import { ParamDefinition, ParamDomain, ParamDomainValue, ParamCalculability, IParamsEquation } from "./param";
import { Nub } from "./nub";
/**
 * paramètres pour la conduite distributrice
 */
export class ConduiteDistribParams implements IParamsEquation {
    /** Débit */
    Q: ParamDefinition;
    /** Diamètre */
    D: ParamDefinition;
    /** Perte de charge */
    J: ParamDefinition;
    /** Longueur de la conduite */
    Lg: ParamDefinition;
    /** Viscosité dynamique nu */
    Nu: ParamDefinition;
    constructor(rQ: number, rD: number, rJ: number, rLg: number, rNu: number) {
        this.Q = new ParamDefinition('Q', ParamDomainValue.POS, rQ);
        this.D = new ParamDefinition('D', ParamDomainValue.POS, rD);
        this.J = new ParamDefinition('J', ParamDomainValue.POS, rJ);
        this.Lg = new ParamDefinition('Lg', ParamDomainValue.POS, rLg);
        this.Nu = new ParamDefinition('Nu', ParamDomainValue.POS, rNu);
/**
 * classe de calcul sur la conduite distributrice
export class ConduiteDistrib extends Nub {
    constructor(prms: ConduiteDistribParams, dbg: boolean = false) {
        super(prms, dbg);
    /**
     * paramétrage de la calculabilité des paramètres
    protected setParametersCalculability() {
        this.prms.J.calculability = ParamCalculability.EQUATION;
        this.prms.D.calculability = ParamCalculability.EQUATION;
        this.prms.Q.calculability = ParamCalculability.EQUATION;
        this.prms.Lg.calculability = ParamCalculability.EQUATION;
        this.prms.Nu.calculability = ParamCalculability.EQUATION;
    /**
     * paramètres castés au bon type
    get prms(): ConduiteDistribParams {
        return <ConduiteDistribParams>this._prms;
    /**
     * calcul direct des différents paramètres
     * @param sVarCalc nom du paramètre
     * @return valeur calculée
    Equation(sVarCalc: string): Result {
        let res: Result;
        let v: number;
        let K = 0.3164 * Math.pow(4, 1.75) / (5.5 * 9.81 * Math.pow(3.1415, 1.75)); // Constante de la formule
        switch (sVarCalc) {
71727374757677787980818283848586878889909192939495969798
case "J": v = K * Math.pow(this.prms.Nu.v, 0.25) * Math.pow(this.prms.Q.v, 1.75) * this.prms.Lg.v / Math.pow(this.prms.D.v, 4.75); break; case "D": v = Math.pow(this.prms.J.v / (K * Math.pow(this.prms.Nu.v, 0.25) * Math.pow(this.prms.Q.v, 1.75) * this.prms.Lg.v), 1 / 4.75); break; case "Q": v = Math.pow(this.prms.J.v / (K * Math.pow(this.prms.Nu.v, 0.25) * this.prms.Lg.v / Math.pow(this.prms.D.v, 4.75)), 1 / 1.75) break; case "Lg": v = this.prms.J.v / (K * Math.pow(this.prms.Nu.v, 0.25) * Math.pow(this.prms.Q.v, 1.75) / Math.pow(this.prms.D.v, 4.75)); break; case "Nu": v = Math.pow(this.prms.J.v / (K * Math.pow(this.prms.Q.v, 1.75) * this.prms.Lg.v / Math.pow(this.prms.D.v, 4.75)), 1 / 0.25); break; default: throw 'ConduiteDistrib.Equation() : invalid parameter name ' + sVarCalc; } return new Result(v); } }