1 SUBROUTINE printout(i0, delt0, w0, lscreen)
6 USE angle_constraints,
ONLY: getrz
8 USE parallel_include_module
10 USE vmec_params,
ONLY: ntmax
21 CHARACTER(LEN=*),
PARAMETER ::
23 1 iter_line =
" ITER FSQRHO FSQ(m=0) FSQL ",
24 1 iter_lines=
" ITER FSQRHO FSQ(m=0) FSQL ",
25 2 fsq_line =
" fsqrho fsq(m=0) fsql DELT ",
26 2 fsq_lines =
" fsqrho fsq(m=0) fsql DELT ",
27 4 raxis_line =
" RAX(v=0) ",
29 1 iter_line =
" ITER FSQR FSQZ FSQL ",
30 2 fsq_line =
" fsqr fsqz fsql DELT ",
31 3 iter_lines = iter_line, fsq_lines = fsq_line,
32 4 raxis_line =
"RAX(v=0) ",
34 3 delt_line =
" DELT ",
35 5 zaxis_line =
" ZAX(v=0) "
39 REAL(dp) :: betav, w, avm, den, tbroadon, tbroadoff
40 REAL(dp),
ALLOCATABLE :: bcastbuf(:)
41 CHARACTER(len=LEN(iter_line) + LEN(fsq_line) +
1 LEN(raxis_line) + LEN(zaxis_line))
43 INTEGER :: i, j, k, l, lk
45 IF(grank .GE. nranks)
RETURN
48 betav = (2*wper + wpar)/(3*wb)
66 CALL spectrum_par (pgc(:irzloff), pgc(1+irzloff:2*irzloff))
67 CALL gather1xarray(vp)
68 CALL gather1xarray(specw)
70 CALL spectrum (gc(:irzloff), gc(1+irzloff:2*irzloff))
74 avm = dot_product(vp(2:ns),specw(2:ns)+specw(1:ns-1))
80 active1:
IF (lactive)
THEN
81 CALL second0(tbroadon)
82 ALLOCATE(bcastbuf(3*nznt+1))
83 bcastbuf(1:nznt) = dbsq
84 bcastbuf(nznt+1:2*nznt) = bsqsav(:,3)
85 bcastbuf(2*nznt+1:3*nznt) = rbsq
86 bcastbuf(3*nznt+1) = fedge
88 CALL mpi_bcast(bcastbuf,
SIZE(bcastbuf),mpi_real8,
89 1 nranks-1,ns_comm,mpi_err)
91 dbsq = bcastbuf(1:nznt)
92 bsqsav(:,3) = bcastbuf(nznt+1:2*nznt)
93 rbsq = bcastbuf(2*nznt+1:3*nznt)
94 fedge = bcastbuf(3*nznt+1)
97 CALL second0(tbroadoff)
98 broadcast_time = broadcast_time + (tbroadoff - tbroadon)
99 den = sum(bsqsav(:nznt,3)*pwint(:,2))
100 IF (den .NE. zero) delbsq =
101 1 sum(dbsq(:nznt)*pwint(:,2))/den
106 1 sum(dbsq(:nznt)*wint(2:nrzt:ns))/
107 2 sum(bsqsav(:nznt,3)*wint(2:nrzt:ns))
111 IF (i0.EQ.1 .AND. lfreeb)
THEN
112 print_line = iter_lines //
" " // raxis_line
113 IF (lasym) print_line = trim(print_line) //
" " // zaxis_line
114 IF (lscreen.AND.grank.EQ.0)
115 1 print 20, trim(print_line)//delt_line
116 print_line = iter_line // fsq_line // raxis_line
117 IF (lasym) print_line = trim(print_line) //
" " // zaxis_line
118 IF (imatch_phiedge .eq. 1)
THEN
119 IF(grank.EQ.0)
WRITE (nthreed, 15) trim(print_line)
121 IF(grank.EQ.0)
WRITE (nthreed, 16) trim(print_line)
123 ELSE IF (i0.eq.1 .and. .not.lfreeb)
THEN
124 print_line = raxis_line
125 IF (lasym) print_line = raxis_line // zaxis_line
126 IF (lscreen.AND.grank.EQ.0)
127 1 print 30, iter_lines, trim(print_line)//delt_line
128 print_line = iter_line // fsq_line // raxis_line //
" "
129 IF (lasym) print_line = iter_line // fsq_line // raxis_line
131 IF (grank .EQ. 0)
WRITE (nthreed, 25) trim(print_line)
133 15
FORMAT(/,a,6x,
'WMHD BETA <M> DEL-BSQ FEDGE',/)
134 16
FORMAT(/,a,6x,
'WMHD BETA PHIEDGE DEL-BSQ FEDGE',/)
135 20
FORMAT(/,a,6x,
'WMHD DEL-BSQ',/)
136 25
FORMAT(/,a,6x,
'WMHD BETA <M> ',/)
137 30
FORMAT(/,a,1x,a,5x,
'WMHD',/)
139 IF (.not. lasym)
THEN
140 IF (.not.lfreeb)
THEN
141 IF (lscreen.AND.grank.EQ.0)
142 1 print 45, i0, fsqr, fsqz, fsql, r00, delt0, w
143 IF(grank.EQ.0)
WRITE (nthreed, 40) i0, fsqr, fsqz, fsql,
144 1 fsqr1, fsqz1, fsql1, delt0, r00, w, betav, avm
147 IF (lscreen.AND.grank.EQ.0)
148 1 print 50, i0, fsqr, fsqz, fsql, r00, delt0, w,
150 IF (imatch_phiedge .eq. 1)
THEN
151 IF(grank.EQ.0)
WRITE (nthreed, 40) i0, fsqr, fsqz, fsql,
152 1 fsqr1, fsqz1, fsql1, delt0, r00, w, betav, avm, delbsq,
155 IF(grank.EQ.0)
WRITE (nthreed, 42) i0, fsqr, fsqz, fsql,
156 1 fsqr1, fsqz1, fsql1, delt0, r00, w, betav,
157 2 abs(phiedge), delbsq, fedge
161 IF (.not.lfreeb)
THEN
162 IF (lscreen.AND.grank.EQ.0)
163 1 print 65, i0, fsqr, fsqz, fsql, r00, z00,
165 IF(grank.EQ.0)
WRITE (nthreed, 60) i0, fsqr, fsqz, fsql,
166 1 fsqr1, fsqz1, fsql1, delt0, r00, z00, w, betav, avm
169 IF (lscreen.AND.grank.EQ.0)
170 1 print 70, i0, fsqr, fsqz, fsql, r00, z00,
172 IF (imatch_phiedge .eq. 1)
THEN
173 IF(grank.EQ.0)
WRITE (nthreed, 60) i0, fsqr, fsqz, fsql,
174 1 fsqr1, fsqz1, fsql1, delt0, r00, z00, w, betav, avm,
177 IF(grank.EQ.0)
WRITE (nthreed, 60) i0, fsqr, fsqz, fsql,
178 1 fsqr1, fsqz1, fsql1, delt0, r00, z00, w, betav,
179 2 abs(phiedge), delbsq, fedge
183 40
FORMAT(i6,1x,1p,7e10.2,e11.3,e12.4,e11.3,0p,f7.3,1p,2e9.2)
184 42
FORMAT(i5,1p,7e10.2,e11.3,e12.4,2e11.3,0p,f7.3,1p,e9.2)
185 45
FORMAT(i5,1p,3e10.2,e11.3,e10.2,e12.4)
186 50
FORMAT(i5,1p,3e10.2,e11.3,e10.2,e12.4,e11.3)
187 60
FORMAT(i6,1x,1p,7e10.2,2e11.3,e12.4,e11.3,0p,f7.3,1p,2e9.2)
188 65
FORMAT(i5,1p,3e10.2,2e11.3,e10.2,e12.4)
189 70
FORMAT(i5,1p,3e10.2,2e11.3,e10.2,e12.4,e11.3)
191 END SUBROUTINE printout