An error occurred while loading the file. Please try again.
-
Grand Francois authoreded6ae8c8
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);
}
}