The code files are all in the FOORT/src subfolder.
The executable can be built with CMake, which should be installed first (for regular Makefiles, see further). The advantage of this method it that, in principle, CMake will automatically detect your relevant compilers. Furthermore, it will enable you to generate the automated documentation and run the tests, if needed.
One can then run
cmake -S . -B build
cmake --build build
which will cause the executable to be stored in the FOORT/bin subdirectory. CMake can be cleaned by simply removing the relevant folders
rm -rf build
Typically, compiling with CMake on an HPC-cluster requires loading the relevant CMake module. This code has been succesfully compiled on CSD3 (Cambridge) and Cosma7 (Durham) using the latest CMake modules.
One could get an error if the version of CMake is not recent enough. Alternatively, gcc version 7.5 (and presumably lower) raised an issue of not finding the filesystem header. If this problem is encountered, one should change this header to <experimental/filesystem>. With this one change, the code also compiled on Fawcett, a smaller cluster (DAMTP, Cambridge).
Recent versions of MacOS may encounter issues with CMake. The following seems to resolve current issues. (Found in this issue)
export CXX=/opt/homebrew/bin/g++-14
export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/
For convenience, this is stored in alternative_builds/MacOS_workaround.sh, which should be executed with source \the\path\ in the terminal in case issues are encountered. You may need to rm -rf build in order to start clean.
Alternatively, old Makefiles can be found in alternative_builds/old_makefiles. These can be system dependent, however, but should be adaptable to your needs.
Use the alternative_builds/Foort.sln Visual Studio solution file and compile the FOORT project therein.
See in the output file for sample output files and Mathematica notebooks that process (and plot) this output. (The documentation will also have more information in the future.)
See the Documentation for more information on configuration options, how to add your own Metric, Diagnostic, or Termination, and how to process output.
You can consult the doxygen created documentation to find out more about the structure of the code.
If you have downloaded the repository, you can achieve this by opening docs/html/index.html in a browser.
A PDF version of this documentation is also available in docs/latex. The automated documentation is still under construction, however.
The doxygen documentation can be generated by running
cmake --build build -t doxygen
The doxygen documentation for the files pyFOORT.py and PhotonRingInterferometry.py can be generated by running doxygen in the PostProc subfolder. This will only generate html documentation, which can be consulted by opening index.html in a browser.
The tests can be run with
ctest --test-dir build
and should all pass.