lechaptcalmon.ts 4.10 KiB
import { Nub } from "./nub";
import { ParamCalculability, ParamDefinition } from "./param/param-definition";
import { ParamDomainValue } from "./param/param-domain";
import { ParamsEquation } from "./param/params-equation";
import { Result } from "./util/result";
/**
 * paramètres pour le calcul Lechapt et Calmon
 */
export class LechaptCalmonParams extends ParamsEquation {
    /** Débit */
    private _Q: ParamDefinition;
    /** Diamètre */
    private _D: ParamDefinition;
    /** Perte de charge */
    private _J: ParamDefinition;
    /** Longueur de la conduite */
    private _Lg: ParamDefinition;
    /** Paramètre de rugosité L */
    private _L: ParamDefinition;
    /** Paramètre de rugosité M */
    private _M: ParamDefinition;
    /** Paramètre de rugosité N */
    private _N: ParamDefinition;
    constructor(rQ: number, rD: number, rJ: number, rLg: number, rL: number, rM: number, rN: number) {
        super();
        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._L = new ParamDefinition("L", ParamDomainValue.POS, rL);
        this._M = new ParamDefinition("M", ParamDomainValue.POS, rM);
        this._N = new ParamDefinition("N", ParamDomainValue.POS, rN);
        this.addParamDefinition(this._Q);
        this.addParamDefinition(this._D);
        this.addParamDefinition(this._J);
        this.addParamDefinition(this._Lg);
        this.addParamDefinition(this._L);
        this.addParamDefinition(this._M);
        this.addParamDefinition(this._N);
    get Q() {
        return this._Q;
    get D() {
        return this._D;
    get J() {
        return this._J;
    get Lg() {
        return this._Lg;
    get L() {
        return this._L;
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
get M() { return this._M; } get N() { return this._N; } } /** * Calcul des pertes de charge dans un tube à partir des tables de Lechapt et Calmon */ // tslint:disable-next-line:max-classes-per-file export class LechaptCalmon extends Nub { constructor(prms: LechaptCalmonParams, dbg: boolean = false) { super(prms, dbg); } /** * paramètres castés au bon type */ get prms(): LechaptCalmonParams { return this._prms as LechaptCalmonParams; } public Equation(sVarCalc: string): Result { let v: number; switch (sVarCalc) { case "Q": v = Math.pow((((this.prms.J.v * Math.pow(this.prms.D.v, this.prms.N.v)) / this.prms.L.v) * (1000 / this.prms.Lg.v)), 1 / this.prms.M.v); break; case "D": v = Math.pow((((this.prms.L.v * Math.pow(this.prms.Q.v, this.prms.M.v)) / this.prms.J.v) * (this.prms.Lg.v / 1000)), 1 / this.prms.N.v); break; case "J": v = ((this.prms.L.v * Math.pow(this.prms.Q.v, this.prms.M.v)) / Math.pow(this.prms.D.v, this.prms.N.v)) * (this.prms.Lg.v / 1000); break; case "Lg": v = ((this.prms.J.v * Math.pow(this.prms.D.v, this.prms.N.v)) / (this.prms.L.v * Math.pow(this.prms.Q.v, this.prms.M.v))) * 1000; break; default: throw new Error("LechaptCalmon.Equation() : invalid variable name " + sVarCalc); } return new Result(v); } /** * paramétrage de la calculabilité des paramètres */ protected setParametersCalculability() { this.prms.Q.calculability = ParamCalculability.EQUATION; this.prms.D.calculability = ParamCalculability.EQUATION; this.prms.J.calculability = ParamCalculability.EQUATION; this.prms.Lg.calculability = ParamCalculability.EQUATION; this.prms.L.calculability = ParamCalculability.FREE; this.prms.M.calculability = ParamCalculability.FREE; this.prms.N.calculability = ParamCalculability.FREE; } }
141