  This paper introduces Finite Elements with Switch Detection (FESD), a
numerical discretization method for nonsmooth differential equations. We
consider the Filippov convexification of these systems and a transformation
into dynamic complementarity systems introduced by [Stewart, 1990]. FESD is
based on solving nonlinear complementarity problems and can automatically
detect nonsmooth events in time. If standard time-stepping Runge-Kutta (RK)
methods are naively applied to a nonsmooth ODE, the accuracy is at best of
order one. In FESD, we let the integrator step size be a degree of freedom.
Additional complementarity conditions, which we call cross complementarities,
enable exact switch detection, hence FESD can recover the high order accuracy
that the RK methods enjoy for smooth ODE. Additional conditions called step
equilibration allow the step size to change only when switches occur and thus
avoid spurious degrees of freedom. Convergence results for the FESD method are
derived, local uniqueness of the solution and convergence of numerical
sensitivities are proven. The efficacy of FESD is demonstrated in several
simulation and optimal control examples. In an optimal control problem
benchmark with FESD, we achieve up to five orders of magnitude more accurate
solutions than a standard time-stepping approach for the same computational
time.
