pendulum.xmds

Script source:
pendulum.xmds.gz

<?xml version="1.0"?>
<!-- Example simulation: finite amplitude pendulum -->

<!-- $Id: pendulum_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.                                              -->

<!-- Adapted from the exercise in "A first course in computational -->
<!-- physics" by Paul L. DeVries, pg 234-->
<!-- Try the simulation for different values of E, namely: -->
<!-- E = 0.25, 0.5, 0.75, 1.0, 1.25, and 1.5 -->
<!-- Note: this simulation can be run as a shell/Perl/Python script by -->
<!-- changing the value of E using the command line argument -->

<simulation>

  <name>pendulum</name>

  <author>Paul Cochrane</author>
  <description>
    Example simulation of a finite amplitude pendulum.  Adapted fro
    the exercise in "A first course in computational physics" by Paul
    L. DeVries, page 234.
  </description>

  <!-- Global system parameters and functionality -->
  <prop_dim>t</prop_dim>
  <stochastic>no</stochastic>

  <!-- Global variables for the simulation -->
  <globals>
    <![CDATA[
    const double g = 1.0;    // acceleration due to gravity (scaled!)
    const double m = 0.5;    // mass
    const double l = 1.0;    // length
    ]]>
  </globals>

  <!-- Command line argument -->
  <argv>
    <arg>
      <name>E</name>
      <type>double</type>
      <default_value>0.25</default_value>
    </arg>
  </argv>

  <!-- Field to be integrated over -->
  <field>
    <samples>1</samples>
    <vector>
      <name>main</name>
      <type>double</type>
      <components>theta thetaDot</components>
      <![CDATA[
        theta = 0.0;
        thetaDot = sqrt(2.0*E/(m*l*l));
      ]]>
    </vector>
  </field>

  <!-- The sequence of integrations to perform -->
  <sequence>
    <integrate>
      <algorithm>RK4EX</algorithm>
      <interval>10.0</interval>
      <lattice>5000</lattice>
      <samples>50</samples>
      <![CDATA[
        dtheta_dt = thetaDot;
        dthetaDot_dt = -g*sin(theta)/l;
      ]]>
    </integrate>
  </sequence>

  <!-- The output to generate -->
  <output format="ascii">
    <group>
      <sampling>
        <moments>t_out tDot_out KE PE</moments>
        <![CDATA[
          t_out = theta;
          tDot_out = thetaDot;
          KE = 0.5*m*l*l*thetaDot*thetaDot;
          PE = m*g*l*(1.0-cos(theta));
        ]]>
      </sampling>
    </group>
  </output>

</simulation>

Generated by GNU enscript 1.6.3.



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