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