\babel@toc {english}{}
\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}
\contentsline {chapter}{\numberline {2}Installation}{3}{chapter.2}
\contentsline {section}{\numberline {2.1}Overview}{3}{section.2.1}
\contentsline {section}{\numberline {2.2}Linux installation instructions}{3}{section.2.2}
\contentsline {section}{\numberline {2.3}Mac OS X installation}{4}{section.2.3}
\contentsline {section}{\numberline {2.4}Manual installation from source}{4}{section.2.4}
\contentsline {chapter}{\numberline {3}Quickstart Tutorial}{9}{chapter.3}
\contentsline {chapter}{\numberline {4}Worked Examples}{15}{chapter.4}
\contentsline {section}{\numberline {4.1}The nonlinear Schr\IeC {\"o}dinger equation}{15}{section.4.1}
\contentsline {section}{\numberline {4.2}Kubo Oscillator}{19}{section.4.2}
\contentsline {section}{\numberline {4.3}Fibre Noise}{22}{section.4.3}
\contentsline {section}{\numberline {4.4}Integer Dimensions}{28}{section.4.4}
\contentsline {section}{\numberline {4.5}Wigner Function}{29}{section.4.5}
\contentsline {section}{\numberline {4.6}Finding the Ground State of a BEC (continuous renormalisation)}{33}{section.4.6}
\contentsline {section}{\numberline {4.7}Finding the Ground State of a BEC again}{37}{section.4.7}
\contentsline {section}{\numberline {4.8}Multi-component Schr\IeC {\"o}dinger equation}{42}{section.4.8}
\contentsline {chapter}{\numberline {5}Reference section}{47}{chapter.5}
\contentsline {section}{\numberline {5.1}Configuration, installation and runtime options}{47}{section.5.1}
\contentsline {section}{\numberline {5.2}Useful XML Syntax}{48}{section.5.2}
\contentsline {section}{\numberline {5.3}XMDS2 XML Schema}{48}{section.5.3}
\contentsline {section}{\numberline {5.4}XMDS2 script elements}{51}{section.5.4}
\contentsline {subsection}{\numberline {5.4.1}Simulation element}{51}{subsection.5.4.1}
\contentsline {subsection}{\numberline {5.4.2}Name element}{52}{subsection.5.4.2}
\contentsline {subsection}{\numberline {5.4.3}Author element}{52}{subsection.5.4.3}
\contentsline {subsection}{\numberline {5.4.4}Description element}{52}{subsection.5.4.4}
\contentsline {subsection}{\numberline {5.4.5}Features Elements}{52}{subsection.5.4.5}
\contentsline {subsubsection}{Arguments Element}{53}{subsubsection*.5}
\contentsline {paragraph}{Argument element}{54}{paragraph*.6}
\contentsline {subsubsection}{Auto\_vectorise element}{54}{subsubsection*.7}
\contentsline {subsubsection}{Benchmark}{54}{subsubsection*.8}
\contentsline {subsubsection}{Bing}{54}{subsubsection*.9}
\contentsline {subsubsection}{C Flags}{54}{subsubsection*.10}
\contentsline {subsubsection}{Chunked Output}{55}{subsubsection*.11}
\contentsline {subsubsection}{Diagnostics}{55}{subsubsection*.12}
\contentsline {subsubsection}{Error Check}{55}{subsubsection*.13}
\contentsline {subsubsection}{Halt\_Non\_Finite}{56}{subsubsection*.14}
\contentsline {subsubsection}{fftw element}{56}{subsubsection*.15}
\contentsline {subsubsection}{Globals}{56}{subsubsection*.16}
\contentsline {subsubsection}{OpenMP}{56}{subsubsection*.17}
\contentsline {subsubsection}{Precision}{57}{subsubsection*.18}
\contentsline {subsubsection}{Validation}{57}{subsubsection*.19}
\contentsline {subsection}{\numberline {5.4.6}Driver Element}{58}{subsection.5.4.6}
\contentsline {subsection}{\numberline {5.4.7}Geometry Element}{59}{subsection.5.4.7}
\contentsline {subsubsection}{The \IeC {\textquotedblleft }dft\IeC {\textquotedblright } transform}{60}{subsubsection*.24}
\contentsline {subsubsection}{The \IeC {\textquotedblleft }dct\IeC {\textquotedblright } transform}{61}{subsubsection*.25}
\contentsline {subsubsection}{The \IeC {\textquotedblleft }dst\IeC {\textquotedblright } transform}{61}{subsubsection*.26}
\contentsline {subsubsection}{The \IeC {\textquotedblleft }bessel\IeC {\textquotedblright } and \IeC {\textquotedblleft }bessel-neumann\IeC {\textquotedblright } transforms}{62}{subsubsection*.27}
\contentsline {subsubsection}{The \IeC {\textquotedblleft }spherical-bessel\IeC {\textquotedblright } transform}{63}{subsubsection*.28}
\contentsline {subsubsection}{The \IeC {\textquotedblleft }hermite-gauss\IeC {\textquotedblright } transform}{64}{subsubsection*.29}
\contentsline {subsection}{\numberline {5.4.8}Vector Element}{65}{subsection.5.4.8}
\contentsline {subsubsection}{The dependencies element}{67}{subsubsection*.34}
\contentsline {subsection}{\numberline {5.4.9}Computed Vector Element}{68}{subsection.5.4.9}
\contentsline {subsection}{\numberline {5.4.10}Noise Vector Element}{69}{subsection.5.4.10}
\contentsline {subsubsection}{Uniform noise}{69}{subsubsection*.36}
\contentsline {subsubsection}{Gaussian noise}{70}{subsubsection*.37}
\contentsline {subsubsection}{Wiener noise}{70}{subsubsection*.38}
\contentsline {subsubsection}{Poissonian noise}{71}{subsubsection*.39}
\contentsline {subsubsection}{Jump noise}{71}{subsubsection*.40}
\contentsline {subsection}{\numberline {5.4.11}Sequence Element}{72}{subsection.5.4.11}
\contentsline {subsection}{\numberline {5.4.12}Filter element}{72}{subsection.5.4.12}
\contentsline {subsection}{\numberline {5.4.13}Integrate element}{73}{subsection.5.4.13}
\contentsline {subsubsection}{Operators and operator elements}{74}{subsubsection*.42}
\contentsline {subsubsection}{Algorithms}{76}{subsubsection*.47}
\contentsline {paragraph}{SI and SIC algorithms}{76}{paragraph*.48}
\contentsline {paragraph}{Runge-Kutta algorithms}{76}{paragraph*.49}
\contentsline {paragraph}{Adaptive Runge-Kutta algorithms}{77}{paragraph*.50}
\contentsline {paragraph}{Richardson Extrapolation Algorithms and the Bulirsch-Stoer Method}{77}{paragraph*.51}
\contentsline {subsubsection}{Filters element}{78}{subsubsection*.52}
\contentsline {subsection}{\numberline {5.4.14}Breakpoint element}{78}{subsection.5.4.14}
\contentsline {subsection}{\numberline {5.4.15}Output element}{79}{subsection.5.4.15}
\contentsline {subsubsection}{Sampling Group Element}{79}{subsubsection*.53}
\contentsline {subsection}{\numberline {5.4.16}XMDS-specific C syntax}{80}{subsection.5.4.16}
\contentsline {section}{\numberline {5.5}Modified Midpoint Method}{80}{section.5.5}
\contentsline {section}{\numberline {5.6}Bulirsch-Stoer Algorithm}{81}{section.5.6}
\contentsline {section}{\numberline {5.7}Error Scaling Behaviour}{83}{section.5.7}
\contentsline {chapter}{\numberline {6}Advanced Topics}{85}{chapter.6}
\contentsline {section}{\numberline {6.1}Importing data}{85}{section.6.1}
\contentsline {section}{\numberline {6.2}Convolutions and Fourier transforms}{88}{section.6.2}
\contentsline {subsection}{\numberline {6.2.1}Example 1}{89}{subsection.6.2.1}
\contentsline {subsection}{\numberline {6.2.2}Example 2}{89}{subsection.6.2.2}
\contentsline {subsection}{\numberline {6.2.3}Example 3}{90}{subsection.6.2.3}
\contentsline {section}{\numberline {6.3}\IeC {\textquoteleft }Loose\IeC {\textquoteright } \sphinxstyleliteralintitle {geometry\_matching\_mode}}{90}{section.6.3}
\contentsline {section}{\numberline {6.4}Dimension aliases}{90}{section.6.4}
\contentsline {chapter}{\numberline {7}Frequently Asked Questions}{93}{chapter.7}
\contentsline {section}{\numberline {7.1}XMDS scripts look complicated! How do I start?}{93}{section.7.1}
\contentsline {section}{\numberline {7.2}Where can I get help?}{93}{section.7.2}
\contentsline {section}{\numberline {7.3}How should I cite XMDS2?}{93}{section.7.3}
\contentsline {section}{\numberline {7.4}I think I found a bug! Where should I report it?}{93}{section.7.4}
\contentsline {section}{\numberline {7.5}How do I put time dependence into my vectors?}{94}{section.7.5}
\contentsline {section}{\numberline {7.6}Can I specify the range of my domain and number of grid points at run-time?}{94}{section.7.6}
\contentsline {section}{\numberline {7.7}When can I use IP operators (and why should I) and when must I use EX operators?}{94}{section.7.7}
\contentsline {section}{\numberline {7.8}Visual Editors}{95}{section.7.8}
\contentsline {chapter}{\numberline {8}Upgrading From XMDS 1.X}{97}{chapter.8}
\contentsline {chapter}{\numberline {9}Optimisation Hints}{99}{chapter.9}
\contentsline {section}{\numberline {9.1}Geometry and transform-based tricks}{99}{section.9.1}
\contentsline {subsection}{\numberline {9.1.1}Simpler simulation geometries}{99}{subsection.9.1.1}
\contentsline {subsection}{\numberline {9.1.2}Tricks for Bessel and Hermite-Gauss transforms}{99}{subsection.9.1.2}
\contentsline {section}{\numberline {9.2}Reduce code complexity}{99}{section.9.2}
\contentsline {subsection}{\numberline {9.2.1}Optimising with the Interaction Picture (IP) operator}{99}{subsection.9.2.1}
\contentsline {subsection}{\numberline {9.2.2}Consider writing the evolution in spectral basis}{100}{subsection.9.2.2}
\contentsline {subsection}{\numberline {9.2.3}Don\IeC {\textquoteright }t recalculate things you don\IeC {\textquoteright }t have to}{101}{subsection.9.2.3}
\contentsline {section}{\numberline {9.3}Compiler and library tricks}{101}{section.9.3}
\contentsline {subsection}{\numberline {9.3.1}Faster compiler}{101}{subsection.9.3.1}
\contentsline {subsection}{\numberline {9.3.2}Faster libraries}{102}{subsection.9.3.2}
\contentsline {subsection}{\numberline {9.3.3}Auto-vectorisation}{102}{subsection.9.3.3}
\contentsline {subsection}{\numberline {9.3.4}OpenMP}{102}{subsection.9.3.4}
\contentsline {subsection}{\numberline {9.3.5}Parallelisation with MPI}{103}{subsection.9.3.5}
\contentsline {section}{\numberline {9.4}Atom-optics-specific hints}{103}{section.9.4}
\contentsline {subsection}{\numberline {9.4.1}Separate out imaginary-time calculation code}{103}{subsection.9.4.1}
\contentsline {subsection}{\numberline {9.4.2}Use an energy or momentum offset}{104}{subsection.9.4.2}
\contentsline {chapter}{\numberline {10}xsil2graphics2}{105}{chapter.10}
\contentsline {chapter}{\numberline {11}Developer Documentation}{107}{chapter.11}
\contentsline {section}{\numberline {11.1}Test scripts}{107}{section.11.1}
\contentsline {subsection}{\numberline {11.1.1}\textless {}testing\textgreater {} element}{107}{subsection.11.1.1}
\contentsline {subsection}{\numberline {11.1.2}\textless {}command\_line\textgreater {} element}{108}{subsection.11.1.2}
\contentsline {subsection}{\numberline {11.1.3}\textless {}arguments\textgreater {} element}{108}{subsection.11.1.3}
\contentsline {subsection}{\numberline {11.1.4}\textless {}input\_xsil\_file\textgreater {} element}{108}{subsection.11.1.4}
\contentsline {subsection}{\numberline {11.1.5}\textless {}xsil\_file\textgreater {} element}{109}{subsection.11.1.5}
\contentsline {subsection}{\numberline {11.1.6}\textless {}moment\_group\textgreater {} element}{109}{subsection.11.1.6}
\contentsline {section}{\numberline {11.2}XMDS Documentation}{109}{section.11.2}
\contentsline {section}{\numberline {11.3}How to update \sphinxstyleliteralintitle {XMDS2} script validator (XML schema)}{112}{section.11.3}
\contentsline {section}{\numberline {11.4}How to introduce a new integrator Stepper into the XMDS2 environment}{115}{section.11.4}
\contentsline {section}{\numberline {11.5}Logical breakdown of XMDS2 Parsing Process}{116}{section.11.5}
\contentsline {subsection}{\numberline {11.5.1}Overall process for parsing XML file in XMDS2}{118}{subsection.11.5.1}
\contentsline {subsection}{\numberline {11.5.2}parser2.py parses XML file (Sub process 3)}{121}{subsection.11.5.2}
\contentsline {subsection}{\numberline {11.5.3}Pass file to XMDS2Parser to parse xmlDocument with parseXMLDocument() (Sub process 3.4)}{124}{subsection.11.5.3}
\contentsline {subsection}{\numberline {11.5.4}Parse Top Level Sequence elements (Sub process 3.4.11)}{125}{subsection.11.5.4}
\contentsline {subsection}{\numberline {11.5.5}Parse Integrate Element (Sub process 3.4.11.2)}{127}{subsection.11.5.5}
\contentsline {section}{\numberline {11.6}Directory layout}{128}{section.11.6}
\contentsline {subsection}{\numberline {11.6.1}XMDS2\IeC {\textquoteright }s code and templates}{128}{subsection.11.6.1}
\contentsline {subsection}{\numberline {11.6.2}Support files}{129}{subsection.11.6.2}
\contentsline {chapter}{\numberline {12}Licensing}{131}{chapter.12}
\contentsline {section}{\numberline {12.1}GNU General Public License}{131}{section.12.1}
\contentsline {section}{\numberline {12.2}GNU Free Documentation License}{135}{section.12.2}
\contentsline {chapter}{\numberline {13}News}{141}{chapter.13}
\contentsline {section}{\numberline {13.1}XMDS 3.0.0 \IeC {\textquotedblleft }Release the Kraken\IeC {\textquotedblright } (May 17, 2019)}{141}{section.13.1}
\contentsline {section}{\numberline {13.2}XMDS 2.2.3 \IeC {\textquotedblleft }It came from the deep\IeC {\textquotedblright } (January 20, 2017)}{141}{section.13.2}
\contentsline {section}{\numberline {13.3}XMDS 2.2.2 \IeC {\textquotedblleft }XMDS2 is a game of two halves\IeC {\textquotedblright } (October 13, 2014)}{141}{section.13.3}
\contentsline {section}{\numberline {13.4}XMDS 2.2.1 \IeC {\textquotedblleft }XMDS2 is a game of two halves\IeC {\textquotedblright } (September 30, 2014)}{142}{section.13.4}
\contentsline {section}{\numberline {13.5}XMDS 2.2.0 \IeC {\textquotedblleft }Out of cheese error\IeC {\textquotedblright } (January 13, 2014)}{142}{section.13.5}
\contentsline {section}{\numberline {13.6}XMDS 2.1.4 \IeC {\textquotedblleft }Well if this isn\IeC {\textquoteright }t nice, I don\IeC {\textquoteright }t know what is\IeC {\textquotedblright } (September 27, 2013)}{142}{section.13.6}
\contentsline {section}{\numberline {13.7}XMDS 2.1.3 \IeC {\textquotedblleft }Happy Mollusc\IeC {\textquotedblright } (June 7, 2013)}{143}{section.13.7}
\contentsline {section}{\numberline {13.8}XMDS 2.1.2 \IeC {\textquotedblleft }Happy Mollusc\IeC {\textquotedblright } (October 15, 2012)}{143}{section.13.8}
\contentsline {section}{\numberline {13.9}XMDS 2.1 \IeC {\textquotedblleft }Happy Mollusc\IeC {\textquotedblright } (June 14, 2012)}{144}{section.13.9}
\contentsline {section}{\numberline {13.10}XMDS 2.0 \IeC {\textquotedblleft }Shiny!\IeC {\textquotedblright } (September 13, 2010)}{144}{section.13.10}
\contentsline {chapter}{Index}{147}{section*.55}
