  Multilevel modeling and simulation (M&S) is becoming increasingly relevant
due to the benefits that this methodology offers. Multilevel models allow users
to describe a system at multiple levels of detail. From one side, this can make
better use of computational resources, since the more detailed and
time-consuming models can be executed only when/where required. From the other
side, multilevel models can be assembled from existing components, cutting down
development and verification/validation time. A downside of multilevel M&S is
that the development process becomes more complex due to some recurrent issues
caused by the very nature of multilevel models: how to make sub-models
interoperate, how to orchestrate execution, how state variables are to be
updated when changing scale, and so on. In this paper, we address some of these
issues by presenting a set of design patterns that provide a systematic
approach for designing and implementing multilevel models. The proposed design
patterns cover multiple aspects, including how to represent different levels of
detail, how to combine incompatible models, how to exchange data across models,
and so on. Some of the patterns are derived from the general software
engineering literature, while others are specific to the multilevel M&S
application area.
