1 SUBROUTINE eqfor(br, bz, bsubu, bsubv, tau, rzl_array, ier_flag)
5 USE vforces, r12 => armn_o, bsupu => crmn_e, bsupv => czmn_e,
6 1 gsqrt => azmn_o, bsq => bzmn_o, izeta => azmn_e,
7 2 brho => bzmn_e, bphi => czmn_o, curtheta => brmn_e
18 USE stel_constants,
ONLY: pi
20 USE xstuff,
ONLY: xc, pxc
28 REAL(dp),
DIMENSION(ns,nznt,0:1),
INTENT(in) :: bsubu, bsubv
29 REAL(dp),
DIMENSION(nrzt),
INTENT(out) :: br, bz
30 REAL(dp),
DIMENSION(nrzt),
INTENT(out) :: tau
31 REAL(dp),
DIMENSION(ns,0:ntor,0:mpol1,3*ntmax),
TARGET,
32 &
INTENT(in) :: rzl_array
36 REAL(dp),
PARAMETER :: c1p5=1.5_dp
40 INTEGER :: i, icount, itheta, js, js1, l, loff,
41 & lpi, lt, n, n1, nchicur, nchiiota0, noff,
42 & nout, nsort, iv, iu, lk, nplanes
43 REAL(dp),
DIMENSION(:),
POINTER ::
44 & rmags, zmags, rmaga, zmaga
45 REAL(dp),
DIMENSION(:,:,:),
POINTER :: rmncc,zmnsc
46 REAL(dp),
DIMENSION(ns) :: phi1, chi1, jPS2
47 REAL(dp) :: modb(nznt)
48 REAL(dp),
DIMENSION(:),
ALLOCATABLE ::
49 & btor_vac, btor1, dbtor, phat, t12u, guu_1u, surf_area,
50 & r3v, redge, rbps1u, bpol2vac, phipf_loc
53 & aspectratio, betai, betstr, scaling_ratio,
54 & bminz2, bminz2in, btor, iotamax, musubi,
55 & bzcalc, bzin, chisq, chiwgt, cur0,
56 & delphid_exact, delta1, delta2, delta3, denwgt, lambda,
58 & er, es, fac, facnorm, factor, fgeo,
59 & fmax, fmin, flao, fpsi0, pavg, pitchc, pitchm,
60 & pprime, qedge, qmin1, qmin2, qmin3, qzero,
61 & raxis0, rcalc, rcen,
63 & rjs1, rlao, rqmin1, rqmin2, rshaf, rshaf1, rshaf2, s11, s12,
64 & s13, s2, s3, sigr0, sigr1, sigz1, smaleli,
65 & splintx, splints, sqmin, sumbpol, sumbtot, sumbtor, sump,
66 & sump2, sump20, t1, tz, jpar_perp=0, jparps_perp=0,
67 & tol, toroidal_flux, vnorm, vprime, wght0, xmax,
68 & xmida, xmidb, xmin, rzmax, rzmin, zxmax, zxmin, zaxis0,
69 & zmax, zmin, yr1u, yz1u, waist(2), height(2)
70 REAL(dp) :: d_of_kappa, tmpxc, rmssum
71 INTEGER :: istat1, OFU, j, k
75 EXTERNAL splintx, splints
80 rmags => rzl_array(1,:,0,rcc)
81 zmags => rzl_array(1,:,0,zcs+ntmax)
82 rmncc => rzl_array(:,:,:,rcc)
83 zmnsc => rzl_array(:,:,:,zsc+ntmax)
85 rmaga => rzl_array(1,:,0,rcs)
86 zmaga => rzl_array(1,:,0,zcc+ntmax)
90 CALL bss(r12, bzmn, brmn, azmn, armn, crmn_o, bsupu, bsupv,
96 IF ((lfreeb .and. ivac .gt. 1) .or. ledge_dump)
THEN
97 IF (
ALLOCATED(bredge))
THEN
98 DEALLOCATE(bredge, bpedge, bzedge)
100 ALLOCATE(bredge(2*nznt), bpedge(2*nznt), bzedge(2*nznt),
102 IF (i .ne. 0) stop
'Error in EQFOR allocating bredge'
105 lk = iv + nzeta*(iu - 1)
107 bredge(lk) = 1.5_dp*br(n1) - p5*br(n1 - 1)
108 bpedge(lk) = 1.5_dp*bphi(n1) - p5*bphi(n1 - 1)
109 bzedge(lk) = 1.5_dp*bz(n1) - p5*bz(n1 - 1)
116 CALL mirror_crit(tau_an, bsq)
125 CALL jxbforce(bsupu, bsupv, bsubu, bsubv, crmn_o, rcon, zcon,
126 & gsqrt, bsq, curtheta, izeta, brho, sigma_an,
129 & , pp1, pp2, ppar, onembc
138 tau(2:nrzt) = signgs*wint(2:nrzt)*gsqrt(2:nrzt)
140 s2 = sum(bsq(i:nrzt:ns)*tau(i:nrzt:ns))/vp(i) - pres(i)
141 overr(i) = sum(tau(i:nrzt:ns)/r12(i:nrzt:ns)) / vp(i)
142 beta_vol(i) = pres(i)/s2
145 betaxis = c1p5*beta_vol(2) - p5*beta_vol(3)
147 IF (grank.EQ. 0)
WRITE (nthreed, 5)
148 5
FORMAT(/,
' NOTE: S=normalized toroidal flux (0 - 1)',/,
149 1
' U=poloidal angle (0 - 2*pi)',/,
150 1
' V=geometric toroidal angle (0 - 2*pi)',/,
151 1
' <RADIAL FORCE> = d(Ipol)/dPHI',
152 1
' - IOTA*d(Itor)/dPHI - dp/dPHI * d(VOL)/dPHI',/,
153 1
' = d(VOL)/dPHI*[<JSUPU>',
154 1
' - IOTA*<JSUPV> - SIGN(JAC)*dp/dPHI]',/,
155 1
' (NORMED TO SUM OF INDIVIDUAL TERMS)',//,
156 1
' S <RADIAL TOROIDAL IOTA ',
157 1
' <JSUPU> <JSUPV> d(VOL)/',
158 2
' d(PRES)/ <M> PRESF <BSUBU> <BSUBV>',
162 6
' d(PHI) ',/,148(
'-'),/)
163 ALLOCATE (phipf_loc(ns))
165 phipf_loc(1) = twopi*signgs*(c1p5*phip(2) - p5*phip(3))
166 presf(1) = c1p5*pres(2) - p5*pres(3)
168 presf(i) = p5*(pres(i) + pres(i + 1))
169 phipf_loc(i) = p5*twopi*signgs*(phip(i) + phip(i + 1))
171 presf(ns) = c1p5*pres(ns) - p5*pres(ns - 1)
172 phipf_loc(ns) = twopi*signgs*(c1p5*phip(ns) - p5*phip(ns1))
177 phi1(i) = phi1(i - 1) + hs*phip(i)
178 chi1(i) = chi1(i - 1) + hs*(phip(i)*iotas(i))
186 CALL calc_fbal(bsubu, bsubv)
189 bvcof(1) = c1p5*bvco(2) - p5*bvco(3)
196 equif(i) = equif(i)*vpphi(i)/(abs(jcurv(i)*chipf(i)) +
197 & abs(jcuru(i)*phipf(i)) +
198 & abs(presgrad(i)*vpphi(i)))
199 bucof(i) = p5*(buco(i) + buco(i + 1))
200 bvcof(i) = p5*(bvco(i) + bvco(i + 1))
203 bucof(ns) = c1p5*buco(ns) - p5*buco(ns1)
204 bvcof(ns) = c1p5*bvco(ns) - p5*bvco(ns1)
206 equif(1) = two*equif(2) - equif(3)
207 jcuru(1) = two*jcuru(2) - jcuru(3)
208 jcurv(1) = two*jcurv(2) - jcurv(3)
209 presgrad(1) = two*presgrad(2) - presgrad(3)
210 presgrad(ns) = two*presgrad(ns1) - presgrad(ns1-1)
211 vpphi(1) = two*vpphi(2) - vpphi(3)
212 vpphi(ns) = two*vpphi(ns1) - vpphi(ns1-1)
213 equif(ns) = two*equif(ns1) - equif(ns1-1)
214 jcuru(ns) = two*jcuru(ns1) - jcuru(ns1-1)
215 jcurv(ns) = two*jcurv(ns1) - jcurv(ns1-1)
221 cur0 = fac*vpphi(js)*twopi
222 IF (rank .EQ. 0)
THEN
223 WRITE (nthreed, 30) es, equif(js), fac*phi1(js), iotaf(js),
224 & jcuru(js)/vpphi(js)/mu0,
225 & jcurv(js)/vpphi(js)/mu0,
226 & cur0/phipf_loc(js),
227 & presgrad(js)/phipf_loc(js)/mu0,
228 & specw(js), presf(js)/mu0, bucof(js),
229 & bvcof(js), jdotb(js), bdotb(js)
232 30
FORMAT(1p,2e10.2,2e12.4,4e11.3,0p,f7.3,1p,5e11.3)
234 DEALLOCATE(phipf_loc)
239 IF (ier_flag .NE. successful_term_flag)
RETURN
246 toroidal_flux = anorm*sum(bsupv(2:nrzt)*tau(2:nrzt))
252 ALLOCATE(guu_1u(nznt), surf_area(nznt))
253 guu_1u(:nznt) = ru0(ns:nrzt:ns)*ru0(ns:nrzt:ns) +
254 1 zu0(ns:nrzt:ns)*zu0(ns:nrzt:ns)
255 surf_area(:nznt) = wint(ns:nrzt:ns)*sqrt(guu_1u(:nznt))
256 circum_p = twopi*sum(surf_area(:nznt))
257 surf_area(:nznt) = wint(ns:nrzt:ns)*sqrt(
258 1 + (r1(ns:nrzt:ns,0) + r1(ns:nrzt:ns,1))**2*guu_1u(:nznt)
259 2 +((rv(ns:nrzt:ns,0) + rv(ns:nrzt:ns,1))*zu0(ns:nrzt:ns)
260 3 - (zv(ns:nrzt:ns,0) + zv(ns:nrzt:ns,1))*ru0(ns:nrzt:ns))**2)
261 surf_area_p = twopi**2*sum(surf_area(:nznt))
264 aspect = aspectratio()
287 d_of_kappa = surf_area_p * aminor_p / ( 2 * volume_p)
288 kappa_p = 1 + (pi * pi / 8) * (d_of_kappa ** 2 + sqrt
289 & (abs(d_of_kappa ** 4 - 1)) -1)
290 vvc_kappa_p = kappa_p
292 aminr1 = 2*volume_p/surf_area_p
304 rcenin = dot_product(rmncc(ns,n1,:mpol1+1:2),
305 1 mscale(:mpol1:2)*nscale(n))
309 t12u(:l) = mscale(1:mpol1:2)*nscale(n)
310 aminr2in = dot_product(rmncc(ns,n1,2:mpol1+1:2),t12u(:l))
311 bminz2in = dot_product(zmnsc(ns,n1,2:mpol1+1:2),t12u(:l))
312 bminz2 = dot_product(zmnsc(ns,n1,2:mpol1+1:2),t12u(:l))
314 aminr1 = sqrt(two*volume_p/(twopi*twopi*r00))
319 sump = vnorm*sum(vp(2:ns)*pres(2:ns))
329 ALLOCATE (btor_vac(nznt), btor1(nznt), dbtor(nznt),
330 1 phat(nznt), redge(nznt))
336 btor_vac(:nznt) = rbtor/r12(js:nrzt:ns)
337 btor1(:nznt) = r12(js:nrzt:ns)*bsupv(js:nrzt:ns)
338 delphid_exact = delphid_exact + sum(
339 1 (btor_vac(:nznt)/r12(js:nrzt:ns) -
340 2 bsupv(js:nrzt:ns))*tau(js:nrzt:ns))
341 dbtor(:nznt) = btor1(:nznt)**2 - btor_vac(:nznt)**2
342 musubi = musubi - sum(dbtor(:nznt)*tau(js:nrzt:ns))
343 phat(:nznt) = bsq(js:nrzt:ns) - p5*btor_vac(:nznt)**2
344 phat(:nznt) = (phat(:nznt) - dbtor(:nznt))*tau(js:nrzt:ns)
345 rshaf1 = rshaf1 + sum(phat(:nznt))
346 rshaf2 = rshaf2 + sum(phat(:nznt)/r12(js:nrzt:ns))
349 redge(:nznt) = r1(ns:nrzt:ns,0) + r1(ns:nrzt:ns,1)
350 IF (lfreeb .and. ivac.gt.1)
THEN
351 phat = bsqvac(:) - p5*(bsubvvac/redge(:))**2
353 phat = c1p5*bsq(ns:nrzt:ns) - p5*bsq(ns-1:nrzt:ns)
354 1 - p5*(rbtor/redge(:))**2
357 DEALLOCATE (btor_vac, btor1, dbtor)
359 delphid_exact = anorm*delphid_exact
360 rshaf = rshaf1/rshaf2
361 fpsi0 = c1p5*bvco(2) - p5*bvco(3)
364 rmax_surf = maxval(r1(ns:nrzt:ns,0)+r1(ns:nrzt:ns,1))
365 rmin_surf = minval(r1(ns:nrzt:ns,0)+r1(ns:nrzt:ns,1))
366 zmax_surf = maxval(abs(z1(ns:nrzt:ns,0)+z1(ns:nrzt:ns,1)))
369 modb(:nznt) = sqrt(two*(bsq(js:nrzt:ns)-pres(js)))
370 CALL bextrema (modb, bmin(1,js), bmax(1,js), nzeta, ntheta2)
376 CALL elongation (r1, z1, waist, height)
378 IF(rank.EQ.0)
WRITE (nthreed, 75) bmin(1,ns), bmax(1,ns),
379 1 bmin(ntheta2,ns), bmax(ntheta2,ns)
381 1
' Magnetic field modulation (averaged over toroidal angle)',/,
382 2 1x,71(
'-')/,
' BMIN(u=0) = ',f14.6/
383 3
' BMAX(u=0) = ',f14.6/
' BMIN(u=pi) = ',
384 4 f14.6/
' BMAX(u=pi) = ',f14.6/)
386 sumbtot = 2*(vnorm*sum(bsq(2:nrzt)*tau(2:nrzt)) - sump)
387 sumbtor = vnorm*sum(tau(2:nrzt)*(r12(2:nrzt)*bsupv(2:nrzt))**2)
388 sumbpol = sumbtot - sumbtor
389 betapol = 2*sump/sumbpol
391 sump2 = sum(pres(2:ns)*pres(2:ns)*vp(2:ns)*vnorm)
392 betatot = sump20/sumbtot
393 betator = sump20/sumbtor
394 volavgb = sqrt(abs(sumbtot/volume_p))
395 ionlarmor = 0.0032_dp/volavgb
396 jps2(2:ns1) = (jpar2(2:ns1) - jdotb(2:ns1)**2/bdotb(2:ns1))
397 jpar_perp = sum(jpar2(2:ns1)*(vp(2:ns1) + vp(3:ns)))
398 jparps_perp = sum(jps2(2:ns1)*(vp(2:ns1) + vp(3:ns)))
399 s2 = sum(jperp2(2:ns1)*(vp(2:ns1) + vp(3:ns)))
400 IF (s2 .ne. zero)
THEN
401 jpar_perp = jpar_perp/s2
402 jparps_perp = jparps_perp/s2
404 IF (ntor .gt. 1)
THEN
405 IF(rank.EQ.0)
WRITE (nthreed, 80) aspect, kappa_p, volume_p,
406 1 cross_area_p, surf_area_p, circum_p, rmajor_p, aminor_p,
407 2 rmin_surf, rmax_surf, zmax_surf, waist(1), height(1),
408 3 waist(2), height(2)
410 IF(rank.EQ.0)
WRITE (nthreed, 80) aspect, kappa_p, volume_p,
411 1 cross_area_p, surf_area_p, circum_p, rmajor_p, aminor_p,
412 2 rmin_surf, rmax_surf, zmax_surf, waist(1), height(1)
414 80
FORMAT(/,
' Geometric and Magnetic Quantities',/,1x,71(
'-')/,
415 1
' Aspect Ratio = ',f14.6, /
416 1
' Mean Elongation = ',f14.6, /
417 1
' Plasma Volume = ',f14.6,
' [M**3]',/
418 2
' Cross Sectional Area = ',f14.6,
' [M**2]',/
419 3
' Normal Surface Area = ',f14.6,
' [M**2]',/
420 4
' Poloidal Circumference= ',f14.6,
' [M]',/
421 5
' Major Radius = ',f14.6,
' [M]',
422 6
' (from Volume and Cross Section)',/
423 7
' Minor Radius = ',f14.6,
' [M]',
424 8
' (from Cross Section)',/
425 9
' Minimum (inboard) R = ',f14.6,
' [M]',/
426 a
' Maximum (outboard) R = ',f14.6,
' [M]',/
427 a
' Maximum height Z = ',f14.6,
' [M]',/
428 b
' Waist (v = 0) in R = ',f14.6,
' [M]',/
429 b
' Full Height(v = 0) = ',f14.6,
' [M]',:,/
430 b
' Waist (v = pi) in R = ',f14.6,
' [M]',:,/
431 b
' Full Height(v = pi) = ',f14.6,
' [M]')
432 IF (rank.EQ.0)
WRITE (nthreed, 85) toroidal_flux,
433 1 1.e-6_dp*ctor/mu0, rbtor, rbtor0, volavgb, ionlarmor,
434 2 jpar_perp, jparps_perp
436 1
' Toroidal Flux = ',f14.6,
' [Wb]',/
437 1
' Toroidal Current = ',f14.6,
' [MA]',/
438 1
' RBtor(s=1) = ',f14.6,
' [T-m]',/
439 1
' RBtor(s=0) = ',f14.6,
' [T-m]',/
440 1
' Volume Average B = ',f14.6,
' [T]',/
441 2
' Ion Larmor Radius = ',f14.6,
' [M] X Ti(keV)**0.5',/
442 3
' <J||**2>/<J-perp**2> = ',f14.6,
' (Vol. Averaged)',/
443 4
' <JPS**2>/<J-perp**2> = ',f14.6,
' (Vol. Averaged)',/)
445 IF(rank.EQ.0)
WRITE (nthreed, 90)
446 90
FORMAT(/,71(
'-'),/,
' MORE GEOMETRIC AND PHYSICS QUANTITIES',/,
447 1 71(
'-'),/,
' Toroidal Plane: Phi = 0',/,
448 1 5x,
'j',3x,
'psi-psiaxis',9x,
'a [M]',3x,
'ellipticity',3x,
449 2
'indentation',7x,
'd-shape',4x,
'rel. shift',6x,
'<J||**2>/',4x,
451 4
'<J-perp**2>',3x,
'<J-perp**2>'/,
' -----',8(2x,12(
'-')))
453 fac = twopi*hs*signgs
456 r3v(:ns-1) = fac*phip(2:ns)*iotas(2:ns)
458 psi(1+i) = psi(i) + r3v(i)
464 IF (nplanes .eq. 1)
THEN
467 IF (nzeta .eq. 1)
EXIT
468 IF(rank.EQ.0)
WRITE (nthreed, 95)
484 1 n1 = mod(nzeta + 1 - noff,nzeta) + 1
485 loff = js + ns*(n1-1)
487 IF (icount .eq. 2) t1 = -one
488 DO itheta = 1,ntheta2
489 yr1u = r1(loff,0) + sqrts(js)*r1(loff,1)
490 yz1u = z1(loff,0) + sqrts(js)*z1(loff,1)
492 IF (yz1u .ge. zmax)
THEN
495 ELSE IF (yz1u .le. zmin)
THEN
499 IF (yr1u .ge. xmax)
THEN
502 ELSE IF (yr1u .le. xmin)
THEN
506 loff = loff + ns*nzeta
511 lpi = ns*((noff-1) + nzeta*(ntheta2 - 1))
513 xmida = r1(js+lpi,0) + sqrts(js)*r1(js+lpi,1)
514 xmidb = r1(js+lt,0) + sqrts(js)*r1(js+lt,1)
516 rgeo = p5*(xmidb + xmida)
517 ygeo(js) = p5*(xmidb - xmida)
519 yinden(js) = (xmida - xmin)/(xmax - xmin)
520 yellip(js) = (zmax - zmin)/(xmax - xmin)
522 ytrian(js) = (rgeo - rzmax)/(xmax - xmin)
523 yshift(js) = (r1(1+lt,0)-rgeo)/(xmax - xmin)
525 IF (jperp2(js) .eq. zero) jperp2(js) = epsilon(jperp2(js))
526 jpar_perp = jpar2(js)/jperp2(js)
528 jparps_perp = jps2(js)/jperp2(js)
533 IF (nplanes .eq. 1)
THEN
534 IF(rank.EQ.0)
WRITE (nthreed, 120) js, psi(js), ygeo(js),
535 1 yellip(js), yinden(js), ytrian(js), yshift(js), jpar_perp,
538 IF(rank.EQ.0)
WRITE (nthreed, 120) js, psi(js), ygeo(js),
539 1 yellip(js), yinden(js), ytrian(js), yshift(js)
545 95
FORMAT(/,71(
'-'),/,
' Toroidal Plane: Phi = 180/Nfp',/,71(
'-'),/)
546 120
FORMAT(1x,i5,6f14.5,1p,3e14.2)
548 IF(rank.EQ.0)
WRITE (nthreed, 130)
549 130
FORMAT(//,
' Magnetic Fields and Pressure',/,1x,71(
'-'))
551 IF(rank.EQ.0)
WRITE (nthreed, 140) sump/mu0, pavg/mu0,
552 1 fac*sumbpol, fac*sumbpol/volume_p, fac*sumbtor, fac*sumbtor/
553 2 volume_p, fac*sumbtot, fac*sumbtot/volume_p, c1p5*sump/mu0,
555 140
FORMAT(
' Volume Integrals (Joules) and Volume ',
556 1
'Averages (Pascals)',/,24x,
'Integral',6x,
'Average',/,
557 2
' pressure = ',1p,2e14.6,/,
' bpol**2 /(2 mu0) = ',
558 3 2e14.6,/,
' btor**2/(2 mu0) = ',2e14.6,/,
559 4
' b**2/(2 mu0) = ',2e14.6,/,
' EKIN (3/2p) = ',
562 IF(rank.EQ.0)
WRITE (nthreed, 800)
563 800
FORMAT(/,
' MAGNETIC AXIS COEFFICIENTS'/,
564 1
' n rmag zmag rmag zmag',/,
565 2
' (cos nv) (sin nv) (sin nv) (cos nv)',/)
566 loff = lbound(rmags,1)
567 IF (rank. eq. 0)
THEN
570 t1 = mscale(0)*nscale(n)
572 IF (.NOT.lthreed) tz = 0
574 WRITE (nthreed, 820) n, t1*rmags(n1),
575 1 tz*zmags(n1), tz*rmaga(n1), t1*zmaga(n1)
577 WRITE (nthreed, 820) n, t1*rmags(n1),
582 820
FORMAT(i5,1p,4e12.4)
584 betstr = two*sqrt(sump2/volume_p)/(sumbtot/volume_p)
586 IF(rank.EQ.0)
WRITE (nthreed, 150) betatot, betapol, betator
587 150
FORMAT(/,
' From volume averages over plasma, betas are',/,
588 1
' beta total = ',f14.6,/,
' beta poloidal = ',f14.6,/,
589 2
' beta toroidal = ',f14.6,/)
591 IF(rank.EQ.0)
WRITE (nthreed, 160) rbtor, betaxis, betstr
592 160
FORMAT(
' R * Btor-vac = ',f14.6,
' [Wb/M]',/,
593 1
' Peak Beta = ',f14.6,/,
594 2
' Beta-star = ',f14.6,/)
605 ALLOCATE (rbps1u(nznt), bpol2vac(nznt))
606 IF (lfreeb .and. ivac.gt.1)
THEN
607 bpol2vac = 2*bsqvac - bphiv*bphiv
609 bpol2vac = 2*(c1p5*bsq(ns:nrzt:ns) - p5*bsq(ns-1:nrzt:ns))
610 1 - ((c1p5*bsupv(ns:nrzt:ns) - p5*bsupv(ns-1:nrzt:ns))
618 aminr1 = volume_p/surf_area_p
619 factor = twopi**2*aminr1*sum(bpol2vac*surf_area)
621 facnorm = factor*twopi**2
624 scaling_ratio = (mu0*curtor/circum_p)**2*volume_p
625 scaling_ratio = scaling_ratio*factor
627 rbps1u(:nznt) = facnorm*redge(:nznt)*phat(:nznt)
628 1 *wint(ns:nznt*ns:ns)
629 sigr0 = sum(rbps1u(:nznt)*zu0(ns:nrzt:ns))
630 sigr1 = sum(rbps1u(:nznt)*zu0(ns:nrzt:ns)*redge(:nznt))
631 sigz1 =-sum(rbps1u(:nznt)*ru0(ns:nrzt:ns)*
632 1 (z1(ns:nrzt:ns,0) + z1(ns:nrzt:ns,1)))
633 DEALLOCATE (redge, phat, rbps1u, bpol2vac, surf_area)
636 rlao = volume_p/(twopi*cross_area_p)
640 smaleli = factor*sumbpol
641 vvc_smaleli = smaleli
642 betai = 2*factor*sump
643 musubi = vnorm*factor*musubi
645 lambda = p5*smaleli + betai
646 s11 = er - rshaf*sigr0
647 s12 = er - rcen*sigr0
648 s13 = er - rlao*sigr0
654 IF(rank.EQ.0)
WRITE (nthreed, 168)
655 IF(rank.EQ.0)
WRITE (nthreed, 170) rshaf, rcen, rlao,
656 1 scaling_ratio, s3, smaleli, musubi, betai, lambda
658 IF(rank.EQ.0)
WRITE (nthreed, 174) delta1, delta2, delta3,
659 1 s11, s12, s13, s2, s2/fgeo, s2/flao,
660 5 musubi + s11,musubi + s12,
662 8 p5*s11 + s2, p5*s12 + s2/fgeo, p5*s13 + s2/flao,
663 a p5*(3*betai+smaleli-musubi)/(s11+s2) - one,
664 b p5*(3*betai+smaleli-musubi)/(s12+s2/fgeo) - one,
665 c p5*(3*betai+smaleli-musubi)/(s13+s2/flao) - one,
666 d p5*(betai+smaleli+musubi)/s2 - one,
667 e p5*fgeo*(betai+smaleli+musubi)/s2 - one,
668 f p5*flao*(betai+smaleli+musubi)/s2 - one
670 168
FORMAT(
' Shafranov Surface Integrals',/
671 1
' Ref: S. P. Hirshman, Phys. Fluids B, 5, (1993) 3119',/,
672 2
' Note: s1 = S1/2, s2 = S2/2, where ',
673 3
' s1,s2 are the Shafranov definitions,',/,
674 4
' and s3 = S3/2, where S3 is Lao''s definition.',/,
675 5
' The quantity lsubi gives the ratio of volume poloidal',
676 6 /,
' field energy to the field energy estimated from the',
677 7 /,
' surface integral in Eq.8.',/,1x,22(
'-'),/)
680 5
' RT (Pressure-weighted) = ',f14.6,
' [M]',/,
681 6
' RG (Geometric) = ',f14.6,
' [M]',/,
682 7
' RL (Vol/2*pi*Area-Lao) = ',f14.6,
' [M]',/,
683 8
' Poloidal Field Energy',/,
684 8
' Normalization Ratio = ',f14.6,
' (Lao/Hirshman)',//,
686 9
' lsubi = ',f14.6,/,
687 6
' musubi = ',f14.6,/,
688 7
' betai = ',f14.6,/,
689 9
' lambda = ',f14.6,/)
690 172
FORMAT(
' musubi (diamagnetism) = ',f14.6)
691 174
FORMAT(/,32x,
'R = RT',12x,
'R = RG',12x,
'R = RL',/,
692 1 20x,3(10x,8(
'-')),/,
693 1
' delta = 1 - RT/R = ',3(f14.6,4x),/,
694 2
' s1 = ',3(f14.6,4x),/,
695 3
' s2 = ',3(f14.6,4x),/,
696 8
' betai (Mui + s1) = ',3(f14.6,4x),/,
697 a
' lambda (s1/2 + s2) = ',3(f14.6,4x),/,
698 b
' 1st Shafr''v relation = ',3(f14.6,4x),/,
699 c
' (3*Betai + Li - Mui)/[2*(s1+s2)] - 1',/,
700 d
' Radial force balance = ',3(f14.6,4x),/,
701 e
' (Betai + Li + Mui)/(2*s2) - 1',/)