1 SUBROUTINE symforce_par(ars, brs, crs, azs, bzs, czs, bls, cls,
2 & rcs, zcs, ara, bra, cra, aza, bza, cza,
4 USE vmec_main, p5 => cp5
5 USE realspace,
ONLY: ireflect_par
6 USE parallel_include_module
12 REAL(dp),
DIMENSION(nzeta,ntheta3,ns,0:1),
13 &
INTENT(inout) :: ars, brs, crs, azs, bzs, czs,
15 REAL(dp),
DIMENSION(nzeta,ntheta3,ns,0:1),
INTENT(out) ::
16 & ara, bra, cra, aza, bza, cza, bla, cla, rca, zca
20 INTEGER :: mpar, ir, i, jk, jka
21 REAL(dp),
DIMENSION(:,:),
ALLOCATABLE :: ars_0, brs_0, azs_0,
22 & bzs_0, bls_0, rcs_0, zcs_0, crs_0, czs_0, cls_0
23 INTEGER :: nsmin, nsmax, j, k
29 ALLOCATE (ars_0(nzeta,ns), brs_0(nzeta,ns), azs_0(nzeta,ns),
30 & bzs_0(nzeta,ns), bls_0(nzeta,ns), rcs_0(nzeta,ns),
31 & zcs_0(nzeta,ns), crs_0(nzeta,ns), czs_0(nzeta,ns),
32 & cls_0(nzeta,ns), stat=ir)
51 ara(j,i,k,mpar) = p5*(ars(j,i,k,mpar) -
53 ars_0(j,k) = p5*(ars(j,i,k,mpar) +
55 bra(j,i,k,mpar) = p5*(brs(j,i,k,mpar) +
57 brs_0(j,k) = p5*(brs(j,i,k,mpar) -
59 aza(j,i,k,mpar) = p5*(azs(j,i,k,mpar) +
61 azs_0(j,k) = p5*(azs(j,i,k,mpar) -
63 bza(j,i,k,mpar) = p5*(bzs(j,i,k,mpar) -
65 bzs_0(j,k) = p5*(bzs(j,i,k,mpar) +
67 bla(j,i,k,mpar) = p5*(bls(j,i,k,mpar) -
69 bls_0(j,k) = p5*(bls(j,i,k,mpar) +
71 rca(j,i,k,mpar) = p5*(rcs(j,i,k,mpar) -
73 rcs_0(j,k) = p5*(rcs(j,i,k,mpar) +
75 zca(j,i,k,mpar) = p5*(zcs(j,i,k,mpar) +
77 zcs_0(j,k) = p5*(zcs(j,i,k,mpar) -
81 ars(:,i,k,mpar) = ars_0(:,k)
82 brs(:,i,k,mpar) = brs_0(:,k)
83 azs(:,i,k,mpar) = azs_0(:,k)
84 bzs(:,i,k,mpar) = bzs_0(:,k)
85 bls(:,i,k,mpar) = bls_0(:,k)
86 rcs(:,i,k,mpar) = rcs_0(:,k)
87 zcs(:,i,k,mpar) = zcs_0(:,k)
92 cra(j,i,k,mpar)= p5*(crs(j,i,k,mpar) +
94 crs_0(j,k) = p5*(crs(j,i,k,mpar) -
96 cza(j,i,k,mpar)= p5*(czs(j,i,k,mpar) -
98 czs_0(j,k) = p5*(czs(j,i,k,mpar) +
100 cla(j,i,k,mpar)= p5*(cls(j,i,k,mpar) -
101 & cls(jka,ir,k,mpar))
102 cls_0(j,k) = p5*(cls(j,i,k,mpar) +
103 & cls(jka,ir,k,mpar))
106 crs(:,i,k,mpar) = crs_0(:,k)
107 czs(:,i,k,mpar) = czs_0(:,k)
108 cls(:,i,k,mpar) = cls_0(:,k)
115 DEALLOCATE (ars_0, brs_0, azs_0, bzs_0, bls_0,
116 1 rcs_0, zcs_0, crs_0, czs_0, cls_0, stat=ir)
118 CALL second0(tforoff)
119 symforces_time = symforces_time + (tforoff - tforon)
120 timer(tfor) = timer(tfor) + (tforoff - tforon)
122 END SUBROUTINE symforce_par
124 SUBROUTINE symforce(ars, brs, crs, azs, bzs, czs, bls, cls, rcs,
125 & zcs, ara, bra, cra, aza, bza, cza, bla, cla,
127 USE vmec_main, p5 => cp5
128 USE parallel_include_module
134 REAL(dp),
DIMENSION(ns*nzeta,ntheta3,0:1),
INTENT(inout) ::
135 & ars, brs, crs, azs, bzs, czs, bls, cls, rcs, zcs
136 REAL(dp),
DIMENSION(ns*nzeta,ntheta3,0:1),
INTENT(out) ::
137 & ara, bra, cra, aza, bza, cza, bla, cla, rca, zca
141 INTEGER :: mpar, ir, i, jk, jka
142 REAL(dp),
DIMENSION(:),
ALLOCATABLE :: ars_0, brs_0, azs_0,
143 & bzs_0, bls_0, rcs_0, zcs_0, crs_0, czs_0, cls_0
147 ALLOCATE (ars_0(i), brs_0(i), azs_0(i), bzs_0(i), bls_0(i),
148 & rcs_0(i), zcs_0(i), crs_0(i), czs_0(i), cls_0(i),
167 ara(jk,i,mpar) = p5*(ars(jk,i,mpar) - ars(jka,ir,mpar))
168 ars_0(jk) = p5*(ars(jk,i,mpar) + ars(jka,ir,mpar))
169 bra(jk,i,mpar) = p5*(brs(jk,i,mpar) + brs(jka,ir,mpar))
170 brs_0(jk) = p5*(brs(jk,i,mpar) - brs(jka,ir,mpar))
171 aza(jk,i,mpar) = p5*(azs(jk,i,mpar) + azs(jka,ir,mpar))
172 azs_0(jk) = p5*(azs(jk,i,mpar) - azs(jka,ir,mpar))
173 bza(jk,i,mpar) = p5*(bzs(jk,i,mpar) - bzs(jka,ir,mpar))
174 bzs_0(jk) = p5*(bzs(jk,i,mpar) + bzs(jka,ir,mpar))
175 bla(jk,i,mpar) = p5*(bls(jk,i,mpar) - bls(jka,ir,mpar))
176 bls_0(jk) = p5*(bls(jk,i,mpar) + bls(jka,ir,mpar))
177 rca(jk,i,mpar) = p5*(rcs(jk,i,mpar) - rcs(jka,ir,mpar))
178 rcs_0(jk) = p5*(rcs(jk,i,mpar) + rcs(jka,ir,mpar))
179 zca(jk,i,mpar) = p5*(zcs(jk,i,mpar) + zcs(jka,ir,mpar))
180 zcs_0(jk) = p5*(zcs(jk,i,mpar) - zcs(jka,ir,mpar))
183 ars(:,i,mpar) = ars_0(:)
184 brs(:,i,mpar) = brs_0(:)
185 azs(:,i,mpar) = azs_0(:)
186 bzs(:,i,mpar) = bzs_0(:)
187 bls(:,i,mpar) = bls_0(:)
188 rcs(:,i,mpar) = rcs_0(:)
189 zcs(:,i,mpar) = zcs_0(:)
194 cra(jk,i,mpar) = p5*(crs(jk,i,mpar) +
196 crs_0(jk) = p5*(crs(jk,i,mpar) -
198 cza(jk,i,mpar) = p5*(czs(jk,i,mpar) -
200 czs_0(jk) = p5*(czs(jk,i,mpar) +
202 cla(jk,i,mpar) = p5*(cls(jk,i,mpar) -
204 cls_0(jk) = p5*(cls(jk,i,mpar) +
208 crs(:,i,mpar) = crs_0(:)
209 czs(:,i,mpar) = czs_0(:)
210 cls(:,i,mpar) = cls_0(:)
216 DEALLOCATE (ars_0, brs_0, azs_0, bzs_0, bls_0,
217 1 rcs_0, zcs_0, crs_0, czs_0, cls_0, stat=ir)
220 CALL second0(tforoff)
221 s_symforces_time = s_symforces_time + (tforoff - tforon)
222 timer(tfor) = timer(tfor) + (tforoff - tforon)
224 END SUBROUTINE symforce
226 SUBROUTINE symoutput(bsq, gsqrt , bsubu , bsubv ,bsupu,
229 & ppar, pperp, densit, sigma_an, tau_an,
232 & bsqa, gsqrta, bsubua, bsubva, bsupua,
235 & , ppara, pperpa, densita, sigma_ana, tau_ana,
240 USE vmec_main, p5 => cp5
245 REAL(dp),
DIMENSION(ns*nzeta,ntheta3),
INTENT(inout) ::
246 & bsq, gsqrt, bsubu, bsubv, bsupu, bsupv, bsubs
248 REAL(dp),
DIMENSION(ns*nzeta,ntheta3),
INTENT(inout) ::
249 & ppar, pperp, sigma_an, tau_an, pbprim, ppprim, densit
251 REAL(dp),
DIMENSION(ns*nzeta,ntheta3),
INTENT(out) ::
252 & bsqa,gsqrta,bsubua,bsubva,bsupua,bsupva,bsubsa
254 REAL(dp),
DIMENSION(ns*nzeta,ntheta3),
INTENT(out) ::
255 & ppara, pperpa, sigma_ana, tau_ana, pbprima, ppprima,
261 INTEGER :: ir, i, jk, jka
262 REAL(dp),
DIMENSION(ns*nzeta) :: bsq_0, gsqrt_0, bsubu_0,
263 & bsubv_0, bsupu_0, bsupv_0, bsubs_0
265 REAL(dp),
DIMENSION(ns*nzeta) :: ppar_0, pperp_0,
266 & sigma_an0 , tau_an0 , pbprim_0, ppprim_0, densit_0
287 bsqa(jk,i) = p5*(bsq(jk,i) - bsq(jka,ir))
288 bsq_0(jk) = p5*(bsq(jk,i) + bsq(jka,ir))
289 gsqrta(jk,i) = p5*(gsqrt(jk,i) - gsqrt(jka,ir))
290 gsqrt_0(jk) = p5*(gsqrt(jk,i) + gsqrt(jka,ir))
291 bsubua(jk,i) = p5*(bsubu(jk,i) - bsubu(jka,ir))
292 bsubu_0(jk) = p5*(bsubu(jk,i) + bsubu(jka,ir))
293 bsubva(jk,i) = p5*(bsubv(jk,i) - bsubv(jka,ir))
294 bsubv_0(jk) = p5*(bsubv(jk,i) + bsubv(jka,ir))
295 bsupua(jk,i) = p5*(bsupu(jk,i) - bsupu(jka,ir))
296 bsupu_0(jk) = p5*(bsupu(jk,i) + bsupu(jka,ir))
297 bsupva(jk,i) = p5*(bsupv(jk,i) - bsupv(jka,ir))
298 bsupv_0(jk) = p5*(bsupv(jk,i) + bsupv(jka,ir))
300 sigma_ana(jk,i) = p5*(sigma_an(jk,i) - sigma_an(jka,ir))
301 sigma_an0(jk) = p5*(sigma_an(jk,i) + sigma_an(jka,ir))
302 tau_ana(jk,i) = p5*(tau_an(jk,i) - tau_an(jka,ir))
303 tau_an0(jk) = p5*(tau_an(jk,i) + tau_an(jka,ir))
304 ppara(jk,i) = p5*(ppar(jk,i) - ppar(jka,ir))
305 ppar_0(jk) = p5*(ppar(jk,i) + ppar(jka,ir))
306 pperpa(jk,i) = p5*(pperp(jk,i) - pperp(jka,ir))
307 pperp_0(jk) = p5*(pperp(jk,i) + pperp(jka,ir))
308 pbprima(jk,i) = p5*(pbprim(jk,i) - pbprim(jka,ir))
309 pbprim_0(jk) = p5*(pbprim(jk,i) + pbprim(jka,ir))
310 ppprima(jk,i) = p5*(ppprim(jk,i) - ppprim(jka,ir))
311 ppprim_0(jk) = p5*(ppprim(jk,i) + ppprim(jka,ir))
312 densita(jk,i) = p5*(densit(jk,i) - densit(jka,ir))
313 densit_0(jk) = p5*(densit(jk,i) + densit(jka,ir))
316 bsubsa(jk,i) = p5*(bsubs(jk,i) + bsubs(jka,ir))
317 bsubs_0(jk) = p5*(bsubs(jk,i) - bsubs(jka,ir))
321 gsqrt(:,i) = gsqrt_0(:)
322 bsubu(:,i) = bsubu_0(:)
323 bsubv(:,i) = bsubv_0(:)
324 bsupu(:,i) = bsupu_0(:)
325 bsupv(:,i) = bsupv_0(:)
326 bsubs(:,i) = bsubs_0(:)
328 sigma_an(:,i) = sigma_an0(:)
329 tau_an(:,i) = tau_an0(:)
330 ppar(:,i) = ppar_0(:)
331 pperp(:,i) = pperp_0(:)
332 pbprim(:,i) = pbprim_0(:)
333 ppprim(:,i) = ppprim_0(:)
334 densit(:,i) = densit_0(:)
339 END SUBROUTINE symoutput
343 SUBROUTINE symoutput_sur(bsubu, bsubv, bsupu, bsupv, &
344 & bsubua, bsubva, bsupua, bsupva)
345 USE vmec_main, p5 => cp5
352 REAL(dp),
DIMENSION(nzeta,ntheta3),
INTENT(inout) ::
353 1 bsubu, bsubv, bsupu, bsupv
354 REAL(dp),
DIMENSION(nzeta,ntheta2),
INTENT(out) ::
355 1 bsubua, bsubva, bsupua, bsupva
360 INTEGER :: ir, i, jk, jka
361 REAL(dp),
DIMENSION(nzeta) :: bsubu_0, bsubv_0,
380 bsubua(jk,i) = p5*(bsubu(jk,i) - bsubu(jka,ir))
381 bsubu_0(jk) = p5*(bsubu(jk,i) + bsubu(jka,ir))
382 bsubva(jk,i) = p5*(bsubv(jk,i) - bsubv(jka,ir))
383 bsubv_0(jk) = p5*(bsubv(jk,i) + bsubv(jka,ir))
384 bsupua(jk,i) = p5*(bsupu(jk,i) - bsupu(jka,ir))
385 bsupu_0(jk) = p5*(bsupu(jk,i) + bsupu(jka,ir))
386 bsupva(jk,i) = p5*(bsupv(jk,i) - bsupv(jka,ir))
387 bsupv_0(jk) = p5*(bsupv(jk,i) + bsupv(jka,ir))
393 bsubu(:,i) = bsubu_0(:)
394 bsubv(:,i) = bsubv_0(:)
395 bsupu(:,i) = bsupu_0(:)
396 bsupv(:,i) = bsupv_0(:)
400 END SUBROUTINE symoutput_sur