PROGRAM GetCols c This program plucks out a single waveform from the Pulse IV c output file and writes it in an form easily converted to c many general plotting programs. c c Written by Charles Vanelli, Applied Research Laboratories, c University of Texas at Austin, 4 August 1992. c implicit none integer maxOffAxis, maxPcols, maxRanges parameter (maxRanges = 50) parameter (maxOffAxis = 20) parameter (maxPcols = maxOffAxis + 1) real sourceFreq,P0,P0rms,sourceRadius,rayleighdistance real soundspeed integer numTauPts,numRhoPts integer numRanges integer outputform real Ranges(maxRanges) integer LobeOutput, CustomOutput parameter (LobeOutput=1, CustomOutput=2) integer numPcols real Rad(0:maxPcols) real Xi(0:maxPcols) real Pdata(1:maxPcols) real sigma, tau real TargetSigma,TargetCol character*80 filename integer i,j,k real tmp1 c obtain the dimension data from the params file written by prePulse c now we will perform the translation to dimensionalized units write(*,*) 'Enter filename for two-col output:' read(*,'(A80)') filename write(*,*) filename open(unit=11,file='pulse.out',status='old') open(unit=12,file=filename,status='new') read(11,*) read(11,*) read(11,*) numRanges,numTauPts read(11,*) (ranges(k),k=1,numRanges) read(11,*) read(11,*) 890 write(*,*) 'The available ranges are: ' 900 format(1x,i3,' - ',g12.4) do 10000 i = 1,numRanges write(*,900) i,ranges(i) 10000 continue write(*,*) 'Choose the number corresponding to the range.' read(*,*) i if ((i.LT.1).OR.(i.GT.numRanges)) goto 890 TargetSigma = Ranges(i) do 20000 k=1,numRanges read(11,*) read(11,*) sigma read(11,*) read(11,*) numPcols read(11,*) read(11,*) read(11,*) read(11,*) read(11,*) read(11,*) (Rad(j),j=0,numPcols) read(11,*) (Xi(j),j=0,numPcols) read(11,*) write(*,*) sigma if (sigma.GE.TargetSigma) then write(*,*) ' ' 11000 format(1x,a,g12.4,a) 11005 write(*,11000) 'At the range ',sigma,' the following (r/a)' write(*,*) 'positions are available.' do 11010 j=1,numPcols write(*,900) j-1,Xi(j) 11010 continue write(*,*) 'Please enter your selection: ' read(*,*) TargetCol TargetCol = TargetCol + 1 if ((TargetCol.LT.1).OR.(TargetCol.GT.numPcols)) goto 11005 write(*,*) 'Sigma = ',sigma write(*,*) 'r/a = ',Xi(TargetCol) c write(12,*) 'At the sigma, (r/a) values:' c write(12,*) sigma,Xi(targetCol) c write(12,*) 'tau, P pairs:' do 11020 i=0,numTauPts read(11,*) tau, (Pdata(j),j=1,numPcols) write(12,*) tau,Pdata(TargetCol) 11020 continue close(11) close(12) stop else do 12000 i=0,numTauPts read(11,*) tau, (Pdata(j),j=1,numPcols) 12000 continue endif read(11,*) 20000 continue close(11) close(12) stop end