From 8d21cdf1c70fde62ef9a98b70ccda4e0daedf765 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Tue, 15 Mar 2016 20:44:03 +0000 Subject: [PATCH] Change Doppler spread to Lorentzian shape with cutoff at x=3. Several tweaks to output format from fer65. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6534 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/fer65.f90 | 8 +++++--- lib/jt65sim.f90 | 12 +++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/fer65.f90 b/lib/fer65.f90 index 0dbe1c1a0..62d36838a 100644 --- a/lib/fer65.f90 +++ b/lib/fer65.f90 @@ -50,10 +50,11 @@ program fer65 open(20,file='fer65.20',status='unknown') open(21,file='fer65.21',status='unknown') - write(20,1000) iters,ntrials,naggressive,d -1000 format('Iters:',i6,' T:',i7,' Aggressive:',i3,' Doppler:',f6.1) + write(20,1000) submode,iters,ntrials,naggressive,d +1000 format('JT65',a1,' Iters:',i6,' T:',i7,' Aggressive:',i3, & + ' Doppler:',f6.1) write(20,1002) -1002 format(' dB nsync ngood nbad sync snr ', & +1002 format(/' dB nsync ngood nbad sync dsnr ', & 'DT Freq Drift'/77('-')) do isnr=0,20 @@ -138,6 +139,7 @@ program fer65 endif dsnr=xsnr-snr + if(ngood.eq.0) dsnr=0. write(20,1100) snr,nsync,ngood,nbad,xsync,esync,dsnr,esnr, & xdt,edt,xfreq,efreq,xdrift,edrift 1100 format(f5.1,2i6i4,2f6.1,f6.1,f5.1,f6.2,f5.2,f7.1,3f5.1) diff --git a/lib/jt65sim.f90 b/lib/jt65sim.f90 index d94695253..bca8793fd 100644 --- a/lib/jt65sim.f90 +++ b/lib/jt65sim.f90 @@ -200,18 +200,20 @@ program jt65sim cspread(0)=1.0 cspread(NH)=0. -! The following statement was added 3/15/2016 to make the half-power tone +! The following options were added 3/15/2016 to make the half-power tone ! widths equal to the requested Doppler spread. (Previously we effectively -! used b=1.0, which made the tones 1.665 times wider.) - b=2.0*sqrt(log(2.0)) +! used b=1.0 and Gaussian shape, which made the tones 1.665 times wider.) +! b=2.0*sqrt(log(2.0)) !Gaussian + b=2.0 !Lorenzian do i=1,NH f=i*df x=b*f/fspread z=0. a=0. - if(x.lt.50.0) then - a=sqrt(exp(-x*x)) + if(x.lt.3.0) then !Cutoff beyond x=3 +! a=sqrt(exp(-x*x)) !Gaussian + a=sqrt(1.0/(1.0+x*x)) !Lorentzian call random_number(r1) phi1=twopi*r1 z=a*cmplx(cos(phi1),sin(phi1))