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

#46 : surcharge de Nub.CalcSerie() dans SectionParametree pour traiter le cas...

 #46 : surcharge de Nub.CalcSerie() dans SectionParametree pour traiter le cas où aucun paramètre n'est à varier et stocker les variables calculées dans des résultats complémentaires
Showing with 89 additions and 0 deletions
+89 -0
...@@ -3,6 +3,8 @@ import { acSection } from "./section_type"; ...@@ -3,6 +3,8 @@ import { acSection } from "./section_type";
import { Result } from "../util/result"; import { Result } from "../util/result";
import { ParamDefinition, ParamCalculability } from "../param/param-definition"; import { ParamDefinition, ParamCalculability } from "../param/param-definition";
import { ParamDomain, ParamDomainValue } from "../param/param-domain"; import { ParamDomain, ParamDomainValue } from "../param/param-domain";
import { ParamValueMode } from "../param/param-values";
import { ResultElement } from "../util/resultelement";
/** /**
* Nub sur les sections paramétrées * Nub sur les sections paramétrées
...@@ -140,4 +142,91 @@ export class SectionParametree extends Nub { ...@@ -140,4 +142,91 @@ export class SectionParametree extends Nub {
throw new Error(`SectionParam.Equation() : calcul sur ${sVarCalc} non implémenté`); throw new Error(`SectionParam.Equation() : calcul sur ${sVarCalc} non implémenté`);
} }
} }
private hasVariatedParameter(): boolean {
for (const k in this._prms.map) {
const p: ParamDefinition = this._prms.map[k];
switch (p.valueMode) {
case ParamValueMode.LISTE:
case ParamValueMode.MINMAX:
return true;
}
}
return false;
}
private addExtraResultFromVar(varCalc: string, Y: number, re: ResultElement) {
const r: Result = this._section.Calc(varCalc, Y);
if (r.ok)
re.addExtraResult(varCalc, r.vCalc);
else
re.log.addLog(r.log);
}
public CalcSerie(rPrec: number = 0.001, rInit?: number, sDonnee?: string): Result {
//paramètre à varier ?
if (this.hasVariatedParameter())
return super.CalcSerie(rPrec, rInit, sDonnee);
// sinon, on stocke toutes les valeurs des variables à calcul dans les résultats supplémentaires
const Y = this.getParameter("Y").v; // tirant d'eau original (doit être fourni à acSection.Calc() sous peine d'être modifié par les appels successifs car c'est en même temps un paramètre et une variable temporaire)
const result = new Result();
const re = new ResultElement();
result.addResultElement(re);
// charge spécifique
this.addExtraResultFromVar("Hs", Y, re);
// charge critique
this.addExtraResultFromVar("Hsc", Y, re);
// largeur au miroir
this.addExtraResultFromVar("B", Y, re);
// périmètre hydraulique
this.addExtraResultFromVar("P", Y, re);
// surface hydraulique
this.addExtraResultFromVar("S", Y, re);
// rayon hydraulique
this.addExtraResultFromVar("R", Y, re);
// vitesse moyenne
this.addExtraResultFromVar("V", Y, re);
// nombre de Froude
this.addExtraResultFromVar("Fr", Y, re);
// tirant d'eau critique
this.addExtraResultFromVar("Yc", Y, re);
// tirant d'eau normal
this.addExtraResultFromVar("Yn", Y, re);
// tirant d'eau fluvial
this.addExtraResultFromVar("Yf", Y, re);
// tirant d'eau torrentiel
this.addExtraResultFromVar("Yt", Y, re);
// tirant d'eau conjugué
this.addExtraResultFromVar("Yco", Y, re);
// perte de charge
this.addExtraResultFromVar("J", Y, re);
// Variation linéaire de l'énergie spécifique
this.addExtraResultFromVar("I-J", Y, re);
// impulsion hydraulique
this.addExtraResultFromVar("Imp", Y, re);
// contrainte de cisaillement
this.addExtraResultFromVar("Tau0", Y, re);
return result;
}
} }
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