MOOSE: architecture of an object-oriented multimodeling simulation system

Robert M. Cubert, University of Florida
Tolga Goktekin, University of Florida
Paul A. Fishwick, University of Florida

Paper

Abstract


MOOSE (Multimodel Object Oriented Simulation Environment) is an enabling environment for modeling and simulation, under construction at University of Florida, based on OOPM (Object Oriented Physical Modeling). OOPM extends object-oriented program design with visualization and a definition of system modeling that reinforces the relation of ``model" to ``program". OOPM is a natural mechanism for modeling large-scale systems, and facilitates effective integration of disparate pieces of code into one simulation. Components of MOOSE are Modeler, Translator, Engine, and Scenario: (1) Modeler interacts with user via GUI to capture model design, (2) Translator is a bridge between model design and model execution, reading Modeler output, building structures representing the model, and emitting C++ (or potentially other) code for the model; (3) Engine is a C++ program, composed of Translator output plus runtime support, compiled and linked once, then repeatedly activated for Model Execution; (4) Scenario is a visualizing user-friendly shell which activates and interacts with Engine, and displays Engine output in a form meaningful to user. Dynamic model types supported include Finite State Machine, Functional Block Model, and Equational Constraint models; alternatively, users may create their own C++ ``code models"; model types may be freely combined; class repositories facilitates reuse. MOOSE emphasizes multimodeling, which glues together models of the same or different types, produced during model refinement, reflecting various abstraction perspectives, to adjust model fidelity, during development and during model execution. Underlying multimodeling is ``Block" as a fundamental object. Every model is built from Blocks, expressed in a Modeling Assembly Language.