<Osejs version="3.2">
<Osejs.Description>
<Osejs.Description.Page>
<Type>HTML_EDITOR</Type>
<Name>Intro Page</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<![CDATA[
<html>
  <head>
    
  </head>
  <body>
    This is a simulation of a particle in a box with adjustable hardness 
    walls. The idea here is to think about the behavior of the the particle as 
    it enters the wall regions. The particle starts with starts with an 
    initial velocity. As it enters the wall regions, the model makes use of a 
    decelerating force, not unlike that of a rocket fired in order to 
    decelerate. Here, the decelerating force brings the particle to a stop, it 
    makes turn around, accelerates it, and brings it back to its original but 
    opposite velocity, thus concerving energy. This model is made possible by 
    solving Newton's law in differential form: d<sup>2</sup>x(x)/dt<sup>2</sup>
     =F(x) with boundary conditions such that F(x)= {-a1 if x &gt;= L, or a1 if x 
    &lt;=0), where a1 is a constant and L is the size of the box. The model 
    conserves energy as can be seen, since its kinetic energy (E=(1/2)*m*v<sup>
     2</sup>) remains constant. This is easily seen also by noticing that the 
    particle's speed inside the box is constant as well. The equation is 
    solved by a Runge-Kutta solver using EJS.
  </body>
</html>

]]>

</Content>
</Osejs.Description.Page>
</Osejs.Description>
<Osejs.Model>
<Osejs.Model.FramesPerSecond>25</Osejs.Model.FramesPerSecond>
<Osejs.Model.Autostart>false</Osejs.Model.Autostart>
<Osejs.Model.Variables>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>Var Table</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Variable>
<Name>m1</Name>
<Value><![CDATA[1.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>d1</Name>
<Value><![CDATA[0.2]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>x1</Name>
<Value><![CDATA[5]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>y1</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>vx1</Name>
<Value><![CDATA[0.5]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>t</Name>
<Value><![CDATA[0.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>L</Name>
<Value><![CDATA[10.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name>a1</Name>
<Value><![CDATA[3.0]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name></Name>
<Value><![CDATA[]]></Value>
<Type>double</Type>
<Dimension></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>

</Content>
</Osejs.Model.Variables.Page>
</Osejs.Model.Variables>
<Osejs.Model.Initialization>
</Osejs.Model.Initialization>
<Osejs.Model.Evolution>
<Osejs.Model.Evolution.Page>
<Type>ODE_EDITOR</Type>
<Name>Evol Page</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<IndependentVariable>t</IndependentVariable>
<Increment>0.01</Increment>
<Rate state="x1">vx1</Rate>
<Rate state="vx1">F(x1)</Rate>
<Rate state=""></Rate>
<Method>RungeKutta</Method>
<Tolerance></Tolerance>
<Comment><![CDATA[]]></Comment>

</Content>
</Osejs.Model.Evolution.Page>
</Osejs.Model.Evolution>
<Osejs.Model.Constraints>
</Osejs.Model.Constraints>
<Osejs.Model.Library>
<Osejs.Model.Library.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>force</Name>
<Active>true</Active>
<Visible>true</Visible>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
public double F(double x) {
  if (x<=0.0) return a1/m1;
  if (x>=L) return -a1/m1;
  return 0.0;
}
]]></Code>

</Content>
</Osejs.Model.Library.Page>
</Osejs.Model.Library>
</Osejs.Model>
<Osejs.View>
<Osejs.View.Creation>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Frame</Type>
<Property name="name">Frame</Property>
<Property name="_ejs_mainWindow">true</Property>
<Property name="title">Frame</Property>
<Property name="layout">border</Property>
<Property name="visible">true</Property>
<Property name="size">500,500</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>false</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">buttonspanel</Property>
<Property name="parent">Frame</Property>
<Property name="position">south</Property>
<Property name="layout">border:0,0</Property>
<Property name="size">500,100</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>false</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel1</Property>
<Property name="parent">buttonspanel</Property>
<Property name="position">north</Property>
<Property name="layout">flow:left,0,0</Property>
<Property name="size">500,50</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">Play</Property>
<Property name="parent">Panel1</Property>
<Property name="position">center</Property>
<Property name="text">Play</Property>
<Property name="action">_play()</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">Pause</Property>
<Property name="parent">Panel1</Property>
<Property name="text">Pause</Property>
<Property name="action">_pause()</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">reset</Property>
<Property name="parent">Panel1</Property>
<Property name="text">reset</Property>
<Property name="action">_reset()</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>false</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">Panel2</Property>
<Property name="parent">buttonspanel</Property>
<Property name="position">south</Property>
<Property name="layout">flow:left,0,0</Property>
<Property name="size">500,50</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Slider</Type>
<Property name="name">vx1</Property>
<Property name="parent">Panel2</Property>
<Property name="variable">vx1</Property>
<Property name="minimum">-5.0</Property>
<Property name="maximum">5.0</Property>
<Property name="format">vx1= #0.00</Property>
<Property name="size">150,50</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Slider</Type>
<Property name="name">mass1</Property>
<Property name="parent">Panel2</Property>
<Property name="variable">m1</Property>
<Property name="minimum">0.01</Property>
<Property name="maximum">10.0</Property>
<Property name="format">m1 = #0.00</Property>
<Property name="size">150,50</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Slider</Type>
<Property name="name">force1</Property>
<Property name="parent">Panel2</Property>
<Property name="variable">a1</Property>
<Property name="minimum">0.0</Property>
<Property name="maximum">25</Property>
<Property name="format">a1 = #0.00</Property>
<Property name="size">150,50</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">drawing</Property>
<Property name="parent">Frame</Property>
<Property name="position">north</Property>
<Property name="layout">border</Property>
<Property name="size">300,300</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.DrawingPanel</Type>
<Property name="name">DrawingPanel</Property>
<Property name="parent">drawing</Property>
<Property name="position">center</Property>
<Property name="autoscaleX">false</Property>
<Property name="autoscaleY">false</Property>
<Property name="minimumX">-5.0</Property>
<Property name="maximumX">L+5.0</Property>
<Property name="minimumY">-10.0</Property>
<Property name="maximumY">10.0</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Particle</Type>
<Property name="name">Particle</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x">x1</Property>
<Property name="y">y1</Property>
<Property name="sizex">0.5</Property>
<Property name="sizey">0.5</Property>
<Property name="scalex">1</Property>
<Property name="scaley">1.8</Property>
<Property name="style">FILLED_CIRCLE</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">wall_left</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x">0.0</Property>
<Property name="y">-1.0</Property>
<Property name="sizex">0</Property>
<Property name="sizey">2.0</Property>
<Property name="style">SEGMENT</Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow</Type>
<Property name="name">wall_rigth</Property>
<Property name="parent">DrawingPanel</Property>
<Property name="x">L</Property>
<Property name="y">-1.0</Property>
<Property name="sizex">0</Property>
<Property name="sizey">2.0</Property>
<Property name="style">SEGMENT</Property>
</Osejs.View.Creation.Element>
</Osejs.View.Creation>
</Osejs.View>
</Osejs>
