State-of-the-art stellarator optimization code
In this tutorial we will run NEO as a standalone code (outside stellopt).
For input, NEO requires a Boozer coordinate file boozmn_XXXX.nc generated with BOOZ_XFORM. For this tutorial we will use the NCSX Boozer coordinate file created in the BOOZ_XFORM tutorial. For convenience, you can also obtain the file here: examples/boozmn_ncsx_c09r00_free.nc
> 1.__Edit the input text file if needed.__ > When NEO is run
from within STELLOPT, the NEO input parameters are provided
using a fortran namelist. However, when NEO is run as a standalone code,
the input parameters are provided using a text file that is not in
fortran namelist format. This input file can be given the name
neo_in.extension, where 'extension' is the same extension associated
with the vmec and boozmn files. This file is read by
neo_read_control.f90. For this tutorial, we will use the following
input file:
this line is ignored
this line is ignored
this line is ignored
this line is ignored
neo_out
10 ! no_fluxs = Number of flux surfaces to analyze.
9 19 29 39 49 59 69 79 89 99 ! fluxs_arr = Indices of flux surfaces to analyze.
200 ! theta_n
200 ! phi_n
0 ! max_m_mode
0 ! max_n_mode
75 ! npart
1 ! multra
0.01 ! acc_req
100 ! no_bins
75 ! nstep_per
500 ! nstep_min
2000 ! nstep_max
0 ! calc_nstep_max
1 ! eout_swi
0 ! lab_swi
0 ! inp_swi
2 ! ref_swi
1 ! write_progress
0 ! write_output_files
0 ! spline_test
0 ! write_integrate
0 ! write_diagnostic
this line is ignored
this line is ignored
this line is ignored
0 ! calc_cur
neo_cur
0 ! npart_cur
0 ! alpha_cur
0 ! write_cur_inte
> 2. __Execute the code.__ > To run NEO, call xneo, using the 'extension' as an argument. For the settings used here, there will be nothing printed to standard output. Execution should take a few tens of seconds.
>~/bin/xneo ncsx_c09r00_free
> 3. __Examine the output.__ > For this example, two output files are created: neo_out and neolog.ncsx_c90r00_free. The contents of neo_out should resemble the following:
9 0.8973041424E-04 0.4370353465E+00 0.3939978795E+00 0.1601924599E+01 0.1492993106E+01
19 0.6914966630E-04 0.8181774555E+00 0.4389194859E+00 0.1638204348E+01 0.1492993106E+01
29 0.8145391202E-04 0.1120313880E+01 0.4759618431E+00 0.1668479141E+01 0.1492993106E+01
39 0.1141052616E-03 0.1376483635E+01 0.5108445069E+00 0.1696584674E+01 0.1492993106E+01
49 0.1608986166E-03 0.1601209529E+01 0.5469579776E+00 0.1723818408E+01 0.1492993106E+01
59 0.2594685067E-03 0.1802365936E+01 0.5849734961E+00 0.1754976372E+01 0.1492993106E+01
69 0.4658703366E-03 0.1984891866E+01 0.6216997349E+00 0.1792637760E+01 0.1492993106E+01
79 0.7215466287E-03 0.2152625037E+01 0.6516614949E+00 0.1831918755E+01 0.1492993106E+01
89 0.1096822199E-02 0.2308678197E+01 0.6662392549E+00 0.1872206513E+01 0.1492993106E+01
99 0.1853340819E-02 0.2455739731E+01 0.6550476182E+00 0.1913769437E+01 0.1492993106E+01
> The meaning of the various columns in this file is discussed on this page. Since we had set EOUT_SWI=1 in the input file, the first two columns of neo_out contain the key information: the flux surface index and epsilon_effective respectively.