Forked from HYCAR-Hydro / airGR
Source project has a limited visibility.
pab.ts 2.41 KiB
import { CalculatorType } from "../compute-node";
import { Nub } from "../nub";
import { ParamCalculability } from "../param/param-definition";
import { Result } from "../util/result";
import { PabCloisons } from "./pab_cloisons";
import { PabParams } from "./pab_params";
export { PabParams };
export class Pab extends Nub {
    constructor(prms: PabParams, dbg: boolean = false) {
        super(prms, dbg);
        this._calcType = CalculatorType.Pab;
    /**
     * paramètres castés au bon type
    get prms(): PabParams {
        return this._prms as PabParams;
    /**
     * enfants castés au bon type
    get children(): PabCloisons[] {
        return this._children as PabCloisons[];
    /**
     * Calcul analytique
     * @param sVarCalc Variable à calculer (Z1 uniquement)
    public Equation(sVarCalc: string): Result {
        const r: Result = new Result(0, this);
        let Z: number = this.prms.Z2.v;
        for (const cloison of this.children) {
            cloison.prms.Z2.v = Z;
            cloison.Calc("Z1");
            Z = cloison.prms.Z1.v;
        this.prms.Z1.v = Z;
        return r;
    /**
     * Once session is loaded, run a second pass on all PabCloisons to
     * reinit their target if needed
    public fixPAB(obj: any) {
        if (obj.children && Array.isArray(obj.children)) {
            for (const c of obj.children) {
                if (c.props.calcType === CalculatorType.PabCloisons) { // who knows ?
                    const childUid = c.uid;
                    const targetCloisonsUid = c.props.modeleCloisons;
                    console.log(`==> relinking ${childUid} to ${targetCloisonsUid}`);
                    // find child PabCloisons to relink
                    const pabCloisons = (this.getChild(childUid) as PabCloisons);
                    if (pabCloisons) {
                        pabCloisons.setModel(targetCloisonsUid);
                    } else {
                        console.error("fixPAB : cannot find child PabCloisons");
    /**
717273747576777879
* paramétrage de la calculabilité des paramètres */ protected setParametersCalculability() { this.prms.Z1.calculability = ParamCalculability.EQUATION; this.prms.Z2.calculability = ParamCalculability.DICHO; this.prms.Q.calculability = ParamCalculability.DICHO; } }