cond_distri.ts 3.46 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 */
    private _Q: ParamDefinition;
    /** Diamètre */
    private _D: ParamDefinition;
    /** Perte de charge */
    private _J: ParamDefinition;
    /** Longueur de la conduite */
    private _Lg: ParamDefinition;
    /** Viscosité dynamique nu */
    private _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);
    get Q() {
        return this._Q;
    get D() {
        return this._D;
    get J() {
        return this._J;
    get Lg() {
        return this._Lg;
    get Nu() {
        return this._Nu;
/**
 * 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;
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
/** * 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) { 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); } }