Commit 2bd8e7707713f2705b8d421467ea3274d13deeb4

Authored by yuhang
1 parent f48b4c76

优化函数,添加注释

cal_gate.c
... ... @@ -7,14 +7,14 @@
7 7  
8 8  
9 9 typedef enum {
10   - gate_full_open_with_free_flow, /*A*/
11   - gate_full_open_with_submerged_flow, /*B*/
12   - gate_control_with_free_flow, /*C*/
13   - gate_control_with_submerged_flow, /*D*/
14   - gate_full_open_with_free_flow_drop_step, /*E*/
15   - gate_full_open_with_submerged_flow_drop_step, /*F*/
16   - gate_control_with_free_flow_drop_step, /*G*/
17   - gate_control_with_submerged_flow_drop_step /*H*/
  10 + gate_full_open_with_free_flow, /*A 闸门全开自由流*/
  11 + gate_full_open_with_submerged_flow, /*B 闸门全开淹没流*/
  12 + gate_control_with_free_flow, /*C 闸门控制自由流*/
  13 + gate_control_with_submerged_flow, /*D 闸门控制淹没流*/
  14 + gate_full_open_with_free_flow_drop_step, /*E 闸门全开自由流 有跌槛*/
  15 + gate_full_open_with_submerged_flow_drop_step, /*F 闸门全开淹没流 有跌槛*/
  16 + gate_control_with_free_flow_drop_step, /*G 闸门控制自由流 有跌槛*/
  17 + gate_control_with_submerged_flow_drop_step /*H 闸门控制淹没流 有跌槛*/
18 18 }patterns_of_water;
19 19  
20 20 enum {
... ... @@ -23,10 +23,10 @@ enum {
23 23 };
24 24  
25 25 enum{
26   - warped_wingwall=1,
27   - flat_wingwall,
28   - eight_c_wingwall,
29   - parallel_wingwall
  26 + warped_wingwall=1, /*弯曲墙面*/
  27 + flat_wingwall, /*平整墙面*/
  28 + eight_c_wingwall, /*八字墙面*/
  29 + parallel_wingwall /*平行墙面*/
30 30 };
31 31  
32 32 struct A{
... ... @@ -85,9 +85,10 @@ typedef struct total{
85 85  
86 86  
87 87  
88   -
89   -
90   -
  88 +/*
  89 + *几种墙面分别对应的系数
  90 + *
  91 +*/
91 92 coefficient_infor coefficient={.A.m_warped_wingwall=0.325, .A.m_warped_wingwall_ds=0.380, .A.m_flat_wingwall=0.310, .A.m_flat_wingwall_ds=0.365,\
92 93 .A.m_eight_c_wingwall=0.330, .A.m_eight_c_wingwall_ds=0.390, .A.m_parallel_wingwall=0.295, .A.m_parallel_wingwall_ds=0.355,\
93 94 .B.fai_warped_wingwall=0.850,.B.fai_flat_wingwall=0.825, .B.fai_eight_c_wingwall=0.860,.B.fai_parallel_wingwall=0.795,\
... ... @@ -100,10 +101,10 @@ coefficient_infor coefficient={.A.m_warped_wingwall=0.325, .A.m_warped_wingwall
100 101  
101 102  
102 103 /*
103   - *
104   - *
105   - *
106   - *
  104 + *函数名: data_validity_check()
  105 + *参数: *param
  106 + *功能: 检查传入的参数是否是有效参数
  107 + *返回值: 0表示参数是合法的,非0表示不合法
107 108 *
108 109 */
109 110 char data_validity_check(struct param_gate *param)
... ... @@ -136,10 +137,13 @@ char data_validity_check(struct param_gate *param)
136 137 }
137 138  
138 139 /*
139   - *
140   - *
141   - *
142   - *
  140 + *函数名: discrimination_of_flow_pattern()
  141 + *参数: openning_height_of_gate 开闸高度
  142 + * water_depth_front_of_gate 闸前水位
  143 + * water_depth_behind_of_gate 闸后水位
  144 + * drop_step 跌槛
  145 + *功能: 根据以上参数,判断出是那个水流模型
  146 + *返回值: 水流模型
143 147 *
144 148 */
145 149  
... ... @@ -169,12 +173,38 @@ patterns_of_water discrimination_of_flow_pattern(double openning_height_of_gate,
169 173 }
170 174  
171 175  
  176 +struct datas{
  177 + double original_data_front;
  178 + double original_data_after;
  179 + double value;
  180 +};
  181 +
  182 +struct datas table[46]={{0.00,0.05,1.00},{0.05,0.15,0.990},{0.15,0.25,0.980},{0.25,0.35,0.970},{0.35,0.45,0.956},{0.45,0.475,0.947},{0.475,0.525,0.937},{0.525,0.575,0.925},\
  183 + {0.575,0.625,0.907},{0.625,0.675,0.885},{0.675,0.710,0.856},{0.710,0.730,0.843},{0.730,0.750,0.828},{0.750,0.770,0.813},{0.770,0.790,0.800},{0.790,0.805,0.778},\
  184 + {0.805,0.815,0.767},{0.815,0.825,0.755},{0.825,0.835,0.742},{0.835,0.845,0.728},{0.845,0.855,0.713},{0.855,0.865,0.698},{0.865,0.875,0.681},{0.875,0.885,0.662},\
  185 + {0.885,0.895,0.642},{0.895,0.9025,0.621},{0.9025,0.9075,0.608},{0.9075,0.9125,0.595},{0.9125,0.9175,0.580},{0.9175,0.9225,0.565},{0.9225,0.9275,0.549},\
  186 + {0.9275,0.9325,0.532},{0.9325,0.9375,0.514},{0.9375,0.9425,0.484},{0.9425,0.9475,0.473},{0.9475,0.9525,0.450},{0.9525,0.9575,0.427},{0.9575,0.9625,0.403},\
  187 + {0.9625,0.9675,0.375},{0.9675,0.9725,0.344},{0.9725,0.9775,0.318},{0.9775,0.9825,0.267},{0.9825,0.9875,0.225},{0.9875,0.9925,0.175},{0.9925,0.9975,0.115},\
  188 + {0.9975,1.0000,0.000}
  189 +};
  190 +
  191 +double find(double target)
  192 +{
  193 + int i=0;
  194 + for(i=0;i<46;i++)
  195 + {
  196 + if(target>=table[i].original_data_front && target<table[i].original_data_after)
  197 + return table[i].value;
  198 + }
  199 + return 0;
  200 +}
172 201  
173 202 /*
174   - *
175   - *
176   - *
177   - *
  203 + *函数名: get_coefficient_rou()
  204 + *参数: water_depth_front_of_gate
  205 + * water_depth_behind_of_gate
  206 + *功能: 根据闸前闸后水位,获取ρ
  207 + *返回值: ρ的值
178 208 *
179 209 */
180 210 double get_coefficient_rou(double water_depth_front_of_gate,double water_depth_behind_of_gate)
... ... @@ -182,107 +212,19 @@ double get_coefficient_rou(double water_depth_front_of_gate,double water_depth_b
182 212 double s;
183 213  
184 214 s=water_depth_behind_of_gate/water_depth_front_of_gate;
185   -
186   - if(s>=0.00 && s<0.05)
187   - return 1.00;
188   - else if(s>=0.06 && s<0.15)
189   - return 0.990;
190   - else if(s>=0.15 && s<0.25)
191   - return 0.980;
192   - else if(s>=0.25 && s<0.35)
193   - return 0.970;
194   - else if(s>=0.35 && s<0.45)
195   - return 0.956;
196   - else if(s>=0.45 && s<0.475)
197   - return 0.947;
198   - else if(s>=0.475 && s<0.525)
199   - return 0.937;
200   - else if(s>=0.525 && s<0.575)
201   - return 0.925;
202   - else if(s>=0.575 && s<0.625)
203   - return 0.907;
204   - else if(s>=0.625 && s<0.675)
205   - return 0.885;
206   - else if(s>=0.675 && s<0.710)
207   - return 0.856;
208   - else if(s>=0.710 && s<0.730)
209   - return 0.843;
210   - else if(s>=0.730 && s<0.750)
211   - return 0.828;
212   - else if(s>=0.750 && s<0.770)
213   - return 0.813;
214   - else if(s>=0.770 && s<0.790)
215   - return 0.800;
216   - else if(s>=0.790 && s<0.805)
217   - return 0.778;
218   - else if(s>=0.805 && s<0.815)
219   - return 0.767;
220   - else if(s>=0.815 && s<0.825)
221   - return 0.755;
222   - else if(s>=0.825 && s<0.835)
223   - return 0.742;
224   - else if(s>=0.835 && s<0.845)
225   - return 0.728;
226   - else if(s>=0.845 && s<0.855)
227   - return 0.713;
228   - else if(s>=0.855 && s<0.865)
229   - return 0.698;
230   - else if(s>=0.865 && s<0.875)
231   - return 0.681;
232   - else if(s>=0.875 && s<0.885)
233   - return 0.662;
234   - else if(s>=0.885 && s<0.895)
235   - return 0.642;
236   - else if(s>=0.895 && s<0.9025)
237   - return 0.621;
238   - else if(s>=0.9025 && s<0.9075)
239   - return 0.608;
240   - else if(s>=0.9075 && s<0.9125)
241   - return 0.595;
242   - else if(s>=0.9125 && s<0.9175)
243   - return 0.580;
244   - else if(s>=0.9175 && s<0.9225)
245   - return 0.565;
246   - else if(s>=0.9225 && s<0.9275)
247   - return 0.549;
248   - else if(s>=0.9275 && s<0.9325)
249   - return 0.532;
250   - else if(s>=0.9325 && s<0.9375)
251   - return 0.514;
252   - else if(s>=0.9375 && s<0.9425)
253   - return 0.484;
254   - else if(s>=0.9425 && s<0.9475)
255   - return 0.473;
256   - else if(s>=0.9475 && s<0.9525)
257   - return 0.450;
258   - else if(s>=0.9525 && s<0.9575)
259   - return 0.427;
260   - else if(s>=0.9575 && s<0.9625)
261   - return 0.403;
262   - else if(s>=0.9625 && s<0.9675)
263   - return 0.375;
264   - else if(s>=0.9675 && s<0.9725)
265   - return 0.344;
266   - else if(s>=0.9725 && s<0.9775)
267   - return 0.318;
268   - else if(s>=0.9775 && s<0.9825)
269   - return 0.267;
270   - else if(s>=0.9825 && s<0.9875)
271   - return 0.225;
272   - else if(s>=0.9875 && s<0.9925)
273   - return 0.175;
274   - else if(s>=0.9925 && s<0.9975)
275   - return 0.115;
276   - else if(s>=0.9975 && s<1.000)
277   - return 0.000;
  215 + return find(s);
278 216 }
279 217  
280 218  
281 219 /*
282   - *
283   - *
284   - *
285   - *
  220 + *函数名: cal_gate_full_open_with_free_flow()
  221 + *参数: water_depth_front_of_gate 闸前水深
  222 + * water_depth_behind_of_gate 闸后水深
  223 + * gate_width 闸门宽度
  224 + * wingwall 翼墙类型
  225 + * ds 跌槛
  226 + *功能: 根据参数,计算出闸门全开自由流模型下的瞬时流量
  227 + *返回值: 瞬时流量
286 228 *
287 229 */
288 230  
... ... @@ -319,6 +261,17 @@ double cal_gate_full_open_with_free_flow(double water_depth_front_of_gate,double
319 261 return instantaneousFlow;
320 262 }
321 263  
  264 +/*
  265 + *函数名: cal_gate_full_open_with_submerged_flow()
  266 + *参数: water_depth_front_of_gate 闸前水深
  267 + * water_depth_behind_of_gate 闸后水深
  268 + * gate_width 闸门宽度
  269 + * wingwall 翼墙类型
  270 + * ds 跌槛
  271 + *功能: 根据参数,计算出闸门全开淹没流模型下的瞬时流量
  272 + *返回值: 瞬时流量
  273 + *
  274 +*/
322 275 double cal_gate_full_open_with_submerged_flow(double water_depth_front_of_gate,double water_depth_behind_of_gate,double gate_width,int wingwall,int ds)
323 276 {
324 277 double instantaneousFlow;
... ... @@ -356,6 +309,18 @@ double cal_gate_full_open_with_submerged_flow(double water_depth_front_of_gate,d
356 309 return instantaneousFlow;
357 310 }
358 311  
  312 +/*
  313 + *函数名: cal_gate_control_with_free_flow()
  314 + *参数: water_depth_front_of_gate 闸前水深
  315 + * water_depth_behind_of_gate 闸后水深
  316 + * height_of_gate 闸门开启高度
  317 + * gate_width 闸门宽度
  318 + * wingwall 翼墙类型
  319 + * ds 跌槛
  320 + *功能: 根据参数,计算出闸门控制自由流模型下的瞬时流量
  321 + *返回值: 瞬时流量
  322 + *
  323 +*/
359 324 double cal_gate_control_with_free_flow(double water_depth_front_of_gate,double water_depth_behind_of_gate,double height_of_gate,double gate_width,int wingwall,int ds)
360 325 {
361 326 double instantaneousFlow;
... ... @@ -389,6 +354,18 @@ double cal_gate_control_with_free_flow(double water_depth_front_of_gate,double w
389 354 return instantaneousFlow;
390 355 }
391 356  
  357 +/*
  358 + *函数名: cal_gate_control_with_submerged_flow()
  359 + *参数: water_depth_front_of_gate 闸前水深
  360 + * water_depth_behind_of_gate 闸后水深
  361 + * height_of_gate 闸门开启高度
  362 + * gate_width 闸门宽度
  363 + * wingwall 翼墙类型
  364 + * ds 跌槛
  365 + *功能: 根据参数,计算出闸门控制淹没流模型下的瞬时流量
  366 + *返回值: 瞬时流量
  367 + *
  368 +*/
392 369 double cal_gate_control_with_submerged_flow(double water_depth_front_of_gate,double water_depth_behind_of_gate,double height_of_gate,double gate_width,int wingwall,int ds)
393 370 {
394 371 double instantaneousFlow;
... ... @@ -423,59 +400,22 @@ double cal_gate_control_with_submerged_flow(double water_depth_front_of_gate,dou
423 400 }
424 401  
425 402  
426   -/*
427   - *
428   - *
429   - *
430   - *
431   - *
432   -*/
433   -#if 0
434   -double Calculation_of_InstantaneousFlow(double openning_height_of_gate, double water_depth_front_of_gate,double water_depth_behind_of_gate,double gate_width,int wingwall,int drop_step)
435   -{
436   - patterns_of_water get_pattern;
437   - double temp;
438 403  
439   - get_pattern = discrimination_of_flow_pattern(openning_height_of_gate,water_depth_front_of_gate,water_depth_behind_of_gate,drop_step);
440   - switch(get_pattern){
441   - case gate_full_open_with_free_flow:
442   - temp = cal_gate_full_open_with_free_flow(water_depth_front_of_gate,gate_width,wingwall,drop_step);
443   - break;
444   - case gate_full_open_with_submerged_flow:
445   - temp = cal_gate_full_open_with_submerged_flow(water_depth_front_of_gate,water_depth_behind_of_gate,gate_width,wingwall,drop_step);
446   - break;
447   - case gate_control_with_free_flow:
448   - temp = cal_gate_control_with_free_flow(water_depth_front_of_gate,water_depth_behind_of_gate,openning_height_of_gate,gate_width,wingwall,drop_step);
449   - break;
450   - case gate_control_with_submerged_flow:
451   - temp = cal_gate_control_with_submerged_flow(water_depth_front_of_gate,water_depth_behind_of_gate,openning_height_of_gate,gate_width,wingwall,drop_step);
452   - break;
453   - case gate_full_open_with_free_flow_drop_step:
454   - temp = cal_gate_full_open_with_free_flow(water_depth_front_of_gate,gate_width,wingwall,drop_step);
455   - break;
456   - case gate_full_open_with_submerged_flow_drop_step:
457   - temp = cal_gate_full_open_with_submerged_flow(water_depth_front_of_gate,water_depth_behind_of_gate,gate_width,wingwall,drop_step);
458   - break;
459   - case gate_control_with_free_flow_drop_step:
460   - temp = cal_gate_control_with_free_flow(water_depth_front_of_gate,water_depth_behind_of_gate,openning_height_of_gate,gate_width,wingwall,drop_step);
461   - break;
462   - case gate_control_with_submerged_flow_drop_step:
463   - temp = cal_gate_control_with_submerged_flow(water_depth_front_of_gate,water_depth_behind_of_gate,openning_height_of_gate,gate_width,wingwall,drop_step);
464   - break;
465   - }
466   - return temp;
467   -}
468   -#endif
469 404  
470 405  
471 406  
472 407  
473   -//double openning_height_of_gate, double water_depth_front_of_gate,double water_depth_behind_of_gate,double gate_width,int wingwall,int drop_step
  408 +/*
  409 + *函数名: Calculation_of_InstantaneousFlow()
  410 + *参数: *param 指向struct param_gate的指针
  411 + *
  412 + *功能: 根据参数,计算出瞬时流量
  413 + *返回值: 瞬时流量
  414 + *
  415 +*/
474 416 int Calculation_of_InstantaneousFlow(double *value,struct param_gate *param)
475 417 {
476 418 patterns_of_water get_pattern;
477   -
478   - double temp;
479 419  
480 420 if(data_validity_check(param)!=0)
481 421 return -1;
... ... @@ -483,35 +423,34 @@ int Calculation_of_InstantaneousFlow(double *value,struct param_gate *param)
483 423 get_pattern = discrimination_of_flow_pattern(param->openning_height_of_gate,param->water_depth_front_of_gate,param->water_depth_behind_of_gate,param->drop_step);
484 424 switch(get_pattern){
485 425 case gate_full_open_with_free_flow:
486   - temp = cal_gate_full_open_with_free_flow(param->water_depth_front_of_gate,param->gate_width,param->wingwall,param->drop_step);
  426 + *value = cal_gate_full_open_with_free_flow(param->water_depth_front_of_gate,param->gate_width,param->wingwall,param->drop_step);
487 427 break;
488 428 case gate_full_open_with_submerged_flow:
489   - temp = cal_gate_full_open_with_submerged_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,param->gate_width,param->wingwall,param->drop_step);
  429 + *value = cal_gate_full_open_with_submerged_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,param->gate_width,param->wingwall,param->drop_step);
490 430 break;
491 431 case gate_control_with_free_flow:
492   - temp = cal_gate_control_with_free_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,\
  432 + *value = cal_gate_control_with_free_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,\
493 433 param->openning_height_of_gate,param->gate_width,param->wingwall,param->drop_step);
494 434 break;
495 435 case gate_control_with_submerged_flow:
496   - temp = cal_gate_control_with_submerged_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,\
  436 + *value = cal_gate_control_with_submerged_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,\
497 437 param->openning_height_of_gate,param->gate_width,param->wingwall,param->drop_step);
498 438 break;
499 439 case gate_full_open_with_free_flow_drop_step:
500   - temp = cal_gate_full_open_with_free_flow(param->water_depth_front_of_gate,param->gate_width,param->wingwall,param->drop_step);
  440 + *value = cal_gate_full_open_with_free_flow(param->water_depth_front_of_gate,param->gate_width,param->wingwall,param->drop_step);
501 441 break;
502 442 case gate_full_open_with_submerged_flow_drop_step:
503   - temp = cal_gate_full_open_with_submerged_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,param->gate_width,param->wingwall,param->drop_step);
  443 + *value = cal_gate_full_open_with_submerged_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,param->gate_width,param->wingwall,param->drop_step);
504 444 break;
505 445 case gate_control_with_free_flow_drop_step:
506   - temp = cal_gate_control_with_free_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,\
  446 + *value = cal_gate_control_with_free_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,\
507 447 param->openning_height_of_gate,param->gate_width,param->wingwall,param->drop_step);
508 448 break;
509 449 case gate_control_with_submerged_flow_drop_step:
510   - temp = cal_gate_control_with_submerged_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,\
  450 + *value = cal_gate_control_with_submerged_flow(param->water_depth_front_of_gate,param->water_depth_behind_of_gate,\
511 451 param->openning_height_of_gate,param->gate_width,param->wingwall,param->drop_step);
512 452 break;
513 453 }
514   - *value = temp;
515 454 return 0;
516 455 }
517 456  
... ...
cal_gate.h
... ... @@ -12,6 +12,10 @@ struct param_gate{
12 12 double gate_width;
13 13 };
14 14  
15   -int Calculation_of_InstantaneousFlow(double * value,struct param_gate *param);
  15 +
  16 +//double Calculation_of_InstantaneousFlow(double openning_height_of_gate, double water_depth_front_of_gate,double water_depth_behind_of_gate,double gate_width,int wingwall,int drop_step);
  17 +int Calculation_of_InstantaneousFlow(double *value,struct param_gate *param);
  18 +
  19 +
16 20  
17 21 #endif
... ...
test-hdsmf/test.c
... ... @@ -8,7 +8,9 @@
8 8 int main()
9 9 {
10 10 void *param;
11   -
  11 + int results=0;
  12 + double temp;
  13 +
12 14 param=malloc(40);
13 15  
14 16 *((int*)param)=1;
... ... @@ -21,9 +23,9 @@ int main()
21 23  
22 24  
23 25 printf("For Test\r\n");
24   -
  26 + results=Calculation_of_InstantaneousFlow(&temp,param);
25 27  
26   - printf("ins:%f\r\n",Calculation_of_InstantaneousFlow(param));
  28 + printf("exec:%d,ins:%f\r\n",results,temp);
27 29 //printf("ins:%f\r\n",Calculation_of_InstantaneousFlow(5,1.2,0.1,1.2,1,0));
28 30 free(param);
29 31 return 0;
... ...