program sodconx c This program reads in .SOD and .COD files and plot these c in Bunge-convention ODF space. At current stage, sections c are made every 5 degrees (phi2 for .COD, and phi1 for .SOD). c You will need the source code for the plotting routines in psplot.txt c in order to compile this program c This program is made available on the understanding that its c use will be appropriately acknowledged. No warranty of any c kind is avaiable. Please inform tony rollett of any errors that c you find: rollett@andrew.cmu.edu c ADR March 2004 implicit none integer i,j,k,kk,ijk,kji,jkl,ff1,ff2,ntype,angle_type integer nvmx,npmx,iq0,xii,nbelow,ni,nj,nk,nsec,nys,ky real pmx,dx,dy,xcen,ycen,xsta,ysta,xsize,ysize,red,green,blue real x1,x2,y1,y2,pww,height,xs,ys,xss,yss,xsss,fnum integer nscale,nxs,nbelow0 real scalef,scx,scy real fint(20,20,20), vodf(20,20,20) real scint(0:6),scleg(0:6),scleg2(0:6) integer nvint(20,20,20) character afile*20, file*19, out1*22, outfile*30 c real array(19,19),cval(0:10),xold,yold,xdiff,ydiff,xorig,yorig real colrval(3,0:10) c colors are in COLRVAL integer nval character*5 nomen,seclab,label real delth,rm,delom,pm integer iw,jw,iper(3),iavg,ngr logical rescale c integer ispec,ioffpp,ilegg,ilabb,nhii,ndeccn,nlbll,mscall,ldsh real spvall, hgtlab common/conpar/ispec,ioffpp,spvall,ilegg,ilabb,nhii,ndeccn,nlbll, +mscall,ldsh,hgtlab c integer loopcount c ispec=1 ilegg=0 ilabb=0 nhii=-1 c turns off legend, labels, hi/lo labels print *,' ' print *,' ' print *,' ***********************************************' print *,' * *' print *,' * SODCONX.F *' print *,' * .COD and .SOD plotting in ODF space *' print *,' * by Paul Seungyong Lee *' print *,' * edited by A. D. Rollett, xi 00 *' print *,' * to perform color contour plots *' print *,' * *' print *,' * Carnegie Mellon University *' print *,' * *' print *,' ***********************************************' print *,' ' c print*,'Try smoothing your input for nicer looking plots' print* print*,'Name of input file (.SOD, .SMH or .COD) ?' read(*,1011) afile 1011 format(a) print *,' ' c print *,'Choose the scaling method.' print *,' Linear ------------ 1 ' print *,' Log --------------- 2 ' read(*,*)nscale c kk=20 do 154, i=1,20 if(afile(i:i).eq.'.') kk=i 154 continue file=afile(kk+1:kk+3) if(file.eq.'sod'.or.file.eq.'SOD'.or.file.eq.'smh') then ntype=1 goto 888 endif if(file.eq.'cod'.or.file.eq.'COD'.or.file.eq.'cmh') then ntype=2 goto888 endif if(file.eq.'son'.or.file.eq.'SON'.or.file.eq.'snh') then ntype=3 goto 888 endif if(file.eq.'con'.or.file.eq.'CON'.or.file.eq.'cnh') then ntype=4 goto888 endif write(*,*)'This program digests only SOD,COD,SON, CON' write(*,*)' smh, cmh, snh, or cnh files.' goto 999 888 open(11,file=afile,status='old') c c write(*,*) 'Enter a name for the OUTPUT file, e.g. sample.cmh.ps' c read(*,1011) afile outfile=afile(1:(kk+3))//'.clr.ps' write(*,*) 'Using ',outfile,' as output filename' call newdev(outfile,kk+10) c c if(ntype.eq.2.or.ntype.eq.4) then ff1=1 ff2=2 goto 887 endif ff1=2 ff2=1 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c read in the input data c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 887 continue c do 21, i=1,2 c read(11,*) c read(11,"(a5)") nomen c c 21 continue c c read the first header lines c do 725,k=1,19 c read(11,*) read(11,1332) nomen,delth,rm,delom,pm,iw,jw &,(iper(i),i=1,3),iavg,ngr,seclab,label 1332 format(a5,4f5.1,5i2,2i5,2a5) if(pm.eq.180.) then write(*,*) 'Range of azimuth = 180; cannot use SODCONX' stop elseif(pm.eq.360.) then write(*,*) 'Azimuth range = 360; try using SODCON5' stop endif c c on the first section, detect the type of Euler angles in use if(k.eq.1) then angle_type=1 if(nomen(5:5).eq.'B'.or.nomen(4:4).eq.'B') then write(*,*) 'detected Bunge angles' endif c assume Bunge angles if(nomen(5:5).eq.'K'.or.nomen(4:4).eq.'K') then write(*,*) 'detected Kocks angles' angle_type=2 endif c Kocks angles endif c scalef=100./float(iavg) rescale=(abs(scalef-1.0).gt.0.05) if(rescale) write(*,*) 'Rescaling intensities for k=',k,scalef c re-scale all the intensities in the section by the ratio c of the nominal average (100) divided by IAVG in the file c but require more than a 5% change to do it c do 724, j=1,19 read(11,31)(nvint(i,j,k),i=1,19) 31 format(1x,19i4) if(rescale) then do 723, i=1,19 nvint(i,j,k)=int(float(nvint(i,j,k))*scalef) c fixed line above to use SCALEF (was SCALE!) Dec. 01 723 continue endif c 724 continue read(11,*) c blank line after each section 725 continue c nvmx=nvint(1,1,1) do 722, k=1,19 do 722, j=1,19 do 729, i=1,19 if(nvint(i,j,k).le.0.and.nscale.eq.2) nvint(i,j,k)=1 c reset intensity to 1 if we are using a log scale if(nvint(i,j,k).gt.nvmx) nvmx=nvint(i,j,k) 729 continue 722 continue c c write(*,492)nvmx 492 format('Maximum intensity =',i7) npmx=nvmx+1 ! seems unnecessary now to read this in c 492 format('Maximum intensity =',i7,/, c & 'Put the maximum intensity to be plotted.') c read(*,*)npmx write(*,*) pmx=float(npmx) c c making scale bar c colrval(1,0)=0.0 colrval(2,0)=0.0 colrval(3,0)=0.0 ! black colrval(1,1)=0.0 colrval(2,1)=0.0 colrval(3,1)=1.0 ! blue colrval(1,2)=0.0 colrval(2,2)=1.0 colrval(3,2)=1.0 ! cyan colrval(1,3)=0.0 colrval(2,3)=1.0 colrval(3,3)=0.0 ! green colrval(1,4)=1.0 colrval(2,4)=1.0 colrval(3,4)=0.0 ! yellow colrval(1,5)=1.0 colrval(2,5)=0.0 colrval(3,5)=0.0 ! red colrval(1,6)=1.0 colrval(2,6)=0.0 colrval(3,6)=1.0 ! magenta colrval(1,7)=0.5 colrval(2,7)=0.5 colrval(3,7)=0.5 ! grey c add more values if you use more than 6 contour values! c c write(*,*) 'Automatic choice of levels? 0=yes' write(*,*) 'Enter 1 for 50/100/200/400/800/1600 ' write(*,*) 'Enter 2 for -50/-25/0/25/50/100 ' read(*,*) iq0 if(iq0.eq.0) then do 385,i=0,5 xii=float(i)/5. scint(i)=xii scleg(i)=(1.-xii)*pmx scleg2(i)=exp((1.-xii)*log(pmx)) c write(*,*)scint(i),scleg(i),scleg2(i) if(nscale.eq.1) then cval(i+1)=scleg(i) else cval(i+1)=scleg2(i) endif 385 continue cval(7)=1e15 elseif(iq0.eq.1) then scleg(0)=50 cval(1)=50 scleg(1)=100 cval(2)=100 scleg(2)=200 cval(3)=200 scleg(3)=400 cval(4)=400 scleg(4)=800 cval(5)=800 scleg(5)=1600 cval(6)=1600 cval(7)=1e15 nbelow0=1 nscale=1 elseif(iq0.eq.2) then scleg(0)=-50 cval(1)=-50 scleg(1)=-25 cval(2)=-25 scleg(2)=0 cval(3)=0 scleg(3)=25 cval(4)=25 scleg(4)=50 cval(5)=50 scleg(5)=100 cval(6)=100 cval(7)=1e15 nbelow0=2 nscale=1 else nbelow0=0 nscale=1 write(*,*) 'Enter 6 contour values.... ' do 387, i=0,5 write(*,*) 'Enter the value for the ',i,'th value' read(*,*) scleg(i) cval(i+1)=scleg(i) if(scleg(i).lt.100.0) nbelow0=nbelow0+1 387 continue cval(7)=1e15 endif c c end of scale bar information c do 149,nk=1,19 do 149,nj=1,19 do 149,ni=1,19 if(nvint(ni,nj,nk).gt.npmx) then nvint(ni,nj,nk)=npmx endif if(nscale.eq.2) then fint(ni,nj,nk)=log(float(nvint(ni,nj,nk))) c write(*,*)fint(ni,nj,nk) goto 149 endif fint(ni,nj,nk)=float(nvint(ni,nj,nk)) c write(*,*) fint(i,j,k) 149 continue c c write(*,32) afile 32 format('Status : Data read in from ',a) c c end of data input c call psinit(.true.) c c initiating post script plotting c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c start of 3 orientation loops (phi1,phi,phi2) c phi2 is multiples of 5. c phi1 and phi are defined by the resolution of VODF space. c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c dx=2.5/90.*1.5 c c write(*,39) 39 format('Status : Plugging in data ') c xold=0. yold=0. xdiff=0. ydiff=0. do 26,k=1,19 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c vodfmx is the maximum vodf. vodf will be normalized by vodfmx c because gray scale should be in the range of 0 and 1. c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c nsec=k-1 c c nsec is the number of ODF section from top left to bottom right. c It is from 0 to 18. c nys=5-nsec/4 nxs=nsec+1 if(nxs.gt.16) nxs=nxs-16 if(nxs.gt.12) nxs=nxs-12 if(nxs.gt.8) nxs=nxs-8 if(nxs.gt.4) nxs=nxs-4 c write(*,*)nxs,nys c c nxs is the x-section number from left. c nys is the y-section number from top. c xcen=0.2+nxs*1.5 ycen=(nys)*1.9 xsta=xcen-0.75 ysta=ycen+0.75 xdiff=xsta-xold ydiff=(ysta-1.5)-yold xold=xsta yold=ysta-1.5 write(*,*)xcen,ycen,xsta,ysta c c xcen, and ycen are the coordinates of centers of ODF sections. c These are the same locations as the centers in ODF frames. c xsta, and ysta are the coordinates of starting point of each c ODF section. c do 1020, ijk=1,19 do 1020, jkl=1,19 array(ijk,jkl)=fint(ijk,(20-jkl),k) c have to go from bottom to top to obtain the correct order 1020 continue c copy section into array for contouring c call plot(xdiff,ydiff,-3) xsize=1.5 ysize=1.5 c call border(xsize,ysize,1100,1111,4,2,4,2) c c do 630, ijk=0,5 c red=colrval(1,ijk) c green=colrval(2,ijk) c blue=colrval(3,ijk) c call setcolr(red,green,blue) c ldsh=0 c if(ijk.le.nbelow0) ldsh=6 c call conrec(array,19,19,19,xsize,ysize,cval(ijk),1) c red=0. c green=0. c blue=0. c call setcolr(red,green,blue) c630 continue c endif call concolr(array,19,19,19,xsize,ysize,cval(0),colrval, +8,0,999999.) red=0. green=0. blue=0. call setcolr(red,green,blue) call conrec(array,19,19,19,xsize,ysize,cval(0),8) c do 26, j=1,19 do 26, i=1,19 c x1=xsta+float(i*5-5)/60.-dx if(i.eq.1)x1=xsta+float(i*5-5)/60. y1=ysta-float(j*5-5)/60.-dx x2=xsta+float(i*5-5)/60.+dx if(i.eq.19)x2=xsta+float(i*5-5)/60. y2=ysta-float(j*5-5)/60.-dx if(j.eq.19) then y1=ysta-float(j*5-5)/60. y2=ysta-float(j*5-5)/60. endif c write(*,*)x1,y1,x2,y2 c c x1,y1,x2,y2 are the two bottom points of each pixel in VODF. c if(nscale.eq.1) then pww=pmx goto 650 endif pww=log(pmx) 650 vodf(i,j,k)=1.-(fint(i,j,k)/pww) if(j.eq.1.or.j.eq.19) then height=dx goto 826 endif height=2.*dx c 826 call rectfilg(x1,y1,x2,y2,height,vodf(i,j,k)) 826 continue c 26 continue xorig=-1.*xsta yorig=-1.*(ysta-1.5) call plot(xorig,yorig,-3) write(*,*) 'resetting origin to ',xorig,yorig c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c frame setting c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc write(*,239) 239 format('Status : Making frames') do 111,i=1,4 do 111, j=1,5 xs=0.2+i*1.5 ys=j*1.9 call setlw(.03) call square(xs,ys,1.5) if(i.eq.4.and.j.eq.1) goto 111 xss=xs-0.33 yss=ys-1.0 if(angle_type.eq.1) then call grksym(xss,yss,.15,45,0.,1,1) call keknum(xss+.1,yss-.07,.10,float(ff2),0.,-1,1) endif if(angle_type.eq.2) then if(ntype.eq.2) call grksym(xss,yss,.15,45,0.,1,1) if(ntype.eq.1) call grksym(xss,yss,.15,23,0.,1,1) endif xsss=xss+0.23 call keksym(xsss,yss,.15,3h =,0.,3,1) ky=6-j fnum=float((i+(ky-1)*4)*5-5) call keknum(xsss+.4,yss,.15,fnum,0.,-1,1) 111 continue call arrow(5.7,2.4,6.4,2.4,.08,20.,1) call arrow(5.7,2.4,5.7,1.7,.08,20.,1) if(angle_type.eq.1) then call grksym(5.85,1.85,.15,21,0.,1,1) call grksym(6.1,2.15,.15,45,0.,1,1) call keknum(6.2,2.03,.10,float(ff1),0.,-1,1) endif if(angle_type.eq.2) then call grksym(5.85,1.85,.15,8,0.,1,1) if(ntype.eq.2) call grksym(6.25,2.15,.15,23,0.,1,1) if(ntype.eq.1) call grksym(6.25,2.15,.15,45,0.,1,1) endif call keknum(5.7,1.4,.15,90.,0.,-1,1) call keknum(6.7,2.33,.15,90.,0.,-1,1) c call keksym(0.9,0.45,.14,10hInput file,0.,10,0) c call keksym(0.7,0.20,.10,19hMask size (microns),0.,19,0) c call keksym(0.7,0.05,.10,20hPixel size (degrees),0.,20,0) c call keksym(0.7,-0.1,.10,15hSample symmetry,0.,15,0) c call keksym(0.7,-0.1,.1,21hOrientation tolerance,0.,21,0) c call keksym(1.75,0.45,.12,1h:,0.,1,0) c call keksym(2.4,0.20,.10,1h=,0.,1,0) c call keksym(2.4,0.05,.10,1h=,0.,1,0) c call keksym(2.4,-0.1,.10,1h=,0.,1,0) c call keksym(2.4,-0.25,.10,1h=,0.,1,0) c c call keknum(2.7,0.20,.10,dia,0.,-1,0) c call keknum(2.7,0.05,.10,resol,0.,-1,0) c call keknum(2.7,-0.1,.10,fsymm,0.,-1,0) c call keknum(2.7,-0.1,.1,atol,0.,-1,0) c call setfnt(31) call keksym(1.9,0.45,.14,afile,0.,20,0) c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c making scale list c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c call setfnt(31) call keksym(0.9,0.15,.14,12hContours at ,0.,12,0) c red=0. green=0. blue=0. call setcolr(red,green,blue) c do 386, i=0,5 red=colrval(1,i+1) green=colrval(2,i+1) blue=colrval(3,i+1) call setcolr(red,green,blue) c scx=2.2+float(i)/10.*5.4 c call rectfilg(scx,.31,scx+.7,.31,.3,scint(i)) if(nscale.eq.1) then call keknum(scx+.1,.15,0.14,scleg(i),0.,-1,0) endif if(nscale.eq.2) then call keknum(scx+.1,.15,0.14,scleg2(i),0.,-1,0) endif 386 continue cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c Making frames of ODF space using post script language. c Sections were made with constant phi2 with every 5 degrees. c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c call plotnd c c NOW FOR THE B&W section c outfile=afile(1:(kk+3))//'.bw.ps' write(*,*) 'Using ',outfile,' as output filename for grey scale' call newdev(outfile,9) c c call psinit(.true.) c c initiating post script plotting c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c start of 3 orientation loops (phi1,phi,phi2) c phi2 is multiples of 5. c phi1 and phi are defined by the resolution of VODF space. c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c dx=2.5/90.*1.5 c c write(*,*) 'Status : Plugging in data for B&W plot' c xold=0. yold=0. xdiff=0. ydiff=0. do k=1,19 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c vodfmx is the maximum vodf. vodf will be normalized by vodfmx c because gray scale should be in the range of 0 and 1. c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c nsec=k-1 c c nsec is the number of ODF section from top left to bottom right. c It is from 0 to 18. c nys=5-nsec/4 nxs=nsec+1 if(nxs.gt.16) nxs=nxs-16 if(nxs.gt.12) nxs=nxs-12 if(nxs.gt.8) nxs=nxs-8 if(nxs.gt.4) nxs=nxs-4 c write(*,*)nxs,nys c c nxs is the x-section number from left. c nys is the y-section number from top. c xcen=0.2+nxs*1.5 ycen=(nys)*1.9 xsta=xcen-0.75 ysta=ycen+0.75 xdiff=xsta-xold ydiff=(ysta-1.5)-yold xold=xsta yold=ysta-1.5 c write(*,*)xcen,ycen,xsta,ysta c c xcen, and ycen are the coordinates of centers of ODF sections. c These are the same locations as the centers in ODF frames. c xsta, and ysta are the coordinates of starting point of each c ODF section. c do ijk=1,19 do jkl=1,19 array(ijk,jkl)=fint(ijk,(20-jkl),k) c have to go from bottom to top to obtain the correct order enddo ! jkl loop enddo ! ijk c copy section into array for contouring c call plot(xdiff,ydiff,-3) xsize=1.5 ysize=1.5 c call border(xsize,ysize,1100,1111,4,2,4,2) c if(nbelow0.gt.0) then ldsh=6 red=0. green=0. blue=1. call setcolr(red,green,blue) CALL SETLW (.01) call conrec(array,19,19,19,xsize,ysize,cval(1),2) c endif ldsh=0 red=0. green=0. blue=0. call setcolr(red,green,blue) CALL SETLW (.02) call conrec(array,19,19,19,xsize,ysize,cval(3),2) c ldsh=0 red=1. green=0. blue=0. call setcolr(red,green,blue) CALL SETLW (.03) call conrec(array,19,19,19,xsize,ysize,cval(5),2) c ldsh=0 red=0. green=0. blue=0. call setcolr(red,green,blue) do j=1,19 do i=1,19 c x1=xsta+float(i*5-5)/60.-dx if(i.eq.1)x1=xsta+float(i*5-5)/60. y1=ysta-float(j*5-5)/60.-dx x2=xsta+float(i*5-5)/60.+dx if(i.eq.19)x2=xsta+float(i*5-5)/60. y2=ysta-float(j*5-5)/60.-dx if(j.eq.19) then y1=ysta-float(j*5-5)/60. y2=ysta-float(j*5-5)/60. endif c write(*,*)x1,y1,x2,y2 c c x1,y1,x2,y2 are the two bottom points of each pixel in VODF. c if(nscale.eq.1) then pww=pmx else pww=log(pmx) endif vodf(i,j,k)=1.-(fint(i,j,k)/pww) if(j.eq.1.or.j.eq.19) then height=dx else height=2.*dx endif c 826 call rectfilg(x1,y1,x2,y2,height,vodf(i,j,k)) c enddo ! i loop enddo ! j loop enddo ! k loop, was 26 xorig=-1.*xsta yorig=-1.*(ysta-1.5) call plot(xorig,yorig,-3) write(*,*) 'resetting origin to ',xorig,yorig c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c frame setting c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc write(*,*) 'Status : Making frames' c do i=1,4 do j=1,5 xs=0.2+i*1.5 ys=j*1.9 call setlw(.03) call square(xs,ys,1.5) if(i.eq.4.and.j.eq.1) goto 9111 xss=xs-0.33 yss=ys-1.0 if(angle_type.eq.1) then call grksym(xss,yss,.15,45,0.,1,1) call keknum(xss+.1,yss-.07,.1,float(ff2),0.,-1,1) endif if(angle_type.eq.2) then if(ntype.eq.2) call grksym(xss,yss,.15,45,0.,1,1) if(ntype.eq.1) call grksym(xss,yss,.15,23,0.,1,1) endif xsss=xss+0.23 call keksym(xsss,yss,.15,3h =,0.,3,1) ky=6-j fnum=float((i+(ky-1)*4)*5-5) call keknum(xsss+.4,yss,.15,fnum,0.,-1,1) 9111 enddo ! j loop enddo ! i loop call arrow(5.7,2.4,6.4,2.4,.08,20.,1) call arrow(5.7,2.4,5.7,1.7,.08,20.,1) if(angle_type.eq.1) then call grksym(5.85,1.85,.15,21,0.,1,1) call grksym(6.1,2.15,.15,45,0.,1,1) call keknum(6.2,2.03,.10,float(ff1),0.,-1,1) endif if(angle_type.eq.2) then call grksym(5.85,1.85,.15,8,0.,1,1) if(ntype.eq.2) call grksym(6.25,2.15,.15,23,0.,1,1) if(ntype.eq.1) call grksym(6.25,2.15,.15,45,0.,1,1) endif call keknum(5.7,1.4,.15,90.,0.,-1,1) call keknum(6.7,2.33,.15,90.,0.,-1,1) c call setfnt(31) call keksym(0.9,0.55,.14,10hInput file,0.,10,0) c call keksym(0.7,0.20,.10,19hMask size (microns),0.,19,0) c call keksym(0.7,0.05,.10,20hPixel size (degrees),0.,20,0) c call keksym(0.7,-0.1,.10,15hSample symmetry,0.,15,0) c call keksym(0.7,-0.1,.1,21hOrientation tolerance,0.,21,0) c call keksym(1.7,0.55,.14,1h:,0.,1,0) c call keksym(2.4,0.20,.10,1h=,0.,1,0) c call keksym(2.4,0.05,.10,1h=,0.,1,0) c call keksym(2.4,-0.1,.10,1h=,0.,1,0) c call keksym(2.4,-0.25,.10,1h=,0.,1,0) c c call keknum(2.7,0.20,.10,dia,0.,-1,0) c call keknum(2.7,0.05,.10,resol,0.,-1,0) c call keknum(2.7,-0.1,.10,fsymm,0.,-1,0) c call keknum(2.7,-0.1,.1,atol,0.,-1,0) call keksym(1.85,0.55,.14,afile,0.,20,0) c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c making scale list c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c call keksym(0.9,0.25,.14,12hContours at ,0.,12,0) red=0. green=0. blue=1. call setcolr(red,green,blue) do i=0,5 if(i.gt.1) then red=0. green=0. blue=0. call setcolr(red,green,blue) endif if(i.ge.4) then red=1. green=0. blue=0. call setcolr(red,green,blue) endif scx=2.2+float(i)/10.*5.4 c call rectfilg(scx,.31,scx+.7,.31,.3,scint(i)) if(nscale.eq.1) then call keknum(scx+.1,.25,.14,scleg(i),0.,-1,0) endif if(nscale.eq.2) then call keknum(scx+.1,.25,.14,scleg2(i),0.,-1,0) endif enddo ! i loop c red=0. green=0. blue=0. call setcolr(red,green,blue) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c Making frames of ODF space using post script language. c Sections were made with constant phi2 with every 5 degrees. c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c call plotnd c goto 999 999 stop end c include 'psplot.txt' c