V3FIT
setup_booz.f
1  SUBROUTINE setup_booz(ntorsum, ns, mnmax, ohs,
2  1 xmb, xnb, sfull, scl, mboz, nboz, mnboz, nu2_b,
3  2 nu_boz, nv_boz, nfp, lasym)
4  USE stel_kinds
5  USE booz_persistent, ONLY: xm
6  IMPLICIT NONE
7 C-----------------------------------------------
8 C D u m m y A r g u m e n t s
9 C-----------------------------------------------
10  INTEGER, INTENT(in) :: ns, mnmax, mboz, nboz, nu2_b,
11  1 nu_boz, nv_boz, nfp
12  INTEGER, INTENT(inout) :: mnboz
13  REAL(rprec) :: ohs
14  INTEGER, INTENT(out), DIMENSION(0:1) :: ntorsum
15  REAL(rprec), INTENT(out), DIMENSION(mnboz) :: xmb, xnb, scl
16  REAL(rprec), INTENT(out), DIMENSION(ns) :: sfull
17  LOGICAL, INTENT(in) :: lasym
18 C-----------------------------------------------
19 C L o c a l P a r a m e t e r s
20 C-----------------------------------------------
21  REAL(rprec), PARAMETER :: one = 1
22 C-----------------------------------------------
23 C L o c a l V a r i a b l e s
24 C-----------------------------------------------
25  INTEGER :: mnboz0, n2, m, n1, n, i
26  REAL(rprec) :: fac, hs
27 C-----------------------------------------------
28 !
29 ! SETUP BOOZER M,N ARRAYS
30 !
31  mnboz0 = 0
32  n2 = nboz
33  DO m = 0, mboz-1
34  n1 = -nboz
35  IF (m .eq. 0) n1 = 0
36  DO n = n1, n2
37  mnboz0 = mnboz0 + 1
38  IF (mnboz0 .gt. mnboz) THEN
39  stop 'mnboz exceeds limit in booz xform'
40  END IF
41  xnb(mnboz0) = n*nfp
42  xmb(mnboz0) = m
43  END DO
44  END DO
45 
46  IF (mnboz0 .ne. mnboz) mnboz = mnboz0
47 
48 ! SCALE FACTOR FOR NORMALIZATION OF FOURIER TRANSFORMS
49 
50  IF (lasym) THEN
51  fac = 2.0_dp/(nu_boz*nv_boz)
52  ELSE
53  fac = 2.0_dp/((nu2_b-1)*nv_boz)
54  END IF
55 
56  scl(:mnboz) = fac
57 
58  WHERE (nint(xnb(:mnboz)).eq.0 .and. nint(xmb(:mnboz)).eq.0)
59  1 scl(:mnboz) = fac/2
60 
61  ntorsum(0) = 0
62  ntorsum(1) = 0
63 
64  DO i=1,mnmax
65  IF (nint(xm(i)) .eq. 0) ntorsum(0) = ntorsum(0)+1
66  IF (nint(xm(i)) .le. 1) ntorsum(1) = ntorsum(1)+1
67  END DO
68 
69  ohs = (ns-1)
70  hs = one/ohs
71  DO i=2,ns
72  sfull(i) = sqrt(hs*(i-1))
73  END DO
74 
75  END SUBROUTINE setup_booz