Sample JAVA program to compute the electron's orbit of the lithium ion (Li+) of Bohr model.

Back to the lithium page
Top page ( correct Bohr model including the two electron atom )

If you copy and paste the program source code below into a text editor, you can easily compile and run this.
(This class file name is MathMethod, so save this text editor as "MathMethod.java", and compile it.)
In this program, we first input the initial x-coordinate r1 (in MM) of electron 1 and the absolute value of the total energy E ( in eV ) of the lithium ion.
Here we use the new units, ( 1 MM = 10-14 meter, 1 SS = 10-22 second, 1 MM/SS = 108 m/s ).
From the inputted values, this program outputs the last velocity ( VX,VY in MM/SS ) and number of the de Broglie's waves ( midWN ) contained in one quarter of the orbit.


import java.util.Scanner;
class MathMethod {
 public static void main(String[] args) {
 
 Scanner stdIn=new Scanner(System.in);     // input r1 and |E|
 System.out.println("r1 between nucleus and electron 1 (MM)? ");  
 double r=stdIn.nextDouble();
 System.out.println("total energy |E| in the Li+ (eV) ? ");  
 double E=stdIn.nextDouble();
 
 double me=9.1093826e-31; double nucle=1.1529*1.0e-26;
                                 //rm = reduced mass of an electron
 double rm=(2*me*nucle)/(2*(2*me+nucle)); 
 
 double pai=3.141592653589793; double epsi=8.85418781787346e-12;
 double h=6.62606896e-34; double ele=1.60217653e-19;

 for (int i=1;i < 100;i++) {      // repeat until r1=initial r1+100
                                
                             // calculation of initial VY from E and r1    
double poten=-(2*3*ele*ele)/(4*pai*epsi*r)+(ele*ele)/(4*pai*epsi*2*r);
                             
                             //vya= total E-potential energy  
double vya=-(E*1.60217646e-19)-poten*1.0e14; 
 if (vya > 0) {
                               // vyb=velocity from kinetic energy
 double vyb=Math.sqrt(vya/me); 
 double VY=vyb*1.0e-8;         // change m/sec to MM/SS
 double prexx=r; double VX=0.0; double WN=0.0; double preyy=0.0; 
 double yy,vk,preVY,preWN,midWN; double xx=0.0;
  
 do {
    xx=prexx+VX; yy=preyy+VY;        //electron 1 position after 1SS
    preVY=VY;preWN=WN ;
    vk=VX*VX+VY*VY;                  //calculation of WN from VX,VY 
    WN=WN+(rm*vk*1.0e-6)/h;                        
                                   //calculation of VX,VY from Coulomb force
    double ra=Math.sqrt(prexx*prexx+preyy*preyy);       
    double rb=Math.sqrt(4.0*prexx*prexx+2.0*preyy*preyy);
                                   // change MM to meter
    ra=ra*1.0e-14; rb=rb*1.0e-14; 
    prexx=prexx*1.0e-14; preyy=preyy*1.0e-14;
    double ac=(ele*ele)/(4*pai*epsi*rm);
                                          // change VX and VY (in MM/SS)
    VX=VX+1.0e-30*ac*prexx*(-3.0/(ra*ra*ra)+2.0/(rb*rb*rb));   
    VY=VY+1.0e-30*ac*preyy*(-3.0/(ra*ra*ra)+1.0/(rb*rb*rb));
    prexx=xx;preyy=yy;
  
   } while (xx >=0);              // electron has moved one quater of an orbit? 
   if (VY > -0.0001 && VY < 0.0001) {    // last VY condition           
  
  System.out.print("r1: "+r+"   ");
  System.out.printf("VX:%.5f", VX);
  System.out.printf("VY:%.5f", VY);
  System.out.printf("preVY:%.5f", preVY);
  midWN=(preWN+WN)/2; System.out.printf("midWN:%.5f\n", midWN);
    }
   }  r=r+1;
   }}}