diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts index addfaac739f62ec15a6721555da7c2fe5a441be0..ce283b19bc873f693a2d4a1d4c2a8eb21f285c15 100644 --- a/src/structure/parallel_structure.ts +++ b/src/structure/parallel_structure.ts @@ -86,21 +86,7 @@ export class ParallelStructure extends Nub { this._result.globalLog.insert(new Message(MessageCode.ERROR_STRUCTURE_AU_MOINS_UNE)); return this._result; } - const res = super.CalcSerie(rInit); - - // si des erreurs/warnings sont survenus dans les structures, on les propage - - for (const st of this.structures) { - this.result.globalLog.addLog(st.result.log); - } - - // si une erreur d'ennoiement est survenue dans les structures, on annule les résultats - - if (res.hasMessage(MessageCode.ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN, true)) { - res.removeValues(); - } - - return res; + return super.CalcSerie(rInit); } /** @@ -177,11 +163,6 @@ export class ParallelStructure extends Nub { this.result.globalLog.addLog(r.globalLog); } - // check structures submergence for some discharge laws - for (const st of this.structures) { - st.checkSubmergence(); - } - return this.result; } diff --git a/src/structure/structure.ts b/src/structure/structure.ts index e90938f0d0fa63b84fcbb5db4a71c6f54840ab59..4b9dff89a89785b4ee46a9b03bc87d7ea616088f 100644 --- a/src/structure/structure.ts +++ b/src/structure/structure.ts @@ -103,7 +103,17 @@ export abstract class Structure extends ChildNub { /** * fonction appelée dans Calc() pour vérifier l'ennoiement (cf. classes dérivées) */ - public checkSubmergence() { + public checkSubmergence(res: Result) { + } + + + // si une erreur d'ennoiement est survenue, on annule les résultats + public static filterResultsOnSubmergenceError(res: Result): boolean { + if (res.resultElement.hasMessage(MessageCode.ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN)) { + res.resultElement.removeValues(); + return true; + } + return false; } /** Constante utile : Racine de 2g */ @@ -295,12 +305,9 @@ export abstract class Structure extends ChildNub { } // Calcul normal hors débit nul - return super.Calc(sVarCalc, rInit); - } - - public CalcSerie(rInit?: number, resetDepending: boolean = true): Result { - const res = super.CalcSerie(rInit, resetDepending); - this.checkSubmergence(); + const res = super.Calc(sVarCalc, rInit); + this.checkSubmergence(res); + Structure.filterResultsOnSubmergenceError(res); return res; } diff --git a/src/structure/structure_weir_submerged.ts b/src/structure/structure_weir_submerged.ts index e5ef98b93eda645e7088d5c7c0a3602df3bc2c58..f462873096fb7d6ee68bf68094525ad90c65d984 100644 --- a/src/structure/structure_weir_submerged.ts +++ b/src/structure/structure_weir_submerged.ts @@ -22,8 +22,8 @@ export class StructureWeirSubmerged extends RectangularStructure { /** * vérification que l'ennoiement est supérieur à une valeur donnée */ - public checkSubmergence() { - this.checkSubmergenceMin(0.6); + public checkSubmergence(res: Result) { + this.checkSubmergenceMin(res, 0.6); } public Calc(sVarCalc: string, rInit?: number): Result { diff --git a/src/structure/structure_weir_submerged_larinier.ts b/src/structure/structure_weir_submerged_larinier.ts index ca3843d0aad17b0befdef820deefd557640a8ff3..9e7890f1a2631d8b31f4400c17a2ebd69e561d19 100644 --- a/src/structure/structure_weir_submerged_larinier.ts +++ b/src/structure/structure_weir_submerged_larinier.ts @@ -28,8 +28,8 @@ export class StructureWeirSubmergedLarinier extends RectangularStructure { /** * vérification que l'ennoiement est supérieur à une valeur donnée */ - public checkSubmergence() { - this.checkSubmergenceMin(0.5); + public checkSubmergence(res: Result) { + this.checkSubmergenceMin(res, 0.5); } public Calc(sVarCalc: string, rInit?: number): Result { diff --git a/src/util/result.ts b/src/util/result.ts index 2a8746ff93dd1bd21f3e8d83a0a1ace72d1e3974..8b3c60b249ead501f546cfc9419507f872f1824d 100644 --- a/src/util/result.ts +++ b/src/util/result.ts @@ -357,13 +357,4 @@ export class Result extends JalhydObject { re.removeExtraResults(); } } - - /** - * Removes all values in result elements - */ - public removeValues() { - for (const re of this._resultElements) { - re.removeValues(); - } - } } diff --git a/src/util/resultelement.ts b/src/util/resultelement.ts index f9f054cdf8d395dd856df885c76000ef995d34be..72b4c02d12e7a54f18966f2fa8e3ad84b511cc02 100644 --- a/src/util/resultelement.ts +++ b/src/util/resultelement.ts @@ -1,4 +1,4 @@ -import { cLog } from "../internal_modules"; +import { MessageCode, cLog } from "../internal_modules"; import { Message, MessageSeverity } from "../internal_modules"; import { Result } from "../internal_modules"; @@ -241,6 +241,15 @@ export class ResultElement { return false; } + public hasMessage(code: MessageCode): boolean { + for (const m of this.log.messages) { + if (m.code === code) { + return true; + } + } + return false; + } + /** * compute error, warning, info count on all log messages */