Rendering physical systems into computer systems is often painstaking work, juggling between different tools to achieve different levels of precision. Small objects that affect their surroundings independently will need different systems from a single large object that moves as one.
But what if there was a way to marry both, to allow one to "speak" in the language of the other?
That is precisely what these American researchers have done. They have created a programming tool that can switch between large and small scale simulation automatically and without humongous amounts of coding.
In general, low-level and high-level simulations use different languages: graphs for lower-level, and matrices for higher level. Graphs require calculating forces acting on a modeled triangles and tetrahedra, while matrices require linear algebra, and the changes that affect a big group of numbers, a matrix.
When done separately, simulation is much more manageable. But if you want simulation of large objects, down to their minute details, that means translating and going back and forth between these two levels.
The researchers created Simit, a programming language that solves this problem. The language automatically converts between levels, and does so using a minimal amount of code.
Simit initially asks to describe the translation between the graphical description of a system and the matrix description. It then renders the simulation using linear algebra.
However, during the simulation, it doesn't need to go back and forth between the two levels. Instead, it translates the instructions written in the language of linear algebra into the language of graphs. This has the effect of maintaining runtime efficiency in hand-coded simulations.
Simit allows the same code to work on both conventional microprocessors or on graphics processing units (GPUs), and still maintaining speed and performance.