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

# 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