Ensemble run functionality

use solver.run_ensemble(#) to run multiple trajectories without recompiling