Overview
Defining the problem
The optimization problem is contained in a GroptParams object. This contains descriptors of the waveform desired (size, raster time, number of axes, inversions, etc.). The problem can be defined directly using these settings, or with helper functions such as vec_init_simple and diff_init.
For more information see here.
Adding constraints and objectives
The GroptParams object has a range of functions that add constraints (gradient amplitude, slew rate, moments, b-value, PNS, eddy currents, etc.) and objectives.
Available constraints can be seen here.
Solving
Once the problem has been defined, and constraints and/or objective functions added, solve with the convenience gropt.solve() function, or by creating a solver object (SolverGroptSDMM or SolverOSQP) for finer control.
See here for details.