Review and Comparison of Model Co-Simulation Methods and Techniques 2020-01-0003
The process of developing, parameterizing, validating, and maintaining models occurs within a wide variety of tools, and requires significant time and resources. To maximize model utilization, models are often shared between various toolsets and experts. Model integration is typically divided into two categories: model exchange and model co-simulation. Of these two categories, model co-simulation is typically regarded as the more complex and difficult to implement. Co-Simulation provides the ability to integrate models between different toolsets or incompatible versions of the same software. Additionally, it provides the capabilities for real-time simulations and hardware-in-the-loop test scenarios. This paper reviews some of the common co-simulation data communication methods including pipes, file input/output, sockets, and shared memory. Different synchronization mechanisms, including spin locks and mutexes, are discussed, and the differences between serial and parallel communication patterns is provided. A simple turbojet model was developed to demonstrate each of the aforementioned methods. The turbojet model was developed in a legacy version of NPSS, and this legacy model was integrated with a high fidelity turbine model developed in a newer version of the NPSS software. The integration of the legacy turbojet model with the high fidelity turbine is used to demonstrate how to integrate two models between incompatible software versions. This application can readily be extended to other co-simulation scenarios, such as real-time simulation. Integration of the two models was implemented using each of the aforementioned communication methods, synchronization mechanisms, and communication patterns. Relevant implementation details for the turbojet/turbine application are described, and a detailed discussion of the results and comparisons between different methods is provided.