V3FIT
load_saddle_coils.f
1  SUBROUTINE load_saddle_coils (nvariables, xvariables)
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, modes
11  INTEGER :: nvariables
12  REAL(rprec) :: xvariables(*)
13 !-----------------------------------------------
14 
15 ! load the unique coil parameters with values from variables in
16 ! optimization
17 
18  nvariables = 0
19  nsv = 0
20 
21  IF (.not.lsadshape) RETURN
22 
23  IF (lspline) THEN
24 
25  ! load bspline series representation
26  DO i = 1, nsmid
27  ! coefficients for v
28  DO n = 1, nsad_v - 3
29  IF (nvar_vc(i,n).ne.0) THEN
30  nsv = nsv + 1
31  sad_v_c(i,n) = xvariables(nsv)
32  END IF
33  END DO
34  IF (lsplbkp) THEN
35  ! breakpoints for v
36  DO n = 5, nsad_v
37  nsv = nsv + 1
38  sad_v_s(i,n) = xvariables(nsv)
39  IF (sad_v_s(i,n) .le. sad_v_s(i,n-1)) THEN
40  stop 'v-spline knots decreasing'
41  END IF
42  END DO
43  END IF
44  IF (nsad_u .gt. 0) THEN
45  ! coefficients for u
46  DO n = 1, nsad_u - 3
47  IF (nvar_uc(i,n).ne.0) THEN
48  nsv = nsv + 1
49  sad_u_c(i,n) = xvariables(nsv)
50  END IF
51  END DO
52  IF (lsplbkp) THEN
53  ! breakpoints for u
54  DO n = 5, nsad_u
55  nsv = nsv + 1
56  sad_u_s(i,n) = xvariables(nsv)
57  IF (sad_u_s(i,n) .le. sad_u_s(i,n-1)) THEN
58  stop 'u-spline knots decreasing'
59  END IF
60  END DO
61  END IF
62  END IF
63  END DO
64 
65  ELSE
66 
67  ! load fourier series representation
68  DO i = 1, nsmid
69  modes = 0
70  nsv = nsv + 1
71  sad_v_c(i,modes) = xvariables(nsv)
72  sad_v_s(i,modes) = 0
73  DO modes = 1,nsad_v
74  nsv = nsv + 1
75  sad_v_c(i,modes) = xvariables(nsv)
76  nsv = nsv + 1
77  sad_v_s(i,modes) = xvariables(nsv)
78  END DO
79 
80  IF (nsad_u .gt. 0) THEN
81  modes = 0
82  nsv = nsv + 1
83  sad_u_c(i,modes) = xvariables(nsv)
84  sad_u_s(i,modes) = 0
85  DO modes = 1,nsad_u
86  nsv = nsv + 1
87  sad_u_c(i,modes) = xvariables(nsv)
88  nsv = nsv + 1
89  sad_u_s(i,modes) = xvariables(nsv)
90  END DO
91  END IF
92  END DO
93 
94  END IF ! IF (lspline)
95 
96  nvariables = nsv
97 
98  END SUBROUTINE load_saddle_coils