Hi John,
how is your visualization with %gr coming on? Unfortunately I am not that fit in Clearwin. Since I use eps in my documents I prefer to do all figures in pure eps rather than converting it. However, I think it should be easy to do it in Clearwin.
Coming back to the numbering: For the same example I only changed the node numbering manually. In this small example one can clearly see that the solution is independent of the node numbering. The profile for the second numbering scheme is larger than the first one. For problems with many nodes this is, as you know, critical for a direct solver - compact storage scheme by Alan Jennings.
[URL=http://imageshack.us/photo/my-images/696/spy1u2.png/]
[/URL]
subroutine spy(a,m,n)
implicit none
C
include 'split_file.ins'
C
integer,dimension(m,n) :: a
integer,dimension(m) :: numbering
real,parameter :: cell_size=10.0
real,parameter :: font_size=0.8*cell_size
real,parameter :: r= 0.35*font_size
integer,parameter :: io=33,tex=35
real :: x_lo,x_hi,y_lo,y_hi,xdiag
real :: scale,x,y
integer :: m,n,i,j
x_lo = 0;
y_lo = 0;
x_hi = m*cell_size;
y_hi = m*cell_size;
C
C Open the eps file and define the bounding box
C
FileToWrite = trim(path)//trim(name)//'-spy.eps'
open(io,file=FileToWrite);
write(io,'(A)') '%!PS-Adobe-1.0'
if (cell_size*real(n) > 595.0) then
scale = 595.0/(cell_size*real(n));
write(io,'(A,4I5)') '%%BoundingBox:',0,0,595,595
write(io,'(2F13.6,1X,A)') 0.0,0.0,'translate'
write(io,'(2F13.6,1X,A)') scale,scale,'scale'
else
write(io,'(A,4I5)') '%%BoundingBox:',
* int(x_lo+0.5),int(y_lo+0.5),int(x_hi+0.5),int(y_hi+0.5)
endif
write(io,'(2F13.6,2x,A)') x_lo,y_lo,'newpath moveto'
write(io,'(2F13.6,2x,A)') x_hi,y_lo,'lineto'
write(io,'(2F13.6,2x,A)') x_hi,y_hi,'lineto'
write(io,'(2F13.6,2x,A)') x_lo,y_hi,'lineto'
write(io,'(2F13.6,2x,A)') x_lo,y_lo,'lineto'
write(io,'(A)') 'stroke'
C
C Plot the nonzero matrix entries
C
do i=1,m
C First the diagonal element is plotted.
write(io,'(A)') '0 setgray'
x = x_lo + (real(i) - 0.5)*cell_size;
y = y_hi - (real(i) - 0.5)*cell_size;
write(io,'(3F13.6,2x,A)') x,y,r,'0 360 arc closepath'
write(io,'(A)') 'gsave 1 0 0 setrgbcolor fill grestore'
write(io,'(A)') 'stroke'
xdiag = x
do j=1,n
if (a(i,j).NE. 0) then
x = x_lo + (real(a(i,j)) - 0.5)*cell_size;
y = y_hi - (real(i) - 0.5)*cell_size;
write(io,'(3F13.6,2I5,2x,A)') x,y,r,0,360,'arc closepath'
if (x.LT.xdiag) then
write(io,'(A,1X,3I3,1X,A)') 'gsave',0,0,1,
* ' setrgbcolor fill grestore'
else
write(io,'(A,1X,3I3,1X,A)') 'gsave',0,1,0,
* ' setrgbcolor fill grestore'
endif
write(io,'(A)') 'stroke'
endif
enddo
enddo
write(io,'(A)') 'showpage'
write(io,'(A)') '%%EOF'
close(io);
return
end subroutine spy