V3FIT
printit.f
1  SUBROUTINE printit(rin,zin,rbc,zbs,rbs,zbc,rmnaxis,zmnaxis)
2 !-----------------------------------------------
3 ! M o d u l e s
4 !-----------------------------------------------
5  USE vname0
6  USE vname1
7  IMPLICIT NONE
8 !-----------------------------------------------
9 ! D u m m y A r g u m e n t s
10 !-----------------------------------------------
11  REAL(rprec), DIMENSION(*) :: rin, zin
12  REAL(rprec), DIMENSION(0:mpol-1,-nphi2:nphi2) ::
13  1 rbc, zbs, rbs, zbc
14  REAL(rprec), DIMENSION(0:nphi2) :: rmnaxis, zmnaxis
15 !-----------------------------------------------
16 ! L o c a l V a r i a b l e s
17 !-----------------------------------------------
18  REAL(rprec), PARAMETER :: p25 = 0.25_dp
19  INTEGER :: i, m, n, n11
20  REAL(rprec) :: tol, rhobcc, rhobss, rhobcs, rhobsc
21  REAL(rprec), DIMENSION(0:mpol-1, -nphi2:nphi2) ::
22  1 rhoc, rhos
23  CHARACTER*250 :: form_string
24 !-----------------------------------------------
25 
26  OPEN(unit=10, file='plotout', status='unknown')
27  WRITE (10, 1990) mpol, ntheta, nphi, mpol-1, nphi2, nfp, mpnt
28  1990 FORMAT(7i10)
29  DO i = 1, nphi*ntheta
30  WRITE (10, 1995) rin(i), zin(i)
31  END DO
32  1995 FORMAT(1p,2e12.4)
33 
34  print *, ' OUTPUTTING FOURIER COEFFICIENTS TO OUTCURVE FILE'
35 !**********************************************************************
36 ! This SUBROUTINE prints out data into the file "outcurve"
37 ! The FORMAT of the modes is compatible with input to VMEC
38 !**********************************************************************
39  WRITE (3, 10)
40  10 FORMAT(/' MB NB RBC RBS ',
41  1 'ZBC ZBS RAXIS ZAXIS')
42  tol = 1.e-6_dp*abs(rbc(1,0))
43  DO m = 0, mpol-1
44  DO n = -nphi2, nphi2
45  WRITE (10, 2000) rbc(m,n), zbs(m,n), rbs(m,n), zbc(m,n)
46  IF (.not.(abs(rbc(m,n)).lt.tol .and. abs(zbs(m,n)).lt.tol
47  1 .and. abs(rbs(m,n)).lt.tol .and. abs(zbc(m,n)).lt.tol))
48  2 THEN
49  IF (m.eq.0 .and. n.ge.0) THEN
50  WRITE (3, 30) m, n, rbc(m,n), rbs(m,n), zbc(m,n),
51  1 zbs(m,n), rmnaxis(n), zmnaxis(n)
52  ELSE
53  WRITE (3, 40) m, n, rbc(m,n), rbs(m,n), zbc(m,n),
54  1 zbs(m,n)
55  ENDIF
56  ENDIF
57  END DO
58  END DO
59  30 FORMAT(i5,i4,1p,6e12.4)
60  40 FORMAT(i5,i4,1p,4e12.4)
61  2000 FORMAT(1p,4e12.4)
62 
63 !**********************************************************************
64 ! WRITE OUT IN FORMAT THAT CAN BE IMPORTED INTO VMEC
65 !**********************************************************************
66  WRITE(3, *)
67  DO m = 0, mpol-1
68  DO n = -nphi2, nphi2
69  IF (.not.(abs(rbc(m,n)).lt.tol .and. abs(zbs(m,n)).lt.tol
70  1 .and. abs(rbs(m,n)).lt.tol .and. abs(zbc(m,n)).lt.tol))
71  2 THEN
72  n11 = nphi2/10 + 1
73  IF (n .lt. 0) n11 = n11+1
74  WRITE(form_string,'(a,4(a,i1,a,i1,a))')"(2x,",
75  1 "'RBC(',i",n11,",',',i",m/10+1,",') = ',1p,e14.6,3x,",
76  2 "'RBS(',i",n11,",',',i",m/10+1,",') = ',e14.6,3x,",
77  3 "'ZBC(',i",n11,",',',i",m/10+1,",') = ',e14.6,3x,",
78  4 "'ZBS(',i",n11,",',',i",m/10+1,",') = ',e14.6)"
79  WRITE(3, form_string) n,m,rbc(m,n), n,m,rbs(m,n),
80  1 n,m,zbc(m,n), n,m,zbs(m,n)
81  END IF
82  END DO
83  END DO
84 
85 !**********************************************************************
86 ! WRITE OUT R0C, Z0S, RHOCC, RHOSS, RHOCS, RHOSS THAT CAN BE IMPORTED INTO V3FIT/VMEC
87 !**********************************************************************
88  IF (hb_parameter .NE. one) RETURN
89 
90  WRITE (3, *)
91  WRITE(3, *) ' MB T1 T2'
92  DO m = 0, mrho-1
93  WRITE(3, 100) m,t1m(m),t2m(m)
94  DO n=-nphi2, nphi2
95  rhobcc = p25*(rbc(m+1,n)+zbs(m+1,n))/t1m(m+1)
96  IF (m .LE. 1) THEN
97  rhobss = rhobcc
98  ELSE
99  rhobss = p25*(rbc(m-1,n)-zbs(m-1,n))/t2m(m-1)
100  END IF
101  rhoc(m,n) = rhobcc + rhobss
102  rhobcs = p25*(rbs(m+1,n)-zbc(m+1,n))/t1m(m+1)
103  IF (m .LE. 1) THEN
104  rhobsc = rhobcs
105  ELSE
106  rhobsc = p25*(rbs(m-1,n)+zbc(m-1,n))/t2m(m-1)
107  END IF
108  rhos(m,n) = rhobcs+rhobsc
109  END DO
110  END DO
111  WRITE(3, 100) mrho,t1m(mrho),t2m(mrho)
112 
113  100 FORMAT(4x,i3,2(1p,e12.3))
114 
115  WRITE(3, *)
116  DO m = 0, mrho-1
117  DO n = 0, nphi2
118 
119  IF ((abs(rhoc(m,n)).lt.tol) .AND.
120  1 (abs(rhos(m,n)).lt.tol)) cycle
121 
122  n11 = nphi2/10 + 1
123  IF (m .eq. 0) THEN
124  END IF
125  WRITE(form_string,'(a,2(a,i1,a,i1,a))')"(2x,",
126  1 "'RHOC(',i",n11,",',',i",m/10+1,",') = ',1p,e14.6,3x,",
127  2 "'RHOS(',i",n11,",',',i",m/10+1,",') = ',e14.6)"
128  WRITE(3, form_string) n,m,rhoc(m,n), n,m,rhos(m,n)
129  END DO
130  END DO
131 
132  END SUBROUTINE printit