The implementation has the following features:

  • Choice between Legendre, Chebyshev, central differences, trapezoidal or Hermite-Simpson discretization.

  • Large scale nonlinear programming using IPOPT

  • 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.