32 CHARACTER(LEN=*),
PARAMETER ::
94 CHARACTER(LEN=*),
PARAMETER ::
115 1
ln_mse =
'Number of MSE points',
116 1
ln_thom =
'Number of Thompson scattering points',
117 1
ln_am =
'Specification parameters for mass(s)',
118 1
ln_ac =
'Specification parameters for <J>(s)',
119 1
ln_ai =
'Specification parameters for iota(s)',
123 1
ln_am_aux_s =
'Auxiliary-s parameters for mass(s)',
124 1
ln_am_aux_f =
'Auxiliary-f parameters for mass(s)',
125 1
ln_ac_aux_s =
'Auxiliary-s parameters for <J>(s)',
126 1
ln_ac_aux_f =
'Auxiliary-f parameters for <J>(s)',
127 1
ln_ai_aux_s =
'Auxiliary-s parameters for iota(s)',
128 1
ln_ai_aux_f =
'Auxiliary-f parameters for iota(s)',
129 4
ln_pmod =
'Poloidal mode numbers',
130 5
ln_tmod =
'Toroidal mode numbers',
136 7
ln_qfact =
'q-factor on full mesh',
137 8
ln_presf =
'pressure on full mesh',
138 8
ln_phi =
'Toroidal flux on full mesh',
139 9
ln_phipf =
'd(phi)/ds: Toroidal flux deriv on full mesh',
140 9
ln_chi =
'Poloidal flux on full mesh',
141 9
ln_chipf =
'd(chi)/ds: Poroidal flux deriv on full mesh',
148 6
ln_phip =
'tor flux deriv over 2pi half',
154 1
ln_fsq =
'Residual decay',
156 2
ln_fsqr =
'Residual decay - radial',
157 2
ln_fsqz =
'Residual decay - vertical',
158 2
ln_fsql =
'Residual decay - hoop',
159 2
ln_ftolv =
'Residual decay - requested',
162 3
ln_rmnc =
'cosmn component of cylindrical R, full mesh',
163 4
ln_zmns =
'sinmn component of cylindrical Z, full mesh',
164 4
ln_lmns =
'sinmn component of lambda, half mesh',
165 5
ln_gmnc =
'cosmn component of jacobian, half mesh',
166 6
ln_bmnc =
'cosmn component of mod-B, half mesh',
167 6
ln_bsubumnc =
'cosmn covariant u-component of B, half mesh',
168 6
ln_bsubvmnc =
'cosmn covariant v-component of B, half mesh',
169 7
ln_bsubsmns =
'sinmn covariant s-component of B, full mesh',
179 3
ln_rmns =
'sinmn component of cylindrical R, full mesh',
180 4
ln_zmnc =
'cosmn component of cylindrical Z, full mesh',
181 4
ln_lmnc =
'cosmn component of lambda, half mesh',
182 5
ln_gmns =
'sinmn component of jacobian, half mesh',
183 6
ln_bmns =
'sinmn component of mod-B, half mesh',
184 6
ln_bsubumns =
'sinmn covariant u-component of B, half mesh',
185 6
ln_bsubvmns =
'sinmn covariant v-component of B, half mesh',
186 7
ln_bsubsmnc =
'cosmn covariant s-component of B, full mesh',
194 6
ln_rbc =
'Initial boundary R cos(mu-nv) coefficients',
195 7
ln_zbs =
'Initial boundary Z sin(mu-nv) coefficients',
196 8
ln_rbs =
'Initial boundary R sin(mu-nv) coefficients',
197 9
ln_zbc =
'Initial boundary Z cos(mu-nv) coefficients',
198 1
ln_potvac =
'Vacuum Potential on Boundary'
213 REAL(
rprec),
DIMENSION(:,:),
ALLOCATABLE ::
217 REAL(
rprec),
DIMENSION(:,:),
ALLOCATABLE ::
220 REAL(
rprec),
DIMENSION(:),
ALLOCATABLE ::
235 INTEGER,
PARAMETER :: norm_term_flag=0,
236 1 bad_jacobian_flag=1, more_iter_flag=2, jac75_flag=4
244 PRIVATE :: read_wout_nc
245 PRIVATE :: norm_term_flag, bad_jacobian_flag,
246 1 more_iter_flag, jac75_flag
256 INTEGER,
INTENT(out) :: ierr
257 INTEGER,
OPTIONAL :: iopen
258 CHARACTER(LEN=*),
INTENT(in) :: file_or_extension
262 INTEGER,
PARAMETER :: iunit_init = 10
264 CHARACTER(len=LEN_TRIM(file_or_extension)+10) :: filename
277 CALL read_wout_nc(filename, ierr)
280 IF (
PRESENT(iopen)) iopen = ierr
286 IF (
ALLOCATED(
xn))
THEN
294 SUBROUTINE read_wout_nc(filename, ierr)
301 INTEGER,
INTENT(out) :: ierr
302 CHARACTER(LEN=*),
INTENT(in) :: filename
306 INTEGER :: nwout, ierror
307 INTEGER,
DIMENSION(3) :: dimlens
309 REAL(rprec),
DIMENSION(:),
ALLOCATABLE :: raxis_cc, raxis_cs,
313 CALL cdf_open(nwout,filename,
'r', ierr)
314 IF (ierr .ne. 0)
THEN
315 print *,
' Error opening wout .nc file'
350 CALL cdf_read(nwout,
vn_free, lfreeb)
356 CALL cdf_read(nwout,
vn_b0,
b0)
377 CALL cdf_inquire(nwout,
vn_mgmode, dimlens, ier=ierror)
382 CALL cdf_inquire(nwout,
vn_pmod, dimlens)
383 ALLOCATE (
xm(dimlens(1)), stat = ierror)
384 CALL cdf_inquire(nwout,
vn_tmod, dimlens)
385 ALLOCATE (
xn(dimlens(1)), stat = ierror)
388 ALLOCATE (
xm_nyq(dimlens(1)), stat = ierror)
390 ALLOCATE (
xn_nyq(dimlens(1)), stat = ierror)
393 CALL cdf_inquire(nwout,
vn_racc, dimlens)
394 ALLOCATE (raxis_cc(0:dimlens(1)-1), stat = ierror)
395 CALL cdf_inquire(nwout,
vn_zacs, dimlens)
396 ALLOCATE (zaxis_cs(0:dimlens(1)-1), stat = ierror)
398 CALL cdf_inquire(nwout,
vn_racs, dimlens)
399 ALLOCATE (raxis_cs(0:dimlens(1)-1), stat = ierror)
400 CALL cdf_inquire(nwout,
vn_zacc, dimlens)
401 ALLOCATE (zaxis_cc(0:dimlens(1)-1), stat = ierror)
405 CALL cdf_inquire(nwout,
vn_am, dimlens)
406 ALLOCATE (
am(0:dimlens(1)-1), stat = ierror)
407 CALL cdf_inquire(nwout,
vn_ac, dimlens)
408 ALLOCATE (
ac(0:dimlens(1)-1), stat = ierror)
409 CALL cdf_inquire(nwout,
vn_ai, dimlens)
410 ALLOCATE (
ai(0:dimlens(1)-1), stat = ierror)
413 ALLOCATE (
ac_aux_s(dimlens(1)), stat = ierror)
415 ALLOCATE (
ac_aux_f(dimlens(1)), stat = ierror)
417 ALLOCATE (
ai_aux_s(dimlens(1)), stat = ierror)
419 ALLOCATE (
ai_aux_f(dimlens(1)), stat = ierror)
421 ALLOCATE (
am_aux_s(dimlens(1)), stat = ierror)
423 ALLOCATE (
am_aux_f(dimlens(1)), stat = ierror)
425 CALL cdf_inquire(nwout,
vn_iotaf, dimlens)
426 ALLOCATE (
iotaf(dimlens(1)), stat = ierror)
427 CALL cdf_inquire(nwout,
vn_qfact, dimlens)
428 ALLOCATE (
qfact(dimlens(1)), stat = ierror)
429 CALL cdf_inquire(nwout,
vn_presf, dimlens)
430 ALLOCATE (
presf(dimlens(1)), stat = ierror)
431 CALL cdf_inquire(nwout,
vn_phi, dimlens)
432 ALLOCATE (
phi(dimlens(1)), stat = ierror)
433 CALL cdf_inquire(nwout,
vn_chi, dimlens)
434 ALLOCATE (
chi(dimlens(1)), stat = ierror)
435 CALL cdf_inquire(nwout,
vn_phipf, dimlens)
436 ALLOCATE (
phipf(dimlens(1)), stat = ierror)
437 CALL cdf_inquire(nwout,
vn_chipf, dimlens)
438 ALLOCATE (
chipf(dimlens(1)), stat = ierror)
439 CALL cdf_inquire(nwout,
vn_jcuru, dimlens)
440 ALLOCATE (
jcuru(dimlens(1)), stat = ierror)
441 CALL cdf_inquire(nwout,
vn_jcurv, dimlens)
442 ALLOCATE (
jcurv(dimlens(1)), stat = ierror)
443 CALL cdf_inquire(nwout,
vn_iotah, dimlens)
444 ALLOCATE (
iotas(dimlens(1)), stat = ierror)
445 CALL cdf_inquire(nwout,
vn_mass, dimlens)
446 ALLOCATE (
mass(dimlens(1)), stat = ierror)
447 CALL cdf_inquire(nwout,
vn_presh, dimlens)
448 ALLOCATE (
pres(dimlens(1)), stat = ierror)
449 CALL cdf_inquire(nwout,
vn_betah, dimlens)
450 ALLOCATE (
beta_vol(dimlens(1)), stat = ierror)
451 CALL cdf_inquire(nwout,
vn_buco, dimlens)
452 ALLOCATE (
buco(dimlens(1)), stat = ierror)
453 CALL cdf_inquire(nwout,
vn_bvco, dimlens)
454 ALLOCATE (
bvco(dimlens(1)), stat = ierror)
455 CALL cdf_inquire(nwout,
vn_vp, dimlens)
456 ALLOCATE (
vp(dimlens(1)), stat = ierror)
457 CALL cdf_inquire(nwout,
vn_specw, dimlens)
458 ALLOCATE (
specw(dimlens(1)), stat = ierror)
459 CALL cdf_inquire(nwout,
vn_phip, dimlens)
460 ALLOCATE (
phip(dimlens(1)), stat = ierror)
461 CALL cdf_inquire(nwout,
vn_overr, dimlens)
462 ALLOCATE (
overr(dimlens(1)), stat = ierror)
464 CALL cdf_inquire(nwout,
vn_jdotb, dimlens)
465 ALLOCATE (
jdotb(dimlens(1)), stat = ierror)
466 CALL cdf_inquire(nwout,
vn_bdotb, dimlens)
467 ALLOCATE (
bdotb(dimlens(1)), stat = ierror)
468 CALL cdf_inquire(nwout,
vn_bgrv, dimlens)
469 ALLOCATE (
bdotgradv(dimlens(1)), stat = ierror)
471 CALL cdf_inquire(nwout,
vn_merc, dimlens)
472 ALLOCATE (
dmerc(dimlens(1)), stat = ierror)
473 CALL cdf_inquire(nwout,
vn_mshear, dimlens)
474 ALLOCATE (
dshear(dimlens(1)), stat = ierror)
475 CALL cdf_inquire(nwout,
vn_mwell, dimlens)
476 ALLOCATE (
dwell(dimlens(1)), stat = ierror)
477 CALL cdf_inquire(nwout,
vn_mcurr, dimlens)
478 ALLOCATE (
dcurr(dimlens(1)), stat = ierror)
479 CALL cdf_inquire(nwout,
vn_mgeo, dimlens)
480 ALLOCATE (
dgeod(dimlens(1)), stat = ierror)
481 CALL cdf_inquire(nwout,
vn_equif, dimlens)
482 ALLOCATE (
equif(dimlens(1)), stat = ierror)
484 CALL cdf_inquire(nwout,
vn_fsq, dimlens)
485 ALLOCATE (
fsqt(dimlens(1)), stat = ierror)
486 CALL cdf_inquire(nwout,
vn_wdot, dimlens)
487 ALLOCATE (
wdot(dimlens(1)), stat = ierror)
490 CALL cdf_inquire(nwout,
vn_extcur, dimlens)
491 ALLOCATE (
extcur(dimlens(1)), stat = ierror)
494 CALL cdf_inquire(nwout,
vn_curlab, dimlens)
495 ALLOCATE (
curlabel(dimlens(2)), stat = ierror)
497 CALL cdf_inquire(nwout,
vn_potvac, dimlens, ier = ierror)
498 IF (ierror == 0)
ALLOCATE (
potvac(1:dimlens(1)), stat = ierror)
502 CALL cdf_inquire(nwout,
vn_rmnc, dimlens)
503 ALLOCATE (
rmnc(dimlens(1),dimlens(2)), stat = ierror)
504 CALL cdf_inquire(nwout,
vn_zmns, dimlens)
505 ALLOCATE (
zmns(dimlens(1),dimlens(2)), stat = ierror)
506 CALL cdf_inquire(nwout,
vn_lmns, dimlens)
507 ALLOCATE (
lmns(dimlens(1),dimlens(2)), stat = ierror)
508 CALL cdf_inquire(nwout,
vn_gmnc, dimlens)
509 ALLOCATE (
gmnc(dimlens(1),dimlens(2)), stat = ierror)
510 CALL cdf_inquire(nwout,
vn_bmnc, dimlens)
511 ALLOCATE (
bmnc(dimlens(1),dimlens(2)), stat = ierror)
513 ALLOCATE (
bsubumnc(dimlens(1),dimlens(2)), stat = ierror)
515 ALLOCATE (
bsubvmnc(dimlens(1),dimlens(2)), stat = ierror)
517 ALLOCATE (
bsubsmns(dimlens(1),dimlens(2)), stat = ierror)
521 ALLOCATE (
bsupumnc(dimlens(1),dimlens(2)), stat = ierror)
523 ALLOCATE (
bsupvmnc(dimlens(1),dimlens(2)), stat = ierror)
525 IF (.NOT.
lasym)
GO TO 800
527 CALL cdf_inquire(nwout,
vn_rmns, dimlens)
528 ALLOCATE (
rmns(dimlens(1),dimlens(2)), stat = ierror)
529 CALL cdf_inquire(nwout,
vn_zmnc, dimlens)
530 ALLOCATE (
zmnc(dimlens(1),dimlens(2)), stat = ierror)
531 CALL cdf_inquire(nwout,
vn_lmnc, dimlens)
532 ALLOCATE (
lmnc(dimlens(1),dimlens(2)), stat = ierror)
533 CALL cdf_inquire(nwout,
vn_gmns, dimlens)
534 ALLOCATE (
gmns(dimlens(1),dimlens(2)), stat = ierror)
535 CALL cdf_inquire(nwout,
vn_bmns, dimlens)
536 ALLOCATE (
bmns(dimlens(1),dimlens(2)), stat = ierror)
538 ALLOCATE (
bsubumns(dimlens(1),dimlens(2)), stat = ierror)
540 ALLOCATE (
bsubvmns(dimlens(1),dimlens(2)), stat = ierror)
542 ALLOCATE (
bsubsmnc(dimlens(1),dimlens(2)), stat = ierror)
546 ALLOCATE (
bsupumns(dimlens(1),dimlens(2)), stat = ierror)
548 ALLOCATE (
bsupvmns(dimlens(1),dimlens(2)), stat = ierror)
566 CALL cdf_read(nwout,
vn_racc, raxis_cc)
567 CALL cdf_read(nwout,
vn_zacs, zaxis_cs)
569 IF (
SIZE(raxis_cc) .ne.
ntor+1)
570 1 stop
'WRONG SIZE(raxis_cc) in READ_WOUT_NC'
574 DEALLOCATE (raxis_cc, zaxis_cs, stat=ierror)
588 CALL cdf_read(nwout,
vn_racs, raxis_cs)
589 CALL cdf_read(nwout,
vn_zacc, zaxis_cc)
591 DEALLOCATE (raxis_cs, zaxis_cc, stat=ierror)
605 CALL cdf_read(nwout,
vn_am,
am)
606 CALL cdf_read(nwout,
vn_ac,
ac)
607 CALL cdf_read(nwout,
vn_ai,
ai)
636 CALL cdf_read(nwout,
vn_vp,
vp)
664 CALL cdf_close(nwout, ierr)
666 IF (.not.
ALLOCATED(
bsubumnc))
RETURN
679 IF (ierr. ne. 0) print *,
"in read_wout_nc ierr=",ierr
680 IF (ierror. ne. 0) print *,
"in read_wout_nc ierror=",ierror
682 END SUBROUTINE read_wout_nc
687 INTEGER,
INTENT(out) :: ierror
692 REAL(rprec) :: ohs, hs, shalf(ns), sfull(ns)
693 REAL(rprec),
DIMENSION(mnmax_nyq) :: bu1, bu0, bv1, bv0, t1, t2,
708 shalf(js) = sqrt(hs*(js-1.5_dp))
709 sfull(js) = sqrt(hs*(js-1))
714 IF (ierror .ne. 0)
RETURN
717 WHERE (mod(int(
xm_nyq),2) .EQ. 1)
718 t1 = 0.5_dp*(shalf(js+1)*
bsubsmns(:,js+1) +
719 & shalf(js) *
bsubsmns(:,js)) /sfull(js)
722 t2 = ohs*(bu1-bu0)*sfull(js)+0.25_dp*(bu0+bu1)/sfull(js)
725 t3 = ohs*(bv1-bv0)*sfull(js)+0.25_dp*(bv0+bv1)/sfull(js)
747 IF (.NOT.
lasym)
RETURN
753 WHERE (mod(int(
xm_nyq),2) .EQ. 1)
754 t1 = 0.5_dp*(shalf(js+1)*
bsubsmnc(:,js+1)
755 & + shalf(js) *
bsubsmnc(:,js)) / sfull(js)
758 t2 = ohs*(bu1-bu0)*sfull(js) + 0.25_dp*(bu0+bu1)/sfull(js)
761 t3 = ohs*(bv1-bv0)*sfull(js)+0.25_dp*(bv0+bv1)/sfull(js)
798 IF (
ALLOCATED(
overr))
DEALLOCATE (
overr, stat = istat(2))
803 3
pres,
beta_vol,
phip,
buco,
bvco,
phi,
vp,
jcuru,
am,
ac,
ai,
823 IF (any(istat .ne. 0))
THEN
825 stop
'Deallocation error in read_wout_deallocate'
831 1 bsupu, bsupv, jsupu, jsupv, lam)
837 REAL(rprec),
INTENT(in) :: s_in, u_in, v_in
838 REAL(rprec),
INTENT(out),
OPTIONAL :: gsqrt, bsupu, bsupv,
843 REAL(rprec),
PARAMETER :: c1p5 = 1.5_dp
844 INTEGER :: m, n, n1, mn, ipresent, jslo, jshi
845 REAL(rprec) :: hs1, wlo, whi, wlo_odd, whi_odd
846 REAL(rprec),
DIMENSION(mnmax_nyq) :: gmnc1, gmns1, bsupumnc1,
847 1 bsupumns1, bsupvmnc1, bsupvmns1, jsupumnc1, jsupumns1,
848 2 jsupvmnc1, jsupvmns1, wmins, wplus, lammns1, lammnc1
849 REAL(rprec) :: cosu, sinu, cosv, sinv, tcosmn, tsinmn, sgn
850 REAL(rprec) :: cosmu(0:mnyq), sinmu(0:mnyq),
852 LOGICAL :: lgsqrt, lbsupu, lbsupv, ljsupu, ljsupv, llam
868 IF (s_in.lt.
zero .or. s_in.gt.
one)
THEN
870 1
' In tosuvspace, s(flux) must be between 0 and 1'
876 1
' tosuvspace can only be called AFTER opening wout file!'
883 cosu = cos(u_in); sinu = sin(u_in)
884 cosv = cos(v_in); sinv = sin(v_in)
886 cosmu(0) = 1; sinmu(0) = 0
887 cosnv(0) = 1; sinnv(0) = 0
889 cosmu(m) = cosmu(m-1)*cosu - sinmu(m-1)*sinu
890 sinmu(m) = sinmu(m-1)*cosu + cosmu(m-1)*sinu
894 cosnv(n) = cosnv(n-1)*cosv - sinnv(n-1)*sinv
895 sinnv(n) = sinnv(n-1)*cosv + cosnv(n-1)*sinv
905 jslo = int(c1p5 + s_in/hs1)
907 wlo = (hs1*(jshi-c1p5) - s_in)/hs1
909 IF (jslo .eq.
ns)
THEN
913 wlo = 1+whi; whi = -whi
914 ELSE IF (jslo .eq. 1)
THEN
921 whi_odd = whi*sqrt(s_in/(hs1*(jshi-c1p5)))
922 IF (jslo .ne. 1)
THEN
923 wlo_odd = wlo*sqrt(s_in/(hs1*(jslo-c1p5)))
926 whi_odd = sqrt(s_in/(hs1*(jshi-c1p5)))
929 WHERE (mod(nint(
xm_nyq(:)),2) .eq. 0)
938 lgsqrt =
PRESENT(gsqrt)
940 gsqrt = 0 ; ipresent = ipresent+1
941 gmnc1 = wmins*
gmnc(:,jslo) + wplus*
gmnc(:,jshi)
943 1 gmns1 = wmins*
gmns(:,jslo) + wplus*
gmns(:,jshi)
945 lbsupu =
PRESENT(bsupu)
947 bsupu = 0 ; ipresent = ipresent+1
952 lbsupv =
PRESENT(bsupv)
954 bsupv = 0 ; ipresent = ipresent+1
961 lam = 0 ; ipresent = ipresent+1
962 lammns1 = wmins*
lmns(:,jslo) + wplus*
lmns(:,jshi)
964 1 lammnc1 = wmins*
lmnc(:,jslo) + wplus*
lmnc(:,jshi)
967 IF (ipresent .eq. 0)
GOTO 1000
975 n1 = abs(n); sgn = sign(1,n)
976 tcosmn = cosmu(m)*cosnv(n1) + sgn*sinmu(m)*sinnv(n1)
977 tsinmn = sinmu(m)*cosnv(n1) - sgn*cosmu(m)*sinnv(n1)
978 IF (lgsqrt) gsqrt = gsqrt + gmnc1(mn)*tcosmn
979 IF (lbsupu) bsupu = bsupu + bsupumnc1(mn)*tcosmn
980 IF (lbsupv) bsupv = bsupv + bsupvmnc1(mn)*tcosmn
981 IF (llam) lam = lam + lammns1(mn)*tsinmn
984 IF (.not.
lasym)
GOTO 1000
988 n1 = abs(n); sgn = sign(1,n)
989 tcosmn = cosmu(m)*cosnv(n1) + sgn*sinmu(m)*sinnv(n1)
990 tsinmn = sinmu(m)*cosnv(n1) - sgn*cosmu(m)*sinnv(n1)
991 IF (lgsqrt) gsqrt = gsqrt + gmns1(mn)*tsinmn
992 IF (lbsupu) bsupu = bsupu + bsupumns1(mn)*tsinmn
993 IF (lbsupv) bsupv = bsupv + bsupvmns1(mn)*tsinmn
994 IF (llam) lam = lam + lammnc1(mn)*tcosmn
1006 jslo = 1+int(s_in/hs1)
1008 IF (jslo .eq.
ns) jshi =
ns
1009 wlo = (hs1*(jshi-1) - s_in)/hs1
1014 whi_odd = whi*sqrt(s_in/(hs1*(jshi-1)))
1015 IF (jslo .ne. 1)
THEN
1016 wlo_odd = wlo*sqrt(s_in/(hs1*(jslo-1)))
1019 whi_odd = sqrt(s_in/(hs1*(jshi-1)))
1022 WHERE (mod(nint(
xm_nyq(:)),2) .eq. 0)
1031 ljsupu =
PRESENT(jsupu)
1033 IF (.not.lgsqrt) stop
'MUST compute gsqrt for jsupu'
1034 jsupu = 0 ; ipresent = ipresent+1
1040 ljsupv =
PRESENT(jsupv)
1042 IF (.not.lgsqrt) stop
'MUST compute gsqrt for jsupv'
1043 jsupv = 0 ; ipresent = ipresent+1
1049 IF (ipresent .eq. 0)
RETURN
1053 n1 = abs(n); sgn = sign(1,n)
1054 tcosmn = cosmu(m)*cosnv(n1) + sgn*sinmu(m)*sinnv(n1)
1055 IF (ljsupu) jsupu = jsupu + jsupumnc1(mn)*tcosmn
1056 IF (ljsupv) jsupv = jsupv + jsupvmnc1(mn)*tcosmn
1059 IF (.not.
lasym)
GOTO 2000
1063 n1 = abs(n); sgn = sign(1,n)
1064 tsinmn = sinmu(m)*cosnv(n1) - sgn*cosmu(m)*sinnv(n1)
1065 IF (ljsupu) jsupu = jsupu + jsupumns1(mn)*tsinmn
1066 IF (ljsupv) jsupv = jsupv + jsupvmns1(mn)*tsinmn
1071 IF (ljsupu) jsupu = jsupu/gsqrt
1072 IF (ljsupv) jsupv = jsupv/gsqrt
1081 INTEGER :: rcc, rss, zsc, zcs, rsc, rcs, zcc, zss
1082 INTEGER :: mpol1, mn, m, n, n1
1094 IF (.not.
lasym)
THEN
1104 rss = 2; rsc = 3; rcs = 4
1105 zcs = 2; zcc = 3; zss = 4
1115 IF (n .ne. 0) stop
'Allocation error in LoadRZL'
1119 m = nint(
xm(mn)); n = nint(
xn(mn))/
nfp; n1 = abs(n)
1144 IF (.not.
ALLOCATED(
chi))
ALLOCATE(
chi(1:
ns))
character(len= *), parameter vn_mgmode
character(len=30), dimension(:), allocatable curlabel
character(len=1) mgrid_mode
character(len= *), parameter vn_nextcur
Reading of wout VMEC output file.
character(len= *), parameter vn_bmns
subroutine readw_and_open(file_or_extension, ierr, iopen)
character(len= *), parameter vn_piota_type
character(len= *), parameter vn_bsupumns_sur
character(len= *), parameter vn_bsubvmns_sur
character(len= *), parameter vn_aspect
real(rprec), dimension(:,:), allocatable lmns
character(len= *), parameter vn_bsupumnc
character(len= *), parameter ln_ctor
character(len= *), parameter ln_tmod
character(len= *), parameter ln_vp
character(len= *), parameter vn_rmns
character(len= *), parameter ln_beta
character(len= *), parameter vn_radnod
character(len= *), parameter ln_bsupumns_sur
character(len= *), parameter ln_curlab
real(rprec), dimension(:), allocatable qfact
character(len= *), parameter ln_pbeta
real(rprec), dimension(:), allocatable y2thom
character(len= *), parameter vn_zacs
character(len= *), parameter ln_am_aux_f
real(rprec), dimension(:), allocatable fsqt
character(len= *), parameter vn_rbt1
character(len= *), parameter ln_maxmod_nyq
character(len= *), parameter vn_bsupumns
character(len= *), parameter vn_bsubsmns
character(len= *), parameter ln_extcur
character(len= *), parameter vn_pmass_type
character(len= *), parameter ln_zbs
character(len= *), parameter ln_fsq
character(len= *), parameter ln_amin
character(len= *), parameter ln_bsubvmns
character(len= *), parameter ln_ftolv
character(len= *), parameter ln_chipf
subroutine tosuvspace(s_in, u_in, v_in, gsqrt, bsupu, bsupv, jsupu, jsupv, lam)
real(rprec), dimension(:,:), allocatable bsubvmnc
character(len= *), parameter ln_maxit
character(len= *), parameter vn_lmnc
real(rprec), dimension(:,:), allocatable currvmns
real(rprec), dimension(:,:), allocatable zmns
character(len= *), parameter ln_bsubumns
character(len= *), parameter ln_jcurv
character(len= *), parameter vn_tbeta
character(len= *), parameter ln_bsubvmnc
character(len= *), parameter ln_presh
character(len= *), parameter ln_bsupumnc_sur
real(rprec), dimension(:), allocatable presf
real(rprec), dimension(:), allocatable rthom
real(rprec), dimension(:,:), allocatable bsubumnc
character(len= *), parameter ln_merc
real(rprec), dimension(:,:), allocatable bsupumnc
character(len= *), parameter ln_zacc
real(rprec), dimension(:), allocatable extcur
real(rprec), dimension(:,:), allocatable zaxis
character(len= *), parameter ln_thom
character(len= *), parameter ln_rmns
character(len= *), parameter vn_overr
character(len= *), parameter vn_ftolv
character(len= *), parameter ln_therm
character(len= *), parameter ln_bsubumnc_sur
real(rprec), dimension(:), allocatable pres
character(len= *), parameter vn_curlab
real(rprec), dimension(:), allocatable datathom
character(len= *), parameter vn_specw
character(len= *), parameter ln_lmns
real(rprec), dimension(:,:), allocatable rmnc
character(len= *), parameter vn_vp
real(rprec), dimension(:), allocatable am_aux_f
character(len= *), parameter vn_vol
character(len= *), parameter vn_magen
real(rprec), dimension(:), allocatable presmid
real(rprec), dimension(:,:), allocatable rmns
character(len= *), parameter ln_fsql
character(len= *), parameter vn_maxz
character(len= *), parameter vn_bsupvmns_sur
real(rprec), dimension(:), allocatable xn_nyq
character(len= *), parameter ln_racc
character(len= *), parameter vn_ah
character(len= *), parameter vn_abeta
real(rprec), dimension(:), allocatable buco
real(rprec), dimension(:,:), allocatable currumnc
character(len= *), parameter vn_ac
character(len= *), parameter vn_presf
real(rprec), dimension(:,:), allocatable gmnc
character(len= *), parameter vn_chipf
real(rprec), dimension(:,:), allocatable bsupvmnc
character(len= *), parameter vn_jcuru
character(len= *), parameter ln_recon
character(len= *), parameter ln_ai_aux_s
real(rprec), dimension(:), allocatable xn
character(len= *), parameter vn_free
character(len= *), parameter vn_version
character(len= *), parameter vn_buco
character(len= *), parameter vn_mse
character(len= *), parameter vn_phipf
character(len= *), parameter ln_bsubsmns
character(len= *), parameter ln_pmod
real(rprec), dimension(:), allocatable dcurr
real(rprec), dimension(:), allocatable equif
real(rprec), dimension(:), allocatable phipf
character(len= *), parameter vn_ac_aux_f
character(len= *), parameter ln_radnod
character(len= *), parameter vn_bgrv
real(rprec), dimension(:,:), allocatable bmns
character(len= *), parameter vn_mgrid
character(len= *), parameter ln_extension
character(len= *), parameter vn_zmnc
real(rprec), dimension(:), allocatable pknots
character(len= *), parameter ln_chi
character(len= *), parameter vn_iotah
character(len= *), parameter vn_lmns
real(rprec), dimension(:), allocatable dsiobt
real(rprec), dimension(:), allocatable rstark
character(len= *), parameter ln_rbs
real(rprec), dimension(:), allocatable phip
character(len= *), parameter ln_ai
real(rprec), dimension(:,:), allocatable currumns
real(rprec), dimension(:), allocatable mass
character(len= *), parameter vn_bvco
character(len= *), parameter vn_fsqr
character(len= *), parameter vn_zacc
character(len= *), parameter ln_mse
character(len= *), parameter vn_bsubvmnc_sur
character(len= *), parameter vn_gam
real(rprec), dimension(:), allocatable ai
character(len= *), parameter ln_ac_aux_f
real(rprec), dimension(:), allocatable xm_nyq
real(rprec), dimension(:), allocatable bvco
character(len= *), parameter vn_betah
character(len= *), parameter ln_fsqr
real(rprec), dimension(:), allocatable jcurv
character(len= *), parameter ln_bsupvmns_sur
character(len= *), parameter ln_maxr
character(len= *), parameter vn_bsupvmnc
real(rprec), dimension(:), allocatable ystark
character(len= *), parameter ln_mgeo
real(rprec), dimension(:), allocatable y2stark
real(rprec), dimension(:), allocatable jdotb
character(len= *), parameter vn_mshear
character(len= *), parameter ln_bgrv
character(len= *), parameter vn_merc
character(len= *), parameter vn_b0
real(rprec), dimension(:), allocatable xm
real(rprec), dimension(:), allocatable vp
character(len= *), parameter ln_zmnc
real(rprec), dimension(:), allocatable ythom
character(len= *), parameter ln_ac_aux_s
character(len= *), parameter vn_ai_aux_s
real(rprec), dimension(:), allocatable iotaf
character(len= *), parameter ln_free
subroutine compute_currents(ierror)
character(len= *), parameter ln_zbc
character(len= *), parameter vn_rbc
character(len= *), parameter vn_zbs
character(len= *), parameter ln_phip
character(len= *), parameter ln_bsupvmns
character(len= *), parameter ln_buco
character(len= *), parameter vn_gmnc
character(len= *), parameter ln_potvac
real(rprec), dimension(:), allocatable chipf
real(rprec), dimension(:), allocatable beta_vol
real(rprec), dimension(:), allocatable specw
character(len= *), parameter vn_bsupumnc_sur
character(len= *), parameter vn_qfact
real(rprec), dimension(:), allocatable dwell
character(len= *), parameter ln_bmns
character(len= *), parameter vn_maxr
character(len= *), parameter vn_bsubsmnc
real(rprec), dimension(:), allocatable jcuru
character(len= *), parameter vn_jcurv
real(rprec), dimension(:,:), allocatable bmnc
real(rprec), dimension(:), allocatable bdotb
character(len= *), parameter vn_zmns
character(len= *), parameter vn_jdotb
character(len= *), parameter ln_bsupvmnc
real(rprec), dimension(:), allocatable ac
character(len= *), parameter ln_equif
character(len= *), parameter ln_am
real(rprec), dimension(:), allocatable ac_aux_f
character(len= *), parameter vn_am_aux_s
real(rprec), dimension(:,:), allocatable currvmnc
character(len= *), parameter vn_tmod_nyq
character(len= *), parameter ln_gmns
real(rprec), dimension(:), allocatable overr
character(len= *), parameter ln_version
character(len= *), parameter vn_mwell
character(len= *), parameter ln_jcuru
character(len= *), parameter ln_bvco
character(len= *), parameter vn_fsql
character(len= *), parameter ln_ac
character(len= *), parameter vn_amin
character(len= *), parameter vn_rmnc
real(rprec), dimension(:), allocatable rmid
character(len= *), parameter ln_bsupvmnc_sur
real(rprec), dimension(:), allocatable chi
character(len= *), parameter vn_mgeo
character(len= *), parameter vn_bsubumns
character(len= *), parameter vn_bsupvmns
character(len= *), parameter vn_mass
character(len= *), parameter vn_modb
character(len= *), parameter ln_vol
character(len= *), parameter ln_racs
character(len= *), parameter vn_gmns
real(rprec), dimension(:,:), allocatable zmnc
character(len= *), parameter vn_atuname
character(len= *), parameter vn_am
character(len= *), parameter vn_fsq
character(len= *), parameter ln_rbt1
character(len= *), parameter vn_am_aux_f
character(len= *), parameter vn_lar
character(len= *), parameter vn_rmaj
character(len= *), parameter ln_specw
real(rprec), dimension(:), allocatable ac_aux_s
character(len= *), parameter vn_bmnc
character(len= *), parameter ln_bdotb
character(len= *), parameter vn_ai
character(len= *), parameter ln_phipf
character(len= *), parameter ln_polmod
character(len= *), parameter ln_bmnc
character(len= *), parameter ln_mcurr
character(len= *), parameter vn_racc
real(rprec), dimension(:,:), allocatable bsupvmns
character(len= *), parameter ln_bsupumns
character(len= *), parameter vn_pmod
character(len= *), parameter ln_iotah
character(len= *), parameter ln_error
character(len= *), parameter ln_piota_type
real(rprec), dimension(:), allocatable dgeod
character(len= *), parameter vn_wdot
character(len= *), parameter vn_bsubumns_sur
character(len= *), parameter vn_asym
character(len= *), parameter vn_extension
character(len= *), parameter ln_maxz
real(rprec), dimension(:), allocatable phi
character(len= *), parameter vn_tmod
character(len= *), parameter ln_mwell
real(rprec), dimension(:), allocatable am
character(len= *), parameter ln_mshear
real(rprec), dimension(:,:), allocatable bbc
character(len= *), parameter ln_fsqz
real(rprec), dimension(:), allocatable wdot
real(rprec), dimension(:), allocatable am_aux_s
character(len= *), parameter vn_beta
character(len= *), parameter vn_pcurr_type
character(len= *), parameter ln_rmaj
character(len= *), parameter ln_rmnc
real(rprec), dimension(:), allocatable shear
character(len= *), parameter ln_lar
character(len= *), parameter vn_bsubvmns
character(len= *), parameter ln_pmass_type
real(rprec), dimension(:), allocatable curmid
character(len= *), parameter vn_tormod
real(rprec), dimension(:), allocatable anglemse
real(rprec), dimension(:), allocatable iotas
character(len= *), parameter ln_magen
character(len= *), parameter ln_minr
character(len= *), parameter ln_presf
character(len= *), parameter ln_b0
character(len= *), parameter vn_equif
real(rprec), dimension(:), allocatable potvac
real(rprec), dimension(:), allocatable datastark
character(len= *), parameter ln_rbt0
real(rprec), dimension(:), allocatable ai_aux_f
character(len= *), parameter ln_fp
real(rprec), dimension(:,:), allocatable bsubsmnc
character input_extension
character(len= *), parameter vn_error
character(len= *), parameter vn_minr
character(len= *), parameter vn_extcur
character(len= *), parameter vn_pmod_nyq
character(len= *), parameter ln_mass
character(len= *), parameter vn_bsubumnc
real(rprec), dimension(:), allocatable qmid
character(len= *), parameter vn_presh
real(rprec), dimension(:,:), allocatable bsubumns
character(len= *), parameter vn_sgs
character(len= *), parameter ln_pmod_nyq
character(len= *), parameter vn_phi
character(len= *), parameter ln_rbc
character(len= *), parameter ln_aspect
character(len= *), parameter ln_bsubumns_sur
subroutine read_wout_deallocate
character(len= *), parameter vn_ctor
character(len= *), parameter ln_ai_aux_f
character(len= *), parameter vn_bdotb
character(len= *), parameter vn_racs
character(len= *), parameter vn_pbeta
character(len= *), parameter ln_bsubvmnc_sur
character(len= *), parameter vn_chi
character(len= *), parameter vn_polmod
real(rprec), dimension(:,:), allocatable bsubvmns
real(rprec), dimension(:), allocatable sknots
character(len= *), parameter vn_mcurr
character(len= *), parameter ln_zmns
real(rprec), dimension(:,:), allocatable bsupumns
real(rprec), dimension(:), allocatable dshear
character(len= *), parameter ln_bsubumnc
character(len= *), parameter vn_maxmod_nyq
character(len= *), parameter vn_bsubvmnc
character(len= *), parameter ln_bsupumnc
character(len= *), parameter ln_sgs
character(len= *), parameter ln_wdot
character(len= *), parameter ln_pcurr_type
character(len= *), parameter vn_thom
character(len= *), parameter ln_tbeta
real(rprec), dimension(:), allocatable qmeas
character(len= *), parameter ln_maxmod
character(len= *), parameter vn_maxit
character(len= *), parameter vn_ac_aux_s
character(len= *), parameter vn_rbt0
character(len= *), parameter ln_lmnc
real(rprec), dimension(:), allocatable alfa
character(len= *), parameter ln_tmod_nyq
character(len= *), parameter vn_fp
character(len= *), parameter ln_bsubsmnc
character(len= *), parameter ln_mgrid
real(rprec), dimension(:), allocatable dmerc
character(len= *), parameter ln_iotaf
real(rprec), dimension(:,:), allocatable lmnc
character(len= *), parameter vn_zbc
character(len= *), parameter vn_potvac
character(len= *), parameter ln_am_aux_s
character(len= *), parameter ln_phi
character(len= *), parameter ln_asym
character(len= *), parameter ln_tormod
character(len= *), parameter ln_abeta
character(len= *), parameter ln_qfact
character(len= *), parameter vn_maxmod
real(rprec), dimension(:), allocatable ai_aux_s
character(len= *), parameter vn_iotaf
character(len= *), parameter ln_betah
real(rprec), dimension(:,:,:,:), allocatable rzl_local
real(rprec), dimension(:,:), allocatable raxis
real(rprec), dimension(:), allocatable bdotgradv
character(len= *), parameter vn_therm
character(len= *), parameter vn_rbs
character(len= *), parameter ln_gmnc
character(len= *), parameter vn_phip
character(len= *), parameter vn_fsqz
character(len= *), parameter vn_bsupvmnc_sur
character(len= *), parameter ln_modb
character(len= *), parameter ln_bsubvmns_sur
character(len= *), parameter ln_gam
real(rprec), dimension(:,:), allocatable gmns
real(rprec), dimension(:,:), allocatable bsubsmns
character(len= *), parameter ln_jdotb
character(len= *), parameter ln_zacs
character(len= *), parameter vn_ai_aux_f
character(len= *), parameter vn_bsubumnc_sur
fault-tolerant file opening routines
subroutine parse_extension(file_to_parse, file_or_extension, lnc)
Parse the first command-line argument into a filename.