From 0ab3d3a3d259e60362fbf739c566dbbcd852bab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Wed, 2 Nov 2022 15:30:26 +0100 Subject: [PATCH] refactor: PreBarrage: do not store iteration count in constructor refs #330 --- src/prebarrage/pre_barrage.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/prebarrage/pre_barrage.ts b/src/prebarrage/pre_barrage.ts index 49a40966..79719f20 100644 --- a/src/prebarrage/pre_barrage.ts +++ b/src/prebarrage/pre_barrage.ts @@ -15,6 +15,7 @@ export class PreBarrage extends Nub { /** Liste des cloisons amont */ private _cloisonsAmont: PbCloison[]; + // public pour pouvoir le modifier depuis les tests public maxIterations: number; /** Pointeurs vers les bassins dans this.children */ @@ -31,7 +32,6 @@ export class PreBarrage extends Nub { this.setCalculatorType(CalculatorType.PreBarrage); this._cloisonsAmont = []; this._bassins = []; - this.maxIterations = SessionSettings.maxIterations; //this._intlType = "Cloison"; } @@ -359,6 +359,11 @@ export class PreBarrage extends Nub { * @param sVarCalc ignoré: Z1 uniquement */ public Equation(sVarCalc: string): Result { + const maxIter = this.maxIterations !== undefined ? this.maxIterations : SessionSettings.maxIterations; + if (maxIter === undefined || maxIter < 1) { + throw new Error("invalid iteration count"); + } + // Initialisation des cotes sur les bassins et la CL amont if (this.isMeshed()) { for(const b of this.bassins) { @@ -385,13 +390,13 @@ export class PreBarrage extends Nub { } } } - let iter: number = this.maxIterations; + let iter: number = maxIter; let bConverged; let z1stat: IPbBassinZstat; // const tZ1: IPbBassinZstat[] = []; // const tQ: number[][] = []; while (iter-- > 0) { - this._relax = Math.pow(iter / this.maxIterations, 3) * 0.25 + 0.05; + this._relax = Math.pow(iter / maxIter, 3) * 0.25 + 0.05; this.debug(`***** Iteration n°${iter} relax=${this._relax} *****`); bConverged = true; if (this.isMeshed()) { -- GitLab