<!-- This XML file has been created by Easy Java Simulations (Ejs). Visit http://www.um.es/fem/Ejs. -->
<!-- Please, save the file to your hard disk on your Ejs' user directory and open it with Ejs. -->
<Osejs version="5.0 beta" password="">
<Osejs.Information>
<Title><![CDATA[Magnetic Bar Field]]></Title>
<Copyright><![CDATA[]]></Copyright>
<Keywords><![CDATA[magnetic field, dipole, bar magnet]]></Keywords>
<Password><![CDATA[]]></Password>
<Level><![CDATA[introductory]]></Level>
<Language><![CDATA[]]></Language>
<Abstract><![CDATA[e-mail: fem@um.es]]></Abstract>
<ExecPassword><![CDATA[]]></ExecPassword>
<CaptureTools>false</CaptureTools>
<DataTools>false</DataTools>
<LanguageTools>false</LanguageTools>
<AppletColSupport>false</AppletColSupport>
<UseMacMenuBar>false</UseMacMenuBar>
<RunInBrowserFirst>false</RunInBrowserFirst>
<UseInterpreter>true</UseInterpreter>
<ModelTab></ModelTab>
<ModelTabTitle><![CDATA[]]></ModelTabTitle>
<MenuPosition>0</MenuPosition>
<CSSFolder></CSSFolder>
<Logo></Logo>
<Author><![CDATA[Wolfgang Chrisitan, Francisco Esquembre - Universidad de Murcia, Spain]]></Author>
<AuthorLogo></AuthorLogo>
<AdditionalLibraries>
</AdditionalLibraries>
<ImportStatements>
</ImportStatements>
<ClassesRequired>
</ClassesRequired>
<ManifestLines><![CDATA[Permissions: sandbox
Codebase: *
Caller-Allowable-Codebase: *
]]></ManifestLines>
<DetectedFiles><![CDATA[./MagneticBarField/MagneticBarField.html;./MagneticBarField/circle.gif;./MagneticBarField/magnet.gif;]]></DetectedFiles>
<AuxiliaryFiles><![CDATA[./MagneticBarField/;]]></AuxiliaryFiles>
</Osejs.Information>
<Osejs.Description>
<Osejs.Description.Page>
<Type>DESCRIPTION_EDITOR</Type>
<Name>Magnetic Bar Field</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<OneHTMLPage>
  <Locale>_default_</Locale>
  <Title>Magnetic Bar Field</Title>
  <External>true</External>
  <![CDATA[
./MagneticBarField/MagneticBarField.html
]]>
</OneHTMLPage>
</Content>
</Osejs.Description.Page>
</Osejs.Description>
<Osejs.Model>
<Osejs.Model.FramesPerSecond>10</Osejs.Model.FramesPerSecond>
<Osejs.Model.StepsPerDisplay>2</Osejs.Model.StepsPerDisplay>
<Osejs.Model.RealTimeVariable></Osejs.Model.RealTimeVariable>
<Osejs.Model.Autostart>true</Osejs.Model.Autostart>
<Osejs.Model.Variables>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>Field Vars</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<PageComment><![CDATA[]]></PageComment>
<Variable>
<Name><![CDATA[intensityScale]]></Name>
<Value><![CDATA[]]></Value>
<Type><![CDATA[boolean]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[nd]]></Name>
<Value><![CDATA[20]]></Value>
<Type><![CDATA[int]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[number of dipoles]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[dipoles]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[[nd][2]]]></Dimension>
<Comment><![CDATA[positions of dipoles]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[fieldValue]]></Name>
<Value><![CDATA["0"]]></Value>
<Type><![CDATA[String]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[magnitude of magnetic field reported by compass]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[m]]></Name>
<Value><![CDATA[0.05]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[magnetic dipole moment]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[xmax]]></Name>
<Value><![CDATA[1.5]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[panel size]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[ymax]]></Name>
<Value><![CDATA[1]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[nx]]></Name>
<Value><![CDATA[20]]></Value>
<Type><![CDATA[int]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[number of field vectors in x-direction]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[ny]]></Name>
<Value><![CDATA[20]]></Value>
<Type><![CDATA[int]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[number of field vectors in y direction]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[xField]]></Name>
<Value><![CDATA[]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[[nx][ny]]]></Dimension>
<Comment><![CDATA[magnetic field x-component]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[yField]]></Name>
<Value><![CDATA[]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[[nx][ny]]]></Dimension>
<Comment><![CDATA[magnetic field y-component]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[magField]]></Name>
<Value><![CDATA[]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[[nx][ny]]]></Dimension>
<Comment><![CDATA[magnetic field magnitude]]></Comment>
</Variable>
</Content>
</Osejs.Model.Variables.Page>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>Display Vars</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<PageComment><![CDATA[]]></PageComment>
<Variable>
<Name><![CDATA[xMarker]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[yMarker]]></Name>
<Value><![CDATA[-0.2]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[xMagnet]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[x position of magnet]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[yMagnet]]></Name>
<Value><![CDATA[-.2]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[y position of magnet]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[xCompass]]></Name>
<Value><![CDATA[.4]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[x position of compass]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[yCompass]]></Name>
<Value><![CDATA[.4]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[y position of compass]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[equilibriumTheta]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[angular orientation of compass at equilibrium]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[hideField]]></Name>
<Value><![CDATA[false]]></Value>
<Type><![CDATA[boolean]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[whether to hide magnet and field vectors]]></Comment>
</Variable>
</Content>
</Osejs.Model.Variables.Page>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>ODE Vars</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<PageComment><![CDATA[ODE variables for compass]]></PageComment>
<Variable>
<Name><![CDATA[k]]></Name>
<Value><![CDATA[1]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[Hooke's law restoring force]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[b]]></Name>
<Value><![CDATA[0.2]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[damping constant]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[theta]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[angular orientation of compass needle]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[omega]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[angular velocity of compass needle]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[t]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[time]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[dt]]></Name>
<Value><![CDATA[0.1]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Comment><![CDATA[time increment]]></Comment>
</Variable>
</Content>
</Osejs.Model.Variables.Page>
</Osejs.Model.Variables>
<Osejs.Model.Initialization>
<Osejs.Model.Initialization.Page>
<Type>CODE_EDITOR</Type>
<Name>Init Page</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
double dx=1.0/(nd-1);    //set up dipoles under bar magnet
for(int i=0; i<nd; i+=2) {
  dipoles[i][0]=-0.5+i*dx;   // x position
  dipoles[i][1]=-.04;         // y position
  dipoles[i+1][0]=-0.5+i*dx; // x position
  dipoles[i+1][1]=0.04;       // y position
}
computeField();
]]></Code>
</Content>
</Osejs.Model.Initialization.Page>
</Osejs.Model.Initialization>
<Osejs.Model.Evolution>
<Osejs.Model.Evolution.Page>
<Type>ODE_EDITOR</Type>
<Name>Evol Page</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<PreliminaryCode>
<Comment><![CDATA[Code to be executed before rate equations are evaluated]]></Comment>
<Code><![CDATA[
double deltaTheta=theta-equilibriumTheta;

]]></Code>
</PreliminaryCode>
<ErrorHandling>
<EquationEditor.ErrorEditor.Page>
<Type>ERROR_EDITOR</Type>
<Name>Error handling code</Name>
<Active>true</Active>
<Internal>false</Internal>
<ErrorHandlingContent>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[

]]></Code>
<ErrorType>ANY_ERROR</ErrorType>
</ErrorHandlingContent>
</EquationEditor.ErrorEditor.Page>
</ErrorHandling>
<DelayInitialCondition>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[

]]></Code>
</DelayInitialCondition>
<Discontinuities>
</Discontinuities>
<IndependentVariable>t</IndependentVariable>
<Increment>dt</Increment>
<Rate state="theta">omega</Rate>
<Rate state="omega">-k*(Math.sin(deltaTheta))-b*omega</Rate>
<Method>RungeKuttaFehlberg</Method>
<Tolerance></Tolerance>
<InternalStep></InternalStep>
<MemoryLength></MemoryLength>
<MaximumStep></MaximumStep>
<MaximumNumberOfSteps>10000</MaximumNumberOfSteps>
<AbsoluteTolerance>0.00001</AbsoluteTolerance>
<RelativeTolerance></RelativeTolerance>
<EstimateFirstStep>false</EstimateFirstStep>
<AccelerationIndependentOfVelocity>false</AccelerationIndependentOfVelocity>
<ForceSynchronization>false</ForceSynchronization>
<UseBestInterpolation>false</UseBestInterpolation>
<EventMaximumStep></EventMaximumStep>
<DelayList><![CDATA[]]></DelayList>
<DelayMaximum><![CDATA[]]></DelayMaximum>
<DelayAddDiscont><![CDATA[]]></DelayAddDiscont>
<DirectIncidenceMatrix><![CDATA[]]></DirectIncidenceMatrix>
<Comment><![CDATA[]]></Comment>
</Content>
</Osejs.Model.Evolution.Page>
</Osejs.Model.Evolution>
<Osejs.Model.Constraints>
<Osejs.Model.Constraints.Page>
<Type>CODE_EDITOR</Type>
<Name>FixRel Page</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
double[] b = getB(xCompass,yCompass);  //adjust compass values
equilibriumTheta=b[3];
fieldValue="|B|="+_view.format(getB(xCompass, yCompass)[2],"0.00");
if(omega>0)omega=Math.min(omega,Math.PI);  // keeps compass from spinning wildly
else omega=Math.max(omega,-Math.PI);

]]></Code>
</Content>
</Osejs.Model.Constraints.Page>
</Osejs.Model.Constraints>
<Osejs.Model.Library>
<Osejs.Model.Library.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>Compute Field</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
public void computeField () {
  for (int i=0; i<nx; i++) {
    double x=_view.vectorField2D.indexToX(i);
    for (int j=0; j<ny; j++) {
      double y=_view.vectorField2D.indexToY(j);
      double[] b=getB(x,y);//  Gets the components and magnitude
      xField[i][j] = b[0];
      yField[i][j] = b[1];
      magField[i][j]=intensityScale?b[2]:3;
    }
  }
}
]]></Code>
</Content>
</Osejs.Model.Library.Page>
<Osejs.Model.Library.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>Get B Value</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
// computes magnetic field components and magnitude from dipoles
public double[] getB(double x, double y) {
  double[] b=new double[4];
  for(int i=0; i<nd; i++) {
    double dx=x-dipoles[i][0]-xMagnet;
    double dy=y-dipoles[i][1]-yMagnet;
    double r2=dx*dx+dy*dy;
    double r=Math.sqrt(r2);
    double r3=r2*r;
    double cos=dx/r;
    double sin=dy/r;
    b[0]+=m*(3*cos*cos-1)/r3;   //x component
    b[1]+=m*3*sin*cos/r3;   //y component
    if(r2==0) {
      b[0]=b[1]=0;
    }
  }
  b[2] = Math.sqrt(b[0]*b[0]+b[1]*b[1]);  // magnitude
  b[3] = Math.atan2(b[1],b[0]);  // angle
  return b;
}

/*
Dipole field:
B=mu/4/pi/r^3[(m*rhat)rhat-m]         //vector form
K=mu*M/4/pi
alpha=0
Bx=K*[(3*cos(theta)^2-1)*cos(alpha)+3*sin(theta)cos(theta)*sin(alpha)]/r^3
By=K*[(3*sin(theta)^2-1)*sin(alpha)+3*sin(theta)cos(theta)*cos(alpha)]/r^3
*/

]]></Code>
</Content>
</Osejs.Model.Library.Page>
<Osejs.Model.Library.Page>
<Type>LIBRARY_EDITOR</Type>
<Name>Random Location</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
public void setRandomLocation () {
  //move magnet to random location
  xMagnet = (-xmax + 2*xmax*Math.random());
  yMagnet = (-ymax + 2*ymax*Math.random());
  computeField();
}
]]></Code>
</Content>
</Osejs.Model.Library.Page>
</Osejs.Model.Library>
<Osejs.Model.Elements>
</Osejs.Model.Elements>
</Osejs.Model>
<Osejs.View>
<Osejs.View.Creation>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Frame</Type>
<Property name="name">mainFrame</Property>
<Property name="_ejs_mainWindow">true</Property>
<Property name="title"><![CDATA["Bar Magnet"]]></Property>
<Property name="layout"><![CDATA[border]]></Property>
<Property name="visible"><![CDATA[true]]></Property>
<Property name="location"><![CDATA["47,15"]]></Property>
<Property name="size"><![CDATA["731,498"]]></Property>
<Property name="resizable"><![CDATA[false]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.PlottingPanel</Type>
<Property name="name">vectorFieldPlottingPanel</Property>
<Property name="parent">mainFrame</Property>
<Property name="position">center</Property>
<Property name="autoscaleX"><![CDATA[false]]></Property>
<Property name="autoscaleY"><![CDATA[false]]></Property>
<Property name="minimumX"><![CDATA[-xmax]]></Property>
<Property name="maximumX"><![CDATA[xmax]]></Property>
<Property name="minimumY"><![CDATA[-ymax]]></Property>
<Property name="maximumY"><![CDATA[ymax]]></Property>
<Property name="square"><![CDATA[true]]></Property>
<Property name="majorTicksX"><![CDATA[false]]></Property>
<Property name="majorTicksY"><![CDATA[false]]></Property>
<Property name="fixedGutters"><![CDATA[false]]></Property>
<Property name="interiorBackground"><![CDATA[BLACK]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.SimpleVectorField2D</Type>
<Property name="name">vectorField2D</Property>
<Property name="parent">vectorFieldPlottingPanel</Property>
<Property name="minimumX"><![CDATA[-xmax]]></Property>
<Property name="maximumX"><![CDATA[xmax]]></Property>
<Property name="minimumY"><![CDATA[-ymax]]></Property>
<Property name="maximumY"><![CDATA[ymax]]></Property>
<Property name="xcomponent"><![CDATA[xField]]></Property>
<Property name="ycomponent"><![CDATA[yField]]></Property>
<Property name="length"><![CDATA[0.1]]></Property>
<Property name="visible"><![CDATA[!hideField]]></Property>
<Property name="style"><![CDATA[RHOMBUS]]></Property>
<Property name="elementposition"><![CDATA[CENTERED]]></Property>
<Property name="colormode"><![CDATA[RED]]></Property>
<Property name="magnitude"><![CDATA[magField]]></Property>
<Property name="autoscale"><![CDATA[false]]></Property>
<Property name="minimum"><![CDATA[0]]></Property>
<Property name="maximum"><![CDATA[4]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Group2D</Type>
<Property name="name">markerGroup</Property>
<Property name="parent">vectorFieldPlottingPanel</Property>
<Property name="x"><![CDATA[xMarker]]></Property>
<Property name="y"><![CDATA[yMarker]]></Property>
<Property name="visible"><![CDATA[hideField]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Shape2D</Type>
<Property name="name">leftMarker</Property>
<Property name="parent">markerGroup</Property>
<Property name="x"><![CDATA[-0.28]]></Property>
<Property name="y"><![CDATA[0]]></Property>
<Property name="sizeX"><![CDATA[.56]]></Property>
<Property name="sizeY"><![CDATA[.22]]></Property>
<Property name="style"><![CDATA[ROUND_RECTANGLE]]></Property>
<Property name="lineColor"><![CDATA[GRAY]]></Property>
<Property name="fillColor"><![CDATA[CYAN]]></Property>
<Property name="lineWidth"><![CDATA[2]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Shape2D</Type>
<Property name="name">rightMarker</Property>
<Property name="parent">markerGroup</Property>
<Property name="x"><![CDATA[0.28]]></Property>
<Property name="y"><![CDATA[0]]></Property>
<Property name="sizeX"><![CDATA[.56]]></Property>
<Property name="sizeY"><![CDATA[.22]]></Property>
<Property name="style"><![CDATA[ROUND_RECTANGLE]]></Property>
<Property name="lineColor"><![CDATA[GRAY]]></Property>
<Property name="fillColor"><![CDATA[MAGENTA]]></Property>
<Property name="lineWidth"><![CDATA[2]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Shape2D</Type>
<Property name="name">middleMarker</Property>
<Property name="parent">markerGroup</Property>
<Property name="x"><![CDATA[0]]></Property>
<Property name="y"><![CDATA[0]]></Property>
<Property name="sizeX"><![CDATA[.56]]></Property>
<Property name="sizeY"><![CDATA[.22]]></Property>
<Property name="enabledPosition"><![CDATA[true]]></Property>
<Property name="movesGroup"><![CDATA[true]]></Property>
<Property name="sensitivity"><![CDATA[0]]></Property>
<Property name="style"><![CDATA[RECTANGLE]]></Property>
<Property name="lineColor"><![CDATA[GRAY]]></Property>
<Property name="fillColor"><![CDATA[GRAY]]></Property>
<Property name="lineWidth"><![CDATA[2]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Text2D</Type>
<Property name="name">dragMe</Property>
<Property name="parent">markerGroup</Property>
<Property name="pixelSize"><![CDATA[true]]></Property>
<Property name="text"><![CDATA["Drag Me"]]></Property>
<Property name="font"><![CDATA[Dialog,BOLD,12]]></Property>
<Property name="elementposition"><![CDATA[SOUTH]]></Property>
<Property name="lineColor"><![CDATA[YELLOW]]></Property>
<Property name="fillColor"><![CDATA[YELLOW]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Text2D</Type>
<Property name="name">toMagnetPosition</Property>
<Property name="parent">markerGroup</Property>
<Property name="pixelSize"><![CDATA[true]]></Property>
<Property name="text"><![CDATA["(To Magnet Location)"]]></Property>
<Property name="font"><![CDATA[Dialog,BOLD,10]]></Property>
<Property name="elementposition"><![CDATA[NORTH]]></Property>
<Property name="lineColor"><![CDATA[YELLOW]]></Property>
<Property name="fillColor"><![CDATA[YELLOW]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Image2D</Type>
<Property name="name">imageMagnet</Property>
<Property name="parent">vectorFieldPlottingPanel</Property>
<Property name="x"><![CDATA[xMagnet]]></Property>
<Property name="y"><![CDATA[yMagnet]]></Property>
<Property name="sizeX"><![CDATA[1.08]]></Property>
<Property name="sizeY"><![CDATA[0.22]]></Property>
<Property name="visible"><![CDATA[!hideField]]></Property>
<Property name="enabledPosition"><![CDATA[true]]></Property>
<Property name="sensitivity"><![CDATA[0]]></Property>
<Property name="dragAction"><![CDATA[computeField()]]></Property>
<Property name="imageFile"><![CDATA["./MagneticBarField/magnet.gif"]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Text2D</Type>
<Property name="name">text</Property>
<Property name="parent">vectorFieldPlottingPanel</Property>
<Property name="x"><![CDATA[xMagnet]]></Property>
<Property name="y"><![CDATA[yMagnet]]></Property>
<Property name="pixelSize"><![CDATA[true]]></Property>
<Property name="visible"><![CDATA[!hideField]]></Property>
<Property name="text"><![CDATA["Drag me"]]></Property>
<Property name="font"><![CDATA[Dialog,BOLD,14]]></Property>
<Property name="lineColor"><![CDATA[YELLOW]]></Property>
<Property name="fillColor"><![CDATA[YELLOW]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>false</Expanded>
<Type>Elements.Group2D</Type>
<Property name="name">compassGroup</Property>
<Property name="parent">vectorFieldPlottingPanel</Property>
<Property name="x"><![CDATA[xCompass]]></Property>
<Property name="y"><![CDATA[yCompass]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Shape2D</Type>
<Property name="name">backGroundShape</Property>
<Property name="parent">compassGroup</Property>
<Property name="sizeX"><![CDATA[0.35]]></Property>
<Property name="sizeY"><![CDATA[0.35]]></Property>
<Property name="fillColor"><![CDATA[LIGHTGRAY]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Image2D</Type>
<Property name="name">imageCircle</Property>
<Property name="parent">compassGroup</Property>
<Property name="x"><![CDATA[0]]></Property>
<Property name="trueSize"><![CDATA[false]]></Property>
<Property name="sizeX"><![CDATA[0.4]]></Property>
<Property name="sizeY"><![CDATA[0.4]]></Property>
<Property name="imageFile"><![CDATA["./MagneticBarField/circle.gif"]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Arrow2D</Type>
<Property name="name">compassArrow</Property>
<Property name="parent">compassGroup</Property>
<Property name="x"><![CDATA[0]]></Property>
<Property name="y"><![CDATA[0]]></Property>
<Property name="sizeX"><![CDATA[1]]></Property>
<Property name="sizeY"><![CDATA[0]]></Property>
<Property name="scalex"><![CDATA[0.24]]></Property>
<Property name="scaley"><![CDATA[0.24]]></Property>
<Property name="transformation"><![CDATA[theta]]></Property>
<Property name="style"><![CDATA[RHOMBUS]]></Property>
<Property name="elementposition"><![CDATA[CENTERED]]></Property>
<Property name="fillColor"><![CDATA[RED]]></Property>
<Property name="extraColor"><![CDATA[BLUE]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Shape2D</Type>
<Property name="name">compassPivotShape</Property>
<Property name="parent">compassGroup</Property>
<Property name="x"><![CDATA[0]]></Property>
<Property name="y"><![CDATA[0]]></Property>
<Property name="sizeX"><![CDATA[0.028]]></Property>
<Property name="sizeY"><![CDATA[0.028]]></Property>
<Property name="enabledPosition"><![CDATA[true]]></Property>
<Property name="movesGroup"><![CDATA[true]]></Property>
<Property name="sensitivity"><![CDATA[15]]></Property>
<Property name="lineColor"><![CDATA[BLACK]]></Property>
<Property name="fillColor"><![CDATA[BLACK]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Shape2D</Type>
<Property name="name">textBoxShape</Property>
<Property name="parent">compassGroup</Property>
<Property name="y"><![CDATA[-.21]]></Property>
<Property name="sizeX"><![CDATA[0.25]]></Property>
<Property name="sizeY"><![CDATA[0.08]]></Property>
<Property name="visible"><![CDATA[!hideField]]></Property>
<Property name="style"><![CDATA[ROUND_RECTANGLE]]></Property>
<Property name="fillColor"><![CDATA[YELLOW]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Text2D</Type>
<Property name="name">fieldText</Property>
<Property name="parent">compassGroup</Property>
<Property name="x"><![CDATA[0]]></Property>
<Property name="y"><![CDATA[-0.22]]></Property>
<Property name="pixelSize"><![CDATA[true]]></Property>
<Property name="visible"><![CDATA[!hideField]]></Property>
<Property name="text"><![CDATA[%fieldValue%]]></Property>
<Property name="elementposition"><![CDATA[CENTERED]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">controlPanel</Property>
<Property name="parent">mainFrame</Property>
<Property name="position">south</Property>
<Property name="layout"><![CDATA[GRID:1,2,0,0]]></Property>
<Property name="borderType"><![CDATA[LOWERED_ETCHED]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">buttonPanel</Property>
<Property name="parent">controlPanel</Property>
<Property name="position">west</Property>
<Property name="layout"><![CDATA[HBOX]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">resetButton</Property>
<Property name="parent">buttonPanel</Property>
<Property name="image"><![CDATA["/org/opensourcephysics/resources/controls/images/reset.gif"]]></Property>
<Property name="action"><![CDATA[_reset()]]></Property>
<Property name="size"><![CDATA["33,25"]]></Property>
<Property name="tooltip"><![CDATA["Reset button."]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.TwoStateButton</Type>
<Property name="name">hideMagnetButton</Property>
<Property name="parent">buttonPanel</Property>
<Property name="variable"><![CDATA[!hideField]]></Property>
<Property name="size"><![CDATA["100,25"]]></Property>
<Property name="tooltip"><![CDATA["Hide magnet and field."]]></Property>
<Property name="textOn"><![CDATA["Hide Field"]]></Property>
<Property name="actionOn"><![CDATA[hideField=true;
xMarker = -0.8;
yMarker = 0.75;]]></Property>
<Property name="textOff"><![CDATA["Show Field"]]></Property>
<Property name="actionOff"><![CDATA[hideField=false;
computeField();]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">randomPanel</Property>
<Property name="parent">controlPanel</Property>
<Property name="position">center</Property>
<Property name="layout"><![CDATA[FLOW:center,0,0]]></Property>
<Property name="visible"><![CDATA[hideField]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.Button</Type>
<Property name="name">randomizeButton</Property>
<Property name="parent">randomPanel</Property>
<Property name="position">west</Property>
<Property name="text"><![CDATA["Set magnet to a random location"]]></Property>
<Property name="action"><![CDATA[setRandomLocation ()]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Expanded>false</Expanded>
<Type>Elements.Panel</Type>
<Property name="name">checkPanel</Property>
<Property name="parent">controlPanel</Property>
<Property name="position">east</Property>
<Property name="layout"><![CDATA[FLOW:right,0,0]]></Property>
<Property name="visible"><![CDATA[!hideField]]></Property>
<Property name="size"><![CDATA["150,25"]]></Property>
</Osejs.View.Creation.Element>
<Osejs.View.Creation.Element>
<Type>Elements.CheckBox</Type>
<Property name="name">intensityCheckBox</Property>
<Property name="parent">checkPanel</Property>
<Property name="variable"><![CDATA[intensityScale]]></Property>
<Property name="text"><![CDATA["Intensity"]]></Property>
<Property name="action"><![CDATA[computeField ()]]></Property>
<Property name="tooltip"><![CDATA["Fade arrows to indicate weak a field."]]></Property>
</Osejs.View.Creation.Element>
</Osejs.View.Creation>
</Osejs.View>
<Osejs.HtmlView>
</Osejs.HtmlView>
</Osejs>
