2 USE vparams,
ONLY: rprec, dp, nsd, ntord, ntor1d, mpol1d
3 USE vsvd0,
ONLY: nigroup
8 INTEGER,
PARAMETER :: NumJstard = 10
9 INTEGER,
PARAMETER :: ini_max=100
10 REAL(rprec) :: bigno = 1.e10_dp
14 INTEGER :: niter_opt, NumJstar, NumJinvariant,
15 1 mboz_opt, nboz_opt, nbmn, nproc, jboot
16 INTEGER :: num_processors, num_levmar_params
17 INTEGER,
DIMENSION(20) :: n_jac, m_jac
18 INTEGER,
DIMENSION(20) :: n_vac_island, m_vac_island
19 REAL(rprec) :: r00_scale, b00_scale, epsfcn, rgrid_min, rgrid_max,
20 1 zgrid_min, zgrid_max, r00_opt
21 REAL(rprec) :: sigma_jstar(nsd, NumJstard),
22 1 sigma_jinvariant(nsd, NumJstard)
23 REAL(rprec),
DIMENSION(nsd) ::
24 1 sigma_iota, sigma_mercier, sigma_vp
25 REAL(rprec),
DIMENSION(nsd) :: sigma_bmin,
26 1 sigma_bmax, sigma_ripple, sigma_bmn, nsurf_mask
27 REAL(rprec) :: sigma_aspect, sigma_ellipticity, sigma_maxcurrent,
28 1 sigma_coil_complex, sigma_curv, sigma_beta, target_aspectratio,
29 2 target_maxcurrent, target_beta, target_rmax, target_rmin,
30 3 target_ellipticity, sigma_rmax, sigma_rmin, sigma_iota_max,
31 4 sigma_iota_min, target_iota_max, target_iota_min
33 REAL(rprec) :: coil_separation, phiedge_min, phiedge_max
34 REAL(rprec),
DIMENSION(0:10) :: target_iota, target_well,
36 REAL(rprec) :: sigma_bal, sigma_boot, zeff_boot,
37 1 sigma_fluxp, target_fluxp, sigma_zmax, target_zmax,
38 2 sigma_pseudo, sigma_pseudo2, sigma_rbtor, target_rbtor
39 REAL(rprec),
DIMENSION(9) :: sigma_kink, target_kink
40 REAL(rprec),
DIMENSION(20) :: sigma_jac, sigma_vac_island
43 LOGICAL :: lfix_ntor(-ntord:ntord),
44 1 lfix_rhob(-ntord:ntord,0:mpol1d+1)
45 LOGICAL,
DIMENSION(nsd) :: lsurf_mask, ldkes_mask
46 LOGICAL :: lextcur(nigroup), lcoilp_sep
47 LOGICAL :: lreset_opt, lbmn, lcoil_complex, ledge_current,
48 1 lcur_prof_opt, liota_prof_opt, lbootsj_opt, lj_star,
49 2 lj_invariant, lcoil_opt, lcoil_geom, laspect_max, lbeta_min,
51 4 lbal_opt, lbootstrap, lseedcur, lkink_opt, lnescoil_opt
52 5 ,lcurprof_opt, lprof_opt, lpress_opt, lboundary
53 LOGICAL :: lreconp, lreconj, lp1zero, lj1zero
55 CHARACTER(len=100) :: seq_ext, opt_ext
56 CHARACTER(len=200) :: v3rfun_dir, v3post_in
58 CHARACTER(len=4) :: sym_type
60 REAL(rprec) :: target_coil_complex, target_coil_jmax
61 REAL(rprec) :: sigma_coil_jmax, sigma_berr_ave
63 REAL(rprec),
DIMENSION(nsd) :: sigma_neo, nneo_mask
64 LOGICAL,
DIMENSION(nsd) :: lneo_mask
66 REAL(rprec),
DIMENSION(nsd) :: sigma_dsubr
68 REAL(rprec) :: sigma_orbit
70 INTEGER :: nopt_alg, nopt_boundary
71 LOGICAL :: ldiag_opt, lkeep_mins
73 REAL(rprec) :: sigma_kappa, target_kappa, sigma_oh
74 REAL(rprec),
DIMENSION(nigroup) :: sigma_extcur, oh_coefs
75 REAL(rprec),
DIMENSION(0:10) :: target_iota_p
76 REAL(rprec),
DIMENSION(nsd) :: sigma_iota_pmax, sigma_iota_pmin
78 INTEGER :: nini_theta, nini_zeta, nini_tot
79 REAL(rprec),
DIMENSION(nsd) :: sigma_balloon, sigma_pgrad,
81 REAL(rprec),
DIMENSION(ini_max):: bal_theta0, bal_zeta0
83 REAL(rprec) :: sigma_pedge(1)
84 REAL(rprec) :: sigma_bootsj(nsd)
85 LOGICAL :: lballoon_mask(nsd)
86 LOGICAL :: lballoon_opt, lpres_prof_opt
88 REAL(rprec) :: nballoon_mask(nsd)
91 REAL(rprec),
DIMENSION(nsd) :: ndkes_mask, dkes_nu, dkes_efield,
95 REAL(rprec) :: sigma_vv, sigma_vv_rms, vv_dist, vv_dist_rms,
96 1 target_vv, target_vv_rms
97 INTEGER :: mpol_vv, ntor_vv, nu_vv, nv_vv
98 REAL(rprec),
DIMENSION(-ntord:ntord,0:mpol1d) ::
100 LOGICAL :: shapeweight
102 REAL(rprec) :: theta0_bw(3), phi0_bw,
103 1 wtheta_bw, wphi_bw, amplw_bw(3), planes_bw(3)
105 REAL(rprec) :: sigma_diagno(1000), data_diagno(1000)
106 CHARACTER(len=30) :: name_diagno(1000)
108 namelist /optimum/ epsfcn, niter_opt, num_processors,
109 & num_levmar_params, nsurf_mask, nopt_alg, nopt_boundary,
110 & lreset_opt, ldiag_opt, lkeep_mins, lbmn, lj_star, laspect_max,
111 & lbeta_min, lj_invariant, liota_prof_opt, lcur_prof_opt,
112 & ledge_current, lphiedge, lbootsj_opt, lkink_opt, lballoon_opt,
113 & l_legendre, ldkes_opt, lneo_opt, ldsubr_opt, lorbit_opt,
114 & lpres_prof_opt, lnescoil_opt, lcoil_geom, lv3post, lvac_opt,
115 & lfix_ntor, lfix_rhob, lextcur, sigma_extcur, oh_coefs,sigma_oh,
116 & r00_opt, r00_scale, b00_scale, rgrid_min, rgrid_max,
117 & zgrid_min, zgrid_max, mboz_opt, nboz_opt, phiedge_min,
118 & phiedge_max, coil_separation, target_aspectratio, sigma_aspect,
119 & target_beta, sigma_beta, target_kink, sigma_kink,
120 & target_maxcurrent, sigma_maxcurrent, target_rmax, sigma_rmax,
121 & target_rmin, sigma_rmin, target_zmax, sigma_zmax, target_kappa,
122 & sigma_kappa,target_ellipticity,sigma_ellipticity, target_fluxp,
123 & sigma_fluxp, target_rbtor, sigma_rbtor, target_coil_complex,
124 & sigma_coil_complex, target_coil_jmax, sigma_coil_jmax,
125 & target_iota, sigma_iota, target_iota_p, sigma_iota_pmax,
126 & sigma_iota_pmin, target_iota_min, sigma_iota_min,
127 & target_iota_max, sigma_iota_max, sigma_curv, sigma_berr_ave,
128 & sigma_pseudo, sigma_pseudo2, sigma_mercier, sigma_jac, n_jac,
129 & m_jac, n_vac_island, m_vac_island, sigma_vac_island, helicity,
130 & sigma_bmin, sigma_bmax, sigma_bmn, sigma_ripple, numjstar,
131 & numjinvariant, sigma_jstar, sigma_jinvariant, nballoon_mask,
132 & target_balloon, sigma_balloon, sigma_pgrad, sigma_pedge,
133 & bal_theta0, bal_zeta0, fboot, aseedcur,sigma_bootsj,ndkes_mask,
134 & dkes_nu, dkes_efield, sigma_dkes, nneo_mask, sigma_neo,
135 & sigma_dsubr, sigma_orbit, v3rfun_dir, v3post_in, name_diagno,
136 & data_diagno, sigma_diagno, target_vv, sigma_vv, target_vv_rms,
137 & lreconp, lp1zero, kpp, lreconj, lj1zero, kjj,
138 & sigma_vv_rms, mpol_vv, ntor_vv, nu_vv, nv_vv, rbc_vv, zbs_vv,
139 & shapeweight, planes_bw, amplw_bw, theta0_bw,phi0_bw, wtheta_bw,
141 & lcoil_complex, lballoon_mask, ldkes_mask, lseedcur, lneo_mask
142 & ,lsurf_mask, lcurprof_opt, lprof_opt, target_well, lcoil_opt
143 & ,sigma_centering, lpress_opt, lbootstrap, lbal_opt, lboundary
144 & ,sigma_vp, sym_type, sigma_boot, sigma_bal, nproc, nbmn
145 & ,zeff_boot, jboot, at
416 SUBROUTINE read_optimum_namelist (iunit, istat)
417 INTEGER,
INTENT(in) :: iunit
418 INTEGER,
INTENT(inout) :: istat
429 lreconp = .false. ; lreconj = .false.
430 lp1zero = .false. ; lj1zero = .false.
432 mboz_opt = 0; nboz_opt = 0; nbmn=0; nproc=0
437 laspect_max = .false.
446 sigma_iota_max = bigno
447 sigma_iota_min = bigno
450 sigma_mercier = bigno
455 sigma_coil_complex = bigno
456 sigma_maxcurrent = bigno
458 sigma_centering = bigno
462 sigma_ellipticity = bigno
467 sigma_jinvariant = bigno
473 sigma_vac_island = bigno
481 lcurprof_opt = .false.; lcoil_opt = .false.; lboundary = .false.
483 num_levmar_params = 1
491 sigma_pseudo2 = bigno
502 lcoil_complex = .false.
503 lnescoil_opt = .false.
504 sigma_coil_jmax = bigno
505 sigma_berr_ave = bigno
506 target_coil_complex = 1
533 target_aspectratio = 3
534 target_maxcurrent = 0
536 target_well = (/ 0.0_dp, -0.39_dp, 0.19_dp, (0.0_dp,istat=1,8) /)
541 lcur_prof_opt = .false.
542 liota_prof_opt = .false.
543 ledge_current = .false.
547 lj_invariant = .false.
550 lbootsj_opt = .false.
554 phiedge_max = 0; phiedge_min = 0
557 helicity = cmplx(0._dp, 0._dp)
564 sigma_balloon = bigno
568 lballoon_opt = .false.
569 lballoon_mask = .false.
570 lpres_prof_opt = .false.
587 shapeweight = .false.; amplw_bw = 0
588 theta0_bw(1) = 0 ; theta0_bw(2) = 0 ; theta0_bw(3) = 0
589 phi0_bw = 0 ; wtheta_bw = .5 ; wphi_bw = .5
590 planes_bw(1) = 0 ; planes_bw(2) = 1.5707 ; planes_bw(3) = 3.14159
596 sigma_iota_pmax = bigno
597 sigma_iota_pmin = bigno
601 bal_theta0 = 0; bal_zeta0 = 0
603 READ (iunit, nml=optimum, iostat=istat)
605 END SUBROUTINE read_optimum_namelist
607 END MODULE optim_params