Calculettes pour l'hydraulique
sectionTrapez.class.php
Aller à la documentation de ce fichier.
1 <?php
2 /**
3  * @file inc_hyd/sectionTrapez.class.php
4  * Gestion des calculs au niveau des Sections
5  */
6 
7 /* Copyright 2009-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 trapézoïdale
30  */
31 class cSnTrapez extends acSection {
32  public $rLargeurFond; /// Largeur au fond
33  public $rFruit; /// Fruit des berges
34 
35 
37  $this->rLargeurFond=(real) $rLargeurFond;
38  $this->rFruit=(real) $rFruit;
39  parent::__construct($oLog,$oP);
40  }
41 
42  protected function Calc_B($bBerge=false) {
43  if(!$bBerge && $this->rY > $this->oP->rYB) {
44  return $this->rLargeurBerge;
45  }
46  else {
47  return $this->rLargeurFond+2*$this->rFruit*$this->rY;
48  }
49  }
50 
51  /**
52  * Calcul du périmètre mouillé
53  * @param $rY Uniquement présent car la méthode parent à cet argument
54  * @return Périmètre mouillé (m)
55  */
56  protected function Calc_P($rY=0) {
57  if($this->rY > $this->oP->rYB) {
58  $P = $this->CalcGeo('P') + parent::Calc_P($this->rY-$this->oP->rYB);
59  }
60  else {
61  $P = $this->rLargeurFond+2*sqrt(1+pow($this->rFruit,2))*$this->rY;
62  }
63  //~ spip_log('Trapez->CalcP(rY='.$this->rY.')='.$P,'hydraulic.'._LOG_DEBUG);
64  return $P;
65  }
66 
67 
68  /**
69  * Calcul de la surface mouillée
70  * @param $rY Uniquement présent car la méthode parent à cet argument
71  * @return Surface mouillée (m2)
72  */
73  protected function Calc_S($rY=0) {
74  if($this->rY > $this->oP->rYB) {
75  $S = $this->CalcGeo('S') + parent::Calc_S($this->rY-$this->oP->rYB);
76  }
77  else {
78  $S = $this->rY*($this->rLargeurFond+$this->rFruit*$this->rY);
79  }
80  //~ spip_log('Trapez->CalcS(rY='.$this->rY.')='.$S,'hydraulic.'._LOG_DEBUG);
81  return $S;
82  }
83 
84  /**
85  * Calcul de dérivée de la surface hydraulique par rapport au tirant d'eau.
86  * @return dS
87  */
88  protected function Calc_dS() {
89  if($this->rY > $this->oP->rYB) {
90  return parent::Calc_dS();
91  }
92  else {
93  return $this->rLargeurFond + 2*$this->rFruit*$this->rY;
94  }
95  }
96 
97  /**
98  * Calcul de dérivée du périmètre hydraulique par rapport au tirant d'eau.
99  * @return dP
100  */
101  protected function Calc_dP() {
102  if($this->rY > $this->oP->rYB) {
103  return parent::Calc_dP();
104  }
105  else {
106  return 2*sqrt(1+$this->rFruit*$this->rFruit);
107  }
108  }
109 
110  /**
111  * Calcul de dérivée de la largeur au miroir par rapport au tirant d'eau.
112  * @return dB
113  */
114  protected function Calc_dB() {
115  if($this->rY > $this->oP->rYB) {
116  return parent::Calc_dB();
117  }
118  else {
119  return 2*$this->rLargeurFond*$this->rFruit;
120  }
121  }
122 
123  /**
124  * Calcul de la distance du centre de gravité de la section à la surface libre
125  * multiplié par la surface hydraulique
126  * @param $rY Uniquement présent car la méthode parent à cet argument
127  * @return S x Yg
128  */
129  protected function Calc_SYg($rY=0) {
130  return ($this->rLargeurFond / 2 + $this->rFruit * $this->rY / 3) * pow($this->rY,2);
131  }
132 
133  /**
134  * Calcul de la dérivée de la distance du centre de gravité de la section à la surface libre
135  * multiplié par la surface hydraulique
136  * @param $rY Uniquement présent car la méthode parent à cet argument
137  * @return S x Yg
138  */
139  protected function Calc_dSYg($rY=0) {
140  $SYg = $this->rFruit / 3 * pow($this->rY,2);
141  $SYg += ($this->rLargeurFond / 2 + $this->rFruit * $this->rY / 3) * 2 * $this->rY;
142  return $SYg;
143  }
144 
145 }
146 ?>
$rFruit
Largeur au fond.
$rY
Pour loguer les messages de debug de cette classe et ses filles.
Calc_dSYg($rY=0)
Calcul de la dérivée de la distance du centre de gravité de la section à la surface libre multiplié p...
CalcGeo($sDonnee)
Calcul des données uniquement dépendantes de la géométrie de la section.
Calc_dB()
Calcul de dérivée de la largeur au miroir par rapport au tirant d&#39;eau.
$rLargeurBerge
Pour l&#39;affichage du journal de calcul.
Calc_dS()
Calcul de dérivée de la surface hydraulique par rapport au tirant d&#39;eau.
__construct(&$oLog, &$oP, $rLargeurFond, $rFruit)
Fruit des berges.
Calc_dP()
Calcul de dérivée du périmètre hydraulique par rapport au tirant d&#39;eau.
Gestion commune pour les différents types de section.
Calculs de la section trapézoïdale.
$oLog
Paramètres du système canal (classe oParam)
Calc_S($rY=0)
Calcul de la surface mouillée.
Calc_SYg($rY=0)
Calcul de la distance du centre de gravité de la section à la surface libre multiplié par la surface ...
Calc_P($rY=0)
Calcul du périmètre mouillé
Calc_B($bBerge=false)
$oP
Tirant d&#39;eau normal.