<![CDATA[Bar Magnet and wire Model]]> false false true false false false true true true false ]]> ./Bar_magnetwire/2016-07-13_1453s.png ./01authorlookang50x50.png;./01authorfu-kwun.hwang.png;./01authorwc_icon.png;./01authorPacoEsquembre2011.png;./cox.png; DESCRIPTION_EDITOR Magnetic Bar Field true false _default_ Magnetic Bar Field true DESCRIPTION_EDITOR Intro Page true false _default_ Intro Page false

http://weelookang.blogspot.sg/2010/06/ejs-open-source-2-bar-magnets-compass.html

]]>
20 1 false VARIABLE_EDITOR Field Vars true false VARIABLE_EDITOR Display Vars true false VARIABLE_EDITOR ODE Vars true false VARIABLE_EDITOR earth true false VARIABLE_EDITOR 2ndmagnet true false VARIABLE_EDITOR layout true false VARIABLE_EDITOR Fieldvectors true false VARIABLE_EDITOR fieldlines true false VARIABLE_EDITOR wire true false VARIABLE_EDITOR force true false CODE_EDITOR Init Page true false CODE_EDITOR Init Page 2 true false ODE_EDITOR Evol Page false false ERROR_EDITOR Error handling code true false ANY_ERROR t dt omega -k*Math.sqrt(bxField*bxField+byField*byField)*(Math.sin(deltaTheta))-damp*omega getBx(px,py) getBy(px,py) RungeKuttaFehlberg 10000 0.00001 false false false false ODE_EDITOR Evol Page 2 true false t dt getBx(px,py) getBy(px,py) RungeKutta 10000 0.00001 false false false false CODE_EDITOR FixRel Page 2 true false - 0.5 * Magnetsizex && x2 < 0.5 * Magnetsizex && y2 > - 0.5 * Magnetsizey && y2 < 0.5 * Magnetsizey)) // if (xCompass<(xMagnet+Magnetsizex/2) && xCompass>(xMagnet-(Magnetsizex/2)) && yCompass<(yMagnet+Magnetsizey/2) && yCompass>(yMagnet-Magnetsizey/2)) { theta= cta; fieldValue="B= 225 T"; fieldValueBx1="Bx= " +_view._format(225*Math.cos(theta),"0.")+ " T"; fieldValueBy1="By= "+_view._format(225*Math.sin(theta),"0.")+ " T"; fieldValueAngledeg1 = theta*180/pi; } //inside magnet2 else if (magnet2===true&&(x22 > - 0.5 * Magnetsizex2 && x22 < 0.5 * Magnetsizex2 && y22 > - 0.5 * Magnetsizey2 && y22 < 0.5 * Magnetsizey2)) // if (xCompass<(xMagnet+Magnetsizex/2) && xCompass>(xMagnet-(Magnetsizex/2)) && yCompass<(yMagnet+Magnetsizey/2) && yCompass>(yMagnet-Magnetsizey/2)) { theta= cta2; fieldValue="B= 225 T"; fieldValueBx1="Bx= " +_view._format(225*Math.cos(theta),"0.")+ " T"; fieldValueBy1="By= "+_view._format(225*Math.sin(theta),"0.")+ " T"; fieldValueAngledeg1 = theta*180/pi; } else{ // catch all bxField = lcst*(bf1[0]*cs-bf1[1]*sc)+rcst*(bf2[0]*cs2-bf2[1]*sc2);//FKH byField = lcst*(bf1[0]*sc+bf1[1]*cs)+rcst*(bf2[0]*sc2+bf2[1]*cs2);//FKH equilibriumTheta=Math.atan2(byField,bxField);//b[3]; fieldValue="B="+_view._format(Math.sqrt(bxField*bxField+byField*byField),"0.0")+ " T"; // display as x and y fieldValueBx1="Bx= " +_view._format(bxField,"0.0")+ " T ,"; fieldValueBy1="By= "+_view._format(byField,"0.0")+ " T ,"; // new angle after rotate cta of magnet with universal x and y theta = Math.atan2(byField,bxField); // recheck compass angledeg1 = Math.atan2(byField,bxField)*180/Math.PI; fieldValueAngledeg1 = "θ = "+ _view._format(angledeg1,"0.0") + "°"; if(omega>0)omega=Math.min(omega,Math.PI); // keeps compass from spinning wildly else omega=Math.max(omega,-Math.PI); // to make the strength slider 0 min and 100 max by weelk vectorfieldmax=100-vectorfieldmaxopposite; // //cs= Math.cos(cta); //sc=Math.sin(cta); //cta = ca*a2c; // prelim code moved to fix deltaTheta=theta-equilibriumTheta; } ]]> CODE_EDITOR fieldlines true false - 0.5 * Magnetsizex && x2 < 0.5 * Magnetsizex && y2 > - 0.5 * Magnetsizey && y2 < 0.5 * Magnetsizey)) // if (posx[vectorIndex]<(xMagnet+Magnetsizex/2) && posx[vectorIndex]>(xMagnet-(Magnetsizex/2)) && posy[vectorIndex]<(yMagnet+Magnetsizey/2) && posy[vectorIndex]>(yMagnet-Magnetsizey/2)) { thetaField[vectorIndex]= cta; } var dx2 = posx[vectorIndex]-xMagnet2; var dy2 = posy[vectorIndex]-yMagnet2; var currA2 = Math.atan2(dy2,dx2); var newA2 = currA2 - cta2; var h2 = Math.sqrt(dx2*dx2+dy2*dy2); var x22 =Math.cos(newA2) * h2; var y22 = Math.sin(newA2) * h2; //inside magnet2 if (magnet2===true&&(x22 > - 0.5 * Magnetsizex2 && x22 < 0.5 * Magnetsizex2 && y22 > - 0.5 * Magnetsizey2 && y22 < 0.5 * Magnetsizey2)) // if (posx[vectorIndex]<(xMagnet+Magnetsizex/2) && posx[vectorIndex]>(xMagnet-(Magnetsizex/2)) && posy[vectorIndex]<(yMagnet+Magnetsizey/2) && posy[vectorIndex]>(yMagnet-Magnetsizey/2)) { thetaField[vectorIndex]= cta2; } textSetx[vectorIndex] = "x="+_view._format(Fieldx[vectorIndex],"0.00"); textSety[vectorIndex] = "y="+_view._format(Fieldy[vectorIndex],"0.00"); // inside[vectorIndex] ="0"; textSetthetaField[vectorIndex] = "="+_view._format(thetaField[vectorIndex],"0.00"); } } ]]> CODE_EDITOR forces true false LIBRARY_EDITOR ComputeField2magnets true false LIBRARY_EDITOR GetBComputeField true false LIBRARY_EDITOR GetBComputeFieldx false false LIBRARY_EDITOR GetBComputeFieldy false false LIBRARY_EDITOR GetBvalueCompass true false LIBRARY_EDITOR GetBvalueCompass 2 true false - 0.5 * Magnetsizex && x2 < 0.5 * Magnetsizex && y2 > - 0.5 * Magnetsizey && y2 < 0.5 * Magnetsizey)) // if (magnet1===true&&(xm > - 0.5 * Magnetsizex && xm < 0.5 * Magnetsizex && ym > - 0.5 * Magnetsizey && ym < 0.5 * Magnetsizey)) // if (xCompass<(xMagnet+Magnetsizex/2) && xCompass>(xMagnet-(Magnetsizex/2)) && yCompass<(yMagnet+Magnetsizey/2) && yCompass>(yMagnet-Magnetsizey/2)) { b[0]=1; b[1]=0; } if(r2===0) { b[0]=b[1]=0; } } return b[0]; } ]]> LIBRARY_EDITOR GetBvalueCompass 2 2 true false - 0.5 * Magnetsizex && x2 < 0.5 * Magnetsizex && y2 > - 0.5 * Magnetsizey && y2 < 0.5 * Magnetsizey)) // if (magnet1===true&&(xm > - 0.5 * Magnetsizex && xm < 0.5 * Magnetsizex && ym > - 0.5 * Magnetsizey && ym < 0.5 * Magnetsizey)) // if (xCompass<(xMagnet+Magnetsizex/2) && xCompass>(xMagnet-(Magnetsizex/2)) && yCompass<(yMagnet+Magnetsizey/2) && yCompass>(yMagnet-Magnetsizey/2)) { b[0]=1; // some constant value b[1]=0; } if(r2===0) { b[0]=b[1]=0; } } return b[1]; } ]]> LIBRARY_EDITOR Random Location true false LIBRARY_EDITOR fullscreen true false LIBRARY_EDITOR checkAndroid true false -1; //&& ua.indexOf("mobile"); } ]]> LIBRARY_EDITOR calBx true false HTML_VIEW_EDITOR HtmlView Page true false 0 1024 0 800 600 true true Elements.Panel true Elements.Panel false Elements.PlottingPanel Elements.ArrowSet2D false Elements.Group2D Elements.Shape2D Elements.Shape2D Elements.Shape2D Elements.Shape2D Elements.Shape2D Elements.Text2D Elements.Text2D false Elements.Group2D Elements.Image2D Elements.Text2D false Elements.Group2D Elements.Image2D Elements.Text2D false Elements.Group2D false Elements.Group2D false Elements.Group2D =0]]> Elements.Shape2D Elements.Shape2D false Elements.Group2D Elements.Shape2D Elements.Text2D false Elements.Group2D Elements.Text2D Elements.Arrow2D false Elements.Group2D 0&&showbfieldcurrent]]> Elements.Shape2D false Elements.Group2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Shape2D false Elements.Group2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Shape2D false Elements.Group2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Shape2D false Elements.Group2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D false Elements.Group2D Elements.Shape2D false Elements.Group2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Shape2D false Elements.Group2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Shape2D false Elements.Group2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Shape2D false Elements.Group2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Arrow2D Elements.Shape2D false Elements.Group2D Elements.Arrow2D Elements.Text2D Elements.Text2D Elements.Text2D Elements.Text2D Elements.ShapeSet2D Elements.ArrowSet2D Elements.TextSet2D Elements.TextSet2D Elements.TextSet2D Elements.Image2D Elements.Text2D Elements.ShapeSet2D Elements.Shape2D Elements.Trail2D true Elements.Panel true Elements.Panel Elements.CheckBox Elements.CheckBox Elements.CheckBox Elements.CheckBox Elements.ComboBox 0)? opts[0]:""; // selected option if ( option =="user defined"){ showIslider=true; } else if ( option =="user defined off"){ showIslider=false; } //"I =-1.0","I =-0.8","I =-0.6","I =-0.4","I =-0.2","I =0","I =0.2","I =0.4","I =0.6","I =0.8","I =1.0" else if (option =="I =-1.0"){ magnitude1=-1; } else if (option =="I =-0.8"){ magnitude1=-0.8; } else if (option =="I =-0.6"){ magnitude1=-0.6; } else if (option =="I =-0.4"){ magnitude1=-0.4; } else if (option =="I =-0.2"){ magnitude1=-0.2; } else if (option =="I =0.0"){ magnitude1=0.0; } else if (option =="I =1.0"){ magnitude1=1; } else if (option =="I =0.8"){ magnitude1=0.8; } else if (option =="I =0.6"){ magnitude1=0.6; } else if (option =="I =0.4"){ magnitude1=0.4; } else if (option =="I =0.2"){ magnitude1=0.2; } else if (option =="magnetic field by current, I show"){ showbfieldcurrent=true; } else if (option =="magnetic field by current, I off"){ showbfieldcurrent=false; } else if ( option =="one magnet points right"){ xMagnet = 0; yMagnet = 0; selected[0]="θ₁ =0°"; ca = 0; cta=ca*a2c; cs=Math.cos(cta); sc=Math.sin(cta); computeField (); } else if ( option =="one magnet points up"){ xMagnet = 0; yMagnet = 0; selected[0]="θ₁ =90°"; ca = 90; cta=ca*a2c; cs=Math.cos(cta); sc=Math.sin(cta); computeField (); } else if ( option =="one magnet points left"){ xMagnet = 0; yMagnet = 0; selected[0]="θ₁ =180°"; ca = 180; cta=ca*a2c; cs=Math.cos(cta); sc=Math.sin(cta); computeField (); } else if ( option =="one magnet points down"){ xMagnet = 0; yMagnet = 0; selected[0]="θ₁ =-90°"; ca = -90; cta=ca*a2c; cs=Math.cos(cta); sc=Math.sin(cta); computeField (); } else if ( option =="compass show"){ showCompass=true; } else if (option =="compass off"){ showCompass=false; } else if ( option =="earth show"){ earth=true; } else if (option =="earth off"){ earth=false; } else if ( option =="magnetic force on wire , F show"){ magneticforcewireshow=true; } else if (option =="magnetic force on wire , F off"){ magneticforcewireshow=false; } else if ( option =="magnetic field set up by bar magnet show"){ magneticfieldbybarmagnetshow=true; } else if (option =="magnetic field set up by bar magnet off"){ magneticfieldbybarmagnetshow=false; } ]]> Elements.Button Elements.CheckBox true Elements.Panel Elements.Label Elements.ParsedField Elements.Slider Elements.ComboBox