The Trick Simulation Environment is a generic simulation toolkit used for constructing and running simulations. This release includes a Monte Carlo analysis simulation framework and a data analysis package. It produces all auto documentation in XML. Also, the software is capable of inserting a malfunction at any point during the simulation. Trick 07 adds variable server output options and error messaging and is capable of using and manipulating wide characters for international support. Wide character strings are available as a fundamental type for variables processed by Trick.

A Trick Monte Carlo simulation uses a statistically generated, or predetermined, set of inputs to iteratively drive the simulation. Also, there is a framework in place for optimization and solution finding where developers may iteratively modify the inputs per run based on some analysis of the outputs. The data analysis package is capable of reading data from external simulation packages such as MATLAB and Octave, as well as the common comma-separated values (CSV) format used by Excel, without the use of external converters. The file formats for MATLAB and Octave were obtained from their documentation sets, and Trick maintains generic file readers for each format.

XML tags store the fields in the Trick header comments. For header files, XML tags for structures and enumerations, and the members within are stored in the auto documentation. For source code files, XML tags for each function and the calling arguments are stored in the auto documentation. When a simulation is built, a top level XML file, which includes all of the header and source code XML auto documentation files, is created in the simulation directory. Trick 07 provides an XML to TeX converter. The converter reads in header and source code XML documentation files and converts the data to TeX labels and tables suitable for inclusion in TeX documents.

A malfunction insertion capability allows users to override the value of any simulation variable, or call a malfunction job, at any time during the simulation. Users may specify conditions, use the return value of a malfunction trigger job, or manually activate a malfunction. The malfunction action may consist of executing a block of input file statements in an action block, setting simulation variable values, call a malfunction job, or turn on/off simulation jobs.

The variable server output options and error messaging capabilities allow the variable server to return data in a tab delimited ASCII format, or in a record-based binary format. The binary record includes information about the type and size of a variable not present in the ASCII format. The binary option is capable of transmitting full C/C++ structures with one request. With this option, error messaging is returnable to client applications. In this software, the variable server may also return time synchronous data, which is gathered and sent at the end of the simulation frame to guarantee data consistency. Also, the Trick 07 variable server is capable of delivering the simulation data to multiple clients using multicast sockets. This allows multiple machines to receive the same data without increasing the computational load on the simulation.

In addition to Linux and MacOSX, Trick 07 now supports three real-time operating systems: QNX, LynxOS, and RedHawk Linux. Each RTOS has unique system calls accessing real-time features such as setting process priorities, processor assignment, and accessing the realtime clock. Trick uses the unique realtime features of each OS.

This work was done by Alexander S. Lin of Johnson Space Center and John M. Penn, Dan A. Strauss, and Keith Vetter of L-3 Communications Corporation. MSC-24492-1