public static void VelocityVerlet()
        {
            // update the position of all atoms then initialize the acceleration to be updated
            for (int i = 0; i < Atom.AllAtoms.Count; i++)
            {
                Atom currAtom = Atom.AllAtoms[i];
                for (int idx = 0; idx < 3; idx++)
                {
                    currAtom.position[idx] = currAtom.position[idx] + currAtom.velocity [idx] * StaticVariables.MDTimestep + 0.5f * StaticVariables.MDTimestepSqr * currAtom.accelerationNew [idx];
                }
                currAtom.accelerationOld = currAtom.accelerationNew;
                currAtom.accelerationNew = new float[3] {
                    0.0f, 0.0f, 0.0f
                };
            }

            if (StaticVariables.currentPotential == StaticVariables.Potential.LennardJones)
            {
                if (StaticVariables.iTime % StaticVariables.nVerlet == 0)
                {
                    LennardJones.calculateNeighborList();
                }
                // update the acceleration of all atoms
                for (int i = 0; i < Atom.AllAtoms.Count - 1; i++)
                {
                    Atom firstAtom = Atom.AllAtoms[i];
                    for (int j = 0; j < firstAtom.neighborList.Count; j++)
                    {
                        Atom secondAtom = firstAtom.neighborList[j];
                        LennardJones.getForce(firstAtom, secondAtom);
                    }
                }
            }
            else if (StaticVariables.currentPotential == StaticVariables.Potential.Buckingham)
            {
                if (StaticVariables.iTime % StaticVariables.nVerlet == 0)
                {
                    Buckingham.calculateNeighborList();
                }
                // update the acceleration of all atoms
                for (int i = 0; i < Atom.AllAtoms.Count - 1; i++)
                {
                    Atom firstAtom = Atom.AllAtoms[i];
                    for (int j = 0; j < firstAtom.neighborList.Count; j++)
                    {
                        Atom secondAtom = firstAtom.neighborList[j];
                        Buckingham.getForce(firstAtom, secondAtom);
                    }
                }
            }

            // update the velocity of all atoms
            for (int i = 0; i < Atom.AllAtoms.Count; i++)
            {
                Atom currAtom = Atom.AllAtoms[i];
                for (int idx = 0; idx < 3; idx++)
                {
                    currAtom.velocity[idx] = currAtom.velocity[idx] + 0.5f * (currAtom.accelerationOld[idx] + currAtom.accelerationNew[idx]) * StaticVariables.MDTimestep;
                    currAtom.velocity[idx] = currAtom.velocity[idx] * StaticVariables.sqrtAlpha;
                }
            }
        }