diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts index e0d2facdeb37335231d8ea2055d4d8847f926078..682beb1c33c2d061ef60459d6a74396bc2d26b2d 100644 --- a/src/structure/parallel_structure.ts +++ b/src/structure/parallel_structure.ts @@ -82,6 +82,12 @@ export class ParallelStructure extends Nub { 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; } diff --git a/src/util/result.ts b/src/util/result.ts index a1cb07b4cc629a7b0abb449db9af160a71d133a0..2a8746ff93dd1bd21f3e8d83a0a1ace72d1e3974 100644 --- a/src/util/result.ts +++ b/src/util/result.ts @@ -1,4 +1,4 @@ -import { JalhydObject } from "../internal_modules"; +import { JalhydObject, MessageCode } from "../internal_modules"; import { Nub } from "../internal_modules"; import { cLog } from "../internal_modules"; import { Message, MessageSeverity } from "../internal_modules"; @@ -272,6 +272,33 @@ export class Result extends JalhydObject { return true; } + /** + * determine if a message is present in result + * @param code message code to find + * @param recurs if true, search into nub children + */ + public hasMessage(code: MessageCode, recurs: boolean = false): boolean { + if (this._globalLog.contains(code)) { + return true; + } + + for (const r of this._resultElements) { + if (r.log.contains(code)) { + return true; + } + } + + if (recurs && this._sourceNub !== undefined) { + for (const n of this._sourceNub.getChildren()) { + if (n.result.hasMessage(code, true)) { + return true; + } + } + } + + return false; + } + /** * compute log stats (# of error, warning, info) on all result element */ @@ -330,4 +357,13 @@ 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 313e464a111501518922a4641ad1aa1718ac2b2e..f9f054cdf8d395dd856df885c76000ef995d34be 100644 --- a/src/util/resultelement.ts +++ b/src/util/resultelement.ts @@ -192,6 +192,13 @@ export class ResultElement { } } + /** + * Removes all values + */ + public removeValues() { + this._values = {}; + } + public toString(): string { if (this.vCalc !== undefined) { return String(this.vCalc);