diff --git a/src/pab/pab.ts b/src/pab/pab.ts index f56c53112d64031583f612effe9caf4d446b8887..c94d982605844100d574efe97f13d0e0933c2979 100644 --- a/src/pab/pab.ts +++ b/src/pab/pab.ts @@ -36,8 +36,17 @@ export class Pab extends Nub { return this._children as PabCloisons[]; } + public Calc(sVarCalc?: string, rInit?: number): Result { + // Update array of PabCloisons with last Models current values + for (const cl of this.children) { + cl.prms.setCurrentValuesFromModel(); + } + return super.Calc(sVarCalc, rInit); + } + /** * Calcul analytique + * @warning Should be called by this.Calc only for parameter initialisations * @param sVarCalc Variable à calculer (Z1 uniquement) */ public Equation(sVarCalc: string): Result { diff --git a/src/pab/pab_cloisons.ts b/src/pab/pab_cloisons.ts index d37d473e68f003250c4b42394b5c31d06d176ecd..2e675cd04b637f6779d20448e7a53556a4c0eaf1 100644 --- a/src/pab/pab_cloisons.ts +++ b/src/pab/pab_cloisons.ts @@ -7,8 +7,11 @@ import { Pab } from "./pab"; class PabCloisonsParams extends CloisonsParams { - /** Débit d'attrait d'un bassin (m3/s) */ - public _QA: ParamDefinition; + /** Débit d'attrait d'un bassin (m3/s) */ + public _QA: ParamDefinition; + + /** Model of cloison on which this pabCloison is based */ + private _modelCloisonsParams: CloisonsParams; /** * Paramètres communs à toutes les équations de structure @@ -21,10 +24,7 @@ class PabCloisonsParams extends CloisonsParams { */ constructor(modelCloisonsParams?: CloisonsParams, rQA: number = 0) { super(1, 1, 1, 1, 1, 1); // overwritten by init() below - this.init(modelCloisonsParams); - - // On garde Pr en propre sur cet objet (Pointage impossible car en lecture seule) - this.addParamDefinition(this.Pr, true); + this.modelCloisonsParams = modelCloisonsParams; // Débit d'attrait this._QA = new ParamDefinition(this, "QA", ParamDomainValue.POS_NULL, rQA, ParamFamily.FLOWS); @@ -35,17 +35,22 @@ class PabCloisonsParams extends CloisonsParams { return this._QA; } - public init(modelCloisonsParams: CloisonsParams) { - // might be undefined when created by a Session - if (modelCloisonsParams) { - this.Q = modelCloisonsParams.Q; - this.Z1 = modelCloisonsParams.Z1; - this.LB = modelCloisonsParams.LB; - this.BB = modelCloisonsParams.BB; - this.PB = modelCloisonsParams.PB; - this.DH = modelCloisonsParams.DH; - // Force la MAJ de la map avec les propriétés pointant vers celles de CloisonsParam - this.addParamDefinitions(modelCloisonsParams); + /** + * Record pointer to the cloison model for future updating of local parameters + */ + set modelCloisonsParams(modelCloisonsParams: CloisonsParams) { + this._modelCloisonsParams = modelCloisonsParams; + } + + /** + * Update Current values and sandobx values of parameter from cloison model + */ + public setCurrentValuesFromModel() { + if (this._modelCloisonsParams !== undefined) { + for (const p of this._modelCloisonsParams) { + this._paramMap[p.symbol].currentValue = p.currentValue; + this._paramMap[p.symbol].v = p.currentValue; + } } } @@ -89,10 +94,10 @@ export class PabCloisons extends Cloisons { } /** - * Sets modelCloisons as the current model, initializing the parameters with it + * Sets modelCloisons as the current model (set pointers to parameters and structure array) */ public initModelCloisons(modelCloisons: Cloisons) { - this.prms.init(modelCloisons ? modelCloisons.prms : undefined); + this.prms.modelCloisonsParams = modelCloisons ? modelCloisons.prms : undefined; this._children = modelCloisons ? modelCloisons.structures : []; }