Calculettes pour l'hydraulique
sectionPuiss.class.php
Aller à la documentation de ce fichier.
1 <?php
2 /**
3  * @file inc_hyd/sectionPuiss.class.php
4  * Gestion des calculs au niveau des Sections
5  */
6 
7 /* Copyright 2012 Dorch <dorch@dorch.fr>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22  * MA 02110-1301, USA.
23  */
24 
25 // Chargement de la classe abstraite acSection et ses classes associées
26 include_spip('hyd_inc/section.class');
27 
28 /**
29  * Calculs de la section parabolique ou "puissance"
30  */
31 class cSnPuiss extends acSection {
32  public $rk; /// Coefficient de forme compris entre 0 et 1
33  //$LargeurBerge => La largeur des berges est déjà présente dans acSection
34  protected $nbDessinPoints=50;
35 
37  $this->rk = (real) $rk;
38  $this->rLargeurBerge = (real) $rLargeurBerge;
39  parent::__construct($oLog,$oP);
40  }
41 
42  /**
43  * Calcul de Lambda (mais on garde la routine Alpha commune avec la section circulaire)
44  * @return Lambda
45  */
46  protected function Calc_Alpha() {
47  return $this->rLargeurBerge/pow($this->oP->rYB,$this->rk);
48  }
49 
50  /**
51  * Calcul de la largeur au miroir.
52  * @return B
53  */
54  protected function Calc_B() {
55  if($this->rY >= $this->oP->rYB) {
56  return $this->rLargeurBerge;
57  }
58  else {
59  return $this->Calc('Alpha')*pow($this->rY,$this->rk);
60  }
61  }
62 
63  /**
64  * Calcul du périmètre mouillé.
65  * @param $rY Uniquement présent car la méthode parent a cet argument
66  * @return B
67  */
68  protected function Calc_P($rY=0) {
69  $n=100; /// Le nombre de partie pour le calcul de l'intégrale
70  $rLambda2 = pow($this->Calc('Alpha'),2);
71  $rP = 0; /// Le périmètre à calculer
72  $rPrevious = 0;
73  for($i=1;$i<=$n;$i++) {
74  $rCurrent = pow($this->rY*$i/$n,$this->rk)/2;
75  $rP += sqrt(pow($n,-2)+$rLambda2*pow($rCurrent-$rPrevious,2));
76  $rPrevious = $rCurrent;
77  }
78  $rP *= 2 ;
79  return $rP;
80  }
81 
82  /**
83  * Calcul de la surface mouillée.
84  * @param $rY Uniquement présent car la méthode parent a cet argument
85  * @return S
86  */
87  protected function Calc_S($rY=0) {
88  return $this->Calc('Alpha')*pow($this->rY, $this->rk+1)/($this->rk+1);
89  }
90 
91 
92  /**
93  * Calcul de dérivée du périmètre hydraulique par rapport au tirant d'eau.
94  * @return dP
95  */
96  protected function Calc_dP() {
97  return 2 * sqrt(1+pow($this->rk*$this->Calc('Alpha')/2,2)*pow($this->rY,2*($this->rk-1)));
98  }
99 
100  /**
101  * Calcul de dérivée de la largeur au miroir par rapport au tirant d'eau.
102  * @return dB
103  */
104  protected function Calc_dB() {
105  return $this->Calc('Alpha')*$this->rk*pow($this->rY,$this->rk-1);
106  }
107 
108  /**
109  * Calcul de la distance du centre de gravité de la section à la surface libre
110  * multiplié par la surface hydraulique
111  * @param $rY Uniquement présent car la méthode parent a cet argument
112  * @return S x Yg
113  */
114  protected function Calc_SYg($rY=0) {
115  return $this->Calc('Alpha')*pow($this->rY, $this->rk+2)/(($this->rk+1)*($this->rk+2));
116  }
117  /**
118  * Calcul de la dérivée distance du centre de gravité de la section à la surface libre
119  * multiplié par la surface hydraulique
120  * @param $rY Uniquement présent car la méthode parent a cet argument
121  * @return S x Yg
122  */
123  protected function Calc_dSYg($rY=0) {
124  $SYg = $this->Calc('dAlpha')*pow($this->rY, $this->rk+2) + $this->Calc('Alpha')*pow($this->rY, $this->rk+1)*($this->rk+2);
125  return $SYg/(($this->rk+1)*($this->rk+2));
126  }
127 }
128 ?>
Calc_Alpha()
Calcul de Lambda (mais on garde la routine Alpha commune avec la section circulaire) ...
$rY
Pour loguer les messages de debug de cette classe et ses filles.
$rLargeurBerge
Pour l&#39;affichage du journal de calcul.
Calc_dP()
Calcul de dérivée du périmètre hydraulique par rapport au tirant d&#39;eau.
Calc_dB()
Calcul de dérivée de la largeur au miroir par rapport au tirant d&#39;eau.
$nbDessinPoints
Coefficient de forme compris entre 0 et 1.
Calc_dSYg($rY=0)
Calcul de la dérivée distance du centre de gravité de la section à la surface libre multiplié par la ...
Gestion commune pour les différents types de section.
Calc_S($rY=0)
Calcul de la surface mouillée.
$oLog
Paramètres du système canal (classe oParam)
Calc_SYg($rY=0)
Calcul de la distance du centre de gravité de la section à la surface libre multiplié par la surface ...
Calc_B()
Calcul de la largeur au miroir.
Calc($sDonnee, $rY=false)
Calcul des données à la section.
__construct(&$oLog, &$oP, $rk, $rLargeurBerge)
Calc_P($rY=0)
Calcul du périmètre mouillé.
$oP
Tirant d&#39;eau normal.
Calculs de la section parabolique ou "puissance".