Releases: PrincetonUniversity/FOCUS
New cost functions in coil complexity and coil-coil separation
(Please update the develop
branch)
Updates:
- A new cost function on the so-called "Nissin" coil complexity has been implemented. For details, please check this documentation.
- A new cost function on the coil-coil separation has been (re-)implemented. Please check here.
- The curvature function has been revised. Please check here.
- There is also a cost function on the coil torsion, but documentation is underway.
- A new example of ATEN using the new cost functions has been prepared. Please check the example folder.
- The screen output has been re-organized. If you want to see the evolution of each cost function, please use
IsQuiet = -2/-1
. - Some bugs have been fixed.
Some notes:
- The input namelist has been modified. A quick way to get a template of the latest namelist is to run
xfocus -i
. You can also have a look at input.html. - Because of using exponential functions, the curvature, torsion, and nissin constrained functions might cause an error of floating-point-overflow (observed with Intel compilers). Please revised the corresponding exponential factors.
- According to @thomasgbkruger, the new functions will tend to use a relatively high resolution for coils.
Thanks to @thomasgbkruger for the contribution!
Curvature metric implemented and python wrapper provided
Two major updates:
- The coil curvature penalty function has been implemented, see #51 .
- Python wrapper using
f90wrap
has been utilized. Documentation is limited but will be provided in the future.
Two main bug fix:
- Fixed the stellarator symmetry bug for Nfp>3.
- Fixed the coil-surface separation calculation.
Other minor updates:
- Two more examples are provided.
- Temporarily fixed writing updated plasma boundary.
Stellarator symmetry enabled and separate limiter surface
It has been a long time since the last release (v0.5.3), although the version number has been keeping evolving. If you have missed all the changes, please check the full list here.
Here is a brief summary of major changes by chronological order.
- Field-line tracing (in vacuum) and rotational transform calculation were available as post-processing. #25
- 1/R toroidal field and vertical field were available as a special coil type.
- Added magnetic dipole as a new coil type (recommend to use the
dipole
branch directly). - Added flexible interface for I/O, now can specify file names for all the inputs.
- Added new function for writing MGRID file.
- Added different normalization for Bn harmonics. #40
- Allowed to specify a limiter surface for coil-surface separation. #17
- Allowed for specifying stellarator symmetry and debugged the toroidal periodicity. #46
- Many bug fixes.
Add SPEC interface and enable Bn normalization
Main changes:
- Add SPEC interface for future free-boundary SPEC calculations (
case_postproc=2
). - Enable Bn normalized to mod B (
case_bnormal=1
). - Fix several bugs.
Levenberg-Marquardt optimizer and new diagnostic terms available
Please view #21 for more details.
- Levenberg-Marquardt algorithm is now available.
Levenberg-Marquardt algorithm is one of the most famous minimization algorithms. The calculation of chi-squared and the packing of jacobian are different from the present optimization algorithms (DF, CG). Please view lmalg.pdf - More diagnostic terms in diagnos.h.
- calculate the overlap rate between the present Bn harmonics and the target harmonics
- compute a coil importance array (coil_importance in hdf5 file) for each coil
- Several bugs are fixed.
- add warnings about reset weights below machine precision
- fix nfp reset issue
- decompose Bn from coils only
- update ellipse example
Coil-surface separation and organize the repository structure
NAG dependance and other bugs fixed
In th past half year, no big changes have been made. Basically, this version is bugs fixing. For more details please view #16.
The first tag
Begin to use tag for better controlling the versions. This is the v0.1.0. Updates are copied from previous issues.
updates on 07/22/2017
- add version tag in both git and the code hdf5 output file;
- add exit option when CG line search not converge;
- add LHD helical coil case in examples;
- update coil.py;
updates on 07/20/2017
- Add options to freely control the optimization focus : currents or geometries
- Add additional criteria to exit optimizations
- Replace the repeated output information in CG
- fixed other minor stuffs
updates on 07/18/2017
- Transplant coil diagnostic subroutine
- Implement plasma and coil periodicity
- Minor improvements
update nots on 06/26/2017
-
current availability
- coil representation
Fourier series. - optimizers
Differential Flow and Nonlinear Conjugate Gradient method. - cost functions
Bn surface integral; Bn Fourier spectrum (in VMEC polar coordinate); toroidal magnetic flux; coil length. - post-processers
OMFIT FOCUS Interface (if you are interested, please contact Dr. Nikolas Logan). There are also some scripts in the python package coil.py.
- coil representation
-
examples
Two illustrating cases, designing modular coils for l=2 rotating ellipse and designing RMP coils for DIII-D are placed in examples. -
I/O related
The input files needed for a run are listed here, while you can also find detailed explanations of each variable in initial.pdf. -
plotting
There are 14 plotting functions in coilpy. For time reasons, I haven't written detailed instructions. But you are free to explore the functions.