  Shells, i.e., objects made of a thin layer of material following a surface,
are among the most common structures in use. They are highly efficient, in
terms of material required to maintain strength, but also prone to deformation
and failure. We introduce an efficient method for reinforcing shells, that is,
adding material to the shell to increase its resilience to external loads. Our
goal is to produce a reinforcement structure of minimal weight. It has been
demonstrated that optimal reinforcement structures may be qualitatively
different, depending on external loads and surface shape. In some cases, it
naturally consists of discrete protruding ribs; in other cases, a smooth shell
thickness variation allows to save more material.
  Most previously proposed solutions, starting from classical Michell trusses,
are not able to handle a full range of shells (e.g., are restricted to
self-supporting structures) or are unable to reproduce this range of behaviors,
resulting in suboptimal structures.
  We propose a new method that works for any input surface with any load
configurations, taking into account both in-plane (tensile/compression) and
out-of-plane (bending) forces. By using a more precise volume model, we are
capable of producing optimized structures with the full range of qualitative
behaviors. Our method includes new algorithms for determining the layout of
reinforcement structure elements, and an efficient algorithm to optimize their
shape, minimizing a non-linear non-convex functional at a fraction of the cost
and with better optimality compared to standard solvers.
  We demonstrate the optimization results for a variety of shapes, and the
improvements it yields in the strength of 3D-printed objects.
