diff --git a/doc/RTD/DeveloperGuide/AddingTasks/addingtasks.rst b/doc/RTD-Legacy/DeveloperGuide/AddingTasks/addingtasks.rst similarity index 100% rename from doc/RTD/DeveloperGuide/AddingTasks/addingtasks.rst rename to doc/RTD-Legacy/DeveloperGuide/AddingTasks/addingtasks.rst diff --git a/doc/RTD/DeveloperGuide/Examples/Cooling/cooling.rst b/doc/RTD-Legacy/DeveloperGuide/Examples/Cooling/cooling.rst similarity index 100% rename from doc/RTD/DeveloperGuide/Examples/Cooling/cooling.rst rename to doc/RTD-Legacy/DeveloperGuide/Examples/Cooling/cooling.rst diff --git a/doc/RTD/DeveloperGuide/Examples/ExternalGravity/externalgravity.rst b/doc/RTD-Legacy/DeveloperGuide/Examples/ExternalGravity/externalgravity.rst similarity index 100% rename from doc/RTD/DeveloperGuide/Examples/ExternalGravity/externalgravity.rst rename to doc/RTD-Legacy/DeveloperGuide/Examples/ExternalGravity/externalgravity.rst diff --git a/doc/RTD/DeveloperGuide/developerguide.rst b/doc/RTD-Legacy/DeveloperGuide/developerguide.rst similarity index 100% rename from doc/RTD/DeveloperGuide/developerguide.rst rename to doc/RTD-Legacy/DeveloperGuide/developerguide.rst diff --git a/doc/RTD/FAQ/index.rst b/doc/RTD-Legacy/FAQ/index.rst similarity index 100% rename from doc/RTD/FAQ/index.rst rename to doc/RTD-Legacy/FAQ/index.rst diff --git a/doc/RTD/Innovation/AsynchronousComms/index.rst b/doc/RTD-Legacy/Innovation/AsynchronousComms/index.rst similarity index 100% rename from doc/RTD/Innovation/AsynchronousComms/index.rst rename to doc/RTD-Legacy/Innovation/AsynchronousComms/index.rst diff --git a/doc/RTD/Innovation/Caching/index.rst b/doc/RTD-Legacy/Innovation/Caching/index.rst similarity index 100% rename from doc/RTD/Innovation/Caching/index.rst rename to doc/RTD-Legacy/Innovation/Caching/index.rst diff --git a/doc/RTD/Innovation/HeirarchicalCellDecomposition/InitialDecomp.png b/doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/InitialDecomp.png similarity index 100% rename from doc/RTD/Innovation/HeirarchicalCellDecomposition/InitialDecomp.png rename to doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/InitialDecomp.png diff --git a/doc/RTD/Innovation/HeirarchicalCellDecomposition/SplitCell.png b/doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/SplitCell.png similarity index 100% rename from doc/RTD/Innovation/HeirarchicalCellDecomposition/SplitCell.png rename to doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/SplitCell.png diff --git a/doc/RTD/Innovation/HeirarchicalCellDecomposition/SplitPair.png b/doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/SplitPair.png similarity index 100% rename from doc/RTD/Innovation/HeirarchicalCellDecomposition/SplitPair.png rename to doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/SplitPair.png diff --git a/doc/RTD/Innovation/HeirarchicalCellDecomposition/index.rst b/doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/index.rst similarity index 100% rename from doc/RTD/Innovation/HeirarchicalCellDecomposition/index.rst rename to doc/RTD-Legacy/Innovation/HeirarchicalCellDecomposition/index.rst diff --git a/doc/RTD/Innovation/HybridParallelism/index.rst b/doc/RTD-Legacy/Innovation/HybridParallelism/index.rst similarity index 100% rename from doc/RTD/Innovation/HybridParallelism/index.rst rename to doc/RTD-Legacy/Innovation/HybridParallelism/index.rst diff --git a/doc/RTD/Innovation/TaskBasedParallelism/OMPScaling.png b/doc/RTD-Legacy/Innovation/TaskBasedParallelism/OMPScaling.png similarity index 100% rename from doc/RTD/Innovation/TaskBasedParallelism/OMPScaling.png rename to doc/RTD-Legacy/Innovation/TaskBasedParallelism/OMPScaling.png diff --git a/doc/RTD/Innovation/TaskBasedParallelism/TasksExample.png b/doc/RTD-Legacy/Innovation/TaskBasedParallelism/TasksExample.png similarity index 100% rename from doc/RTD/Innovation/TaskBasedParallelism/TasksExample.png rename to doc/RTD-Legacy/Innovation/TaskBasedParallelism/TasksExample.png diff --git a/doc/RTD/Innovation/TaskBasedParallelism/TasksExampleConflicts.png b/doc/RTD-Legacy/Innovation/TaskBasedParallelism/TasksExampleConflicts.png similarity index 100% rename from doc/RTD/Innovation/TaskBasedParallelism/TasksExampleConflicts.png rename to doc/RTD-Legacy/Innovation/TaskBasedParallelism/TasksExampleConflicts.png diff --git a/doc/RTD/Innovation/TaskBasedParallelism/index.rst b/doc/RTD-Legacy/Innovation/TaskBasedParallelism/index.rst similarity index 100% rename from doc/RTD/Innovation/TaskBasedParallelism/index.rst rename to doc/RTD-Legacy/Innovation/TaskBasedParallelism/index.rst diff --git a/doc/RTD/Innovation/TaskGraphPartition/index.rst b/doc/RTD-Legacy/Innovation/TaskGraphPartition/index.rst similarity index 100% rename from doc/RTD/Innovation/TaskGraphPartition/index.rst rename to doc/RTD-Legacy/Innovation/TaskGraphPartition/index.rst diff --git a/doc/RTD/Innovation/Vectorisation/index.rst b/doc/RTD-Legacy/Innovation/Vectorisation/index.rst similarity index 100% rename from doc/RTD/Innovation/Vectorisation/index.rst rename to doc/RTD-Legacy/Innovation/Vectorisation/index.rst diff --git a/doc/RTD/Innovation/index.rst b/doc/RTD-Legacy/Innovation/index.rst similarity index 96% rename from doc/RTD/Innovation/index.rst rename to doc/RTD-Legacy/Innovation/index.rst index da3f2474b4c71f8030634b2f669d3d8093757171..65a9cb82230b5661f332e25ea05644ec8e2cdbf8 100644 --- a/doc/RTD/Innovation/index.rst +++ b/doc/RTD-Legacy/Innovation/index.rst @@ -1,5 +1,3 @@ -.. _GettingStarted: - What makes SWIFT different? =========================== diff --git a/doc/RTD-Legacy/Makefile b/doc/RTD-Legacy/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..b1dfebb01c2f55530f7a8efad3c5e5bf96484c18 --- /dev/null +++ b/doc/RTD-Legacy/Makefile @@ -0,0 +1,177 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make <target>' where <target> is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/SWIFT.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/SWIFT.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/SWIFT" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/SWIFT" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/doc/RTD/Motivation/index.rst b/doc/RTD-Legacy/Motivation/index.rst similarity index 100% rename from doc/RTD/Motivation/index.rst rename to doc/RTD-Legacy/Motivation/index.rst diff --git a/doc/RTD/Physics/Gravity/gravity.rst b/doc/RTD-Legacy/Physics/Gravity/gravity.rst similarity index 100% rename from doc/RTD/Physics/Gravity/gravity.rst rename to doc/RTD-Legacy/Physics/Gravity/gravity.rst diff --git a/doc/RTD/Physics/SPH/sph.rst b/doc/RTD-Legacy/Physics/SPH/sph.rst similarity index 100% rename from doc/RTD/Physics/SPH/sph.rst rename to doc/RTD-Legacy/Physics/SPH/sph.rst diff --git a/doc/RTD/Physics/index.rst b/doc/RTD-Legacy/Physics/index.rst similarity index 100% rename from doc/RTD/Physics/index.rst rename to doc/RTD-Legacy/Physics/index.rst diff --git a/doc/RTD/conf.py b/doc/RTD-Legacy/conf.py similarity index 98% rename from doc/RTD/conf.py rename to doc/RTD-Legacy/conf.py index b4eab3d354322f8ff5e060b1795c2654eb879f90..6b65aabe54a480a29a7930f6e6f24a35b0204dcf 100644 --- a/doc/RTD/conf.py +++ b/doc/RTD-Legacy/conf.py @@ -25,7 +25,7 @@ import sys, os # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinx.ext.mathjax'] +extensions = ['sphinx.ext.todo', 'sphinx.ext.mathjax'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/doc/RTD/index.rst b/doc/RTD-Legacy/index.rst similarity index 100% rename from doc/RTD/index.rst rename to doc/RTD-Legacy/index.rst diff --git a/doc/RTD/.gitignore b/doc/RTD/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..50239858cbc1b86a270ae88903139d91b943acd3 --- /dev/null +++ b/doc/RTD/.gitignore @@ -0,0 +1,2 @@ +build/* +make.bat diff --git a/doc/RTD/Makefile b/doc/RTD/Makefile index b1dfebb01c2f55530f7a8efad3c5e5bf96484c18..22ff80ae32739df7d7ca97d8d2a6c6c8159b8248 100644 --- a/doc/RTD/Makefile +++ b/doc/RTD/Makefile @@ -1,177 +1,20 @@ -# Makefile for Sphinx documentation +# Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = _build - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext +SPHINXPROJ = SWIFTSPHWIthFine-grainedinter-dependentTasking +SOURCEDIR = source +BUILDDIR = build +# Put it first so that "make" without argument is like "make help". help: - @echo "Please use \`make <target>' where <target> is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/SWIFT.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/SWIFT.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/SWIFT" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/SWIFT" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." +.PHONY: help Makefile -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/doc/RTD/README.md b/doc/RTD/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3394ce7b8b97a71a7f14fb235e49e2efb51b9f9f --- /dev/null +++ b/doc/RTD/README.md @@ -0,0 +1,15 @@ +SWIFT Documentation +=================== + +This is the main documentation for SWIFT that can be found on ReadTheDocs. + +You will need the `sphinx` and `sphinx-autobuild` python packages (pip install +them!) to build the documentation to html, as well as the `sphinx_rtd_theme` +package which is used as the theme. + +To build the documentation, `make html` and then it is available in +`build/html`. + +Please consider adding documentation when you add code! + + diff --git a/doc/RTD/source/Cooling/index.rst b/doc/RTD/source/Cooling/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..46a01b2a054629b7fc13f0ea190c2a5a0fdd6d9c --- /dev/null +++ b/doc/RTD/source/Cooling/index.rst @@ -0,0 +1,67 @@ +.. Equation of State + Loic Hausammann, 7th April 2018 + +.. _cooling: + +Cooling +======= + +Currently, we have 5 different cooling (EAGLE, Grackle, const-lambda, const-du +and none). Three of them are easily solved analytically (const-lambda, +const-du and none) while the two last requires complex chemical networks. + + +Equations +--------- + +The first table compares the different analytical cooling while the next ones +are specific to a given cooling. The quantities are the internal energy (\\( u +\\)), the density \\( rho \\), the element mass fraction (\\( X_i \\)), the +cooling function (\\(\\Lambda\\), the proton mass (\\( m_H \\)) and the time +step condition (\\( t\_\\text{step}\\)). If not specified otherwise, all +cooling contains a temperature floor avoiding negative temperature. + +.. csv-table:: Analytical Cooling + :header: "Variable", "Const-Lambda", "Const-du", "None" + + "\\( \\frac{ \\mathrm{d}u }{ \\mathrm{d}t } \\)", "\\( -\\Lambda \\frac{\\rho^2 X_H^2}{\\rho m_H^2} \\)", "const", "0" + "\\( \\Delta t\_\\text{max} \\)", "\\( t\_\\text{step} \\frac{u}{\\left|\\frac{ \\mathrm{d}u }{ \\mathrm{d}t }\\right|} \\)", "\\( t\_\\text{step} \\frac{u}{\\ \\left| \\frac{ \\mathrm{d}u }{ \\mathrm{d}t }\\right|} \\)", "None" + + +Grackle +~~~~~~~ + +Grackle is a chemistry and cooling library presented in B. Smith et al. 2016 +(do not forget to cite if used). Four different modes are available: +equilibrium, 6 species network (H, H\\( ^+ \\), e\\( ^- \\), He, He\\( ^+ \\) +and He\\( ^{++} \\)), 9 species network (adds H\\(^-\\), H\\(_2\\) and +H\\(_2^+\\)) and 12 species (adds D, D\\(^+\\) and HD). Following the same +order, the swift cooling options are ``grackle``, ``grackle1``, ``grackle2`` +and ``grackle3`` (the numbers correspond to the value of +``primordial_chemistry`` in Grackle). It also includes some self-shielding +methods and UV background. In order to use the Grackle cooling, you will need +to provide an HDF5 table computed by Cloudy. + +When starting a simulation without providing the different fractions, the code +supposes an equilibrium and computes the fractions automatically. + +Eagle +~~~~~ + +TODO + +How to Implement a New Cooling +------------------------------ + +The developper should provide at least one function for: + * writing the cooling name in HDF5 + * cooling a particle + * the maximal time step possible + * initializing a particle + * computing the total energy radiated by a particle + * initializing the cooling parameters + * printing the cooling type + +For implementation details, see ``src/cooling/none/cooling.h`` + +See :ref:`new_option` for the full list of changes required. diff --git a/doc/RTD/source/EquationOfState/index.rst b/doc/RTD/source/EquationOfState/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..3558041e9513b967a2530165acec5e5f4f11a364 --- /dev/null +++ b/doc/RTD/source/EquationOfState/index.rst @@ -0,0 +1,50 @@ +.. Equation of State + Loic Hausammann, 6th April 2018 + +.. _equation_of_state: + +Equation of State +================= + +Currently (if the documentation was well updated), we have two different +equation of states implemented: ideal gas and isothermal. They describe the +relations between our main thermodynamical variables: the internal energy +(\\(u\\)), the density (\\(\\rho\\)), the entropy (\\(A\\)) and the pressure +(\\(P\\)). + +Equations +--------- + +In the following section, the variables not yet defined are: \\(\\gamma\\) for +the adiabatic index and \\( c_s \\) for the speed of sound. + +.. csv-table:: Ideal Gas + :header: "Variable", "A", "u", "P" + + "A", "", "\\( \\left( \\gamma - 1 \\right) u \\rho^{1-\\gamma} \\)", "\\(P \\rho^{-\\gamma} \\)" + "u", "\\( A \\frac{ \\rho^{ \\gamma - 1 } }{\\gamma - 1 } \\)", "", "\\(\\frac{1}{\\gamma - 1} \\frac{P}{\\rho}\\)" + "P", "\\( A \\rho^\\gamma \\)", "\\( \\left( \\gamma - 1\\right) u \\rho \\)", "" + "\\(c_s\\)", "\\(\\sqrt{ \\gamma \\rho^{\\gamma - 1} A}\\)", "\\(\\sqrt{ u \\gamma \\left( \\gamma - 1 \\right) } \\)", "\\(\\sqrt{ \\frac{\\gamma P}{\\rho} }\\)" + + +.. csv-table:: Isothermal Gas + :header: "Variable", "A", "u", "P" + + + "A", "", "\\(\\left( \\gamma - 1 \\right) u \\rho^{1-\\gamma}\\)", "" + "u", "", "const", "" + "P", "", "\\(\\left( \\gamma - 1\\right) u \\rho \\)", "" + "\\( c_s\\)", "", "\\(\\sqrt{ u \\gamma \\left( \\gamma - 1 \\right) } \\)", "" + + +How to Implement a New Equation of State +---------------------------------------- + +See :ref:`new_option` for a full list of required changes. + +You will need to provide a ``equation_of_state.h`` file containing: the +definition of ``eos_parameters``, IO functions and transformations between the +different variables: \\(u(\\rho, A)\\), \\(u(\\rho, P)\\), \\(P(\\rho,A)\\), +\\(P(\\rho, u)\\), \\(A(\\rho, P)\\), \\(A(\\rho, u)\\), \\(c_s(\\rho, A)\\), +\\(c_s(\\rho, u)\\) and \\(c_s(\\rho, P)\\). See other equation of state files +to have implementation details. diff --git a/doc/RTD/source/GettingStarted/compiling_code.rst b/doc/RTD/source/GettingStarted/compiling_code.rst new file mode 100644 index 0000000000000000000000000000000000000000..557c5e66aac57b36f5e773e553a3c67d3b554f70 --- /dev/null +++ b/doc/RTD/source/GettingStarted/compiling_code.rst @@ -0,0 +1,93 @@ +.. Compiling the Code + Josh Borrow, 5th April 2018 + + +Compiling SWIFT +=============== + +Dependencies +------------ + +To compile SWIFT, you will need the following libraries: + +HDF5 +~~~~ + +Version 1.8.x or higher is required. Input and output files are stored as HDF5 +and are compatible with the existing GADGET-2 specification. Please consider +using a build of parallel-HDF5, as SWIFT can leverage this when writing and +reading snapshots. We recommend using HDF5 > 1.10.x as this is `vastly superior` +in parallel. + +MPI +~~~ +A recent implementation of MPI, such as Open MPI (v2.x or higher), is required, +or any library that implements at least the MPI 3 standard. + +Libtool +~~~~~~~ +The build system depends on libtool. + +FFTW +~~~~ +Version 3.3.x or higher is required for periodic gravity. + +METIS +~~~~~ +METIS is used for domain decomposition and load balancing. + +libNUMA +~~~~~~~ +libNUMA is used to pin threads. + +GSL +~~~ +The GSL is required for cosmological integration. + + +Optional Dependencies +--------------------- + +There are also the following _optional_ dependencies. + +TCmalloc/Jemalloc +~~~~~~~~~~~~~~~~~ +TCmalloc/Jemalloc are used for faster memory allocations when available. + +DOXYGEN +~~~~~~~ +You can build documentation for SWIFT with DOXYGEN. + +Python +~~~~~~ +To run the examples, you will need python and some of the standard scientific libraries (numpy, matplotlib). Some examples use Python 2 scripts, but the more recent ones use Python 3 (this is specified in individual READMEs). + +GRACKLE +~~~~~~~ +GRACKLE cooling is implemented in SWIFT. If you wish to take advantage of it, you will need it installed. + + +Initial Setup +------------- + +We use autotools for setup. To get a basic running version of the code +(the binary is created in swiftsim/examples) on most platforms, run + +.. code-block:: bash + + ./autogen.sh + ./configure + make + + +MacOS Specific Oddities +~~~~~~~~~~~~~~~~~~~~~~~ + +To build on MacOS you will need to disable compiler warnings due to an +incomplete implementation of pthread barriers. DOXYGEN also has some issues on +MacOS, so it is best to leave it out. To configure: + +.. code-block:: bash + + ./configure —disable-compiler-warnings —disable-doxygen-doc + diff --git a/doc/RTD/source/GettingStarted/configuration_options.rst b/doc/RTD/source/GettingStarted/configuration_options.rst new file mode 100644 index 0000000000000000000000000000000000000000..e37384cfd1c29cb1df82cc180a763f4859650b2e --- /dev/null +++ b/doc/RTD/source/GettingStarted/configuration_options.rst @@ -0,0 +1,50 @@ +.. Configuration Options + Josh Borrow, 5th April 2018 + +Configuration Options +===================== + +There are many configuration options that SWIFT makes available; a few key +ones are summarised here. + +Note that these need to be ran with ``./configure x`` where ``x`` is the +configuration flag. + +A description of the available options of the below flags can be found by using +``./configure --help``. + +``--with-hydro=gadget2`` +~~~~~~~~~~~~~~~~~~~~~~~~ +There are several hydrodynamical schemes available in SWIFT. You can choose +between them at compile-time with this option. + +``--with-riemann-solver=none`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Some hydrodynamical schemes, for example GIZMO, require a Riemann solver. + +``--with-kernel=cubic-spline`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Several kernels are made available for use with the hydrodynamical schemes. +Choose between them with this compile-time flag. + +``--with-hydro-dimension=3`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Run problems in 1, 2, and 3 (default) dimensions. + +``--with-equation-of-state=ideal-gas`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Several equations of state are made available with this flag. Also consider +``--with-adiabatic-index``. + +``--with-cooling=none`` +~~~~~~~~~~~~~~~~~~~~~~~ +Several cooling implementations (including GRACKLE) are available. + +``--with-ext-potential=none`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Many external potentials are available for use with SWIFT. You can choose +between them at compile time. Some examples include a central potential, a +softened central potential, and a sinusoidal potential. You will need to +configure, for example, the mass in your parameterfile at runtime. + + diff --git a/doc/RTD/source/GettingStarted/index.rst b/doc/RTD/source/GettingStarted/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..ffc1ce036d79851cca30f4073f37cfdbb0228c0d --- /dev/null +++ b/doc/RTD/source/GettingStarted/index.rst @@ -0,0 +1,23 @@ +.. Getting Started + Josh Borrow, 4th April 2018 + +Getting Started +=============== + +So, you want to use SWIFT? Below you should find all of the information you need +to get up and running with some examples, and then build your own initial conditions +for running. + +Also, you might want to consult our onboarding guide (available at +http://www.swiftsim.com/onboarding.pdf) if you would like something to print out +and keep on your desk. + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + compiling_code + running_example + runtime_options + configuration_options + what_about_mpi diff --git a/doc/RTD/source/GettingStarted/running_example.rst b/doc/RTD/source/GettingStarted/running_example.rst new file mode 100644 index 0000000000000000000000000000000000000000..854e74cf830d58e51cf866d59a93ede6dceb57b6 --- /dev/null +++ b/doc/RTD/source/GettingStarted/running_example.rst @@ -0,0 +1,37 @@ +.. Running an Example + Josh Borrow, 5th April 2018 + +Running an Example +================== + +Now that you have built the code, you will want to run an example! To do that, +you need to follow the following instructions (requires ``python2`` or +``python3`` with the ``h5py`` and other standard scientific packages, as well +as ``wget`` for grabbing the glass). + +.. code-block:: bash + + cd examples/SodShock_3D + ./getGlass.sh + python makeIC.py + ../swift -s -t 4 sodShock.yml + python plotSolution.py 1 + + +This will run the 'SodShock' in 3D and produce a nice plot that shows you +how the density has varied. Try running with GIZMO (this will take +_significantly_ longer than with SPH) to see the difference. For that, you +will need to reconfigure with the following options: + +.. code-block:: bash + + ./configure \ + --with-hydro=gizmo \ + --with-riemann-solver=hllc + + +To see the results that you should get, you should check out our developer +wiki at https://gitlab.cosma.dur.ac.uk/swift/swiftsim/wikis/Sod_3D. + +If you don't get these results, please contact us on our GitHub page at +https://github.com/SWIFTSIM/swiftsim/issues. diff --git a/doc/RTD/source/GettingStarted/runtime_options.rst b/doc/RTD/source/GettingStarted/runtime_options.rst new file mode 100644 index 0000000000000000000000000000000000000000..e9f83399f50648ddf4c66919576b4ecc9aa8cf8f --- /dev/null +++ b/doc/RTD/source/GettingStarted/runtime_options.rst @@ -0,0 +1,41 @@ +.. Runtime Options + Josh Borrow, 5th April 2018 + +Runtime Options +=============== + +SWIFT requires a number of runtime options to run and get any sensible output. +For instance, just running the ``swift`` binary will not use any SPH or gravity; +the particles will just sit still! + +Below is a list of the runtime options and when they should be used. The same list +can be found by typing ``./swift -h``. + ++ ``-a``: Pin runners using processor affinity. ++ ``-c``: Run with cosmological time integration. ++ ``-C``: Run with cooling. ++ ``-d``: Dry run. Read the parameter file, allocate memory but does not read + the particles from ICs and exit before the start of time integration. Allows + user to check validity of parameter and IC files as well as memory limits. ++ ``-D``: Always drift all particles even the ones far from active particles. + This emulates Gadget-[23] and GIZMO's default behaviours. ++ ``-e``: Enable floating-point exceptions (debugging mode). ++ ``-f``: {int} Overwrite the CPU frequency (Hz) to be used for time measurements. ++ ``-g``: Run with an external gravitational potential. ++ ``-G``: Run with self-gravity. ++ ``-M``: Reconstruct the multipoles every time-step. ++ ``-n``: {int} Execute a fixed number of time steps. When unset use the + time_end parameter to stop. ++ ``-P``: {sec:par:val} Set parameter value and overwrites values read from the + parameters file. Can be used more than once. ++ ``-s``: Run with hydrodynamics. ++ ``-S``: Run with stars. ++ ``-t``: {int} The number of threads to use on each MPI rank. Defaults to 1 if + not specified. ++ ``-T``: Print timers every time-step. ++ ``-v``: [12] Increase the level of verbosity: 1, MPI-rank 0 writes, 2, All + MPI-ranks write. ++ ``-y``: {int} Time-step frequency at which task graphs are dumped. ++ ``-Y``: {int} Time-step frequency at which threadpool tasks are dumped. ++ ``-h``: Print a help message and exit. + diff --git a/doc/RTD/source/GettingStarted/what_about_mpi.rst b/doc/RTD/source/GettingStarted/what_about_mpi.rst new file mode 100644 index 0000000000000000000000000000000000000000..098fd35d80d71866cb86d2342d5d54710cd73a82 --- /dev/null +++ b/doc/RTD/source/GettingStarted/what_about_mpi.rst @@ -0,0 +1,12 @@ +.. What about MPI? Running SWIFT on more than one node + Josh Borrow, 5th April 2018 + +What about MPI? Running SWIFT on more than one node +=================================================== + +After compilation, you will be left with two binaries. One is called ``swift``, +and the other ``swift_mpi``. Current wisdom is to run ``swift`` if you are only +using one node (i.e. without any interconnect), and one MPI rank per NUMA +region using ``swift_mpi`` for anything larger. You will need some GADGET-2 +HDF5 initial conditions to run SWIFT, as well as a compatible yaml +parameterfile. diff --git a/doc/RTD/source/HydroSchemes/adding_your_own.rst b/doc/RTD/source/HydroSchemes/adding_your_own.rst new file mode 100644 index 0000000000000000000000000000000000000000..2d7e640f66153a17e19f4e4c456cd37eed19a95a --- /dev/null +++ b/doc/RTD/source/HydroSchemes/adding_your_own.rst @@ -0,0 +1,119 @@ +.. Adding Hydro Schemes + Josh Borrow, 5th April 2018 + + +Adding Hydro Schemes +==================== + +.. toctree:: + :maxdepth: 2 + :hidden: + :caption: Contents: + +SWIFT is engineered to enable you to add your own hydrodynamics schemes easily. +We enable this through the use of header files to encapsulate each scheme. + +Note that it's unlikely you will ever have to consider paralellism or 'loops over +neighbours' for SWIFT; all of this is handled by the tasking system. All we ask +for is the interaction functions that tell us how to a) compute the density +and b) compute forces. + + +Getting Started +--------------- + +The hydro schemes are stored in ``src/hydro``. You will need to create a folder +with a sensible name that you are going to store your scheme-specific information +in. Then, you will need to create the following files: + ++ ``hydro.h``, which includes functions that are applied to particles at the end + of the density loop and beginning of the force loop, along with helper functions ++ ``hydro_debug.h``, which includes a quick function that prints out your particle + properties for debugging purposes ++ ``hydro_iact.h`` that includes the interaction functions ++ ``hydro_io.h`` which includes the information on what should be read from the + initial conditions file, as well as written to the output files ++ ``hydro_part.h`` which includes your particle definition. SWIFT uses an array-of + -structures scheme. + + +``hydro.h`` +----------- + +As previously noted, ``hydro.h`` includes the helper functions for your scheme. You +will need to 'fill out' the following: + ++ ``hydro_get_comoving_internal_energy(p)`` which returns the comoving internal energy + of your particles (typically this will just be ``p->u``). ++ ``hydro_get_physical_internal_energy(p, cosmo)`` which returns the physical internal + energy. You can use the ``a_factor_internal_energy`` from the ``cosmology`` struct. ++ ``hydro_get_comoving_pressure(p)`` which returns the comoving pressure. ++ ``hydro_get_comoving_entropy(p)`` which returns the comoving entropy. ++ ``hydro_get_physical_entropy(p, cosmo)`` which returns the physical entropy. In our + formalism, usually there is no conversion factor here so it is the same as the + comoving version. ++ ``hydro_get_comoving_soundspeed(p)`` which returns the comoving sound speed. ++ ``hydro_get_physical_soundspeed(p, cosmo)`` which returns the physical sound + speed. You can use the ``a_factor_sound_speed``. ++ ``hydro_get_comoving_density(p)`` which returns the comoving density. ++ ``hydro_get_physical_density(p, cosmo)`` which returns the physical density. + You can use the ``a3_inv`` member of the ``cosmology`` struct. ++ ``hydro_get_mass(p)`` returns the mass of particle ``p``. ++ ``hydro_get_drifted_velocities(p, xp, dt_kick_hydro, dt_kick_grav, v[3])`` gets + the drifted velocities; this is just ``a_hydro * dt_kick_hydro`` + ``a_grav * + dt_kick_grav`` in most implementations. ++ ``hydro_get_energy_dt(p)`` returns the time derivative of the (comoving) internal + energy of the particle. ++ ``hydro_set_energy_dt(p)`` sets the time derivative of the (comoving) internal + energy of the particle. ++ ``hydro_compute_timestep(p, xp, hydro_props, cosmo)`` returns the timestep for + the hydrodynamics particles. ++ ``hydro_timestep_extra(p, dt)`` does some extra hydro operations once the + physical timestel for the particle is known. ++ ``hydro_init_part(p, hydro_space)`` initialises the particle in preparation for + the density calculation. This essentially sets properties, such as the density, + to zero. ++ ``hydro_end_density(p, cosmo)`` performs operations directly after the density + loop on each particle. Note that you will have to add a particle's self-contribution + at this stage as particles are never 'interacted' with themselves. ++ ``hydro_part_has_no_neighbours(p, xp, cosmo)`` resets properties to a sensible + value if a particle is found to have no neighbours. ++ ``hydro_prepare_force(p, xp, cosmo)`` is computed for each particle before the + force loop. You can use this to pre-compute particle properties that are used + in the force loop, but only depend on the particle itself. ++ ``hydro_reset_acceleration(p)`` resets the acceleration variables of the particles + to zero in preparation for the force loop. ++ ``hydro_predict_extra(p, xp, dt_drift, dt_therm)`` predicts extra particle properties + when drifting, such as the smoothing length. ++ ``hydro_end_force(p, cosmo)`` is called after the force loop for each particle and + can be used to e.g. include overall factors of the smoothing length. ++ ``hydro_kick_extra(p, xp, dt_therm)`` kicks extra variables. ++ ``hydro_convert_quantities(p, xp)`` converts quantities at the start of a run (e.g. + internal energy to entropy). ++ ``hydro_first_init_part(p, xp)`` is called for every particle at the start of a run + and is used to initialise variables. + + +``hydro_debug.h`` +----------------- + +TBD + + +``hydro_iact.h`` +---------------- + +TBD + + +``hydro_io.h`` +-------------- + +TBD + + +``hydro_part.h`` +---------------- + +TBD + diff --git a/doc/RTD/source/HydroSchemes/gizmo.rst b/doc/RTD/source/HydroSchemes/gizmo.rst new file mode 100644 index 0000000000000000000000000000000000000000..de6db297f8661404330493a45dc9f5771138e7ae --- /dev/null +++ b/doc/RTD/source/HydroSchemes/gizmo.rst @@ -0,0 +1,20 @@ +.. GIZMO (MFV) + Josh Borrow, 5th April 2018 + +GIZMO-Like Scheme +================= + +.. toctree:: + :maxdepth: 2 + :hidden: + :caption: Contents: + + +There is a meshless finite volume (MFV) GIZMO-like scheme implemented in SWIFT +(see Hopkins 2015 for more information). You will need a Riemann solver to run +this, and configure as follows: + +.. code-block:: bash + + ./configure --with-hydro="gizmo" --with-riemann-solver="hllc" --disable-vec + diff --git a/doc/RTD/source/HydroSchemes/hopkins_sph.rst b/doc/RTD/source/HydroSchemes/hopkins_sph.rst new file mode 100644 index 0000000000000000000000000000000000000000..49add2b2b19ca7d1d52058f2a466881dfa0f1b7a --- /dev/null +++ b/doc/RTD/source/HydroSchemes/hopkins_sph.rst @@ -0,0 +1,24 @@ +.. 'Hopkins'-SPH + Josh Borrow 5th April 2018 + +Pressure-Entropy SPH +==================== + +.. toctree:: + :maxdepth: 2 + :hidden: + :caption: Contents: + +A pressure-entropy SPH scheme is available in SWIFT, inspired by Hopkins 2013. +This includes a Monaghan AV scheme and a Balsara switch. + + +.. code-block:: bash + + ./configure --with-hydro="hopkins" + + +Pressure-Energy SPH +=================== + +A pressure-energy SPH scheme is currently being implemented in SWIFT. diff --git a/doc/RTD/source/HydroSchemes/index.rst b/doc/RTD/source/HydroSchemes/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..cd6c169245e83440a1258d216991763488586c0c --- /dev/null +++ b/doc/RTD/source/HydroSchemes/index.rst @@ -0,0 +1,21 @@ +.. Hydrodynamics Schemes + Josh Borrow 4th April 2018 + +.. _hydro: + +Hydrodynamics Schemes +===================== + +This section of the documentation includes information on the hydrodynamics +schemes available in SWIFT, as well as how to implement your own. + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + traditional_sph + minimal_sph + hopkins_sph + gizmo + adding_your_own + diff --git a/doc/RTD/source/HydroSchemes/minimal_sph.rst b/doc/RTD/source/HydroSchemes/minimal_sph.rst new file mode 100644 index 0000000000000000000000000000000000000000..0440f6c7afade727d57131143934933d285bc8b5 --- /dev/null +++ b/doc/RTD/source/HydroSchemes/minimal_sph.rst @@ -0,0 +1,15 @@ +.. Minimal SPH + Josh Borrow 4th April 2018 + +Minimal (Density-Energy) SPH +============================ + +.. toctree:: + :maxdepth: 2 + :hidden: + :caption: Contents: + +This scheme is a textbook implementation of Density-Energy SPH, and can be used +as a pedagogical example. It also implements a Monaghan AV scheme, like the +GADGET-2 scheme. It uses very similar equations, but differs in implementation +details. diff --git a/doc/RTD/source/HydroSchemes/traditional_sph.rst b/doc/RTD/source/HydroSchemes/traditional_sph.rst new file mode 100644 index 0000000000000000000000000000000000000000..c69ea5f60644119b8590414ffe00a75246de49a6 --- /dev/null +++ b/doc/RTD/source/HydroSchemes/traditional_sph.rst @@ -0,0 +1,17 @@ +.. Traditional SPH (GADGET-2) + Josh Borrow 4th April 2018 + +Traditional (Density-Entropy) SPH +================================= + +.. toctree:: + :maxdepth: 2 + :hidden: + :caption: Contents: + +Traditional, GADGET-2-like, Density-Entropy SPH is available in SWIFT with +a Monaghan artificial viscosity scheme and Balsara switch. + +To use this hydro scheme, you need no extra configuration options -- it is the +default! + diff --git a/doc/RTD/source/InitialConditions/index.rst b/doc/RTD/source/InitialConditions/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..e9684ac4ffde5886f7a110de2cd7fb0fbb572a5e --- /dev/null +++ b/doc/RTD/source/InitialConditions/index.rst @@ -0,0 +1,176 @@ +.. Initial Conditions + Josh Borrow, 5th April 2018 + +Initial Conditions +================== + +To run anything more than examples from our suite, you will need to be able to +produce your own initial conditions for SWIFT. We use the same initial conditions +as the popular GADGET-2 code, which uses the HDF5 file format. + +As the original documentation for the GADGET-2 initial conditions format is +quite sparse, we lay out here all of the necessary components. If you are generating +your initial conditions from python, we recommend you use the h5py package. We +provide a writing wrapper for this for our initial conditions in +``examples/KeplerianRing/write_gadget.py``. + +You can find out more about the HDF5 format on their webpages, here: +https://support.hdfgroup.org/HDF5/doc/H5.intro.html + + +Structure of the File +--------------------- + +There are several groups that contain 'auxilliary' information, such as ``Header``. +Particle data is placed in groups that signify particle type. + ++---------------------+------------------------+ +| Group Name | Physical Particle Type | ++=====================+========================+ +| ``PartType0`` | Gas | ++---------------------+------------------------+ +| ``PartType1`` | Dark Matter | ++---------------------+------------------------+ +| ``PartType2`` | Ignored | ++---------------------+------------------------+ +| ``PartType3`` | Ignored | ++---------------------+------------------------+ +| ``PartType4`` | Stars | ++---------------------+------------------------+ +| ``PartType5`` | Black Holes | ++---------------------+------------------------+ + +Currently, not all of these particle types are included in SWIFT. Note that the +only particles that have hydrodynamical forces calculated between them are those +in ``PartType0``. + + +Necessary Components +-------------------- + +There are several necessary components (in particular header information) in a +SWIFT initial conditions file. Again, we recommend that you use the ``write_gadget`` +script. + +Header +~~~~~~ + +In ``Header``, the following attributes are required: + ++ ``BoxSize``, a floating point number or N-dimensional (usually 3) array + that describes the size of the box. ++ ``Flag_Entropy_ICs``, a historical value that tells the code if you have + included entropy or internal energy values in your intial conditions files. + Acceptable values are 0 or 1. ++ ``NumPart_Total``, a length 6 array of integers that tells the code how many + particles are of each type are in the initial conditions file. ++ ``NumPart_Total_HighWord``, a historical length-6 array that tells the code + the number of high word particles in the initial conditions there are. If + you are unsure, just set this to ``[0, 0, 0, 0, 0, 0]``. This does have to be + present, but unlike GADGET-2, this can be a set of 0s unless you have more than + 2^31 particles. ++ ``NumFilesPerSnapshot``, again a historical integer value that tells the code + how many files there are per snapshot. You will probably want to set this to 1 + and simply have a single HDF5 file for your initial conditions; SWIFT can + leverage parallel-HDF5 to read from this single file in parallel. ++ ``NumPart_ThisFile``, a length 6 array of integers describing the number of + particles in this file. If you have followed the above advice, this will be + exactly the same as the ``NumPart_Total`` array. + +You may want to include the following for backwards-compatibility with many +GADGET-2 based analysis programs: + ++ ``MassTable``, an array of length 6 which gives the masses of each particle + type. SWIFT ignores this and uses the individual particle masses, but some + programs will crash if it is not included. ++ ``Time``, the internal code time of the start (set this to 0). + +RuntimePars +~~~~~~~~~~~ + +In ``RuntimePars``, the following attributes are required: + ++ ``PeriodicBoundaryConditionsOn``, a flag to tell the code whether or not you + have periodic boundaries switched on. Again, this is historical; it should be + set to 1 (default) if you have the code running in periodic mode, or 0 otherwise. + + +Units +~~~~~ + +In ``Units``, you will need to specify what units your initial conditions are +in. If these are not present, the code assumes that you are using the same +units for your initial conditions as are in your parameterfile, but it is best +to include them to be on the safe side. You will need: + ++ ``Unit current in cgs (U_I)`` ++ ``Unit length in cgs (U_L)`` ++ ``Unit mass in cgs (U_M)`` ++ ``Unit temperature in cgs (U_T)`` ++ ``Unit time in cgs (U_t)`` + +These are all floating point numbers. + + +Particle Data +~~~~~~~~~~~~~ + +Now for the interesting part! You can include particle data groups for each +individual particle type (e.g. ``PartType0``) that have the following _datasets_: + ++ ``Coordinates``, an array of shape (N, 3) where N is the number of particles + of that type, that are the cartesian co-ordinates of the particles. Co-ordinates + must be positive, but will be wrapped on reading to be within the periodic box. ++ ``Velocities``, an array of shape (N, 3) that is the cartesian velocities + of the particles. ++ ``ParticleIDs``, an array of length N that are unique identifying numbers for + each particle. Note that these have to be unique to a particle, and cannot be + the same even between particle types. Please ensure that your IDs are positive + integer numbers. ++ ``Masses``, an array of length N that gives the masses of the particles. + +For ``PartType0`` (i.e. particles that interact through hydrodynamics), you will +need the following auxilliary items: + ++ ``InternalEnergy``, an array of length N that gives the internal energies of + the particles. For PressureEntropy, you can specify ``Entropy`` instead. ++ ``SmoothingLength``, the smoothing lenghts of the particles. These will be + tidied up a bit, but it is best if you provide accurate numbers. + + +Summary +~~~~~~~ + +You should have an HDF5 file with the following structure: + +.. code-block:: bash + + Header/ + BoxSize=[x, y, z] + Flag_Entropy_ICs=1 + NumPart_Total=[0, 1, 2, 3, 4, 5] + NumPart_Total_HighWord=[0, 0, 0, 0, 0, 0] + NumFilesPerSnapshot=1 + NumPart_ThisFile=[0, 1, 2, 3, 4, 5] + RuntimePars/ + PeriodicBoundariesOn=1 + Units/ + Unit current in cgs (U_I)=1.0 + Unit length in cgs (U_L)=1.0 + Unit mass in cgs (U_M)=1.0 + Unit temperature in cgs (U_T)=1.0 + Unit time in cgs (U_t)=1.0 + PartType0/ + Coordinates=[[x, y, z]] + Velocities=[[vx, vy, vz]] + ParticleIDs=[...] + Masses=[...] + InternalEnergy=[...] + SmoothingLength=[...] + PartType1/ + Coordinates=[[x, y, z]] + Velocities=[[vx, vy, vz]] + ParticleIDs=[...] + Masses=[...] + + diff --git a/doc/RTD/source/NewOption/index.rst b/doc/RTD/source/NewOption/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..a7445524017fefd99d76c80a4a1ecc646874bd7a --- /dev/null +++ b/doc/RTD/source/NewOption/index.rst @@ -0,0 +1,36 @@ +.. Equation of State + Loic Hausammann, 7th April 2018 + +.. _new_option: + +General information for adding new schemes +========================================== + +The following steps are required for any new options (such as new +:ref:`hydro`, :ref:`chemistry`, :ref:`cooling`, +:ref:`equation_of_state`, :ref:`stars` or :ref:`gravity`) + +In order to add a new scheme, you will need to: + +1. Create a new subdirectory inside the option directory (e.g. + ``src/equation_of_state`` or ``src/hydro``) with an explicit name. + +2. Create the required new files (depending on your option, you will need + different files). Copy the structure of the most simple option (e.g. + ``src/hydro/Gadget2``, ``src/gravity/Default``, ``src/stars/Default``, + ``src/cooling/none``, ``src/chemistry/none`` or + ``src/equation_of_state/ideal_gas``) + +3. Add the right includes in the option file (e.g. ``src/hydro.h``, + ``src/gravity.h``, ``src/stars.h``, ``src/cooling.h``, ``src/chemistry.h`` + or ``src/equation_of_state.h``) and the corresponding io file if present. + +4. Add the new option in ``configure.ac``. This file generates the + ``configure`` script and you just need to add a new option under the right + ``case``. + +5. Add your files in ``src/Makefile.am``. In order to generate the Makefiles + during the configuration step, a list of files is required. In + ``nobase_noinst_HEADERS``, add your new header files. + +6. Update the documentation. Add your equations/documentation to ``doc/RTD``. diff --git a/doc/RTD/source/conf.py b/doc/RTD/source/conf.py new file mode 100644 index 0000000000000000000000000000000000000000..031687ea5228252e2d2e44ec0bd6f53b1b64d732 --- /dev/null +++ b/doc/RTD/source/conf.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/stable/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +# -- Project information ----------------------------------------------------- + +project = 'SWIFT: SPH WIth Fine-grained inter-dependent Tasking' +copyright = '2018, SWIFT Collaboration' +author = 'SWIFT Team' + +# The short X.Y version +version = '0.7' +# The full version, including alpha/beta/rc tags +release = '0.7.0' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.todo', + 'sphinx.ext.mathjax', + 'sphinx.ext.githubpages', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['.templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path . +exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['.static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'SWIFTSPHWIthFine-grainedinter-dependentTaskingdoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'SWIFTSPHWIthFine-grainedinter-dependentTasking.tex', 'SWIFT: SPH WIth Fine-grained inter-dependent Tasking Documentation', + 'Josh Borrow', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'swiftsphwithfine-grainedinter-dependenttasking', 'SWIFT: SPH WIth Fine-grained inter-dependent Tasking Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'SWIFTSPHWIthFine-grainedinter-dependentTasking', 'SWIFT: SPH WIth Fine-grained inter-dependent Tasking Documentation', + author, 'SWIFTSPHWIthFine-grainedinter-dependentTasking', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True diff --git a/doc/RTD/source/index.rst b/doc/RTD/source/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..888945a5c0101bb6f59b574a30f1f736ad134079 --- /dev/null +++ b/doc/RTD/source/index.rst @@ -0,0 +1,22 @@ +.. Welcome! + sphinx-quickstart on Wed Apr 4 15:03:50 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to SWIFT: SPH WIth Fine-grained inter-dependent Tasking's documentation! +================================================================================ + +Want to get started using SWIFT? Check out the on-boarding guide available +here. SWIFT can be used as a drop-in replacement for Gadget-2 and initial +conditions in hdf5 format for Gadget can directly be read by SWIFT. The only +difference is the parameter file that will need to be adapted for SWIFT. + +.. toctree:: + :maxdepth: 2 + + GettingStarted/index + InitialConditions/index + HydroSchemes/index + Cooling/index + EquationOfState/index + NewOption/index