16 #define ENDIANNESS "native"
56 LOGICAL,
PARAMETER ::
tstout = .false.
61 REAL,
PARAMETER ::
grav = 9.806
62 REAL,
PARAMETER ::
dwat = 1000.
63 REAL,
PARAMETER ::
dair = 1.225
71 REAL,
PARAMETER ::
pi = 3.141592653589793
72 REAL,
PARAMETER ::
tpi = 2.0 *
pi
73 REAL,
PARAMETER ::
hpi = 0.5 *
pi
95 REAL,
PRIVATE,
PARAMETER :: abmax = 8.
176 INTEGER,
PARAMETER :: NITER=100
177 REAL ,
PARAMETER :: XM=0.50
178 REAL ,
PARAMETER :: EPS1=0.00001
182 REAL ABR,ABRLOG,L10,FACT,FSUBW,FSUBWMEMO,dzeta0,dzeta0memo
192 fact=1/abr/(21.2*
kappa)
198 dzeta0=fact*fsubw**(-.5)
199 CALL kerkei(2.*sqrt(dzeta0),ker,kei)
200 fsubw=.08/(ker**2+kei**2)
201 fsubw=.5*(fsubwmemo+fsubw)
202 dzeta0=.5*(dzeta0memo+dzeta0)
243 SUBROUTINE kzeone(X, Y, RE0, IM0, RE1, IM1)
263 DOUBLE PRECISION X, Y, X2, Y2, RE0, IM0, RE1, IM1, &
264 R1, R2, T1, T2, P1, P2, RTERM, ITERM, L
265 DOUBLE PRECISION ,
PARAMETER,
DIMENSION(8) :: EXSQ = &
266 (/ 0.5641003087264d0,0.4120286874989d0,0.1584889157959d0, &
267 0.3078003387255d-1,0.2778068842913d-2,0.1000044412325d-3, &
268 0.1059115547711d-5,0.1522475804254d-8 /)
269 DOUBLE PRECISION ,
PARAMETER,
DIMENSION(8) :: TSQ = &
270 (/ 0.0d0,3.19303633920635d-1,1.29075862295915d0, &
271 2.95837445869665d0,5.40903159724444d0,8.80407957805676d0, &
272 1.34685357432515d1,2.02499163658709d1 /)
278 IF (r2.GE.1.96d2)
GO TO 50
279 IF (r2.GE.1.849d1)
GO TO 30
286 t1 = -(dlog(p1+p2)/2.0d0+0.5772156649015329d0)
300 l = 2.106d0*p2 + 4.4d0
301 IF (p2.LT.8.0d-1) l = 2.129d0*p2 + 4.0d0
306 rterm = (r1*x2-iterm*y2)/p2
307 iterm = (r1*y2+iterm*x2)/p2
309 re0 = re0 + t1*rterm - t2*iterm
310 im0 = im0 + t1*iterm + t2*rterm
313 re1 = re1 + (t1*rterm-t2*iterm)/p1
314 im1 = im1 + (t1*iterm+t2*rterm)/p1
316 r1 = x/r2 - 0.5d0*(x*re1-y*im1)
317 r2 = -y/r2 - 0.5d0*(x*im1+y*re1)
332 t1 = exsq(1)/(2.0d0*p1)
351 rterm = 1.41421356237309d0*dcos(y)
352 iterm = -1.41421356237309d0*dsin(y)
355 im0 = re0*iterm + t2*rterm
356 re0 = re0*rterm - t2*iterm
357 t1 = re1*rterm - r2*iterm
358 t2 = re1*iterm + r2*rterm
384 rterm = (t2*x+iterm*y)/t1
385 iterm = (-t2*y+iterm*x)/t1
393 p1 = 8.86226925452758d-1/p2
397 r1 = re0*rterm - im0*iterm
398 r2 = re0*iterm + im0*rterm
401 r1 = re1*rterm - im1*iterm
402 r2 = re1*iterm + im1*rterm
423 SUBROUTINE kerkei(X,KER,KEI)
432 DOUBLE PRECISION ZR,ZI,CYR,CYI,CYR1,CYI1
435 zr=x*.50d0*sqrt(2.0d0)
437 CALL kzeone(zr, zi, cyr, cyi,cyr1,cyi1)