! ! finestra_mobile.f ! ! Free-Format Fortran Source File ! Generated by PGI Visual Fortran(R) ! 3/3/2015 9:37:37 AM ! !______________________________________________________ subroutine finestra_mobile(Ndati,t,eta,period) implicit none integer i,j,k,Nint,Nmax,Nyquist,Ndati,iscratch,Nup,Ndown integer itipo,Nwin,Niter,iter parameter(Nmax=10001) real Ak(Nmax/2),Bk(Nmax/2),Amp(Nmax/2),Fase(Nmax/2) real t(Nmax),eta(Nmax),four(Nmax),scratch,alt(Nmax),scov real period,A0,omega,deltat,pigr,periodo_fisico real twin(Nmax),etawin(Nmax) write(*,*)'DAMMI LA LUNGHEZZA DELLA FINESTRA' read(*,*) Nwin Niter=Ndati-Nwin+1 ! stampa su file open(111,file='Fourier_mobile.out', > status='unknown',access='sequential') do iter=1,Niter do j=1,Nwin twin(j)=t(j+iter-1) etawin(j)=eta(j+iter-1) end do ! CALCOLO VARIABILI DI LAVORO period=twin(Nwin)-twin(1) omega=2*acos(-1.)/period write(*,*)'Periodo della FINESTRA= ',period ! CALCOLO A0 A0=0. do i=1,Nwin-1 A0=A0+(etawin(i+1)+etawin(i)) end do A0=A0/(Nwin-1) !CALCOLO Ak Nyquist=(Nwin-1)/2 do k=1,Nyquist Ak(k)=0.e0 Bk(k)=0.e0 do i=1,Nwin-1 Ak(k)=Ak(k)+(etawin(i+1)*cos(k*omega*t(i+1))+ > etawin(i)*cos(k*omega*t(i))) Bk(k)=Bk(k)+(etawin(i+1)*sin(k*omega*t(i+1))+ > etawin(i)*sin(k*omega*t(i))) end do Ak(k)=Ak(k)/(Nwin-1) Bk(k)=Bk(k)/(Nwin-1) Amp(k)=sqrt(Ak(k)**2+Bk(k)**2) Fase(k)=atan2(Bk(k),Ak(k)) end do write(111,'I4,1x,5(F15.5,1x)')0,omega*0,A0/2.,0.,A0/2.,0. do k=1,Nyquist write(111,'I4,1x,5(F15.5,1x)')k,omega*k,Ak(k),Bk(k), > Amp(k),Fase(k) end do write(111,*) end do close(111) return end