<?xml version="1.0" encoding="UTF-8"?>
<simulation xmds-version="2">
  <name>lorenz</name>
  
  <!-- While not strictly necessary, the following two tags are handy. -->
  <author>Graham Dennis</author>
  <description>
    The Lorenz Attractor, an example of chaos.
  </description>
  
  <!-- 
  This element defines some constants.  It can be used for other 
  features as well, but we will go into that in more detail later.
  -->
  <features>
    <globals>
        <![CDATA[
        real sigma = 10.0;
        real b = 8.0/3.0;
        real r = 28.0;
        ]]>
     </globals>
   </features>
   
  <!-- 
  This part defines all of the dimensions used in the problem,
  in this case, only the dimension of 'time' is needed.
  -->
  <geometry>
    <propagation_dimension> t </propagation_dimension>
  </geometry>
  
  <!-- A 'vector' describes the variables that we will be evolving. -->
  <vector name="position" type="real">
    <components>
      x y z
    </components>
    <initialisation>
      <![CDATA[
      x = y = z = 1.0;
      ]]>
    </initialisation>
  </vector>
  
  <sequence>
    <!--
    Here we define what differential equations need to be solved
    and what algorithm we want to use.
    -->
    <integrate algorithm="ARK89" interval="20.0" tolerance="1e-7">
      <samples>5000</samples>
      <operators>
        <integration_vectors>position</integration_vectors>
        <![CDATA[
        dx_dt = sigma*(y-x);
        dy_dt = r*x - y - x*z;
        dz_dt = x*y - b*z;
        ]]>
      </operators>
    </integrate>
  </sequence>
  
  <!-- This part defines what data will be saved in the output file -->
  <output>
    <sampling_group initial_sample="yes">
      <moments>xR yR zR</moments>
      <dependencies>position</dependencies>
      <![CDATA[
        xR = x;
        yR = y;
        zR = z;
      ]]>
    </sampling_group>
  </output>
</simulation>
