#############################################################
# Building 'bvp1d' and sample output on the SGIs
#############################################################

einstein% pwd; ls
/usr2/people/phy329/linsys/ex2
Makefile   bvp1d.f    gperr      gpsoln8

einstein% make
        f77 -g -n32 -c bvp1d.f
        f77 -g -n32 -L/usr/localn32/lib -n32 bvp1d.o \
                    -lp329f -llapack -lblas -o bvp1d

einstein% bvp1d
 usage: bvp1d <level> [<option>]

        Specify option .ne. 0 for output
        of error instead of solution

einstein% bvp1d 4
   0.0000000000000000E+00 -5.5511151231257827E-16
   6.2500000000000000E-02  0.3876394685723090    
   0.1250000000000000      0.7162643420150174    
   0.1875000000000000      0.9358444623383684    
   0.2500000000000000       1.012950746721879    
   0.3125000000000000      0.9358444623383684    
   0.3750000000000000      0.7162643420150175    
   0.4375000000000000      0.3876394685723092    
   0.5000000000000000     -2.2204460492503131E-16
   0.5625000000000000     -0.3876394685723097    
   0.6250000000000000     -0.7162643420150181    
   0.6875000000000000     -0.9358444623383690    
   0.7500000000000000      -1.012950746721880    
   0.8125000000000000     -0.9358444623383690    
   0.8750000000000000     -0.7162643420150181    
   0.9375000000000000     -0.3876394685723097    
    1.000000000000000     -2.4492935982947064E-16
 rmserr =   8.8841389573651453E-03

#############################################################
# Simple convergence test: solve BVP on a sequence of 
# levels (h, h/2, h/4, h/16, etc.), redirect stdout to 
# /dev/null so that only the overall RMS error appears on 
# terminal.  Note how RMS error goes down by very nearly 
# a factor of 4 at each successive level, indicating 
# O(h^2) convergence.
#############################################################
einstein% foreach level (4 5 6 7 8 9 10)
foreach? bvp1d $level > /dev/null
foreach? end
 rmserr =   8.8841389573651453E-03
 rmserr =   2.2413991373367772E-03
 rmserr =   5.6382739826354859E-04
 rmserr =   1.4145099550532311E-04
 rmserr =   3.5428279660444339E-05
 rmserr =   8.8654982501522291E-06
 rmserr =   2.2174426911240527E-06

#############################################################
# Making output files for subsequent plotting via gnuplot.
# See Class Notes for postscript.
#############################################################
einstein% bvp1d 8 > out8
 rmserr =   3.5428279660444339E-05

einstein% bvp1d 5 1 > err5
 rmserr =   2.2413991373367772E-03

einstein% bvp1d 6 1 > err6
 rmserr =   5.6382739826354859E-04

einstein% bvp1d 7 1 > err7
 rmserr =   1.4145099550532311E-04

#############################################################
# Gnuplot "script" (gpsoln8) for making plot of level-8 
# solution
#############################################################
einstein% cat gpsoln8

set terminal postscript portrait
set size 0.760,1.0
set output "soln8.ps"
plot [0:1] [-1:1] "out8"
quit

#############################################################
# Make the plot
#############################################################
einstein% gnuplot < gpsoln8

#############################################################
# Gnuplot "script" (gperr) for making plot of error from 
# level 5, 6 and 7 calculations
#############################################################
einstein% cat gperr

set terminal postscript portrait
set size 0.760,1.0
set output "err567.ps"
plot "err5", "err6", "err7"
quit

#############################################################
# Make the plot
#############################################################
einstein% gnuplot < gperr

einstein% ls
Makefile    bvp1d.f     err5        err6        gperr       out8
bvp1d*      bvp1d.o     err567.ps   err7        gpsoln8     soln8.ps

#############################################################
# Clean-up: Note, the Makefile used here has separate 
# 'clean' and 'vclean' (very clean) targets.
#############################################################
einstein% make clean
        rm *.o
        rm bvp1d

einstein% ls
Makefile    err5        err6        gperr       out8
bvp1d.f     err567.ps   err7        gpsoln8     soln8.ps

einstein% make vclean
        rm *.o
rm: No match.
*** Error code 1 (bu21) (ignored)
        rm bvp1d
Cannot access bvp1d: No such file or directory
*** Error code 2 (bu21) (ignored)
        rm err[0-9]*
        rm out[0-9]*
        rm *.ps

einstein% ls
Makefile   bvp1d.f    gperr      gpsoln8