C+ C NAME: C Saverage.f C PURPOSE: C Average the spectrumin log steps C CATEGORY: C I/O C CALLING SEQUENCE: C call saverage(frequency,power,Ndata,nsteps,aspecval,apower,Ndat) C C INPUTS: C Saverage: C frequency real The frequency at each power C hpower real The power at each frequency C ndata integer the number of data points input C nsteps integer The number of log steps between 0.1 and 10.0 C C OUTPUTS: C aspecval real the input spectral frequencies C apower real the input spectral power C Ndat integer the number of reduced frequencies C C MODIFICATION HISTORY: C November-2013, Bernard Jackson (UCSD) C- subroutine saverage(frequency,power,Ndata,nsteps,aspecval,apower,Ndat) real frequency (Ndata), & power (Ndata), & aspecval (Ndata), & apower (Ndata) C alogb = log10(0.1) aloge = log10(10.0) dlogstep = (aloge-alogb)/float(nsteps - 1) ii = 1 ia = 1 freqt = 0.0 freqn = 0.0 alog1 = log10(0.001) alog2 = alog1 + dlogstep C print *, alog1,alog2,dlogstep do i=1,Ndata if(log10(frequency(ia)).ge.alog1.and.log10(frequency(ia)).lt.alog2.and.frequency(ia).ne.0.0) then freqt = freqt + frequency(ia) powrt = powrt + power(ia) freqn = freqn + 1.0 ia = ia + 1 else alog1 = alog2 alog2 = alog1 + dlogstep if(freqn.eq.0.0) go to 33 aspecval(ii) = freqt/freqn apower (ii) = powrt/freqn C print *, ii,aspecval(ii),apower(ii) ii = ii + 1 freqt = 0.0 freqn = 0.0 powrt = 0.0 end if 33 continue end do Ndat = ii - 1 C return end