The divisions of relax's source code

relax's source code can be divided into five major areas: the initialisation code, the user interface (UI) code, the functional code, the number crunching code, and the code storing the program state.

Initialisation:
The code belonging to this section initialises the program, processes the command-line arguments, and determines what mode the program will be run in including the choice of the UI.
UI:
The current UI modes in relax include the prompt, the script and the GUI modes. These consist of separate code paths, all sitting on top of the underlying functional code. In the future, a web-based interface may be added.
Functional code:
This code is the main part of the program. It includes anything which does not fit into the other sections and comprises the generic code, the specific code, and the specific setup code used as an interface between the two.
Number crunching:
The computationally expensive code belongs in this section.
Program state:
The state of the program is contained within the relax data store which is accessible from all parts of the program as a singleton object.

Figure 13.1: The core design of relax.
\includegraphics[
width=\textwidth,
bb=0 -1 389 476
]{images/core_design}

The relax user manual (PDF), created 2016-10-28.