17 character(len = 132) :: path
18 integer(itm_i4),
parameter :: out_eqdsk = 11
20 real(r8),
intent(in) :: a, curr, r0, b0
21 real(r8),
dimension(nr),
intent(in) :: qprof
23 real(r8),
parameter :: zmu0 = 4e-7_r8 * pi
25 real(r8),
dimension(nr) :: p0tmp, dptmp, ftmp, dftmp
26 real(r8),
dimension(3) :: ablt
28 real(r8) :: radius, cpsurf
30 real(r8) :: reast, rwest, rgridl
31 real(r8) :: zmid, rmaxis, zmaxis, xip
32 integer(itm_i4) :: i, j, np2
40 call
spline(npts, psivec, p_int, dpres(1) * sign(1._r8, cpsurfin), &
41 dpres(npts) * sign(1._r8, cpsurfin), 1, p_spline)
42 call
spline(npts, psivec, gam_int, dgam(1) * sign(1._r8, cpsurfin), &
43 dgam(npts) * sign(1._r8, cpsurfin), 1, rbphi_spline)
46 flux = (i - 1) / dble(nr - 1)
48 p0tmp(i) = 0.5_r8 * a * b *
spwert(npts,
flux, p_spline, psivec, ablt, &
49 0) * sign(1.0_r8, -alfa)
51 ftmp(i) = p0tmp(i) + eps * a *
spwert(npts,
flux, rbphi_spline, psivec, &
52 ablt, 0) * sign(1.0_r8, -alfa) * sign(1.0_r8, a)
55 p0tmp(i) = eps * a * b *
spwert(npts,
flux, p_spline, psivec, ablt, 0) &
58 ftmp(i) = eps * a *
spwert(npts,
flux, rbphi_spline, psivec, ablt, 0) &
59 * sign(1.0_r8, -alfa) * sign(1.0_r8, a)
62 ftmp(i) = sqrt(1._r8 + 2._r8 * eps * ftmp(i) / alfa**2)
63 dftmp(i) = 1._r8 / (2._r8 * ftmp(i)) * 2._r8 * eps * dftmp(i) / alfa**2
67 cpsurf = radius**2 * b0 / alfa
69 pscale = b0**2 * eps / (zmu0 * alfa**2)
73 p0tmp(i) = p0tmp(i) * pscale
74 dptmp(i) = dptmp(i) * pscale / cpsurf
75 ftmp(i) = ftmp(i) * rbscale
76 dftmp(i) = ftmp(i) * (dftmp(i) * rbscale / cpsurf)
80 if (ias == 1) np2 = (np - 1) / 2 + 1
81 reast = xx(1, 1) * eps * r0
82 rwest = xx(1, np2) * eps * r0
83 rgridl = reast - rwest
85 zmid = yy(1, nr * np) * eps * r0
86 rmaxis = (1._r8 + xx(1, nr * np) * eps) * r0
88 xip = curr * eps * r0 * b0 / zmu0
90 open (unit = out_eqdsk, file = trim(adjustl(path)) // file_eqdsk_out, &
91 status =
'replace', form =
'formatted', action =
'write', iostat = i_error)
93 write(out_eqdsk, *)
' helena produced eqdsk file ', nr, np
94 write(out_eqdsk, 11) 0., 0., r0, rgridl, zmid
95 write(out_eqdsk, 11) rmaxis, zmaxis, 0., 0., b0
96 write(out_eqdsk, 11) xip, 0., 0., rmaxis, 0.
97 write(out_eqdsk, 11) zmaxis, 0., 0., 0., 0.
99 write(out_eqdsk, 11) (ftmp(i), i = 1, nr)
100 write(out_eqdsk, 11) (p0tmp(i), i = 1, nr)
101 write(out_eqdsk, 11) (dftmp(i), i = 1, nr)
102 write(out_eqdsk, 11) (dptmp(i), i = 1, nr)
103 write(out_eqdsk, 11) (0., i = 1, nr * np)
104 write(out_eqdsk, 11) (qprof(i), i = 1, nr)
107 write(out_eqdsk, *) np - 1, 1
108 write(out_eqdsk, 11) (r0 * (1._r8 + eps * xx(1, j)), eps * r0 &
109 * yy(1, j), j = 1, np - 1)
111 write(out_eqdsk, *) 2 * (np - 1), 1
112 write(out_eqdsk, 11) (r0 * (1._r8 + eps * xx(1, j)), eps * r0 &
113 * yy(1, j), j = 1, np)
114 write(out_eqdsk, 11) (r0 * (1._r8 + eps * xx(1, np - j)), -eps * r0 &
115 * yy(1, np - j), j = 1, np - 2)
subroutine write_eqdsk(a, curr, r0, b0, qprof, path)
subroutine allocate_spline_coefficients(spline, n)
subroutine spline(N, X, Y, ALFA, BETA, TYP, A, B, C, D)
subroutine flux(psitok, rk, zk, nk)
REAL *8 function spwert(N, XWERT, A, B, C, D, X, ABLTG)
real(r8) function dgamma_dpsi(flux)
subroutine deallocate_spline_coefficients(spline)
real(r8) function dp_dpsi(flux)