import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.Scanner; public class twoato extends JPanel // various combination of two atoms { public static void main(String arg[]) { JFrame frame = new JFrame("Two-atomic molecule"); // set frame J2DPanel j2dpanel = new J2DPanel(); frame.getContentPane().add(j2dpanel); frame.setSize(1180,700); frame.setVisible(true); frame.setBackground(Color.black); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class J2DPanel extends JPanel implements ActionListener { double pai=3.141592653589793; double epsi=8.85418781787346e-12; double h=6.62606896e-34; double elc=1.60217653e-19; double me=9.1093826e-31; double suh=5291.0*5291.0; // suh=(Bohr radius)^2 JTextField elp[][]=new JTextField[7][11]; JTextField impho=new JTextField(7); // total V text JTextField mmpho[][]=new JTextField[2][3]; // nucleus text // imppo = distance (= nuc ) between electron and nucleus text JTextField imppo=new JTextField(7); JTextField charge=new JTextField(7); // charge Z text JTextField sou=new JTextField(7); // binding energy JTextField avew=new JTextField(7); // average de Broglie wave JTextField direc=new JTextField(7); // direct de Broglie wave JTextField atom=new JTextField(7); // A or B on the screen JTextField abdis=new JTextField(7); // internuclear distance JTextField kait[]=new JTextField[3]; JTextField bangle[]=new JTextField[11]; // bond angle text JButton b1=new JButton("x-y ang"); JButton b2=new JButton("x-z ang"); JButton b3=new JButton("y-z ang"); JButton b5=new JButton("AB change"); JButton b7=new JButton("A atom"); JButton b8=new JButton("B atom"); JButton b9=new JButton("internuc"); JButton bb1=new JButton("nuc"); JButton bb2=new JButton("charge Z"); String aato[]={"H","C","O","N","F","Si","S","P","Cl"}; String bato[]={"H","C","O","N","F","Si","S","P","Cl"}; JComboBox coom=new JComboBox(aato); JComboBox coomm=new JComboBox(bato); int marki[]=new int[3]; int mar=0; int abd=0; // marking double saia=4.22; int saik=4; double diam=6415.0; // kade[0, 1] = number of valence electrons in A and B int kade[]={4,4}; double rtw=Math.sqrt(2); double rth=Math.sqrt(3); double rsi=Math.sqrt(6); double rfi=Math.sqrt(5); double apr[][]=new double[7][11]; // parameters of A atom double bpr[][]=new double[7][11]; // parameters of B atom double intnuc=15351.0; // internuclear distance (MM) // nux[0,1][0-2] = coordinate of A, B nuclei // nux[0,1][3] = charge of A, B nuclei double nux[][]={{0, 0, 0, 4.22}, {intnuc, 0, 0,4.22}}; // te0=initial coodinate of hydrogen double te0[][]={{0, 0, 4500}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},{0, 0, 0}}; double hens = 6415.0; double henr =(hens*2.0)/rsi; double heno=(henr*rsi)/6.0; double hent=henr/rth; double henf=2.0*hent; // te1=initial coordinate of carbon double te1[][]={{hens, 0.0, 0.0}, {-heno, 0.0, henf}, {-heno, -henr, -hent}, {-heno, henr, -hent},{0,0,0},{0,0,0},{0,0,0}}; double henss=4596; double henrr=4596/rtw; // te2=initial coordinate of oxygen double te2[][]={{henrr, -henrr, 0.0}, {henrr, henrr, 0}, {-henrr, henrr, 0}, {-henrr, -henrr, 0}, {0, 0, -henss}, {0, 0, henss}, {0,0,0}}; // te3= initial coodinate of nitrogen double te3[][]={{-2666,4617.6, 0}, {-2666, -4617.6, 0}, {0, 0, 5332}, {5332, 0, 0}, {0, 0, -5332}, {0, 0, 0},{0, 0, 0}}; // te4= initial coordinate of fluorine double te4[][]={{2537,-3045, 563}, {2537, 3047, 563}, {-2537, 3047, 563}, {-2537, -3047, 563}, {0, 0, 4003}, {-2500, 0, -3127}, {2500, 0, -3127}}; public J2DPanel() { setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new GridLayout(12,12)); String vv,zww; int aaa=0; for (int el=0; el <=6; el++) { for (int pos=0; pos <=2; pos++) { elp[el][pos]=new JTextField(7); elp[el][pos].addActionListener(this); apr[el][pos]=0.0; bpr[el][pos]=0.0; }} for (int el=0; el <=6; el++) { // other parameters of each electron for (int pos=3; pos <=10; pos++) { elp[el][pos]=new JTextField(7); apr[el][pos]=0.0; bpr[el][pos]=0.0; }} // mmpho[0-2] = force components acting on nucleus for (int el=0; el <=1; el++) { for (int pos=0; pos <=2; pos++) { mmpho[el][pos]=new JTextField(7); }} for (int pos=0; pos <=2; pos++) { kait[pos]=new JTextField(7); } for (int pos=0; pos <=10; pos++) { bangle[pos]=new JTextField(7); } // layout String sihy[]={"eNo. ", "+X (MM)", "+Y (MM)", "+Z (MM)", "nuc (MM)", "V (eV)", "Force", "fx ", "fy", "fz", "direw", "Waves "}; // 1st line for (int el=0; el <=11; el++) { p.add(new Label(sihy[el])); } // 2nd - 8th line for (int el=0; el <=6; el++) { p.add(new Label("ele "+el+" ")); for (int pos=0; pos <=10; pos++) { p.add(elp[el][pos]); }} // 9th line p.add(new Label("A nuc ")); for (int pos=0; pos <=2; pos++) { p.add(mmpho[0][pos]); } p.add(new Label("B nuc ")); for (int pos=0; pos <=2; pos++) { p.add(mmpho[1][pos]); } p.add(new Label(" -- ")); p.add(new Label("average")); p.add(direc); p.add(avew); // 10th line p.add(b9); p.add(abdis); p.add(b1); p.add(kait[0]); p.add(b2); p.add(kait[1]); p.add(b3); p.add(kait[2]); p.add(bb1); p.add(imppo); p.add(bb2); p.add(charge); // 11th line p.add(b7); p.add(coom); p.add(b8); p.add(coomm); p.add(new Label("total V ")); p.add(impho); p.add(new Label("binding ")); p.add(sou); p.add(b5); p.add(atom); p.add(new Label(" -- ")); p.add(new Label(" -- ")); // 12th line p.add(new Label(" angle ")); for (int pos=0; pos <=10; pos++) { p.add(bangle[pos]); } coom.setSelectedItem("C"); coomm.setSelectedItem("C"); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b5.addActionListener(this); b7.addActionListener(this); b8.addActionListener(this); b9.addActionListener(this); bb1.addActionListener(this); bb2.addActionListener(this); add(p,"South"); imppo.setText(Double.toString(6415)); charge.setText(Double.toString(nux[0][3])); abdis.setText(Double.toString(intnuc)); kait[0].setText(Double.toString(0)); kait[1].setText(Double.toString(0)); kait[2].setText(Double.toString(0)); atom.setText("A"); for (int el=0; el <=6; el++) { double nnuc=Math.sqrt(te1[el][0]*te1[el][0]+te1[el][1]*te1[el][1]+te1[el][2]*te1[el][2]); aaa=(int)(10*nnuc); nnuc=aaa/10.0; // show distance between nuclei and electrons elp[el][3].setText("nuc "+Double.toString(nnuc)); for (int jou=0; jou <=2; jou++) { apr[el][jou]=te1[el][jou]+nux[0][jou]; bpr[el][jou]=te1[el][jou]+nux[1][jou]; // show initial coordinate aaa=(int)(100*te1[el][jou]); double coordi=aaa/100.0; elp[el][jou].setText(Double.toString(coordi)); }} } // public J2DPanel() end public void actionPerformed(ActionEvent e) { // when textboxes change String ss; ss=" "; double Rf1=0.0; mar=0; if (e.getSource() == bb2) { // charge Z change ss=charge.getText(); nux[abd][3]=Double.parseDouble(ss); } // abd = atom A (= 0) or B (= 1) on screen if (e.getSource() == b9) { // internuclear distance change ss=abdis.getText(); double intn=Double.parseDouble(ss); for (int ba=0; ba <=kade[1]-1; ba++) { bpr[ba][0] = bpr[ba][0] - intnuc + intn ; } // kade[1] = number of valence electrons in B intnuc=intn; nux[1][0]=intnuc; } if (e.getSource() == b5) { // A B atoms change on screen if ( abd==0 ) { abd=1; atom.setText("B"); } else { abd=0; atom.setText("A"); } mar=1; double cha=nux[abd][3]; charge.setText(Double.toString(cha)); diam=4500; if ( kade[abd]==4) { diam=6415; if ( cha > 5 ) { diam=11500; } } if ( kade[abd]==6) { diam=4596; if ( cha > 7 ) { diam=8622; } } if ( kade[abd]==5) { diam=5332; if ( cha > 6 ) { diam=9825; } } if ( kade[abd]==7) { diam=4003; if ( cha > 8 ) { diam=7640; } } imppo.setText(Double.toString(diam)); } if (e.getSource() == b1) { mar=2; } // rotation on each plane if (e.getSource() == b2) { mar=3; } if (e.getSource() == b3) { mar=4; } if (e.getSource() == bb1) { mar=9; } // nuc-ele distance change if (e.getSource() == b7) { mar=7; // A atom change ss=(String)coom.getSelectedItem(); if (ss=="H") {saia=1.0; saik=1; diam=4500; } if (ss=="C") {saia=4.22; saik=4; diam=6415; } if (ss=="O") {saia=6.273; saik=6; diam=4596; } if (ss=="N") {saia=5.25; saik=5; diam=5332; } if (ss=="F") {saia=7.3; saik=7; diam=4003; } if (ss=="Si") {saia=5.05; saik=4; diam=11500;} if (ss=="S") {saia=7.18; saik=6; diam=8622;} if (ss=="P") {saia=6.12; saik=5; diam=9825;} if (ss=="Cl") {saia=8.26; saik=7; diam=7640;} imppo.setText(Double.toString(diam)); charge.setText(Double.toString(saia)); } if (e.getSource() == b8) { mar=8; // B atom change ss=(String)coomm.getSelectedItem(); if (ss=="H") {saia=1.0; saik=1; diam=4500; } if (ss=="C") {saia=4.22; saik=4; diam=6415; } if (ss=="O") {saia=6.273; saik=6; diam=4596; } if (ss=="N") {saia=5.25; saik=5; diam=5332; } if (ss=="F") {saia=7.3; saik=7; diam=4003; } if (ss=="Si") {saia=5.05; saik=4; diam=11500;} if (ss=="S") {saia=7.18; saik=6; diam=8622;} if (ss=="P") {saia=6.12; saik=5; diam=9825;} if (ss=="Cl") {saia=8.26; saik=7; diam=7640;} imppo.setText(Double.toString(diam)); charge.setText(Double.toString(saia)); } repaint(); } public void update(Graphics g) { paint(g); } public void paintComponent(Graphics g) { double kro,krr, pot,gx,gy,gz,ggx,ggy,ggz,ttav,toav, aid; double toavv=0; kro=0.0; gx=0.0;gy=0.0;gz=0.0;ggx=0.0; ggy=0.0; ggz=0.0; int ex,ey,ez; String ww, wa, wb; double rhp[][]= {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}, {0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}, {0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}, {0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}, {0,0,0,0,0,0,0}}; double rpp[][]= {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}, {0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}, {0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}, {0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}, {0,0,0,0,0,0,0}}; double mmp[][]={{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0}}; double mpp[][]={{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0}}; double teqq[][]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}, {0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}; double teqqq[][]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}, {0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}; double noxx[][]={{0,0,0,0,0},{0,0,0,0,0}}; if ( mar !=1 ) { // get electron coordinates from text for (int yp=0; yp <=6; yp++) { for (int kj=0; kj <=2; kj++) { ww=elp[yp][kj].getText(); if (abd == 0) { // apr[0-6][0-2] = A atom electron coorinate apr[yp][kj]=Double.parseDouble(ww); } if (abd == 1) { // bpr[0-6][0-2] = B atom electron coodinate bpr[yp][kj]=Double.parseDouble(ww); if (kj==0) { bpr[yp][kj] = bpr[yp][kj]+intnuc;} } }} } // "nuc" = distance between nucleus and electron change ww=imppo.getText(); gz=Double.parseDouble(ww); gy=0; if (mar==9) { for (int yp=0; yp <=6; yp++) { gx=Math.sqrt((apr[yp][0]-nux[0][0])*(apr[yp][0]-nux[0][0])+ (apr[yp][1]-nux[0][1])*(apr[yp][1]-nux[0][1])+(apr[yp][2]-nux[0][2])*(apr[yp][2]-nux[0][2])); if (abd==1) { gx=Math.sqrt((bpr[yp][0]-nux[1][0])*(bpr[yp][0]-nux[1][0])+ (bpr[yp][1]-nux[1][1])*(bpr[yp][1]-nux[1][1])+(bpr[yp][2]-nux[1][2])*(bpr[yp][2]-nux[1][2])); } if (gx==0) {gx=50;} for (int kj=0; kj <=2; kj++) { if (abd==0) { gy=apr[yp][kj]; gy=(gy*gz)/gx; apr[yp][kj]=gy; } if (abd==1) { gy=bpr[yp][kj]-nux[1][kj]; gy=(gy*gz)/gx; bpr[yp][kj]=gy+nux[1][kj]; } }} mar=0; } if (mar==7) { // A atom's kind change kade[0]=saik; // kate[0] = number of A atom valence electrons nux[0][3]=saia; // nux[0][3] = charge of A nucleus for (int yp=0; yp <=6; yp++) { for (int kj=0; kj <=2; kj++) { if (kade[0]==1) { gx=te0[yp][kj];} // hydrogen coordinate if (kade[0]==4) { gx=te1[yp][kj];} // carbon if (kade[0]==6) { gx=te2[yp][kj];} // oxygen if (kade[0]==5) { gx=te3[yp][kj];} // nitrogen if (kade[0]==7) { gx=te4[yp][kj];} // fluorine apr[yp][kj]=gx; // apr[][0-2] = A atom coodinate } ggx=Math.sqrt(apr[yp][0]*apr[yp][0]+apr[yp][1]*apr[yp][1]+apr[yp][2]*apr[yp][2]); for (int kj=0; kj <=2; kj++) { apr[yp][kj]=(apr[yp][kj]*diam)/ggx; } } } if (mar==8) { // B atom change kade[1]=saik; nux[1][3]=saia; for (int yp=0; yp <=6; yp++) { for (int kj=0; kj <=2; kj++) { if (kade[1]==1) { gx=te0[yp][kj];} if (kade[1]==4) { gx=te1[yp][kj];} if (kade[1]==6) { gx=te2[yp][kj];} if (kade[1]==5) { gx=te3[yp][kj];} if (kade[1]==7) { gx=te4[yp][kj];} bpr[yp][kj]=gx; } ggx=Math.sqrt(bpr[yp][0]*bpr[yp][0]+bpr[yp][1]*bpr[yp][1]+bpr[yp][2]*bpr[yp][2]); for (int kj=0; kj <=2; kj++) { bpr[yp][kj]=(bpr[yp][kj]*diam)/ggx; if (kj==0) { bpr[yp][kj]=bpr[yp][kj]+nux[1][kj];} } } } double ccos=0.0; double ssin=0.0; if (mar==2) { // rotation of atom in x-y plane ww=kait[0].getText(); // rotation angle gz=Double.parseDouble(ww); ccos=Math.cos((gz*pai)/180.0); ssin=Math.sin((gz*pai)/180.0); for (int yp=0; yp <=6; yp++) { gx=apr[yp][0]; gy=apr[yp][1]; if (abd==1) { gx=bpr[yp][0]-nux[1][0]; gy=bpr[yp][1]; } ggx=gx*ccos-gy*ssin; ggy=gx*ssin+gy*ccos; if (abd==0) { apr[yp][0]=ggx; apr[yp][1]=ggy;} if (abd==1) { bpr[yp][0]=ggx+nux[1][0]; bpr[yp][1]=ggy;} } } if (mar==3) { // rotation of atom in x-z plane ww=kait[1].getText(); gz=Double.parseDouble(ww); ccos=Math.cos((gz*pai)/180.0); ssin=Math.sin((gz*pai)/180.0); for (int yp=0; yp <=6; yp++) { gx=apr[yp][0]; gy=apr[yp][2]; if (abd==1) { gx=bpr[yp][0]-nux[1][0]; gy=bpr[yp][2]; } ggx=gx*ccos-gy*ssin; ggy=gx*ssin+gy*ccos; if (abd==0) { apr[yp][0]=ggx; apr[yp][2]=ggy;} if (abd==1) { bpr[yp][0]=ggx+nux[1][0]; bpr[yp][2]=ggy;} }} if (mar==4) { // rotation of atom in y-z plane ww=kait[2].getText(); gz=Double.parseDouble(ww); ccos=Math.cos((gz*pai)/180.0); ssin=Math.sin((gz*pai)/180.0); for (int yp=0; yp <=6; yp++) { gx=apr[yp][1]; gy=apr[yp][2]; if (abd==1) { gx=bpr[yp][1]; gy=bpr[yp][2]; } ggx=gx*ccos-gy*ssin; ggy=gx*ssin+gy*ccos; if (abd==0) { apr[yp][1]=ggx; apr[yp][2]=ggy;} if (abd==1) { bpr[yp][1]=ggx; bpr[yp][2]=ggy;} }} // noxx[0][0-2] = center of A valence electrons if (kade[0] != 1 ) { for (int kj=0; kj <=2; kj++) { for (int yp=0; yp <=kade[0]-1; yp++) { noxx[0][kj]=noxx[0][kj] + apr[yp][kj]; } noxx[0][kj]=noxx[0][kj]/kade[0]; } } // noxx[0][0-2] = center of B valence electrons if (kade[1] != 1 ) { for (int kj=0; kj <=2; kj++) { for (int yp=0; yp <=kade[1]-1; yp++) { noxx[1][kj]=noxx[1][kj] + bpr[yp][kj]; } noxx[1][kj]=noxx[1][kj]/kade[1]; } } for (int yp=0; yp <=6; yp++) { // show relative coordinates for (int kj=0; kj <=2; kj++) { gx=apr[yp][kj]; if (abd==1) { gx = bpr[yp][kj]-nux[1][kj]; } if ( yp > kade[abd]-1 ) { gx = 0; } ex=(int)(100*gx); gx=ex/100.0; elp[yp][kj].setText(Double.toString(gx)); }} int ank=0; if (kade[abd] != 1 ) { // show bond angle for (int yp=0; yp <=3; yp++) { for (int kj=0; kj <=3; kj++) { if ( yp < kj ) { gx=Math.sqrt(apr[yp][0]*apr[yp][0]+apr[yp][1]*apr[yp][1]+apr[yp][2]*apr[yp][2]); gy=Math.sqrt(apr[kj][0]*apr[kj][0]+apr[kj][1]*apr[kj][1]+apr[kj][2]*apr[kj][2]); gz=Math.sqrt((apr[yp][0]-apr[kj][0])*(apr[yp][0]-apr[kj][0])+(apr[yp][1]-apr[kj][1] )*(apr[yp][1]-apr[kj][1])+(apr[yp][2]-apr[kj][2])*(apr[yp][2]-apr[kj][2])); if (abd==1) { gx=Math.sqrt((bpr[yp][0]-intnuc)*(bpr[yp][0]-intnuc)+bpr[yp][1]*bpr[yp][1]+bpr[yp][2]*bpr[yp][2]); gy=Math.sqrt((bpr[kj][0]-intnuc)*(bpr[kj][0]-intnuc)+bpr[kj][1]*bpr[kj][1]+bpr[kj][2]*bpr[kj][2]); gz=Math.sqrt((bpr[yp][0]-bpr[kj][0])*(bpr[yp][0]-bpr[kj][0])+(bpr[yp][1]-bpr[kj][1] )*(bpr[yp][1]-bpr[kj][1])+(bpr[yp][2]-bpr[kj][2])*(bpr[yp][2]-bpr[kj][2])); } aid=(gx*gx+gy*gy-gz*gz)/(2.0*gx*gy); aid=(Math.acos(aid)*180.0)/pai; wa=Integer.toString(yp); wb=Integer.toString(kj); ex=(int)(10*aid); aid=ex/10.0; bangle[ank].setText(wa+"-n-"+wb+" "+Double.toString(aid)); ank=ank+1; }}} if ( kade[abd] !=4 ) { gx=Math.sqrt(apr[4][0]*apr[4][0]+apr[4][1]*apr[4][1]+apr[4][2]*apr[4][2]); if (abd==1) { gx=Math.sqrt((bpr[4][0]-intnuc)*(bpr[4][0]-intnuc)+bpr[4][1]*bpr[4][1]+bpr[4][2]*bpr[4][2]); } for (int yp=0; yp <=2; yp++) { gy=Math.sqrt(apr[yp][0]*apr[yp][0]+apr[yp][1]*apr[yp][1]+apr[yp][2]*apr[yp][2]); gz=Math.sqrt((apr[yp][0]-apr[4][0])*(apr[yp][0]-apr[4][0])+(apr[yp][1]-apr[4][1] )*(apr[yp][1]-apr[4][1])+(apr[yp][2]-apr[4][2])*(apr[yp][2]-apr[4][2])); if (abd==1) { gy=Math.sqrt((bpr[yp][0]-intnuc)*(bpr[yp][0]-intnuc)+bpr[yp][1]*bpr[yp][1]+bpr[yp][2]*bpr[yp][2]); gz=Math.sqrt((bpr[yp][0]-bpr[4][0])*(bpr[yp][0]-bpr[4][0])+(bpr[yp][1]-bpr[4][1] )*(bpr[yp][1]-bpr[4][1])+(bpr[yp][2]-bpr[4][2])*(bpr[yp][2]-bpr[4][2])); } aid=(gx*gx+gy*gy-gz*gz)/(2.0*gx*gy); aid=(Math.acos(aid)*180.0)/pai; wa=Integer.toString(yp); wb=Integer.toString(4); ex=(int)(10*aid); aid=ex/10.0; bangle[yp+6].setText(wa+"-n-"+wb+" "+Double.toString(aid)); } if (kade[abd] !=5) { for (int yp=4; yp <=5; yp++) { if ( yp==4 || kade[abd]==7 ) { gx=Math.sqrt(apr[yp][0]*apr[yp][0]+apr[yp][1]*apr[yp][1]+apr[yp][2]*apr[yp][2]); gy=Math.sqrt(apr[yp+1][0]*apr[yp+1][0]+apr[yp+1][1]*apr[yp+1][1]+apr[yp+1][2]*apr[yp+1][2]); gz=Math.sqrt((apr[yp][0]-apr[yp+1][0])*(apr[yp][0]-apr[yp+1][0])+(apr[yp][1]-apr[yp+1][1] )*(apr[yp][1]-apr[yp+1][1])+(apr[yp][2]-apr[yp+1][2])*(apr[yp][2]-apr[yp+1][2])); if (abd==1) { gx=Math.sqrt((bpr[yp][0]-intnuc)*(bpr[yp][0]-intnuc)+bpr[yp][1]*bpr[yp][1]+bpr[yp][2]*bpr[yp][2]); gy=Math.sqrt((bpr[yp+1][0]-intnuc)*(bpr[yp+1][0]-intnuc)+bpr[yp+1][1]*bpr[yp+1][1]+bpr[yp+1][2]*bpr[yp+1][2]); gz=Math.sqrt((bpr[yp][0]-bpr[yp+1][0])*(bpr[yp][0]-bpr[yp+1][0])+(bpr[yp][1]-bpr[yp+1][1] )*(bpr[yp][1]-bpr[yp+1][1])+(bpr[yp][2]-bpr[yp+1][2])*(bpr[yp][2]-bpr[yp+1][2])); } aid=(gx*gx+gy*gy-gz*gz)/(2.0*gx*gy); aid=(Math.acos(aid)*180.0)/pai; wa=Integer.toString(yp); wb=Integer.toString(yp+1); ex=(int)(10*aid); aid=ex/10.0; bangle[yp+5].setText(wa+"-n-"+wb+" "+Double.toString(aid)); }}} } } for (int yp=0; yp <=10; yp++) { if (kade[abd] ==1 ) {bangle[yp].setText(" 0 ");} if (kade[abd] <=4 && yp > 5 ) {bangle[yp].setText(" 0 ");} if (kade[abd] <=5 && yp > 8 ) {bangle[yp].setText(" 0 ");} if (kade[abd] <=6 && yp > 9 ) {bangle[yp].setText(" 0 ");} } toav=0.0; // toav=total potential energy double ppot; // interaction between electrons 0-6 in atom A for (int yp=0; yp <=kade[0]-1; yp++) { for (int kj=0; kj <=kade[0]-1; kj++) { if (yp < kj ) { // kro=distance between electrons kro=Math.sqrt((apr[yp][0]-apr[kj][0])*(apr[yp][0]-apr[kj][0])+ (apr[yp][1]-apr[kj][1])*(apr[yp][1]-apr[kj][1])+ (apr[yp][2]-apr[kj][2])*(apr[yp][2]-apr[kj][2])); if (kro==0) {kro=5000.0;} // ppot=repulsive potential energy (eV) ppot=(elc*elc*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; // rhp[][3]= potential energy of each electron rhp[yp][3]=rhp[yp][3]+ppot/2.0; rhp[kj][3]=rhp[kj][3]+ppot/2.0; // teqq[][3] = potential energy only in A atom teqq[yp][3]=teqq[yp][3]+ppot/2.0; teqq[kj][3]=teqq[kj][3]+ppot/2.0; for (int jou=0; jou <=2; jou++) { // rhp[][0-2]=force component acting on each electron ggx=(suh*(apr[yp][jou]-apr[kj][jou]))/(kro*kro*kro); rhp[yp][jou]=rhp[yp][jou]+ggx; rhp[kj][jou]=rhp[kj][jou]-ggx; // teqq[][0-2] = force component only in A atom teqq[yp][jou]=teqq[yp][jou]+ggx; teqq[kj][jou]=teqq[kj][jou]-ggx; } }}} // interaction between electrons in B atom for (int yp=0; yp <=kade[1]-1; yp++) { for (int kj=0; kj <=kade[1]-1; kj++) { if (yp < kj ) { // kro=distance between electrons kro=Math.sqrt((bpr[yp][0]-bpr[kj][0])*(bpr[yp][0]-bpr[kj][0])+ (bpr[yp][1]-bpr[kj][1])*(bpr[yp][1]-bpr[kj][1])+ (bpr[yp][2]-bpr[kj][2])*(bpr[yp][2]-bpr[kj][2])); if (kro==0) {kro=5000.0;} // ppot=repulsive potential energy (eV) ppot=(elc*elc*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; // rhp[7-13][3]= potential energy of each electron (B) rhp[yp+7][3]=rhp[yp+7][3]+ppot/2.0; rhp[kj+7][3]=rhp[kj+7][3]+ppot/2.0; // teqq[7-13][3] = potential energy only in B atom teqq[yp+7][3]=teqq[yp+7][3]+ppot/2.0; teqq[kj+7][3]=teqq[kj+7][3]+ppot/2.0; for (int jou=0; jou <=2; jou++) { // rhp[][0-2]=force component acting on each electron ggx=(suh*(bpr[yp][jou]-bpr[kj][jou]))/(kro*kro*kro); rhp[yp+7][jou]=rhp[yp+7][jou]+ggx; rhp[kj+7][jou]=rhp[kj+7][jou]-ggx; // teqq[7-13][0-2] = force component only in B atom teqq[yp+7][jou]=teqq[yp+7][jou]+ggx; teqq[kj+7][jou]=teqq[kj+7][jou]-ggx; } }}} double zenf=0.0; // interaction between A and B electrons for (int yp=0; yp <=kade[0]-1; yp++) { for (int kj=0; kj <=kade[1]-1; kj++) { kro=Math.sqrt((apr[yp][0]-bpr[kj][0])*(apr[yp][0]-bpr[kj][0])+ (apr[yp][1]-bpr[kj][1])*(apr[yp][1]-bpr[kj][1])+ (apr[yp][2]-bpr[kj][2])*(apr[yp][2]-bpr[kj][2])); if (kro==0) {kro=5000.0;} // ppot=repulsive potential energy (eV) ppot=(elc*elc*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; // rhp[][3]= potential energy of each electron rhp[yp][3]=rhp[yp][3]+ppot/2.0; rhp[kj+7][3]=rhp[kj+7][3]+ppot/2.0; for (int jou=0; jou <=2; jou++) { // force component ggx=(suh*(apr[yp][jou]-bpr[kj][jou]))/(kro*kro*kro); rhp[yp][jou]=rhp[yp][jou]+ggx; rhp[kj+7][jou]=rhp[kj+7][jou]-ggx; // zenf = x component force acting on overall A atom if (jou==0) {zenf=zenf+ggx;} } }} // ----- interaction between nucleus and A electron for (int yp=0; yp <=kade[0]-1; yp++) { for (int rv=0; rv <=1; rv++) { // kro=distance between nucleus and electron kro=Math.sqrt((apr[yp][0]-nux[rv][0])*(apr[yp][0]-nux[rv][0])+ (apr[yp][1]-nux[rv][1])*(apr[yp][1]-nux[rv][1])+ (apr[yp][2]-nux[rv][2])*(apr[yp][2]-nux[rv][2])); if (kro == 0) {kro=5000.0;} ex=(int)(kro*10); double dinu=ex/10.0; if ( abd==0 && rv==0 ) { // show distance between nucleus and ele elp[yp][3].setText("nuc "+Double.toString(dinu)); } // ppot = each attractive potential energy ppot=-(elc*elc*nux[rv][3]*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; rhp[yp][3]=rhp[yp][3]+ppot; // rhp[][6] = potential energy between another nucleus if (rv==1) { rhp[yp][6]=rhp[yp][6]+ppot;} // ggx=force component between nucleus and electron for (int jou=0; jou <=2; jou++) { ggx=(suh*nux[rv][3]*(apr[yp][jou]-nux[rv][jou]))/(kro*kro*kro); rhp[yp][jou]=rhp[yp][jou]-ggx; // mmp[][0-2] = force component acting on each nucleus mmp[rv][jou]=mmp[rv][jou]+ggx; if (jou==0 && rv==1 ) { zenf=zenf -ggx; } }}} // interaction between B electrons and nuclei for (int yp=0; yp <=kade[1]-1; yp++) { for (int rv=0; rv <=1; rv++) { // kro=distance between nucleus and electron kro=Math.sqrt((bpr[yp][0]-nux[rv][0])*(bpr[yp][0]-nux[rv][0])+ (bpr[yp][1]-nux[rv][1])*(bpr[yp][1]-nux[rv][1])+ (bpr[yp][2]-nux[rv][2])*(bpr[yp][2]-nux[rv][2])); if (kro == 0) {kro=5000.0;} ex=(int)(kro); if ( abd==1 && rv==1 ) { elp[yp][3].setText("nuc "+Integer.toString(ex)); } // ppot = each attractive potential energy ppot=-(elc*elc*nux[rv][3]*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; rhp[yp+7][3]=rhp[yp+7][3]+ppot; if (rv==0) { rhp[yp+7][6]=rhp[yp+7][6]+ppot;} // ggx=force component between nucleus and electron for (int jou=0; jou <=2; jou++) { ggx=(suh*nux[rv][3]*(bpr[yp][jou]-nux[rv][jou]))/(kro*kro*kro); rhp[yp+7][jou]=rhp[yp+7][jou]-ggx; mmp[rv][jou]=mmp[rv][jou]+ggx; if (jou==0 && rv==0 ) { zenf=zenf + ggx;} }}} // internuclear interaction ppot=(elc*elc*nux[0][3]*nux[1][3] *6.241509e18)/(4.0*pai*epsi*intnuc*1.0e-14); toav=toav+ppot; ggx=(suh*nux[0][3]*nux[1][3])/(intnuc*intnuc); mmp[0][0]=mmp[0][0]-ggx; mmp[1][0]=mmp[1][0]+ggx; zenf = zenf - ggx ; // distribute internuclear V to electron based on rhp[][6] gx=0.0; for (int yp=0; yp <= kade[0]-1; yp++) { gx=gx+rhp[yp][6]; } for (int yp=0; yp <= kade[1]-1; yp++) { gx=gx+rhp[yp+7][6]; } for (int rv=0; rv <= 1; rv++) { for (int yp=0; yp <= kade[rv]-1; yp++) { rhp[yp+rv*7][3]=rhp[yp+rv*7][3]+(ppot*rhp[yp+rv*7][6])/gx ; }} // interaction between A electrons and their center nuc if ( kade[0] != 1 ) { for (int yp=0; yp <= kade[0]-1; yp++) { kro=Math.sqrt((apr[yp][0]-noxx[0][0])*(apr[yp][0]-noxx[0][0])+ (apr[yp][1]-noxx[0][1])*(apr[yp][1]-noxx[0][1])+ (apr[yp][2]-noxx[0][2])*(apr[yp][2]-noxx[0][2])); if (kro == 0) {kro=5000.0;} ppot=-(elc*elc*nux[0][3]*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); teqq[yp][3]=teqq[yp][3] + ppot; for (int jou=0; jou <=2; jou++) { ggx=(suh*nux[0][3]*(apr[yp][jou]-noxx[0][jou]))/(kro*kro*kro); teqq[yp][jou]=teqq[yp][jou]-ggx; } } } // interaction between B electrons and their center nuc if ( kade[1] != 1 ) { for (int yp=0; yp <= kade[1]-1; yp++) { kro=Math.sqrt((bpr[yp][0]-noxx[1][0])*(bpr[yp][0]-noxx[1][0])+ (bpr[yp][1]-noxx[1][1])*(bpr[yp][1]-noxx[1][1])+ (bpr[yp][2]-noxx[1][2])*(bpr[yp][2]-noxx[1][2])); if (kro == 0) {kro=5000.0;} ppot=-(elc*elc*nux[1][3]*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); teqq[yp+7][3]=teqq[yp+7][3] + ppot; for (int jou=0; jou <=2; jou++) { ggx=(suh*nux[1][3]*(bpr[yp][jou]-noxx[1][jou]))/(kro*kro*kro); teqq[yp+7][jou]=teqq[yp+7][jou]-ggx; } } } toavv=toav; ex=(int)(1000*toav); ggx=ex/1000.0; impho.setText("tV "+Double.toString(ggx)); // show total V (eV) double free[]={148.025,148.025}; for (int frr=0; frr <=1; frr++) { if (nux[frr][3] == 1.0) { free[frr]= 13.606; } if (nux[frr][3] == 5.05) { free[frr]= 103.132; } if (nux[frr][3] == 6.273) { free[frr]= 433.107; } if (nux[frr][3] == 7.18) { free[frr]= 276.358; } if (nux[frr][3] == 5.25) { free[frr]= 266.948; } if (nux[frr][3] == 6.12) { free[frr]= 176.929; } if (nux[frr][3] == 7.3) { free[frr]= 658.836; } if (nux[frr][3] == 8.26) { free[frr]= 408.88; } } double bindd= (-toav-free[0]*2.0-free[1]*2.0)*0.5; ex=(int)(1000*bindd); ggx=ex/1000.0; sou.setText(Double.toString(ggx) + " eV" ); if ( kade[0]==1 && kade[1]==1 ) { sou.setText(" "); } // show forces acting on electrons for (int rv=0; rv <=kade[abd]-1; rv++) { gx=Math.sqrt((apr[rv][0]-nux[0][0])*(apr[rv][0]-nux[0][0])+ (apr[rv][1]-nux[0][1])*(apr[rv][1]-nux[0][1])+(apr[rv][2]-nux[0][2])*(apr[rv][2]-nux[0][2])); // gy=forces toward nucleus (CF) gy=-(rhp[rv][0]*apr[rv][0]+rhp[rv][1]*apr[rv][1]+rhp[rv][2]*apr[rv][2])/gx; if (abd==1) { gx=Math.sqrt((bpr[rv][0]-nux[1][0])*(bpr[rv][0]-nux[1][0])+ (bpr[rv][1]-nux[1][1])*(bpr[rv][1]-nux[1][1])+(bpr[rv][2]-nux[1][2])*(bpr[rv][2]-nux[1][2])); gy=-(rhp[rv+7][0]*(bpr[rv][0]-nux[1][0])+rhp[rv+7][1]*bpr[rv][1]+rhp[rv+7][2]*bpr[rv][2])/gx; } ex=(int)(1000*gy); ww="CF "; elp[rv][5].setText(ww+Integer.toString(ex)); // show forces other than CF for (int jou=0; jou <=2; jou++) { gz=rhp[rv][jou]-(gy*(nux[0][jou]-apr[rv][jou]))/gx; if (abd==1) { gz=rhp[rv+7][jou]-(gy*(nux[1][jou]-bpr[rv][jou]))/gx; } if (kade[abd]==1 && jou==0) { gz=rhp[rv+abd*7][0]; } ex=(int)(1000*gz); elp[rv][jou+6].setText(Integer.toString(ex)); } } for (int rv=0; rv <=1; rv++) { for (int jou=0; jou <=2; jou++) { // show forces acting on nucleus ex=(int)(1000*mmp[rv][jou]); ww=" "; if (jou==0) {ww="FX=";} if (jou==1) {ww="FY=";} if (jou==2) {ww="FZ=";} mmpho[rv][jou].setText(ww+Integer.toString(ex)); }} // show potential energy of each electron for (int rv=0; rv <=kade[abd]-1; rv++) { ex=(int)(100*rhp[rv][3]); ggx=ex/100.0; if (abd==1) { ex=(int)(100*rhp[rv+7][3]); ggx=ex/100.0; } elp[rv][4].setText("V "+Double.toString(ggx)); } // show de Broglie wave double gouk=0.0; double goukk=0.0; double gggx,gggy,gggz; for (int rv=0; rv <=kade[abd]-1; rv++) { gz=Math.sqrt(rhp[rv+abd*7][0]*rhp[rv+abd*7][0]+rhp[rv+abd*7][1]*rhp[rv+abd*7][1]+rhp[rv+abd*7][2]*rhp[rv+abd*7][2]); gggz=gz; if ( kade[abd] != 1 ) { gz=Math.sqrt(teqq[rv+abd*7][0]*teqq[rv+abd*7][0]+teqq[rv+abd*7][1]*teqq[rv+abd*7][1]+teqq[rv+abd*7][2]*teqq[rv+abd*7][2]); } // gy=forces (N) gy=(gz*elc*elc)/(4.0*pai*epsi*suh*1.0e-28); gggy=(gggz*elc*elc)/(4.0*pai*epsi*suh*1.0e-28); // gx=velocity (m/s) of each electron gx=Math.sqrt((-1.0*rhp[rv+abd*7][3]*1.602177e-19)/me); gggx=gx; if ( kade[abd] != 1 ) { gx=Math.sqrt((-1.0*teqq[rv+abd*7][3]*1.602177e-19)/me); } ggx=(me*gx*gx)/gy; // ggy=number of de Broglie's wave in one orbit double debroglie = h/(me*gx); ggy=(2.0*pai*ggx)/debroglie; gouk=gouk+ggy; ex=(int)(ggy*10000); ggz=ex/10000.0; rhp[rv+abd*7][5]=ggz; elp[rv][10].setText("wn "+Double.toString(ggz)); ggx=(me*gggx*gggx)/gggy; debroglie = h/(me*gggx); ggy=(2*pai*ggx)/debroglie; // number of de Broglie's wave (all direct) goukk=goukk+ggy; ex=(int)(ggy*10000); ggz=ex/10000.0; elp[rv][9].setText("di "+Double.toString(ggz)); } gouk=gouk/kade[abd]; ex=(int)(gouk*10000); gouk=ex/10000.0; avew.setText("ave "+Double.toString(gouk)); goukk=goukk/kade[abd]; ex=(int)(goukk*10000); goukk=ex/10000.0; direc.setText("ave "+Double.toString(goukk)); for (int yp=2; yp <=6; yp++) { for (int kj=3; kj <=10; kj++) { if (kade[abd] ==1) {elp[yp][kj].setText(" 0 ");} if (kade[abd] <=4 && yp > 3 ) {elp[yp][kj].setText(" 0 ");} if (kade[abd] <=5 && yp > 4 ) {elp[yp][kj].setText(" 0 ");} if (kade[abd] <=6 && yp > 5 ) {elp[yp][kj].setText(" 0 ");} }} double app[][]=new double[7][11]; double bpp[][]=new double[7][11]; if ( kade[abd] == 1 ) { // hydrogen parameter after moving if (kade[0]==1) { gx=Math.sqrt(rhp[0][1]*rhp[0][1]+rhp[0][2]*rhp[0][2]); gy=Math.sqrt(apr[0][1]*apr[0][1]+apr[0][2]*apr[0][2]); // hyrogen electron moves in x direction by force app[0][0]=apr[0][0]+(rhp[0][0] * gy*2)/gx; } else { app[0][0]=apr[0][0]; } app[0][1]=apr[0][1]; app[0][2]=apr[0][2]; if (kade[1]==1) { gx=Math.sqrt(rhp[7][1]*rhp[7][1]+rhp[7][2]*rhp[7][2]); gy=Math.sqrt(bpr[0][1]*bpr[0][1]+bpr[0][2]*bpr[0][2]); bpp[0][0]=bpr[0][0]+(rhp[7][0] * gy*2)/gx; } else { bpp[0][0]=bpr[0][0]; } bpp[0][1]=bpr[0][1]; bpp[0][2]=bpr[0][2]; for (int rv=1; rv <=6; rv++) { for (int jou=0; jou <=2; jou++) { app[rv][jou]=apr[rv][jou]; bpp[rv][jou]=bpr[rv][jou]; }} toav=0.0; // toav= total potential energy after moving for (int yp=0; yp <=kade[0]-1; yp++) { // interaction between A ale for (int kj=0; kj <=kade[0]-1; kj++) { if (yp < kj ) { // kro=distance between electrons kro=Math.sqrt((app[yp][0]-app[kj][0])*(app[yp][0]-app[kj][0])+ (app[yp][1]-app[kj][1])*(app[yp][1]-app[kj][1])+ (app[yp][2]-app[kj][2])*(app[yp][2]-app[kj][2])); if (kro==0) {kro=5000.0;} // ppot=repulsive potential energy (eV) ppot=(elc*elc*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; rpp[yp][3]=rpp[yp][3]+ppot/2.0; rpp[kj][3]=rpp[kj][3]+ppot/2.0; for (int jou=0; jou <=2; jou++) { ggx=(suh*(app[yp][jou]-app[kj][jou]))/(kro*kro*kro); rpp[yp][jou]=rpp[yp][jou]+ggx; rpp[kj][jou]=rpp[kj][jou]-ggx; } }}} for (int yp=0; yp <=kade[1]-1; yp++) { // interaction between B ale for (int kj=0; kj <=kade[1]-1; kj++) { if (yp < kj ) { // kro=distance between electrons kro=Math.sqrt((bpp[yp][0]-bpp[kj][0])*(bpp[yp][0]-bpp[kj][0])+ (bpp[yp][1]-bpp[kj][1])*(bpp[yp][1]-bpp[kj][1])+ (bpp[yp][2]-bpp[kj][2])*(bpp[yp][2]-bpp[kj][2])); if (kro==0) {kro=5000.0;} // ppot=repulsive potential energy (eV) ppot=(elc*elc*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; // rpp[][3]= potential energy of each electron rpp[yp+7][3]=rpp[yp+7][3]+ppot/2.0; rpp[kj+7][3]=rpp[kj+7][3]+ppot/2.0; for (int jou=0; jou <=2; jou++) { ggx=(suh*(bpp[yp][jou]-bpp[kj][jou]))/(kro*kro*kro); rpp[yp+7][jou]=rpp[yp+7][jou]+ggx; rpp[kj+7][jou]=rpp[kj+7][jou]-ggx; } }}} for (int yp=0; yp <=kade[0]-1; yp++) { for (int kj=0; kj <=kade[1]-1; kj++) { kro=Math.sqrt((app[yp][0]-bpp[kj][0])*(app[yp][0]-bpp[kj][0])+ (app[yp][1]-bpp[kj][1])*(app[yp][1]-bpp[kj][1])+ (app[yp][2]-bpp[kj][2])*(app[yp][2]-bpp[kj][2])); if (kro==0) {kro=5000.0;} // ppot=repulsive potential energy (eV) ppot=(elc*elc*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; // rpp[][3]= potential energy of each electron rpp[yp][3]=rpp[yp][3]+ppot/2.0; rpp[kj+7][3]=rpp[kj+7][3]+ppot/2.0; for (int jou=0; jou <=2; jou++) { ggx=(suh*(app[yp][jou]-bpp[kj][jou]))/(kro*kro*kro); rpp[yp][jou]=rpp[yp][jou]+ggx; rpp[kj+7][jou]=rpp[kj+7][jou]-ggx; } }} // interaction between nucleus and each electron for (int yp=0; yp <=kade[0]-1; yp++) { for (int rv=0; rv <=1; rv++) { // kro=distance between nucleus and electron kro=Math.sqrt((app[yp][0]-nux[rv][0])*(app[yp][0]-nux[rv][0])+ (app[yp][1]-nux[rv][1])*(app[yp][1]-nux[rv][1])+ (app[yp][2]-nux[rv][2])*(app[yp][2]-nux[rv][2])); if (kro == 0) {kro=5000.0;} ex=(int)(kro); // ppot = each attractive potential energy ppot=-(elc*elc*nux[rv][3]*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; rpp[yp][3]=rpp[yp][3]+ppot; if (rv==1) { rpp[yp][6]=rpp[yp][6]+ppot;} // ggx=force component between nucleus and electron for (int jou=0; jou <=2; jou++) { ggx=(suh*nux[rv][3]*(app[yp][jou]-nux[rv][jou]))/(kro*kro*kro); rpp[yp][jou]=rpp[yp][jou]-ggx; }}} for (int yp=0; yp <=kade[1]-1; yp++) { for (int rv=0; rv <=1; rv++) { // kro=distance between nucleus and electron kro=Math.sqrt((bpp[yp][0]-nux[rv][0])*(bpp[yp][0]-nux[rv][0])+ (bpp[yp][1]-nux[rv][1])*(bpp[yp][1]-nux[rv][1])+ (bpp[yp][2]-nux[rv][2])*(bpp[yp][2]-nux[rv][2])); if (kro == 0) {kro=5000.0;} ppot=-(elc*elc*nux[rv][3]*6.241509e18)/(4.0*pai*epsi*kro*1.0e-14); toav=toav+ppot; rpp[yp+7][3]=rpp[yp+7][3]+ppot; if (rv==0) { rpp[yp+7][6]=rpp[yp+7][6]+ppot;} // ggx=force component between nucleus and electron for (int jou=0; jou <=2; jou++) { ggx=(suh*nux[rv][3]*(bpp[yp][jou]-nux[rv][jou]))/(kro*kro*kro); rpp[yp+7][jou]=rpp[yp+7][jou]-ggx; }}} // internuclear interaction ppot=(elc*elc*nux[0][3]*nux[1][3] *6.241509e18)/(4.0*pai*epsi*intnuc*1.0e-14); toav=toav+ppot; ggx=(suh*nux[0][3]*nux[1][3])/(intnuc*intnuc); gx=0.0; // distribute internuclear potential to electrons for (int yp=0; yp <= kade[0]-1; yp++) { gx=gx+rpp[yp][6]; } for (int yp=0; yp <= kade[1]-1; yp++) { gx=gx+rpp[yp+7][6]; } for (int rv=0; rv <= 1; rv++) { for (int yp=0; yp <= kade[rv]-1; yp++) { rpp[yp+rv*7][3]=rpp[yp+rv*7][3]+(ppot*rpp[yp+rv*7][6])/gx ; }} if (kade[0]==1 && kade[1]==1) { // show H2 binding energy (eV) ex=(int)(1000*toav); ggx=ex/1000.0; bangle[4].setText("aV "+Double.toString(ggx)); ggy=-(toav+toavv)/2.0 * 0.5 - 13.606*2; ex=(int)(1000*ggy); ggy=ex/1000.0; sou.setText(Double.toString(ggy) + " eV"); } // ------ show de Broglie wave after gz=Math.sqrt(rpp[0+abd*7][0]*rpp[0+abd*7][0]+rpp[0+abd*7][1]*rpp[0+abd*7][1]+rpp[0+abd*7][2]*rpp[0+abd*7][2]); // gy=forces (N) gy=(gz*elc*elc)/(4.0*pai*epsi*suh*1.0e-28); // gx=velocity (m/s) of each electron gx=Math.sqrt((-1.0*rpp[0+abd*7][3]*1.602177e-19)/me); ggx=(me*gx*gx)/gy; double debroglie = h/(me*gx); ggy=(2*pai*ggx)/debroglie; // ggy=number of de Broglie's wave in one orbit ex=(int)(ggy*10000); ggz=ex/10000.0; elp[1][9].setText("afw "+Double.toString(ggz)); elp[1][10].setText("afw "+Double.toString(ggz)); gouk=(rhp[0+abd*7][5] + ggz)/2.0; ex=(int)(gouk*10000); gouk=ex/10000.0; avew.setText("ave "+Double.toString(gouk)); direc.setText(" 0 "); for (int kj=0; kj <=2; kj++) { gx=app[0][kj]; if (abd==1) { gx=bpp[0][kj] - nux[1][kj];} elp[1][kj].setText(Integer.toString((int)gx)); } for (int kj=3; kj <=8; kj++) { elp[1][kj].setText(" 0 "); } gz=rpp[0+abd*7][0]; ex=(int)(1000*gz); elp[1][6].setText(Integer.toString(ex)); } // hydrogen electron after moving end // ---------- show picture int nmx[][]=new int[2][3]; int hpk[][]=new int[14][4]; for (int yp=0; yp <=1; yp++) { for (int kj=0; kj <=2; kj++) { // change MM to pixel in nuclei nmx[yp][kj]=(int)(nux[yp][kj]/142.856); }} // change MM to pixel in electrons for (int yp=0; yp <=kade[0]-1; yp++) { for (int kj=0; kj <=2; kj++) { hpk[yp][kj]=(int)(apr[yp][kj]/142.856); }} for (int yp=0; yp <=kade[1]-1; yp++) { for (int kj=0; kj <=2; kj++) { hpk[yp+7][kj]=(int)(bpr[yp][kj]/142.856); }} int med=(int)(277.5-(intnuc*0.5)/142.856); int medd=(int)(832.5-(intnuc*0.5)/142.856); g.clearRect(9,299,1170,699); g.setColor(Color.cyan); g.drawLine(555,310,555,660); g.drawString("X - Z plane", 257,345); g.drawString("X - Y plane", 810,345); g.setColor(Color.lightGray); // show nucleus for ( int rv=0; rv <= 1; rv++) { g.fillOval(nmx[rv][0]+med-3,472,20,20); g.fillOval(nmx[rv][0]+medd-3,472,20,20); } for ( int rv=0; rv <= 1; rv++) { g.setColor(Color.white); // show electron 0 (particle) g.fillOval(hpk[0+rv*7][0]+med, 475-hpk[0+rv*7][2],14,14); g.fillOval(hpk[0+rv*7][0]+medd,475-hpk[0+rv*7][1],14,14); if ( kade[rv] > 1 ) { g.setColor(Color.pink); // show electron 1 g.fillOval(hpk[1+rv*7][0]+med, 475-hpk[1+rv*7][2],14,14); g.fillOval(hpk[1+rv*7][0]+medd,475-hpk[1+rv*7][1],14,14); g.setColor(Color.red); // show electron 2 g.fillOval(hpk[2+rv*7][0]+med, 475-hpk[2+rv*7][2],14,14); g.fillOval(hpk[2+rv*7][0]+medd,475-hpk[2+rv*7][1],14,14); g.setColor(Color.green); // show electron 3 g.fillOval(hpk[3+rv*7][0]+med, 475-hpk[3+rv*7][2],14,14); g.fillOval(hpk[3+rv*7][0]+medd,475-hpk[3+rv*7][1],14,14); } if ( kade[rv] > 4 ) { // N last electron g.setColor(Color.white); g.fillOval(hpk[4+rv*7][0]+med, 475-hpk[4+rv*7][2],14,14); g.fillOval(hpk[4+rv*7][0]+medd,475-hpk[4+rv*7][1],14,14); } if ( kade[rv] > 5 ) { // O last electron g.setColor(Color.pink); g.fillOval(hpk[5+rv*7][0]+med, 475-hpk[5+rv*7][2],14,14); g.fillOval(hpk[5+rv*7][0]+medd,475-hpk[5+rv*7][1],14,14); } if ( kade[rv] > 6 ) { // F last electron g.setColor(Color.red); g.fillOval(hpk[6+rv*7][0]+med, 475-hpk[6+rv*7][2],14,14); g.fillOval(hpk[6+rv*7][0]+medd,475-hpk[6+rv*7][1],14,14); } for (int rw=0; rw <=kade[rv]-1; rw++) { g.setColor(Color.blue); g.drawString(Integer.toString(rw),hpk[rw+rv*7][0]+med+4, 487-hpk[rw+rv*7][2]); g.drawString(Integer.toString(rw),hpk[rw+rv*7][0]+medd+4, 487-hpk[rw+rv*7][1] ); } } } }