Posted to tcl by arjen at Wed Feb 25 10:08:06 GMT 2009view raw

  1. # tidehavl_ns1.tcl --
  2. # Tweede schets: Haringvliet, niet sluiten, type 1 en 2
  3. #
  4. package require Plotchart
  5.  
  6.  
  7. # computeStorm --
  8. # Bereken een redelijk (wel hoekig) verloop voor de stormopzet:
  9. #
  10. # t < 30: 0
  11. # 30 < t < 38: lineair oplopend naar 1.5
  12. # 38 < t < 44: 1
  13. # 50 < t < 60: lineair aflopend naar 0
  14. #
  15. proc computeStorm {t} {
  16. set surge1 [expr {1.5*($t-38)/8.0}]
  17. set surge2 [expr {1.5*(60-$t)/10.0}]
  18.  
  19. set surge [expr {min($surge1, $surge2, 1.5)}]
  20. set surge [expr {max($surge, 0.0)}]
  21.  
  22. return $surge
  23. }
  24.  
  25. # main --
  26. #
  27. pack [canvas .c -bg white -width 500 -height 150] \
  28. [canvas .c2 -bg white -width 500 -height 250] -side top
  29.  
  30. set p [::Plotchart::createXYPlot .c {0 84 12} {-2 4 2}]
  31. set p2 [::Plotchart::createXYPlot .c2 {0 84 12} {0 12 5}]
  32.  
  33. console show
  34. for {set t 0} {$t <= 84} {incr t} {
  35. set storm [computeStorm $t]
  36. set wlevel [expr {1.0 + 1.4*cos(2.0*3.1415926*($t-5)/12.5) + $storm}]
  37.  
  38. $p plot data $t $wlevel
  39.  
  40. puts "$t $wlevel"
  41. }
  42.  
  43. $p dataconfig level -colour blue
  44. $p plot level 0 1.5
  45. $p plot level 84 1.5
  46.  
  47. #
  48. # Plot van de hoogte sluisdeuren
  49. #
  50.  
  51. $p2 ytext "Schuifhoogte"
  52. $p2 xtext "Tijd"
  53. $p2 dataconfig working -colour black
  54. $p2 dataconfig failing -colour red
  55. $p2 dataconfig failing2 -colour blue
  56.  
  57. #
  58. # Correcte werking
  59. #
  60. set height 2.8
  61. set toggle 1
  62.  
  63. set tp 0
  64. set op 1
  65. foreach t {0 2.5 7.5 15.5 20.0 27.5 32.5 40.2 47.0 50.5 58.0 65.0 70.0 77.7 82.2} \
  66. open {1 0 1 0 1 0 1 0 3.95 0 3.95 0 1 0 1} {
  67.  
  68. $p2 plot working $tp [expr {$height*$op}]
  69. $p2 plot working $t [expr {$height*$op}]
  70.  
  71. $p2 plot working $t [expr {$height*$open}]
  72.  
  73. set tp $t
  74. set op $open
  75. }
  76.  
  77. #
  78. # Falen type 1: blijven steken op LPH84
  79. #
  80. set height 3.0
  81. set toggle 1
  82.  
  83. set tp 0
  84. set op 0
  85. foreach t {0 2.5 7.5 15.5 20.0 27.5 32.5 40.2 47.0 50.5 58.0 63.2 65.0 70.0 77.7 82.2} \
  86. open {1 0 1 0 1 0 1 1 1 1 1 3.75 0 1 0 1} {
  87.  
  88. $p2 plot failing $tp [expr {$height*$op}]
  89. $p2 plot failing $t [expr {$height*$op}]
  90.  
  91. $p2 plot failing $t [expr {$height*$open}]
  92.  
  93. set tp $t
  94. set op $open
  95. }
  96.  
  97. #
  98. # Falen type 2: volledig open!
  99. #
  100. set height 3.3
  101. set tp 0
  102. set op 0
  103. foreach t {0 2.5 7.5 15.5 20.0 27.5 32.5 40.2 47.0 50.5 58.0 63.2 65.0 70.0 77.7 82.2} \
  104. open {1 0 1 0 1 0 1 3.40 3.40 3.40 3.40 3.40 0 1 0 1} {
  105.  
  106. $p2 plot failing2 $tp [expr {$height*$op}]
  107. $p2 plot failing2 $t [expr {$height*$op}]
  108.  
  109. $p2 plot failing2 $t [expr {$height*$open}]
  110.  
  111. set tp $t
  112. set op $open
  113. }
  114.  
  115. set moment [expr {40.2-0.5}] ;# Faalperiode begint op 40.2 uur
  116. $p2 plot moment $moment 5.1
  117. $p2 plot moment $moment 4.5
  118. $p2 plot moment $moment 4.8
  119. $p2 plot moment $moment 4.8
  120. $p2 plot moment [expr {24+$moment}] 4.8 ;# Faalduur is 23 uur
  121. $p2 plot moment [expr {24+$moment}] 4.5
  122. $p2 plot moment [expr {24+$moment}] 5.1
  123.  
  124. $p2 balloon [expr {$moment-1}] 4.8 "Faalperiode" south-east
  125. $p2 balloon 5 2.8 "LPH84" north-east
  126.  
  127. $p2 legendconfig -position top-left
  128. $p2 legend working "Werkende deuren"
  129. $p2 legend failing "Falende deuren (type 1)"
  130. $p2 legend failing2 "Falende deuren (type 2)"
  131.  
  132. tkwait visibility .
  133. $p saveplot havl_ns1_getij.ps
  134. $p2 saveplot havl_ns1_deuren.ps
  135.