1 SUBROUTINE bextern(plascur, wint, lscreen)
3 USE mgrid_mod,
ONLY: bvac
4 USE parallel_include_module
9 REAL(dp),
INTENT(IN) :: plascur
10 REAL(dp),
INTENT(IN) :: wint(nuv3)
16 REAL(dp),
ALLOCATABLE :: brad(:), bphi(:), bz(:)
17 REAL(dp) :: tbexon, tbexoff
24 IF (.not.
ALLOCATED(bvac)) stop
'BVAC unallocated in bextern'
25 ALLOCATE (brad(nuv3), bphi(nuv3), bz(nuv3), stat=i)
26 IF (i .ne. 0) stop
'allocation error in bextern'
35 CALL becoil (r1b,z1b,brad,bphi,bz,bvac(1,1),bvac(1,2),bvac(1,3),
46 CALL belicu (bexu, bexv, bexn, cosuv, sinuv, r1b, z1b)
48 DO i = nuv3min, nuv3max
49 brad(i) = brad(i) + bexu(i)*cosuv(i) + bexv(i)*sinuv(i)
50 bphi(i) = bphi(i) - bexu(i)*sinuv(i) + bexv(i)*cosuv(i)
51 bz(i) = bz(i) + bexn(i)
61 DO i = nuv3min, nuv3max
62 bexu(i) = rub(i)*brad(i) + zub(i)*bz(i)
63 bexv(i) = rvb(i)*brad(i) + zvb(i)*bz(i) + r1b(i)*bphi(i)
64 bexn(i) =-(brad(i)*snr(i) + bphi(i)*snv(i) + bz(i)*snz(i))
69 bexni(i) = bexn(i)*wint(i)*pi2*pi2
72 DEALLOCATE (brad, bphi, bz)
75 bextern_time = bextern_time + (tbexoff - tbexon)
77 END SUBROUTINE bextern