4efaf5300be75d50589d5ffde9857054f93b792a
[alexxy/gromacs.git] / doxygen / mainpage.md
1 \Gromacs {#mainpage}
2 =======
3
4 \Gromacs is a versatile package to perform molecular dynamics, i.e. simulate
5 the Newtonian equations of motion for systems with hundreds, to millions
6 of particles.  See [www.gromacs.org](http://www.gromacs.org) for more
7 information.
8
9 This documentation generated by Doxygen is (mostly) extracted from the source
10 code, and provides documentation for understanding the source code.
11 The documentation can be generated with different levels of details.
12 This documentation has been generated to include
13 \if internal
14 all documentation, including internal functions and classes used for internal
15 implementation purposes.
16
17 The main audience for this level of detail are people who want to understand
18 detailed implementation of some area, or try to find some specific function
19 within the library.  If you are overwhelmed by the amount of details, the
20 [library API documentation](../html-lib/index.xhtml) skips functions not meant
21 to be used outside a single module.
22 \elseif libapi
23 documentation of functions in the library intended for reuse within the
24 library (a subset of these functions is also exposed as a public API).
25
26 The main audience for this level of detail are users and developers who want to
27 understand the \Gromacs code in general.
28 If you only want to call \Gromacs, but not modify it, the
29 [public API documentation](../html-user/index.xhtml) provides a cleaner entry
30 point.
31 If you are interested in internal implementation details not described here,
32 you can try searching the [full documentation](../html-full/index.xhtml).
33 \else
34 documentation of functions exposed through installed headers and intended as
35 part of a public API.  Note that definition of the public API is very
36 preliminary, and subject to change.
37
38 The main audience for this level of detail are users of \Gromacs who are
39 interested in writing their own analysis tools that use \Gromacs as a library,
40 as well as other developers who want to link against \Gromacs.
41 To understand the inner workings of \Gromacs, see the more detailed
42 [library API documentation](../html-lib/index.xhtml) or
43 [full documentation](../html-full/index.xhtml).
44 \endif
45
46 Currently, only parts of the code are documented here.  The following pages
47 give an overview of some of the topics that are documented:
48
49  - \subpage page_codelayout <br/>
50    This is a good place to start to understand how to
51    navigate the code and the documentation.
52  - \subpage page_analysisframework <br/>
53    Provides an overview of the framework that the \Gromacs library provides for
54    writing (trajectory) analysis tools.
55  - \subpage page_usinglibrary <br/>
56    Provides general guidance for writing software that uses the \Gromacs
57    library.
58 \if libapi
59  - \subpage page_unittesting <br/>
60    Provides an overview of unit testing in \Gromacs.
61  - \subpage page_wrapperbinary <br/>
62    Provides an overview of how the `gmx` wrapper binary is implemented.
63  - \subpage thread_mpi <br/>
64    This code is used internally for threading support, and also provides a
65    (partial) MPI implementation that allows compiling a "thread-MPI" version of
66    \Gromacs that can run on a single node with most of the functionality of a
67    real MPI version.
68 \endif
69
70 This list will hopefully expand over time.