DESC
DESC copied to clipboard
Coils
Basics:
- each coil/curve has its own parameterization, knows how to compute basic stuff (position along coil etc)
- base class takes care of more general derived quantities
- make general
compute
method for coils with default grid/transform or user supplied (so we can use different grids for different objectives - Objectives are bound to certain coils/coilsets/equilibria with
build
method -
Objective.compute
uses bound coil methods to actually compute stuff - Throw error if objectives not built before optimization - should throw deprecation warning now
- coils each have
params
method to get single vector of all their parameters - also have method to parse their own params into sub-vectors (eg x -> Rn, Zn, current)
- move
Objective.parse_args
toEquilibrium
as a way for it to unpack its own arguments -
Objective.parse_args
should only split full x into pieces for each optimizeable object - equilibirum, coils etc take it from there - All coils must be in a single overall
Coilset
(coilset can be made up of sub-coilsets) -
Coilset
defines unique ordering for coils, allowing us to line up coils in state vector with constraints that apply to them.
TODO:
- [x] #513
- [x] #560
- [x] #561
- [x] #559
- [x] #496