V3FIT
All Classes Namespaces Files Functions Variables Enumerations Macros Pages
bss.f
1  SUBROUTINE bss(r12, rs, zs, ru12, zu12, bsubs, bsupu, bsupv,
2  1 br, bphi, bz)
3  USE vmec_main
4  USE realspace
5  IMPLICIT NONE
6 C-----------------------------------------------
7 C D u m m y A r g u m e n t s
8 C-----------------------------------------------
9  REAL(rprec), DIMENSION(nrzt), INTENT(in) :: r12, rs, zs,
10  1 ru12, zu12, bsupu, bsupv
11  REAL(rprec), DIMENSION(nrzt), INTENT(out) ::
12  1 br, bphi, bz, bsubs
13 C-----------------------------------------------
14 C L o c a l P a r a m e t e r s
15 C-----------------------------------------------
16  REAL(rprec), PARAMETER :: p5 = 0.5_dp, p25 = p5*p5
17 C-----------------------------------------------
18 C L o c a l V a r i a b l e s
19 C-----------------------------------------------
20  INTEGER :: l
21  REAL(rprec) :: rv12, zv12, gsu, gsv, dphids, rs12, zs12
22 C-----------------------------------------------
23 !
24 ! Computes br, bphi, bz, bsubs on HALF-RADIAL mesh
25 !
26  dphids = p25
27 
28  DO l = 2, nrzt
29  rv12 = p5*(rv(l,0)+rv(l-1,0) + shalf(l)*(rv(l,1) + rv(l-1,1)))
30  zv12 = p5*(zv(l,0)+zv(l-1,0) + shalf(l)*(zv(l,1) + zv(l-1,1)))
31  rs12 = rs(l) + dphids*(r1(l,1) + r1(l-1,1))/shalf(l)
32  zs12 = zs(l) + dphids*(z1(l,1) + z1(l-1,1))/shalf(l)
33  gsu = rs12*ru12(l) + zs12*zu12(l)
34  gsv = rs12*rv12 + zs12*zv12
35  br(l) = bsupu(l)*ru12(l) + bsupv(l)*rv12
36  bphi(l) = bsupv(l)*r12(l)
37  bz(l) = bsupu(l)*zu12(l) + bsupv(l)*zv12
38  bsubs(l) = bsupu(l)*gsu + bsupv(l)*gsv
39  END DO
40 
41  END SUBROUTINE bss