Calculettes pour l'hydraulique
form_lechapt_calmon.class.php
Aller à la documentation de ce fichier.
1 <?php
2 include_spip('hyd_inc/formulaire.abstract.class');
3 
5 
6  // Tableau des caractéristiques des champs de saisie
7  public $saisies = array(
8  'fs_materiau' => array(
9  'type_materiau',
10  array(
11  'typeMateriau' => array('choix_materiau','form_lechapt_calmont_materiau',''),
12  'L' => array('L',1.863,'fop'),
13  'M' => array('M',2.,'fop'),
14  'N' => array('N',5.33,'fop')
15  ),
16  'fix'
17  ),
18  'fs_hydraulique' => array(
19  'caract_hydraulique',
20  array(
21  'Q' => array('param_Q', 3., 'fvcop'),
22  'D' => array('param_D', 1.2, 'fvcop'),
23  'J' => array('param_J', 0.6, 'fvcop'),
24  'Lg' => array('param_Lg', 100., 'fvcop')
25  ),
26  'cal'
27  ),
28  'fs_param_calc' => array(
29  'param_calcul',
30  array(
31  'rPrec' => array('precision',0.001,'fop')
32  ),
33  'fix'
34  )
35  );
36 
37  // Définition de la variable à calculer par défaut
38  protected $sVarCal = 'Q';
39 
40  // Définition du nombre de colonnes du formulaire
41  protected $nb_col = 5;
42 
43 
44  /*
45  * Tableau des données pour chaque type de tuyau. Ces valeurs sont associées
46  * aux numéros des options du select (voir page lechapt_calmon.php)
47  */
48  private function saisies_materiau() {
49  $type_materiaux = array(
50 
51  '1' => array(
52  'L' =>1.863,
53  'M' =>2,
54  'N' =>5.33
55  ),
56 
57  '2' => array(
58  'L' =>1.601,
59  'M' =>1.975,
60  'N' =>5.25
61  ),
62 
63  '3' => array(
64  'L' =>1.40,
65  'M' =>1.96,
66  'N' =>5.19
67  ),
68 
69  '4' => array(
70  'L' =>1.16,
71  'M' =>1.93,
72  'N' =>5.11
73  ),
74 
75  '5' => array(
76  'L' =>1.1,
77  'M' =>1.89,
78  'N' =>5.01
79  ),
80 
81  '6' => array(
82  'L' =>1.049,
83  'M' =>1.86,
84  'N' =>4.93
85  ),
86 
87  '7' => array(
88  'L' =>1.01,
89  'M' =>1.84,
90  'N' =>4.88
91  ),
92 
93  '8' => array(
94  'L' =>0.916,
95  'M' =>1.78,
96  'N' =>4.78
97  ),
98 
99  '9' => array(
100  'L' =>0.971,
101  'M' =>1.81,
102  'N' =>4.81
103  ),
104  );
105 
106  return $type_materiaux;
107 
108  }
109 
110  public function charger() {
111  $valeurs = parent::charger();
112  $valeurs = array_merge($valeurs,
113  array(
114  'mes_saisies_materiaux' => $this->saisies_materiau(),
115  'tableau_caract' => array('caract_hydraulique'=>$this->champs_fvc),
116  'typeMateriau' => 1
117  )
118  );
119  return $valeurs;
120  }
121 
122  protected function calculer() {
123  // On transforme les champs du tableau des données du formulaire en variables
124  extract($this->data, EXTR_OVERWRITE|EXTR_REFS);
125  /*
126  * Selon la variable à calculer, on gère les valeurs = à 0 et les valeurs infinies
127  * et on fait le valcul correspondant.
128  */
129  $tDiv0 = array('Q'=>'Lg', 'D'=>'J', 'J'=>'D', 'Lg'=>'Q');
130  $Div0 = $tDiv0[$ValCal];
131 
132  if(${$Div0} == 0 && _request("choix_champs_$Div0") != "var_$Div0"){
133  $tRes[] = 0;
134  }
135  else{
136  $tRes = array(); // Tableau des résultats (ordonnées)
137  $tAbs = array(); // Tableau des abscisses
138  for($i = $min; $i <= $max; $i+= $pas){
139  $tAbs[] = $i;
140  if($i == 0 && _request("choix_champs_$Div0") == "var_$Div0"){
141  $tRes[] = INF;
142  }
143  else{
144  switch($ValCal){
145  case 'Q':
146  $tRes[] = pow(((($J*pow($D, $N))/$L)*(1000/$Lg)), 1/$M);
147  break;
148  case 'D':
149  $tRes[] = pow(((($L*pow($Q, $M))/$J)*($Lg/1000)), 1/$N);
150  break;
151  case 'J':
152  $tRes[] = (($L*pow($Q, $M))/pow($D, $N))*($Lg/1000);
153  break;
154  case 'Lg':
155  $tRes[] = (($J*pow($D, $N))/($L*pow($Q,$M)))*1000;
156  }
157  }
158  }
159  }
160  return array('abs'=>$tAbs,'res'=>$tRes);
161  }
162 }
163 ?>