Posted to tcl by arjen at Wed Feb 25 10:08:06 GMT 2009view raw
- # tidehavl_ns1.tcl --
- # Tweede schets: Haringvliet, niet sluiten, type 1 en 2
- #
- package require Plotchart
- # computeStorm --
- # Bereken een redelijk (wel hoekig) verloop voor de stormopzet:
- #
- # t < 30: 0
- # 30 < t < 38: lineair oplopend naar 1.5
- # 38 < t < 44: 1
- # 50 < t < 60: lineair aflopend naar 0
- #
- proc computeStorm {t} {
- set surge1 [expr {1.5*($t-38)/8.0}]
- set surge2 [expr {1.5*(60-$t)/10.0}]
- set surge [expr {min($surge1, $surge2, 1.5)}]
- set surge [expr {max($surge, 0.0)}]
- return $surge
- }
- # main --
- #
- pack [canvas .c -bg white -width 500 -height 150] \
- [canvas .c2 -bg white -width 500 -height 250] -side top
- set p [::Plotchart::createXYPlot .c {0 84 12} {-2 4 2}]
- set p2 [::Plotchart::createXYPlot .c2 {0 84 12} {0 12 5}]
- console show
- for {set t 0} {$t <= 84} {incr t} {
- set storm [computeStorm $t]
- set wlevel [expr {1.0 + 1.4*cos(2.0*3.1415926*($t-5)/12.5) + $storm}]
- $p plot data $t $wlevel
- puts "$t $wlevel"
- }
- $p dataconfig level -colour blue
- $p plot level 0 1.5
- $p plot level 84 1.5
- #
- # Plot van de hoogte sluisdeuren
- #
- $p2 ytext "Schuifhoogte"
- $p2 xtext "Tijd"
- $p2 dataconfig working -colour black
- $p2 dataconfig failing -colour red
- $p2 dataconfig failing2 -colour blue
- #
- # Correcte werking
- #
- set height 2.8
- set toggle 1
- set tp 0
- set op 1
- 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} \
- open {1 0 1 0 1 0 1 0 3.95 0 3.95 0 1 0 1} {
- $p2 plot working $tp [expr {$height*$op}]
- $p2 plot working $t [expr {$height*$op}]
- $p2 plot working $t [expr {$height*$open}]
- set tp $t
- set op $open
- }
- #
- # Falen type 1: blijven steken op LPH84
- #
- set height 3.0
- set toggle 1
- set tp 0
- set op 0
- 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} \
- open {1 0 1 0 1 0 1 1 1 1 1 3.75 0 1 0 1} {
- $p2 plot failing $tp [expr {$height*$op}]
- $p2 plot failing $t [expr {$height*$op}]
- $p2 plot failing $t [expr {$height*$open}]
- set tp $t
- set op $open
- }
- #
- # Falen type 2: volledig open!
- #
- set height 3.3
- set tp 0
- set op 0
- 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} \
- open {1 0 1 0 1 0 1 3.40 3.40 3.40 3.40 3.40 0 1 0 1} {
- $p2 plot failing2 $tp [expr {$height*$op}]
- $p2 plot failing2 $t [expr {$height*$op}]
- $p2 plot failing2 $t [expr {$height*$open}]
- set tp $t
- set op $open
- }
- set moment [expr {40.2-0.5}] ;# Faalperiode begint op 40.2 uur
- $p2 plot moment $moment 5.1
- $p2 plot moment $moment 4.5
- $p2 plot moment $moment 4.8
- $p2 plot moment $moment 4.8
- $p2 plot moment [expr {24+$moment}] 4.8 ;# Faalduur is 23 uur
- $p2 plot moment [expr {24+$moment}] 4.5
- $p2 plot moment [expr {24+$moment}] 5.1
- $p2 balloon [expr {$moment-1}] 4.8 "Faalperiode" south-east
- $p2 balloon 5 2.8 "LPH84" north-east
- $p2 legendconfig -position top-left
- $p2 legend working "Werkende deuren"
- $p2 legend failing "Falende deuren (type 1)"
- $p2 legend failing2 "Falende deuren (type 2)"
- tkwait visibility .
- $p saveplot havl_ns1_getij.ps
- $p2 saveplot havl_ns1_deuren.ps