diff --git a/src/section/section_type.ts b/src/section/section_type.ts index 94256007bf3a5dbf6f704853b7618fa18e29e950..33a1cbee91a0caf82708ca3125aa01b439cf47f0 100644 --- a/src/section/section_type.ts +++ b/src/section/section_type.ts @@ -248,7 +248,11 @@ export abstract class acSection extends Debug { public oP: cParamsCanal; /// Paramètres du système canal (classe oParam) protected oLog: cLog; /// Pour l'affichage du journal de calcul //public LargeurBerge; /// largeur au débordement - protected bSnFermee: boolean = false; /// true si la section est fermée (fente de Preissmann) + + /** + * true si la section est fermée (on considère alors qu'il existe une fente de Preissmann) + */ + protected bSnFermee: boolean = false; /** * Tableau contenant les données dépendantes du tirant d'eau this->rY. @@ -265,7 +269,7 @@ export abstract class acSection extends Debug { * - dB : la dérivée de B par rapport Y */ private arCalc = {}; - protected calcGeo = {}; /// Données ne dépendant pas de la cote de l'eau + protected arCalcGeo = {}; /// Données ne dépendant pas de la cote de l'eau private Y_old; /// Mémorisation du tirant d'eau pour calcul intermédiaire private Calc_old = {}; /// Mémorisation des données hydrauliques pour calcul intermédiaire @@ -283,11 +287,18 @@ export abstract class acSection extends Debug { super(dbg); this.oP = oP; this.oLog = oLog; - this.CalcGeo['B']; - this._v = this.oP.v; + this._v = oP.v; this.v.Y = 0; this.v.LargeurBerge = 0; + + // this.CalcGeo['B']; + // this.arCalcGeo['B']; + // this.CalcGeo('B'); + + // this._v = this.oP.v; + // this.v.Y = 0; + // this.v.LargeurBerge = 0; } get v() { return this._v; } @@ -300,7 +311,7 @@ export abstract class acSection extends Debug { Reset(bGeo = true) { this.arCalc = {}; if (bGeo) { - this.calcGeo = {}; + this.arCalcGeo = {}; } } @@ -327,6 +338,8 @@ export abstract class acSection extends Debug { * @return la donnée calculée */ Calc(sDonnee, rY: number = undefined) { + this.debug("in Calc(" + sDonnee + ', rY=' + rY + ')'); + if (rY != undefined && rY != this.v.Y) { this.v.Y = rY; // On efface toutes les données dépendantes de Y pour forcer le calcul @@ -346,7 +359,7 @@ export abstract class acSection extends Debug { this.arCalc[sDonnee] = this[methode](); } } - //this.debug(sDonnee + ' ' + this.arCalc[sDonnee]); + this.debug('Calc(' + sDonnee + ')=' + this.arCalc[sDonnee]); return this.arCalc[sDonnee]; } @@ -357,40 +370,40 @@ export abstract class acSection extends Debug { * @return la donnée calculée */ CalcGeo(sDonnee) { - this.debug("in CalcGeo"); - if (sDonnee != 'B' && !this.CalcGeo['B']) { + this.debug("in CalcGeo(" + sDonnee + ')'); + if (sDonnee != 'B' && !this.arCalcGeo['B']) { // Si la largeur aux berges n'a pas encore été calculée, on commence par ça this.CalcGeo('B'); } - if (!this.CalcGeo[sDonnee]) { + if (!this.arCalcGeo[sDonnee]) { // La donnée a besoin d'être calculée this.Swap(true); // On mémorise les données hydrauliques en cours this.Reset(false); this.v.Y = this.oP.v.YB; switch (sDonnee) { case 'B': // Largeur aux berges - this.CalcGeo[sDonnee] = this.Calc_B(); - if (this.calcGeo[sDonnee] < this.oP.v.YB / 100) { + this.arCalcGeo[sDonnee] = this.Calc_B(); + if (this.arCalcGeo[sDonnee] < this.oP.v.YB / 100) { // Section fermée this.bSnFermee = true; // On propose une fente de Preissmann égale à 1/100 de la hauteur des berges - this.CalcGeo[sDonnee] = this.oP.v.YB / 100; + this.arCalcGeo[sDonnee] = this.oP.v.YB / 100; } - this.v.LargeurBerge = this.CalcGeo[sDonnee]; + this.v.LargeurBerge = this.arCalcGeo[sDonnee]; break; default: /*var methode = 'Calc_'+sDonnee + '()'; this.CalcGeo[sDonnee] = eval(methode);*/ var methode = 'Calc_' + sDonnee; - this.CalcGeo[sDonnee] = this[methode](); - this.debug("methodecalcgeo " + this[methode]()); + this.arCalcGeo[sDonnee] = this[methode](); + // this.debug("methodecalcgeo " + this[methode]()); } //~ spip_log('CalcGeo('.sDCalcGeonnee.',rY='.this->oP->rYB.')='.this->arCalcGeo[sDonnee],'hydraulic.'._LOG_DEBUG); this.Swap(false); // On restitue les données hydrauliques en cours } - this.debug('calcgeo ' + sDonnee + ' ' + this.CalcGeo[sDonnee]); + this.debug('CalcGeo(' + sDonnee + ')=' + this.arCalcGeo[sDonnee]); - return this.CalcGeo[sDonnee]; + return this.arCalcGeo[sDonnee]; } /** @@ -467,6 +480,7 @@ export abstract class acSection extends Debug { return Infinity; } } + /** * Calcul de dérivée du rayon hydraulique par rapport au tirant d'eau. * @return dR @@ -521,6 +535,7 @@ export abstract class acSection extends Debug { return Infinity; } } + /** * Calcul du nombre de Froude. * @return Le nombre de Froude @@ -533,6 +548,7 @@ export abstract class acSection extends Debug { return Infinity; } } + /** * Calcul de dy/dx */ @@ -558,6 +574,7 @@ export abstract class acSection extends Debug { return Y2; } } + /** * Calcul du point suivant de la courbe de remous par la méthode RK4. * @return Tirant d'eau @@ -606,6 +623,7 @@ export abstract class acSection extends Debug { return Infinity; } } + /** * Calcul de la charge spécifique. * @return Charge spécifique @@ -613,6 +631,7 @@ export abstract class acSection extends Debug { Calc_Hs() { return this.v.Y + Math.pow(this.Calc('V'), 2) / (2 * cParamsCanal.G); } + /** * Calcul de la charge spécifique critique. * @return Charge spécifique critique @@ -625,6 +644,7 @@ export abstract class acSection extends Debug { this.Swap(false); return Hsc; } + /** * Calcul du tirant d'eau critique. * @return tirant d'eau critique @@ -639,6 +659,7 @@ export abstract class acSection extends Debug { this.HautCritique = hautCritique.Newton(this.oP.v.YB); return this.HautCritique; } + /** * Calcul du tirant d'eau normal. * @return tirant d'eau normal @@ -658,6 +679,7 @@ export abstract class acSection extends Debug { } return this.HautNormale; } + /** * Calcul du tirant d'eau fluvial. * @return tirant d'eau fluvial @@ -671,6 +693,7 @@ export abstract class acSection extends Debug { return oHautCorrespondante.Newton(this.Calc('Yc') * 2); } } + /** * Calcul du tirant d'eau torrentiel. * @return tirant d'eau torrentiel @@ -684,6 +707,7 @@ export abstract class acSection extends Debug { return oHautCorrespondante.Newton(this.CalcGeo('Yc') / 2); } } + /** * Calcul du tirant d'eau conjugué. * @return tirant d'eau conjugué @@ -704,6 +728,7 @@ export abstract class acSection extends Debug { } return Yco;*/ // c quoi Yco ? } + /** * Calcul de la contrainte de cisaillement. * @return contrainte de cisaillement @@ -711,6 +736,7 @@ export abstract class acSection extends Debug { Calc_Tau0() { return 1000 * cParamsCanal.G * this.Calc('R') * this.Calc('J'); } + /** * Calcul de la distance du centre de gravité de la section à la surface libre * multiplié par la surface hydraulique @@ -719,6 +745,7 @@ export abstract class acSection extends Debug { Calc_SYg(rY) { return Math.pow(rY, 2) * this.v.LargeurBerge / 2; } + /** * Calcul de la dérivée distance du centre de gravité de la section à la surface libre * multiplié par la surface hydraulique @@ -727,6 +754,7 @@ export abstract class acSection extends Debug { Calc_dSYg(rY) { return rY * this.v.LargeurBerge; } + /** * Calcul de l'impulsion hydraulique. * @return Impulsion hydraulique @@ -734,6 +762,7 @@ export abstract class acSection extends Debug { Calc_Imp() { return 1000 * (this.oP.v.Q * this.Calc('V') + cParamsCanal.G * this.Calc('SYg')); } + /** * Calcul de l'angle Alpha entre la surface libre et le fond pour les sections circulaires. * @return Angle Alpha pour une section circulaire, 0 sinon. @@ -741,6 +770,7 @@ export abstract class acSection extends Debug { Calc_Alpha() { return 0; } + /** * Calcul de la dérivée de l'angle Alpha entre la surface libre et le fond pour les sections circulaires. * @return Dérivée de l'angle Alpha pour une section circulaire, 0 sinon. @@ -748,6 +778,7 @@ export abstract class acSection extends Debug { Calc_dAlpha() { return 0; } + /** * Fournit les coordonnées des points d'une demi section pour le dessin * @return tableau de couples de coordonnées (x,y)