Mercury, a tool for slow, fast, and hard real-time hybrid simulation

Mercury, messenger
of the Gods known
for his speed
Mercury was developed in two stages. First, a MATLAB version was written in order to check accuracy and reliability of the various models within a user-friendly environment. Once the MATLAB version was deemed satisfactory, then a C++ version was written from scratch by a professional programmer (Dr. G. Haussmann, Technical Director) in such a way to be optimized for real-time hybrid simulation.
This two-tier approach proved most valuable as the MATLAB version not only greatly facilitated subsequent implementation in C++ but by itself it constitutes an excellent pedagogical tool for those interested in learning the intricacies of non-linear structural analysis with modern elements (flexibility-based ones with fiber sections, and appropriate constitutive models). Such a code exists, Fedeaslab, however the source code is locked. Another code would be OpenSees, however few graduate students feel comfortable in programming in C++ and would rather modify MATLAB code. Finally, there is FEAP, which could be an intermediary solution, as modifying Fortran remains a rather simple task.
Furthermore, the MATLAB version of Mercury is set up to perform hybrid simulation. Currently, a client version of Mercury could simulate the experiment as a prelude to an actual test. This platform is also ideal from a pedagogical point of view to understand the concept of hybrid simulation.
The integration of the two versions of Mercury, as well as supporting code, is shown below:
The MATLAB and the C++ versions are designed to accept similar (but not identical) input files, hence m2lua.m is a MATLAB-based translator which will convert .m files into .lua ones. Similarly, the mesh definition for a multi-story orthogonal frame with fiber sections, zero length elements and/or sections can be a daunting task. Hence this task is facilitated by mmg.m (Mercury Mesh Generator) which reads key information from a preformatted Excel file and generates a Mercury-compatible file ready to run.
Finally, the C++ version of Mercury can be embedded in Simulink, LabView or operate within Windows, Linux or Real-time Linux kernels.
Multi-platform Capabilities
Many laboratories use Simulink and/or LabView to interact with instrumentation and hardware. Mercury has the capability to be embedded as a module within either of them and could be wired up to various components depending on the lab setup. Such components include not only actuators, but also shake tables and servomotors. Numerical models of components can also be added by wiring them up to the Mercury module.
Mercury is not limited to RTHS, it can be used for "pseudo-dynamic" tests in a lab simply equipped with either LabView or Simulink.
Mercury can be easily connected to OpenFresco/SIMCOR for distributed testing.
Notes
- Draft of a Theory/User/Validation manual available.
- Mercury is developed through the financial support of the State of Colorado and NEESinc. The Concrete Anisotropic Damage model is developed by the LMT/ENS/Cachan (France).
- Current status (April 2009): Matlab version 90% completed; c++ version 40% completed.
- Weekly regression testing is performed to verify correctness of the C++ and MATLAB analysis.
- Will soon be tested in a real-time hybrid simulation of a R/C frame (http://fht.colorado.edu/fht).
- For further information, please contact Victor Saouma
- Click here to see the Mercury pamphlet