The implementation has the following features:
  • Choice between Legendre, Chebyshev, central differences, trapezoidal or Hermite-Simpson discretization.
  • Large scale nonlinear programming using IPOPT and (optionally) SNOPT.
  • Estimation of the discretization error.
  • Automatic mesh refinement.
  • Automatic scaling
  • Automatic differentiation using the ADOL-C library
  • Numerical differentiation by using sparse finite differences
  • Automatic identification of the sparsity of the derivative matrices.
  • DAE formulation, so that differential and algebraic constraints can be implemented in the same C++ function.
  • Easy to use interface to GNUplot to produce graphical output, including 2D plots, 3D curves and surfaces, and polar plots.
  • Automatic generation of LaTeX code to produce a table that summarizes the mesh refinement process.