Model wraps model_type and provides common ID functionality (a struct field and associated accessor method). The simulator requires all models to have an ID.
Model
model_type