Main Page   Class Hierarchy   Data Structures   File List   Data Fields   Globals  

contor2.f

Go to the documentation of this file.
00001 
00002 c
00003 c       Copyright (c) 1986,1987,1988,1989,1990,1991,1992,1993,
00004 c       by Steve McMillan, Drexel University, Philadelphia, PA.
00005 c
00006 c       All rights reserved.
00007 c
00008 c       Redistribution and use in source and binary forms are permitted
00009 c       provided that the above copyright notice and this paragraph are
00010 c       duplicated in all such forms and that any documentation,
00011 c       advertising materials, and other materials related to such
00012 c       distribution and use acknowledge that the software was developed
00013 c       by the author named above.
00014 c
00015 c       THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
00016 c       IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
00017 c       WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00018 c
00019 
00020 
00021 
00022         subroutine contor2 (a,x,y,m,n,v,iv,userplot)
00023         save
00024         external userplot
00025         dimension ix(50,250),xb(50,250),iy(50),yl(50),dx(250)
00026 c
00027 c       subroutine userplot converts from (x,y) coordinates to
00028 c       the desired rectangular output grid. if the original grid
00029 c       is already rectangular and correctly scaled (see mcinit),
00030 c       just set userplot = plot in the call to contor.
00031 c
00032         real v(iv),a(m,n),x(m),y(n)
00033         mm=m-1
00034         nn=n-1
00035         do 10 i=1,mm
00036             dx(i)=x(i+1)-x(i)
00037             do 10 k=1,iv
00038                 ix(k,i)=0
00039 10      continue
00040         do 60 j=1,nn
00041             dely=y(j+1)-y(j)
00042             do 15 k=1,iv
00043 15          iy(k)=0
00044             do 50 i=1,mm
00045                 delx=dx(i)
00046                 v1=a(i,j)
00047                 v2=a(i+1,j)
00048                 v3=a(i,j+1)
00049                 v4=a(i+1,j+1)
00050                 do 40 k=1,iv
00051                     val=v(k)
00052                     if (val.lt.-1.e10) go to 40
00053                     icase=1
00054                     if (val.gt.v1) icase=icase+1
00055                     if (val.gt.v2) icase=icase+2
00056                     if (val.gt.v3) icase=icase+4
00057                     if (val.gt.v4) icase=9-icase
00058                     go to (40,24,25,26,27,28,29,30),icase
00059 24                  x0=x(i)
00060                     if(iy(k).ne.0)then
00061                         y0=yl(k)
00062                     else
00063                         y0=y(j)+dely*(val-v1)/(v3-v1)
00064                     end if
00065                     if(ix(k,i).ne.0)then
00066                         x1=xb(k,i)
00067                     else
00068                         x1=x(i)+delx*(val-v1)/(v2-v1)
00069                     end if
00070                     y1=y(j)
00071                     go to 35
00072 25                  if(ix(k,i).ne.0)then
00073                         x0=xb(k,i)
00074                     else
00075                         x0=x(i)+delx*(val-v1)/(v2-v1)
00076                     end if
00077                     y0=y(j)
00078                     x1=x(i+1)
00079                     y1=y(j)+dely*(val-v2)/(v4-v2)
00080                     go to 35
00081 26                  x0=x(i)
00082                     if(iy(k).ne.0)then
00083                         y0=yl(k)
00084                     else
00085                         y0=y(j)+dely*(val-v1)/(v3-v1)
00086                     end if
00087                     x1=x(i+1)
00088                     y1=y(j)+dely*(val-v2)/(v4-v2)
00089                     go to 35
00090 27                  x0=x(i)
00091                     if(iy(k).ne.0)then
00092                         y0=yl(k)
00093                     else
00094                         y0=y(j)+dely*(val-v1)/(v3-v1)
00095                     end if
00096                     x1=x(i)+delx*(val-v3)/(v4-v3)
00097                     y1=y(j+1)
00098                     go to 35
00099 28                  if(ix(k,i).ne.0)then
00100                         x0=xb(k,i)
00101                     else
00102                         x0=x(i)+delx*(val-v1)/(v2-v1)
00103                     end if
00104                     y0=y(j)
00105                     x1=x(i)+delx*(val-v3)/(v4-v3)
00106                     y1=y(j+1)
00107                     go to 35
00108 29                  x0=x(i)
00109                     if(iy(k).ne.0)then
00110                         y0=yl(k)
00111                     else
00112                         y0=y(j)+dely*(val-v1)/(v3-v1)
00113                     end if
00114                     if(ix(k,i).ne.0)then
00115                         x1=xb(k,i)
00116                     else
00117                         x1=x(i)+delx*(val-v1)/(v2-v1)
00118                     end if
00119                     y1=y(j)
00120                     call userplot(x0,y0,3)
00121                     call userplot(x1,y1,2)
00122 30                  x0=x(i)+delx*(val-v3)/(v4-v3)
00123                     y0=y(j+1)
00124                     x1=x(i+1)
00125                     y1=y(j)+dely*(val-v2)/(v4-v2)
00126 35                  call userplot(x0,y0,3)
00127                     call userplot(x1,y1,2)
00128                     if(x1.eq.x(i+1))then
00129                         iy(k)=1
00130                         yl(k)=y1
00131                     else
00132                         iy(k)=0
00133                     end if
00134                     if(y0.eq.y(j+1))then
00135                         ix(k,i)=1
00136                         xb(k,i)=x0
00137                     else if(y1.eq.y(j+1))then
00138                         ix(k,i)=1
00139                         xb(k,i)=x1
00140                     else
00141                         ix(k,i)=0
00142                     end if
00143 40              continue
00144 50          continue
00145 60      continue
00146         end

Generated at Sun Feb 24 09:56:56 2002 for STARLAB by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001