Commit bf090c77 authored by Grand Francois's avatar Grand Francois
Browse files

refactor: check submergence error only in Structure.Calc/CalcSerie

refs #302
Showing with 29 additions and 41 deletions
+29 -41
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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 {
......
......@@ -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 {
......
......@@ -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();
}
}
}
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
*/
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment