A non-transitory computer readable storage medium encoded with computer program instructions which when accessed by a client computer cause the client computer to load the program instructions to a memory therein creating a special purpose data structure causing the client computer to operate as a specially programmed client computer, executing a method of enabling a dual modeling environment, comprising:
- (a) creating, in the specially programmed client computer, a client application comprising one or more proxy modules, wherein:
- (i) each of the one or more proxy modules corresponds to a precise module;
- (ii) each of the one or more proxy modules comprises a light weight version of the corresponding precise module;
- and
- (iii) a server application is comprised of one or more precise modules;
- (b) executing, in the specially programmed client computer, one or more commands in the one or more proxy modules in the client application to produce client output data;
- (c) transmitting, in the specially programmed client computer, the same one or more commands to the server application that is configured to utilize the same one or more commands during execution of the one or more precise modules, wherein the server application is configured to execute the same one or more commands in the server application concurrently with and independent from the client application to produce server output data;
- and
- (d) synchronizing, in the specially programmed client computer, the client output data with the server output data, wherein the synchronizing comprises:
- (i) maintaining a client command stack comprised of a subset of the one or more commands, wherein:
- (1) the subset comprises those commands that would result in a modeling error if allowed to complete execution in the server application;
- and
- (2) the client command stack continues to grow until each command in the stack is acknowledged by the server application;
- and
- (ii) utilizing stack data that is based on the one or more commands in the client command stack that have not been acknowledged by the server application.