import java.awt.Dimension; import java.awt.Color; import java.awt.Graphics; import potential.*; public class sim { // variables int steps; double[] vx; WaveVector W; double[] Amp; double Vmax; int [] re; int [] im; // arguments boolean wrap; double xrange; double dt; int npts; // derived constants double Vparticle; double dx; double xmin; double xmax; double Alpha; double Beta; double scalef; public sim(int sim_npts, double sim_dt, boolean sim_wrap, double sim_xrange, Potential sim_vx, int[] sim_re, int[] sim_im) { wrap = sim_wrap; npts = sim_npts; xrange = sim_xrange; dt = sim_dt; re = new int[npts]; im = new int[npts]; vx = new double[npts]; System.arraycopy(sim_re, 0, re, 0, npts); System.arraycopy(sim_im, 0, im, 0, npts); sim_vx.render(vx); dx = xrange / (npts-1); steps = 0; Alpha = (Physics.hbar * dt) / (2 * Physics.me * dx * dx); Beta = (-2.0 * dt) / Physics.hbar; Vparticle = 2.0; } void update(int sign, int[] Wv1, int[] Wv2) { for(int i = 0; i 0) ? (int)delta : -(int)delta; } } public void step(boolean direction, int ndt) { int[] a = direction ? re : im; int[] b = direction ? im : re; for (int i=0; i