V3FIT
init_saddle_coils.f
1  SUBROUTINE init_saddle_coils (nvariables, xvariables, nfp)
2 !-----------------------------------------------
3 ! M o d u l e s
4 !-----------------------------------------------
5  USE saddle_coils
6  IMPLICIT NONE
7 !-----------------------------------------------
8 ! L o c a l V a r i a b l e s
9 !-----------------------------------------------
10  INTEGER :: i, n, nsv, nc, modes, nfp
11  INTEGER :: nvariables
12  REAL(rprec) :: xvariables(*)
13 !-----------------------------------------------
14 
15  nc = nsad_coils_per_period
16  nvariables = 0
17  nsad_coeffs = 0
18 
19  nsad_coils = nc * nfp
20  nsmid = nc/2
21  nsodd = mod(nc,2)
22  nsad_unique_coils = nsmid
23 
24  IF (nsad_coils .le. 0) RETURN
25 
26 ! initialize the variables to values of unique coil parameters
27 ! and count the number of variables
28 
29  nsv = 0
30 
31  IF (lspline) THEN
32 
33  ! initialize bspline series representation
34  DO i = 1, nsmid
35  ! coefficients for v
36  DO n = 1, nsad_v - 3
37  IF (nvar_vc(i,n).ne.0) THEN
38  nsv = nsv + 1
39  xvariables(nsv) = sad_v_c(i,n)
40  END IF
41  END DO
42  IF (lsplbkp) THEN
43  ! breakpoints for v
44  DO n = 5, nsad_v
45  nsv = nsv + 1
46  xvariables(nsv) = sad_v_s(i,n)
47  END DO
48  END IF
49  IF (nsad_u .gt. 0) THEN
50  ! coefficients for u
51  DO n = 1, nsad_u - 3
52  IF (nvar_uc(i,n).ne.0) THEN
53  nsv = nsv + 1
54  xvariables(nsv) = sad_u_c(i,n)
55  END IF
56  END DO
57  IF (lsplbkp) THEN
58  ! breakpoints for u
59  DO n = 5, nsad_u
60  nsv = nsv + 1
61  xvariables(nsv) = sad_u_s(i,n)
62  END DO
63  END IF
64  END IF
65  END DO
66 
67  ELSE
68 
69  ! initialize fourier series representation
70  DO i = 1, nsmid
71  modes = 0
72  nsv = nsv + 1
73  xvariables(nsv) = sad_v_c(i,modes)
74  DO modes = 1,nsad_v
75  nsv = nsv + 1
76  xvariables(nsv) = sad_v_c(i,modes)
77  nsv = nsv + 1
78  xvariables(nsv) = sad_v_s(i,modes)
79  END DO
80 
81  modes = 0
82  IF (nsad_u .gt. 0) THEN
83  nsv = nsv + 1
84  xvariables(nsv) = sad_u_c(i,modes)
85  DO modes = 1,nsad_u
86  nsv = nsv + 1
87  xvariables(nsv) = sad_u_c(i,modes)
88  nsv = nsv + 1
89  xvariables(nsv) = sad_u_s(i,modes)
90  END DO
91  END IF
92  END DO
93 
94  END IF ! IF (lspline)
95 
96  nsad_coeffs = nsv
97 
98  IF (lsadshape) THEN
99  nvariables = nsv
100  ELSE
101  nvariables = 0
102  END IF
103 
104  END SUBROUTINE init_saddle_coils