Welcome to the github page of QUADCOIL, the stellarator coil complexity proxy/global coil optimizer!
Developer contact: Lanke Fu, LF2869@nyu.edu
QUADCOIL is a global coil optimization code that approximates coils with a smooth sheet current. In other words, it's a "winding surface" code. However, unlike other winding surface codes, QUADCOIL:
- Supports constrained optimization.
- Supports non-convex quadratic penalties/constraints, such as curvatures and Lorentz force.
- Includes robust winding surface generators that do not produce self-intersections.
- Calculates derivatives with respect to plasma shape, winding surface shape, objective weights, and constraint thresholds.
Read QUADCOIL documentations here.
- Adding xyz surface (
SurfaceXYZFourierJAX) - Adding xyz tensor surface (
SurfaceXYZTensorFourierJAX) - Adding exact uniform offset surface (
SurfaceOffsetJAX), produced by callingSurface.uniform_offset()on any surface that's not aSurfaceOffsetJAX. - Overhauling winding surface generators to work for all 3 surfaces types (a
SurfaceOffsetJAXcannot be offset again by design). Improving smoothness. Winding surface can now simply generated by callingSurface.gen_winding_surface(). - Changing the signature of
quadcoil()to reflect the updates in winding surface generators - Overhauling adjoint differentiation to use the KKT condition, instead of the unconstrained auglag objective
- Adding preconditioners
precond='svd'for svd of induction matrixprecond='svd_K'to use the svd of the r-phi-z current K matrixprecond='ess'to use exponential spectral scaling
- Adding
nescoil(). It takes largely the same parameters as quadcoil but solves the nescoil problem - Adding the option to initialize a quadcoil run from a nescoil solution
- Adding interior point method (
solver='ipm') and slsqp-jax solver (solver='slsqp'). However, benchmark shows that auglag still works the best.
Please see documentations for more details.