1 SUBROUTINE greenf (delgr, delgrp, ip)
4 USE parallel_include_module
10 INTEGER,
INTENT(in) :: ip
11 REAL(dp),
DIMENSION(nuv),
INTENT(OUT) :: delgr, delgrp
15 INTEGER,
DIMENSION(2) :: ilow, ihigh
16 INTEGER :: ivoff, iskip, iuoff, i, kp, nloop
17 REAL(dp),
DIMENSION(:),
ALLOCATABLE ::
18 1 ftemp, gsave, htemp, ga1, ga2, dsave
19 REAL(dp):: xip, yip, xper, yper,
20 1 sxsave, sysave, tgreenon, tgreenoff
33 CALL second0(tgreenon)
35 ALLOCATE (ftemp(nuv), gsave(nuv), htemp(nuv), ga1(nuv), ga2(nuv),
37 IF (i .NE. 0) stop
'allocation error in greenf'
48 iuoff = nuv - nv*iskip
60 gsave(i) = rzb2(ip) + rzb2(i) - 2*z1b(ip)*z1b(i)
61 dsave(i) = drv(ip) + z1b(i)*snz(ip)
71 xper = xip*cosper(kp) - yip*sinper(kp)
72 yper = yip*cosper(kp) + xip*sinper(kp)
73 sxsave = (snr(ip)*xper - snv(ip)*yper)/r1b(ip)
74 sysave = (snr(ip)*yper + snv(ip)*xper)/r1b(ip)
76 IF (kp.EQ.1 .OR. nv.EQ.1)
THEN
80 ga1(i) = tanu(i+iuoff)*(guu_b(ip)*tanu(i+iuoff)
81 1 + guv_b(ip)*tanv(i+ivoff))
82 2 + gvv_b(ip)*tanv(i+ivoff)*tanv(i+ivoff)
83 ga2(i) = tanu(i+iuoff)*(auu(ip)*tanu(i+iuoff)
84 1 + auv(ip)*tanv(i+ivoff))
85 2 + avv(ip)*tanv(i+ivoff)*tanv(i+ivoff)
89 IF (kp.GT.1 .AND. nloop.EQ.2) cycle
90 DO i = ilow(nloop), ihigh(nloop)
91 ga2(i) = ga2(i)/ga1(i)
92 ga1(i) = one/sqrt(ga1(i))
93 ftemp(i) = one/(gsave(i)
94 1 - 2*(xper*rcosuv(i) + yper*rsinuv(i)))
95 htemp(i) = sqrt(ftemp(i))
96 delgrp(i) = delgrp(i) - ga2(i)*ga1(i)
97 1 + ftemp(i)*htemp(i)*
98 2 (rcosuv(i)*sxsave + rsinuv(i)*sysave + dsave(i))
99 delgr(i) = delgr(i) + htemp(i) - ga1(i)
103 IF (kp.EQ.nvper .AND. nv.EQ.1)
THEN
104 delgrp = delgrp/nvper
113 ftemp(i) = one/(gsave(i)
114 1 - 2*(xper*rcosuv(i) + yper*rsinuv(i)))
115 htemp(i) = sqrt(ftemp(i))
116 delgrp(i) = delgrp(i) + ftemp(i)*htemp(i)*
117 1 (rcosuv(i)*sxsave + rsinuv(i)*sysave + dsave(i))
118 delgr(i) = delgr(i) + htemp(i)
123 DEALLOCATE (ftemp, gsave, htemp, ga1, ga2, dsave, stat=i)
125 CALL second0(tgreenoff)
126 timer_vac(tgreenf) = timer_vac(tgreenf) + (tgreenoff-tgreenon)
127 greenf_time = timer_vac(tgreenf)
129 END SUBROUTINE greenf