public void transferKE(float amount) {
		if (iAtom <= 0)
			return;
		float k0 = getKin();
		if (k0 < ZERO)
			return;
		synchronized (forceCalculator) {
			for (int i = 0; i < iAtom; i++) {
				if (!atom[i].isMovable())
					continue;
				k0 = EV_CONVERTER * atom[i].mass * (atom[i].vx * atom[i].vx + atom[i].vy * atom[i].vy + atom[i].vz * atom[i].vz);
				if (k0 <= ZERO)
					k0 = ZERO;
				k0 = (k0 + amount) / k0;
				if (k0 <= ZERO)
					k0 = ZERO;
				k0 = (float) Math.sqrt(k0);
				if (Float.isNaN(k0) || Float.isInfinite(k0))
					continue; // any abnormal number must be skipped
				atom[i].vx *= k0;
				atom[i].vy *= k0;
				atom[i].vz *= k0;
			}
		}
	}