pab_dimension.ts 2.69 KiB
import { Result } from "../util/result";
import { ParamDefinition, ParamDomainValue, ParamCalculability, ParamsEquation, CalculatorType } from "../param";
import { Nub } from "../nub";
export class PabDimensionParams extends ParamsEquation {
    [key: string]: any; // pour pouvoir faire this['methode]();
    /** Longueur L */
    private _L: ParamDefinition;
    /** Largeur W */
    private _W: ParamDefinition;
    /** Tirant d'eau Y */
    private _Y: ParamDefinition;
    /** Volume V */
    private _V: ParamDefinition;
    constructor(rL: number, rW: number, rY: number, rV: number = undefined) {
        super();
        this._L = new ParamDefinition(CalculatorType.PabDimensions, 'L', ParamDomainValue.POS, rL);
        this._W = new ParamDefinition(CalculatorType.PabDimensions, 'W', ParamDomainValue.POS, rW);
        this._Y = new ParamDefinition(CalculatorType.PabDimensions, 'Y', ParamDomainValue.POS, rY);
        this._V = new ParamDefinition(CalculatorType.PabDimensions, 'V', ParamDomainValue.POS, rV);
        this.addParamDefinition(this._L);
        this.addParamDefinition(this._W);
        this.addParamDefinition(this._Y);
        this.addParamDefinition(this._V);
    get L() {
        return this._L;
    get W() {
        return this._W;
    get Y() {
        return this._Y;
    get V() {
        return this._V;
export class PabDimension extends Nub {
    constructor(prms: PabDimensionParams, dbg: boolean = false) {
        super(prms, dbg);
    /**
     * paramètres castés au bon type
    get prms(): PabDimensionParams {
        return <PabDimensionParams>this._prms;
    /**
     * paramétrage de la calculabilité des paramètres
    protected setParametersCalculability() {
        this.prms.L.calculability = ParamCalculability.EQUATION;
        this.prms.W.calculability = ParamCalculability.EQUATION;
        this.prms.Y.calculability = ParamCalculability.EQUATION;
        this.prms.V.calculability = ParamCalculability.EQUATION;
71727374757677787980818283848586878889909192939495969798
Equation(sVarCalc: string): Result { let v: number; switch (sVarCalc) { case "V": v = this.prms.L.v * this.prms.W.v * this.prms.Y.v; break; case "L": v = this.prms.V.v / this.prms.W.v / this.prms.Y.v; break case "W": v = this.prms.V.v / this.prms.L.v / this.prms.Y.v; break; case "Y": v = this.prms.V.v / this.prms.L.v / this.prms.W.v; break; default: throw "PabDimension.Equation() : invalid variable name " + sVarCalc; } return new Result(v); } }