.. _usersguide-general_structure: =========================== General structure of IDSimF =========================== IDSimF is a framework implemented in c++ with a structure similar to `OpenFOAM `_. The core of IDSimF is a set of `modules` which provide the functionality to simulate ion trajectories, e.g. integration algorithms, data structures which represent particles or collision models which describe the interaction between simulated particles and a background gas. Programs which solve a concrete simulation problem is an `application` in IDSimF terms. Every application is itself a stand alone c++ program which uses the IDSimF modules for the simulation task. The applications bundled with IDSimF are described in the :doc:`applications user guide `. File and directory structure of the IDSimF repository ===================================================== In addition to `modules` and `applications`, the IDSimF repository contains further directories, which contain for example integrated libraries, tests or helping scripts written in different programming languages. The structure of the IDSimF repository is: * ``applications``: Simulation applications, solvers implementing concrete simulations. The applications are described in the :doc:`applications users guide `. * ``modules``: Framework modules of IDSimF. They are described in the :doc:`module documentation <../modules/module_overview>`. * ``libs``: Libraries from other open source projects which are integrated in IDSimF. * ``tests``: Unit Tests and Benchmarks. * ``julia``: Modules for the `Julia Programming Language `_, primarily a monte carlo simulator to generate statistical input for :doc:`collision models <../modules/collisionmodels>` * ``python``: Some helping / support scripts written in `Python `_, primarily generator scripts to generate some of the test input used in the unit tests. * ``documentation``: The source files for this documentation * ``notebooks``: `Jupyter `_ notebooks with additional tests and test result analysis