fisher_reaction_diffusion.xmds

Script source:
fisher_reaction_diffusion.xmds.gz

<?xml version="1.0"?>
<simulation>
  
<!-- $Id: fisher_reaction_diffusion_body.part 999 2004-08-03 05:42:47Z cochrane $ -->

<!--  Copyright (C) 2000-2004                                           -->
<!--                                                                    -->
<!--  Code contributed by Greg Collecutt, Joseph Hope and Paul Cochrane -->
<!--                                                                    -->
<!--  This file is part of xmds.                                        -->
<!--                                                                    -->
<!--  This program is free software; you can redistribute it and/or     -->
<!--  modify it under the terms of the GNU General Public License       -->
<!--  as published by the Free Software Foundation; either version 2    -->
<!--  of the License, or (at your option) any later version.            -->
<!--                                                                    -->
<!--  This program is distributed in the hope that it will be useful,   -->
<!--  but WITHOUT ANY WARRANTY; without even the implied warranty of    -->
<!--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     -->
<!--  GNU General Public License for more details.                      -->
<!--                                                                    -->
<!--  You should have received a copy of the GNU General Public License -->
<!--  along with this program; if not, write to the Free Software       -->
<!--  Foundation, Inc., 59 Temple Place - Suite 330, Boston,            -->
<!--  MA  02111-1307, USA.                                              -->

  <name> fisher_reaction_diffusion </name>      <!-- the name of the simulation -->
  
  <author> Paul Cochrane</author>  <!-- the author of the simulation -->
  <description>
    <!-- a description of what the simulation is supposed to do -->
    Example simulation of the reaction-diffusion equation of Fisher (1937).
    This equation can be interpreted as describing the frequency of a
    focal allele as a function of one-dimensional space in a biallelic
    diploid population of constant size.
    This simulation is adapted from equation 1 of "The diffusive
    spread of alleles in heterogeneous populations", G T Skalski,
    Evolution, 58 (3), 470-478 (2004).  Thanks to John Novembre at
    UC Berkeley for pointing out this example.
  </description>
  
  <!-- Global system parameters and functionality -->
  <prop_dim> t </prop_dim>    <!-- name of main propagation dim -->
  
  <error_check> yes </error_check>   <!-- defaults to yes -->
  <use_wisdom> yes </use_wisdom>     <!-- defaults to no -->
  <benchmark> yes </benchmark>       <!-- defaults to no -->
  <use_prefs> yes </use_prefs>       <!-- defaults to yes -->
  
  <!-- Global variables for the simulation -->
  <globals>
  <![CDATA[
    // these numbers are just guesses, they are not related to the
    // paper the equations are adapted from.
    const double sigma0 = 0.01;   // variance of population position
    const double mu0 = 0.0;      // mean position of population
    const double D = 0.01;        // diffusion coefficient
    const double m = 0.1;        // selection coefficient
  ]]>
  </globals>
  
  <!-- Field to be integrated over -->
  <field>
    <name> main </name>
    <dimensions> x </dimensions> <!-- transverse dims -->
    <lattice> 1024 </lattice>       <!-- no. of points for each dim -->
    <domains> (-1,1) </domains>   <!-- domain of each dimension -->
    <samples> 1 </samples>       <!-- sample 1st point of dim? -->
    
    <vector>
      <name> main </name>
      <type> complex </type>           <!-- data type of vector -->
      <components> P </components>       <!-- names of components -->
      <fourier_space> no </fourier_space> <!-- defined in k-space? -->
      <![CDATA[
        // be simple and use a Gaussian initial condition
        P = rcomplex(exp(-(x - mu0)*(x - mu0)/(2.0*sigma0*sigma0))/(sigma0*sqrt(2.0*M_PI)),0.0);
      ]]>
    </vector>
  </field>
  
  <!-- The sequence of integrations to perform -->
  <sequence>
    <integrate>
      <algorithm> RK4IP </algorithm> <!-- RK4EX, RK4IP, SIEX, SIIP -->
      <interval> 1 </interval>   <!-- how far in main dim? -->
      <lattice> 1000 </lattice>     <!-- no. points in main dim -->
      <samples> 100 </samples> <!-- no. pts in output moment group of main dim -->
      
      <k_operators>
        <constant> yes </constant>         <!-- yes/no -->
        <operator_names> L </operator_names>
        <![CDATA[
          L = -D*kx*kx;
        ]]>
      </k_operators>

      <![CDATA[
        dP_dt = L[P] + m*P*(1.0 - P);
      ]]>
    </integrate>
  </sequence>
  
  <!-- The output to generate -->
  <output format="ascii">
    <group>
      <sampling>
        <fourier_space> no </fourier_space> <!-- sample in k-space? -->
        <lattice> 1024 </lattice>           <!-- no. points to sample -->
        <moments> POut </moments>           <!-- names of moments -->
        <![CDATA[
          POut = P;
        ]]>
      </sampling>
    </group>
  </output>
  
</simulation>

Generated by GNU enscript 1.6.3.



Introduction | Examples | Downloads | Documentation | Archives | Script Repository | FAQ | News | Links | Contacts