  Optimization time integrators have proven to be effective at solving complex
multi-physics problems, such as deformation of solids with non-linear material
models, contact with friction, strain limiting, etc. For challenging problems
with high accuracy requirements, Newton-type optimizers are often used. This
necessitates first- and second-order derivatives of the global non-linear
objective function. Manually differentiating, implementing and optimizing the
resulting code is extremely time-consuming, error-prone, and precludes quick
changes to the model.
  We present SymX, a framework based on symbolic expressions that computes the
first and second derivatives by symbolic differentiation, generates efficient
vectorized source code, compiles it on-the-fly, and performs the global
assembly of element contributions in parallel. The user only has to provide the
symbolic expression of an energy function for a single element in the
discretization and our system will determine the assembled derivatives for the
whole model. SymX is designed to be an integral part of a simulation system and
can easily be integrated into existing ones. We demonstrate the versatility of
our framework in various complex simulations showing different non-linear
materials, higher-order finite elements, rigid body systems, adaptive cloth,
frictional contact, and coupling multiple interacting physical systems.
Moreover, we compare our method with alternative approaches and show that SymX
is significantly faster than a current state-or-the-art framework (up to two
orders of magnitude for a higher-order FEM simulation).
