1 SUBROUTINE write_boozmn (extension)
3 USE booz_persistent,
ONLY: xmb, xnb
4 USE read_wout_mod,
ONLY: rmax_surf, rmin_surf, betaxis, aspect
10 USE read_boozer_mod,
ONLY: vn_nfp, vn_ns, vn_aspect,
11 1 vn_rmax, vn_rmin, vn_betaxis, vn_mboz, vn_nboz, vn_mnboz,
12 2 vn_version, vn_iota, vn_pres, vn_beta, vn_phip, vn_phi,
13 3 vn_bvco, vn_buco, vn_ixm, vn_ixn, vn_bmnc, vn_rmnc,
14 4 vn_zmns, vn_pmns, vn_gmnc, vn_lasym, vn_bmns, vn_rmns,
15 5 vn_zmnc, vn_pmnc, vn_gmns, vn_jlist
22 CHARACTER(LEN=*) :: extension
26 CHARACTER(LEN=*),
PARAMETER :: version =
27 1
"Boozer Transformation Code Version 2.0"
33 INTEGER :: nbooz, ierr
34 CHARACTER(LEN=*),
PARAMETER,
DIMENSION(1) ::
35 1 r1dim = (/
'radius'/), mn1dim = (/
'mn_mode'/),
36 2 j1dim = (/
'comput_surfs'/)
37 CHARACTER(LEN=*),
DIMENSION(2),
PARAMETER ::
38 1 r2dim = (/
'mn_modes',
'pack_rad'/)
40 CHARACTER(LEN=*),
PARAMETER :: vn_lrfp=
"lrfp_b", vn_chip=
"chip_b",
44 CALL cdf_open(nbooz,
'boozmn_' // trim(extension) //
'.nc',
47 print *,
' Error opening boozmn .nc file'
53 CALL cdf_define(nbooz, vn_nfp, nfp)
54 CALL cdf_define(nbooz, vn_ns, ns)
55 CALL cdf_define(nbooz, vn_aspect, aspect)
56 CALL cdf_define(nbooz, vn_rmax, rmax_surf)
57 CALL cdf_define(nbooz, vn_rmin, rmin_surf)
58 CALL cdf_define(nbooz, vn_betaxis, betaxis)
59 CALL cdf_define(nbooz, vn_mboz, mboz)
60 CALL cdf_define(nbooz, vn_nboz, nboz)
61 CALL cdf_define(nbooz, vn_mnboz, mnboz)
62 CALL cdf_define(nbooz, vn_version, version)
63 CALL cdf_define(nbooz, vn_lasym, lasym_b)
65 CALL cdf_define(nbooz, vn_lrfp, lrfp_b)
67 CALL cdf_define(nbooz, vn_chip, chip, dimname=r1dim)
68 CALL cdf_define(nbooz, vn_chi, chi, dimname=r1dim)
71 CALL cdf_define(nbooz, vn_iota, hiota, dimname=r1dim)
72 CALL cdf_define(nbooz, vn_pres, pres, dimname=r1dim)
73 CALL cdf_define(nbooz, vn_beta, beta_vol, dimname=r1dim)
74 CALL cdf_define(nbooz, vn_phip, phip, dimname=r1dim)
75 CALL cdf_define(nbooz, vn_phi, phi, dimname=r1dim)
76 CALL cdf_define(nbooz, vn_bvco, bvco, dimname=r1dim)
77 CALL cdf_define(nbooz, vn_buco, buco, dimname=r1dim)
78 CALL cdf_define(nbooz, vn_jlist, jlist, dimname=j1dim)
79 CALL cdf_define(nbooz, vn_ixm, nint(xmb), dimname=mn1dim)
80 CALL cdf_define(nbooz, vn_ixn, nint(xnb), dimname=mn1dim)
82 CALL cdf_define(nbooz, vn_bmnc, bmncb, dimname=r2dim)
83 CALL cdf_define(nbooz, vn_rmnc, rmncb, dimname=r2dim)
84 CALL cdf_define(nbooz, vn_zmns, zmnsb, dimname=r2dim)
85 CALL cdf_define(nbooz, vn_pmns, pmnsb, dimname=r2dim)
86 CALL cdf_define(nbooz, vn_gmnc, gmncb, dimname=r2dim)
88 CALL cdf_define(nbooz, vn_bmns, bmnsb, dimname=r2dim)
89 CALL cdf_define(nbooz, vn_rmns, rmnsb, dimname=r2dim)
90 CALL cdf_define(nbooz, vn_zmnc, zmncb, dimname=r2dim)
91 CALL cdf_define(nbooz, vn_pmnc, pmncb, dimname=r2dim)
92 CALL cdf_define(nbooz, vn_gmns, gmnsb, dimname=r2dim)
96 CALL cdf_write(nbooz, vn_nfp, nfp)
97 CALL cdf_write(nbooz, vn_ns, ns)
98 CALL cdf_write(nbooz, vn_aspect, aspect)
99 CALL cdf_write(nbooz, vn_rmax, rmax_surf)
100 CALL cdf_write(nbooz, vn_rmin, rmin_surf)
101 CALL cdf_write(nbooz, vn_betaxis, betaxis)
102 CALL cdf_write(nbooz, vn_mboz, mboz)
103 CALL cdf_write(nbooz, vn_nboz, nboz)
104 CALL cdf_write(nbooz, vn_mnboz, mnboz)
105 CALL cdf_write(nbooz, vn_version, version)
108 hiota(1) = 0; pres(1) = 0; beta_vol(1) = 0
109 phip(1) = 0; phi(1) = 0; bvco(1) = 0; buco(1) = 0
111 chip(1) = 0; chi(1) = 0
113 CALL cdf_write(nbooz, vn_iota, hiota)
114 CALL cdf_write(nbooz, vn_pres, pres)
115 CALL cdf_write(nbooz, vn_beta, beta_vol)
116 CALL cdf_write(nbooz, vn_phip, phip)
117 CALL cdf_write(nbooz, vn_phi, phi)
120 CALL cdf_write(nbooz, vn_chip, chip)
121 CALL cdf_write(nbooz, vn_chi, chi)
123 CALL cdf_write(nbooz, vn_bvco, bvco)
124 CALL cdf_write(nbooz, vn_buco, buco)
125 CALL cdf_write(nbooz, vn_jlist, jlist)
126 CALL cdf_write(nbooz, vn_ixm, nint(xmb))
127 CALL cdf_write(nbooz, vn_ixn, nint(xnb))
130 CALL cdf_write(nbooz, vn_bmnc, bmncb)
131 CALL cdf_write(nbooz, vn_rmnc, rmncb)
132 CALL cdf_write(nbooz, vn_zmns, zmnsb)
133 CALL cdf_write(nbooz, vn_pmns, pmnsb)
134 CALL cdf_write(nbooz, vn_gmnc, gmncb)
135 CALL cdf_write(nbooz, vn_lasym, lasym_b)
137 CALL cdf_write(nbooz, vn_lrfp, lrfp_b)
139 CALL cdf_write(nbooz, vn_bmns, bmnsb)
140 CALL cdf_write(nbooz, vn_rmns, rmnsb)
141 CALL cdf_write(nbooz, vn_zmnc, zmncb)
142 CALL cdf_write(nbooz, vn_pmnc, pmncb)
143 CALL cdf_write(nbooz, vn_gmns, gmnsb)
148 CALL cdf_close(nbooz, ierr)
154 INTEGER :: i, iunit, istat, js
157 CALL safe_open (iunit, istat,
'boozmn.' // extension,
'replace',
159 IF (istat .ne. 0)
THEN
160 print *,
' istat = ', istat
161 stop
'Error opening boozmn file in XBOOZ_XFORM!'
167 WRITE(iunit, iostat=istat, err=100)
168 1 nfp, ns, aspect, rmax_surf, rmin_surf, betaxis
171 WRITE(iunit, iostat=istat, err=100) hiota(js), pres(js),
172 1 beta_vol(js), phip(js), phi(js), bvco(js), buco(js)
177 WRITE (iunit, iostat=istat, err=100) mboz, nboz, mnboz, jsize
178 WRITE (iunit, iostat=istat, err=100) version, lasym, lrfp_b
180 WRITE (iunit, iostat=istat, err=100) nint(xnb(:mnboz)),
188 IF (js.le.0 .or. js.gt.ns) cycle
189 WRITE (iunit, iostat=istat, err=100) js
190 WRITE (iunit, iostat=istat, err=100) bmncb(:mnboz,i),
191 1 rmncb(:mnboz,i), zmnsb(:mnboz,i), pmnsb(:mnboz,i),
195 WRITE (iunit, iostat=istat, err=100) bmncb(:mnboz,i),
196 1 rmnsb(:mnboz,i), zmncb(:mnboz,i), pmncb(:mnboz,i),
204 1 print *,
' Error writing in subroutine write_boozmn:',
210 END SUBROUTINE write_boozmn