Index
# Examplex 4 -- TS diagram (Colour)
#
# Contributed 17 Feb 1994 by Dan Kelley <Dan.Kelley@Dal.Ca>.


#
# On a light brown background, draw blue [T(t),S(t)] evolution
# diagrams for various years, with data from Labrador Sea, and
# a predicted slope in red.  Isopycnals are drawn in black. 
# (This is a color overhead for seminar, hence the fontsize etc)

# Define colors to use
\TS_trace = "blue"
\isopycnals = "black"
\background = "rgb 1.0000 0.9059 0.7294"
\axes = "black"
\guiding_line = "red"

`Set Up'
{
    \data = "./bravo1.25db"
    .dSdT. = -0.011             # Slope for reference line
    .start. = 8                 # Start month (wrt Jan=0; need negative)
    .stop. = 12                 # Stop  month
    .delta_t. = 1               # Interpolation time interval (days)
    \filter = "2_0.02"          # Butterworth filter file
    .first. = 1964              # First year to plot
    .last. = 1967               # Last year to plot
    set missing value -9
    set x margin 3
    set y margin 6
    set x name "Salinity, PSU"
    set y format %.0lf$\circ$
    set y name "Temperature, $\circ$C"
    set x axis 34.5 34.8 0.1
    set y axis 3 9 2 1
    set line width axis rapidograph 4x0
    set color \background
    draw polygon filled         \
        ..xleft.. ..ybottom..   \
        ..xright.. ..ybottom..  \
        ..xright.. ..ytop..     \
        ..xleft.. ..ytop..
    set color \axes
    set font size 16            # For overhead projection
    draw axes
    system rm -f tmp*[0-9]
}

`Draw Isopycnals'
{
    set clip on
    set line width rapidograph 1
    set color \isopycnals
    draw isopycnal 26.75 unlabelled
    draw isopycnal 27.00 unlabelled
    draw isopycnal 27.25 unlabelled
    draw isopycnal 27.50 unlabelled
    # Label manually, for nicer effect (laborious)
    set font size 14
    draw label "1027.00" at 34.731690 8.522833 rotated 16
    #draw label "1027.25" at 34.731690 6.808333 rotated 17
    draw label "1027.50" at 34.731690 4.797500 rotated 19
    set clip off
}

`Draw guiding line'
{
    set clip postscript on
    set color \guiding_line
    set line width rapidograph 1
    .S. = 34.7
    .T. = -1.8
    draw line from .S. .T. to {rpn .S. ..ytop.. .T. - .dSdT. * +} ..ytop..
    set dash off
    set clip postscript off
}

`Interpolate to standard times .days. \outfile_raw \outfile_smoothed'
#
#.days.   = sampling interval
#
{
    # Trim out the (alternate) header lines, bin in time intervals
    # (0.0208333year = 1wk; 0.0416667yr=2week), then put 
    # into file 
    new \time2 color=#CDAD00> .days.
    .days. = \.word4.
    show "Interpolating `\data' to " .days. " days"
    show "Using butterworth filter ~/filters/butterworth/\filter"
    sprintf \time2 "%.10lf" {rpn 1964 .days. 365.25 / +}
    system                                                      \
        cat \data                                               \
        | gawk ' {                                              \
        if (NR % 2)                                             \
        printf("%lf ", $1 + $2 / 365.0);                        \
        if (1 - NR % 2)                                         \
        printf("%lf %lf\n",$3,$2)                               \
        }'                                                      \
        | interpolate3col 1964 \time2 1974                      \
        | cat > \.word5.
    if ..exit_status..
        show "System call failed"
        quit
    end if
    system                                                      \
        cat \.word5.                                            \
        | butterfilter -c 3 $HOME/filters/butterworth/\filter   \
        | cat > \.word6.
    if ..exit_status..
        show "System call failed"
        quit
    end if
    delete .days. \time2
}

`Select years .start. .stop. \input_file \output_file'
{
    system gawk '\.word2. <= $1 && $1 <= \.word3.' < \.word4. > \.word5.
}

`Draw year labels'
{
    # Draw labels for curves manually, to avoid overwriting
    set color \TS_trace
    set font size 14
    draw label whiteunder "1964" at 34.643232 \
        {rpn 8.332266 yusertocm "M" ascent 2 / - ycmtouser}
    draw label whiteunder "1965" at 34.615939 \
        {rpn 7.463851 yusertocm "M" ascent 2 / - ycmtouser}
    draw label whiteunder "1966" at 34.653777 \
        {rpn 6.930395 yusertocm "M" ascent 2 / - ycmtouser}
    draw label whiteunder "1967" at                             \
        {rpn 34.545845 xusertocm "1967" width 2 / - xcmtouser}  \
        8.865722
}

# Main program

set line width axis rapidograph 00
Set Up
#Draw Isopycnals
Draw guiding line
Interpolate to standard times .delta_t. tmp1.\.pid. tmp2.\.pid.

# Plot timeseries
set color \TS_trace
set line width rapidograph 2
.year. = .first.
while {rpn .last. .year. <=}
    .t0. = {rpn .year. .start. 12 / +} 
    .t1. = {rpn .year.  .stop. 12 / +}
    show "Plotting " .t0. "-" .t1.
    Select years {rpn .t0.} {rpn .t1.} tmp2.\.pid. tmp3.\.pid.
    open tmp3.\.pid.
    read columns * x y
    close
    draw curve overlying
    .year. += 1
end while
set color \TS_trace
Draw year labels

# Draw label indicating months
set line width rapidograph 00
\label = "Aug-Dec"
set color \TS_trace
draw label boxed "\label" at                                            \
    {rpn ..xleft.. ..xright.. + 2 / xusertocm "\label" width 2 / -}     \
    {rpn ..ytop.. yusertocm "M" ascent 2.5 * +}                         \
    cm

.offset. = 3                    # distance of labels above plot
set color \axes
draw label "$OWS Bravo$,  Labrador Sea"                 \
    centered at                                         \
    {rpn ..xleft.. ..xright.. + 2 / xusertocm}          \
    {rpn ..ymargin.. ..ysize.. + .offset. + "M" ascent 6 * +} cm

system rm -f tmp*.\.pid.

quit