An error occurred while loading the file. Please try again.
-
Guillaume Blanchy authored918e3599
import { CalculatorType } from "../compute-node";
import { Nub } from "../nub";
import { ParamCalculability, ParamDefinition, ParamFamily } from "../param/param-definition";
import { ParamDomainValue } from "../param/param-domain";
import { ParamsEquation } from "../param/params-equation";
import { Message, MessageCode } from "../util/message";
import { Result } from "../util/result";
export class PabChuteParams extends ParamsEquation {
[key: string]: any; // pour pouvoir faire this['methode']();
/** Cote amont Z1 */
private _Z1: ParamDefinition;
/** Cote aval Z2 */
private _Z2: ParamDefinition;
/** Chute DH */
private _DH: ParamDefinition;
constructor(rZ1: number, rZ2: number, rDH: number) {
super();
this._Z1 = new ParamDefinition(this, "Z1", ParamDomainValue.ANY, rZ1, ParamFamily.ELEVATIONS);
this._Z2 = new ParamDefinition(this, "Z2", ParamDomainValue.ANY, rZ2, ParamFamily.ELEVATIONS);
this._DH = new ParamDefinition(this, "DH", ParamDomainValue.POS_NULL, rDH, ParamFamily.TOTALFALLS);
this.addParamDefinition(this._Z1);
this.addParamDefinition(this._Z2);
this.addParamDefinition(this._DH);
}
get Z1() {
return this._Z1;
}
get Z2() {
return this._Z2;
}
get DH() {
return this._DH;
}
}
// tslint:disable-next-line:max-classes-per-file
export class PabChute extends Nub {
constructor(prms: PabChuteParams, dbg: boolean = false) {
super(prms, dbg);
this._calcType = CalculatorType.PabChute;
this._defaultCalculatedParam = prms.DH;
this.resetDefaultCalculatedParam();
}
/**
* paramètres castés au bon type
*/
get prms(): PabChuteParams {
return this._prms as PabChuteParams;
}
public Equation(sVarCalc: string): Result {
let v: number;
if (! [ "Z1", "Z2" ].includes(sVarCalc) && this.prms.Z1.v <= this.prms.Z2.v) {
const m = new Message(MessageCode.ERROR_ELEVATION_ZI_LOWER_THAN_Z2);
m.extraVar.Z1 = this.prms.Z1.v;
m.extraVar.Z2 = this.prms.Z2.v;
return new Result(m);
}
7172737475767778798081828384858687888990919293949596979899100101
switch (sVarCalc) {
case "Z1":
v = this.prms.Z2.v + this.prms.DH.v;
break;
case "Z2":
v = this.prms.Z1.v - this.prms.DH.v;
break;
case "DH":
v = this.prms.Z1.v - this.prms.Z2.v;
break;
default:
throw new Error("PabChute.Equation() : invalid variable name " + sVarCalc);
}
return new Result(v, this);
}
/**
* paramétrage de la calculabilité des paramètres
*/
protected setParametersCalculability() {
this.prms.Z1.calculability = ParamCalculability.EQUATION;
this.prms.Z2.calculability = ParamCalculability.EQUATION;
this.prms.DH.calculability = ParamCalculability.EQUATION;
}
}