Back to the beryllium page
Top page ( correct Bohr model including the two electron atom )
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 beryllium ion (Be+).
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| of the Be+ ion (eV) ? ");
double E=stdIn.nextDouble();
double me=9.1093826e-31;
double pai=3.141592653589793; double epsi=8.85418781787346e-12;
double h=6.62606896e-34; double ele=1.60217653e-19;
double ab=(ele*ele)/(4*pai*epsi); double ac=ab/me;
double Eb=-(4*ele*ele*ele*ele*me)/(32*epsi*epsi*h*h); // Eb=2S energy of Be+
double Rb=(4*epsi*h*h)/(2*pai*ele*ele*me); // Rb=2S radius of Be+
double Rbb=Rb*1.0e14;
double Rbc=Rbb/(Math.sqrt(2));
System.out.printf("Bohr radius in 2S electron of Be+:%.2f\n", Rbb);
for (int i=1;i <100;i++) { // repeat until r1=initial r1+100
double rr=r*1.0e-14; // change r(MM) to rr(meter)
// disb=distance between e1S and e2S
double disb=Math.sqrt(rr*rr+Rb*Rb);
double poten=-(2*4*ab)/rr+ab/(2*rr)+(2*ab)/disb-(4*ab)/(Rb);
//vya= total E - potential energy - 2S kinetic energy(-Eb)
double vya=-(E*1.60217646e-19)-poten+Eb;
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 xx,yy,vk,preVY,preWN,midWN; 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=number of de Broglie's waves
WN=WN+(me*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);
// rc=distance between e1 and 2Se
double rc=Math.sqrt(prexx*prexx+(preyy+Rbc)*(preyy+Rbc)+(Rbb*Rbb)/2);
// change MM to meter
ra=ra*1.0e-14; rb=rb*1.0e-14; rc=rc*1.0e-14;
prexx=prexx*1.0e-14; preyy=preyy*1.0e-14;
// change velocity (VX,VY)
VX=VX+1.0e-30*ac*(-(4.0*prexx)/(ra*ra*ra)+(2.0*prexx)/(rb*rb*rb)+prexx/(rc*rc*rc));
VY=VY+1.0e-30*ac*((-4.0*preyy)/(ra*ra*ra)+preyy/(rb*rb*rb)+(preyy+Rbc*1.0e-14)/(rc*rc*rc));
prexx=xx;preyy=yy;
} while (xx >= 0); //electron has moved one quater of an orbit?
if (VY > -0.001 && VY < 0.001) { // last VY condition
System.out.print("r1: "+r+" ");
System.out.printf("VX:%.5f", VX);
System.out.printf("preVY:%.5f", preVY);
System.out.printf("VY:%.5f", VY);
midWN=(preWN+WN)/2; System.out.printf("midWN:%.5f\n", midWN);
}} r=r+1;
}}}