Arc676 / The-Standard-Model

Open source toolkit for simulating and visualizing particle interactions as predicted by the Standard Model

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The Standard Model

An open source toolkit for simulating and visualizing particle interactions as described by the Standard Model

(A potentially 8+ year long project)

Components

The toolkit consists of several independent components that each perform part of the overall task. This means you can write your own components to use the generated data however you want, if these provided ones don't match your needs. For example, if the renderer doesn't perform or behave as you would like, you can write your own to render your simulations however you wish. Certain components depend on certain other components, but each is designed to accomplish its own task and any code specific to that task will be confined to that component.

There are three stages to any simulation:

    1. Defining the simulation parameters: Use the editor to set up the initial conditions of the system to simulate. The output file is a binary encoding of the system.
    1. Simulating the system: Use the simulator to calculate the evolution of the system over time as predicted by the Standard Model. The output file is a binary encoding of the system's temporal evolution, including the positions of all the particles in the system at every point in time as specified by the simulation parameters.
    1. Rendering the simulation: Use the renderer to display the system's evolution over time. No calculations are performed at this stage; the renderer simply reads the evolution of the system from disk and renders the described system. The output is a video file of the system's evolution. The evolution can also be viewed while the renderer is running.

Standard Model Library

The Standard Model library encapsulates the mathematics behind the Standard Model, as well as defining structures for the representation of particles, among other things.

Simulator Library

The simulator library is the common codebase for the editor and the simulator. Both components need to be able to, for example, define simulation parameters. The editor writes these and the simulator reads them.

Simulator

The simulator executable reads simulation configuration files created by the editor, runs the simulation as requested, and generates a new binary file describing the evolution of the described system over time.

Editor

The editor executable is an interactive program that allows the user to build the initial conditions of a desired simulation before writing the configuration to a file that can be read by the simulator.

The project includes two editors. The graphical editor is recommended, as it is much easier to use and provides a clearer overview of the simulation parameters and intuitive interface. If no GUI is available, the command line editor may be used instead.

You can also write a custom editor to fit your needs or simply hard code the desired parameters into a new program that just writes these parameters to disk.

Renderer

The renderer executable reads files generated by the simulator and renders the system, outputting the graphics data to a video file, visually showing the system's evolution over time.

Note that the provided renderer uses OpenGL, which means that it may not be possible to use it on a headless system. If you find a way to do this, please share your findings by opening a pull request altering this README to describe the necessary steps and components to use OpenGL without a graphical interface.

Compilation

Each component is stored in its own directory and has its own Makefile. By dependencies, the correct order in which to compile the components is

  • Standard Model library
  • Simulator library
  • Additional dependencies, if present (see below)
  • Any executable component (editor, simulator, renderer)

Dependencies

The renderer also depends on the OpenGL Recorder library, which is included as a submodule and also has its own Makefile. Compiling both these components requires OpenGL and development packages for FFMPEG (libavcodec-dev and libavutil-dev). The recorder library must be compiled before the renderer.

The graphical editor uses ImGui (included as a submodule) on an OpenGL base. No dependencies need to be compiled beforehand for the editor.

Licensing

Toolkit available under GPLv3. See LICENSE for full license text.

This toolkit depends on the OpenGLRecorder library (GPLv3) and the ImGui immediate mode GUI library (MIT). These are included as submodules. The full license text for the MIT license can be found in the embedded ImGui repository at imgui/LICENSE.txt.

About

Open source toolkit for simulating and visualizing particle interactions as predicted by the Standard Model

License:GNU General Public License v3.0


Languages

Language:C 68.9%Language:C++ 22.3%Language:Makefile 8.8%