Failed to fetch fork details. Try again later.
-
Delaigue Olivier authoredc91208c6
Forked from
HYCAR-Hydro / airGR
Source project has a limited visibility.
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);
}
}