WSJT-X/lib/smolorentz.f90

43 lines
687 B
Fortran

!program smolorentz
subroutine smolorentz(s1,nz,w,s2)
! parameter (nz=512)
real s1(nz),s2(nz)
real y(-50:50)
! character*8 arg
! s1=0.
! s1(256)=1.
! call getarg(1,arg)
! read(arg,*) w
do i=-50,50
x=i
z=x/(0.5*w)
y(i)=0.
if(abs(z).lt.3.0) then
d=1.0 + z*z
y(i)=(1.0/d - 0.1)*10.0/9.0
endif
enddo
jz=nint(1.5*w)
if(jz.gt.50) jz=50
do i=1,nz
s=0.
sy=0.
do j=-jz,jz
k=i+j
if(k.ge.1 .and. k.le.nz) then
s=s + s1(k)*y(j)
sy=sy+y(j)
endif
enddo
s2(i)=s/sy
! write(52,3002) i-256,s1(i),s2(i)
!3002 format(i5,2f10.4)
enddo
end subroutine smolorentz