|
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.
|