diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts index e22531ae1800083cad07623f6e869d42146e2a73..2a17ac835199ca571973e200ee0defb87507914d 100644 --- a/src/structure/parallel_structure.ts +++ b/src/structure/parallel_structure.ts @@ -74,7 +74,14 @@ export class ParallelStructure extends Nub { this._result.globalLog.insert(new Message(MessageCode.ERROR_STRUCTURE_AU_MOINS_UNE)); return this._result; } - return super.CalcSerie(rInit); + const res = super.CalcSerie(rInit); + + // check structures submergence for some discharge laws + for (const st of this.structures) { + st.checkSubmergence(); + } + + return res; } /** diff --git a/src/structure/structure.ts b/src/structure/structure.ts index 09e64c33bf7a8e0008784f6f7c6064a6ab8285de..3f5b891a4172ceda543a45e82c5d95b49fb1a4e7 100644 --- a/src/structure/structure.ts +++ b/src/structure/structure.ts @@ -77,6 +77,26 @@ export abstract class Structure extends ChildNub { return 100; } + private checkSubmergenceMin(loi: LoiDebit, min: number) { + if (this.loiDebit === loi) { + const h2h1ratio = this.prms.h2.v / this.prms.h1.v; + if (h2h1ratio < min) { + this._result.resultElement.addMessage(new Message( + MessageCode.ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN, + { + submergencePerc: this.computeSubmergencePercentage().toString(), + min: min + } + )); + } + } + } + + public checkSubmergence() { + this.checkSubmergenceMin(LoiDebit.WeirSubmergedLarinier, 0.5); + this.checkSubmergenceMin(LoiDebit.WeirSubmerged, 0.6); + } + /** Constante utile : Racine de 2g */ protected static readonly R2G: number = Math.sqrt(2 * 9.81); diff --git a/src/util/message.ts b/src/util/message.ts index 7f5e56d009dbb1af5b43d03ce361acccd5354cbb..77253f6882a12db3a022a8d7c5328b55b6956aca 100644 --- a/src/util/message.ts +++ b/src/util/message.ts @@ -512,6 +512,11 @@ export enum MessageCode { */ ERROR_STRUCTURE_Z_EGAUX_Q_NON_NUL, + /** + * Structure : l'ennoiement %submergencePerc% est inférieur à %min% + */ + ERROR_STRUCTURE_SUBMERGENCE_LOWER_THAN, + /** * Il faut au moins un ouvrage dans une structure */