From fd3d22592e82e3c2565b424e0de6029675d94719 Mon Sep 17 00:00:00 2001
From: "Kurt A. O'Hearn" <ohearnku@msu.edu>
Date: Mon, 22 Oct 2018 12:35:44 -0400
Subject: [PATCH] Tools: update run_sim.py to work with absolute paths (by
 refereing supplied executable path). Begin updating testing scripts.

---
 test_harness/control_bilayer_340800_serial |  68 --------
 test_harness/control_bilayer_56800_serial  |  68 --------
 test_harness/control_silica_300000_serial  |  68 --------
 test_harness/control_silica_6000_serial    |  68 --------
 test_harness/control_silica_72000_serial   |  68 --------
 test_harness/control_water_327000_serial   |  68 --------
 test_harness/control_water_6540_serial     |  68 --------
 test_harness/control_water_78480_serial    |  68 --------
 test_harness/submit_short_jobs.bash        | 173 +++++++++++---------
 tools/run_sim.py                           | 177 +++++++++++++++------
 10 files changed, 225 insertions(+), 669 deletions(-)
 delete mode 100644 test_harness/control_bilayer_340800_serial
 delete mode 100644 test_harness/control_bilayer_56800_serial
 delete mode 100644 test_harness/control_silica_300000_serial
 delete mode 100644 test_harness/control_silica_6000_serial
 delete mode 100644 test_harness/control_silica_72000_serial
 delete mode 100644 test_harness/control_water_327000_serial
 delete mode 100644 test_harness/control_water_6540_serial
 delete mode 100644 test_harness/control_water_78480_serial

diff --git a/test_harness/control_bilayer_340800_serial b/test_harness/control_bilayer_340800_serial
deleted file mode 100644
index 7087989c..00000000
--- a/test_harness/control_bilayer_340800_serial
+++ /dev/null
@@ -1,68 +0,0 @@
-simulation_name         bilayer_340800_notab_nve_qeq_serial           ! output files will carry this name + their specific extension
-ensemble_type           0                       ! 0: NVE, 1: Berendsen NVT, 2: nose-Hoover NVT, 3: semi-isotropic NPT, 4: isotropic NPT, 5: anisotropic NPT
-nsteps                  100                     ! number of simulation steps
-dt                      0.10                    ! time step in fs
-periodic_boundaries     1                       ! 0: no periodic boundaries, 1: periodic boundaries
-
-reposition_atoms        0                       ! 0: just fit to periodic boundaries, 1: CoM to the center of box, 3: CoM to the origin
-restrict_bonds          0                       ! enforce the bonds given in CONECT lines of pdb file for this many steps
-tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
-energy_update_freq      1
-remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
-
-nbrhood_cutoff          4.5                     ! near neighbors cutoff for bond calculations (Angstroms)
-bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
-thb_cutoff              0.001                   ! cutoff value for three body interactions (Angstroms)
-hbond_cutoff            7.50                    ! cutoff distance for hydrogen bond interactions (Angstroms)
-
-charge_method         		  0             ! charge method: 0 = QEq, 1 = EEM, 2 = ACKS2
-cm_q_net              		  0.0           ! net system charge
-cm_solver_type        		  0             ! iterative linear solver for charge method: 0 = GMRES(k), 1 = GMRES_H(k), 2 = CG, 3 = SDM
-cm_solver_max_iters   		  20            ! max solver iterations
-cm_solver_restart     		  100           ! inner iterations of before restarting (GMRES(k)/GMRES_H(k))
-cm_solver_q_err       		  1e-6          ! relative residual norm threshold used in solver
-cm_domain_sparsity     		  1.0           ! scalar for scaling cut-off distance, used to sparsify charge matrix (between 0.0 and 1.0)
-cm_init_guess_extrap1		  3             ! order of spline extrapolation for initial guess (s)
-cm_init_guess_extrap2		  2             ! order of spline extrapolation for initial guess (t)
-cm_solver_pre_comp_type           1             ! method used to compute preconditioner, if applicable
-cm_solver_pre_comp_refactor       1000          ! number of steps before recomputing preconditioner
-cm_solver_pre_comp_droptol        0.0           ! threshold tolerance for dropping values in preconditioner computation (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_comp_sweeps         3             ! number of sweeps used to compute preconditioner (FG-ILUT)
-cm_solver_pre_comp_sai_thres      0.1           ! ratio of charge matrix NNZ's used to compute preconditioner (SAI)
-cm_solver_pre_app_type            1             ! method used to apply preconditioner (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_app_jacobi_iters    50            ! num. Jacobi iterations used for applying precondition (ICHOLT/ILUT/FG-ILUT)
-
-temp_init               0.0                     ! desired initial temperature of the simulated system
-temp_final              300.0                   ! desired final temperature of the simulated system
-t_mass                  0.16666                 ! 0.16666 for Nose-Hoover nvt ! 100.0 for npt! in fs, thermal inertia parameter
-t_mode                  0                       ! 0: T-coupling only, 1: step-wise, 2: constant slope
-t_rate                  -100.0                  ! in K
-t_freq                  4.0                     ! in ps
-
-pressure                0.000101325             ! desired pressure of the simulated system in GPa, 1atm = 0.000101325 GPa
-p_mass                  5000.00                 ! in fs, pressure inertia parameter
-compress                0.008134                ! in ps^2 * A / amu ( 4.5X10^(-5) bar^(-1) )
-press_mode              0                       ! 0: internal + external pressure, 1: ext only, 2: int only
-
-geo_format              0                       ! 0: custom, 1: pdb, 2: bgf
-write_freq              0                       ! write trajectory after so many steps
-traj_compress           0                       ! 0: no compression  1: uses zlib to compress trajectory output
-traj_format             0                       ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb
-traj_title              WATER_NVE               ! (no white spaces)
-atom_info               1                       ! 0: no atom info, 1: print basic atom info in the trajectory file
-atom_forces             0                       ! 0: basic atom format, 1: print force on each atom in the trajectory file
-atom_velocities         0                       ! 0: basic atom format, 1: print the velocity of each atom in the trajectory file
-bond_info               1                       ! 0: do not print bonds, 1: print bonds in the trajectory file
-angle_info              1                       ! 0: do not print angles, 1: print angles in the trajectory file
-test_forces             0                       ! 0: normal run, 1: at every timestep print each force type into a different file
-
-molec_anal              0                       ! 1: outputs newly formed molecules as the simulation progresses
-freq_molec_anal         0                       ! perform molecular analysis at every 'this many' timesteps
-dipole_anal             0                       ! 1: calculate a electric dipole moment of the system
-freq_dipole_anal        1                       ! calculate electric dipole moment at every 'this many' steps
-diffusion_coef          0                       ! 1: calculate diffusion coefficient of the system
-freq_diffusion_coef     1                       ! calculate diffusion coefficient at every 'this many' steps
-restrict_type           2                       ! -1: all types of atoms, 0 and up: only this type of atoms
-
-restart_format          1                       ! 0: restarts in ASCII  1: restarts in binary
-restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps
diff --git a/test_harness/control_bilayer_56800_serial b/test_harness/control_bilayer_56800_serial
deleted file mode 100644
index a3cc7de0..00000000
--- a/test_harness/control_bilayer_56800_serial
+++ /dev/null
@@ -1,68 +0,0 @@
-simulation_name         bilayer_56800_notab_nve_qeq_serial           ! output files will carry this name + their specific extension
-ensemble_type           0                       ! 0: NVE, 1: Berendsen NVT, 2: nose-Hoover NVT, 3: semi-isotropic NPT, 4: isotropic NPT, 5: anisotropic NPT
-nsteps                  100                     ! number of simulation steps
-dt                      0.10                    ! time step in fs
-periodic_boundaries     1                       ! 0: no periodic boundaries, 1: periodic boundaries
-
-reposition_atoms        0                       ! 0: just fit to periodic boundaries, 1: CoM to the center of box, 3: CoM to the origin
-restrict_bonds          0                       ! enforce the bonds given in CONECT lines of pdb file for this many steps
-tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
-energy_update_freq      1
-remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
-
-nbrhood_cutoff          4.5                     ! near neighbors cutoff for bond calculations (Angstroms)
-bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
-thb_cutoff              0.001                   ! cutoff value for three body interactions (Angstroms)
-hbond_cutoff            7.50                    ! cutoff distance for hydrogen bond interactions (Angstroms)
-
-charge_method         		  0             ! charge method: 0 = QEq, 1 = EEM, 2 = ACKS2
-cm_q_net              		  0.0           ! net system charge
-cm_solver_type        		  0             ! iterative linear solver for charge method: 0 = GMRES(k), 1 = GMRES_H(k), 2 = CG, 3 = SDM
-cm_solver_max_iters   		  20            ! max solver iterations
-cm_solver_restart     		  100           ! inner iterations of before restarting (GMRES(k)/GMRES_H(k))
-cm_solver_q_err       		  1e-6          ! relative residual norm threshold used in solver
-cm_domain_sparsity     		  1.0           ! scalar for scaling cut-off distance, used to sparsify charge matrix (between 0.0 and 1.0)
-cm_init_guess_extrap1		  3             ! order of spline extrapolation for initial guess (s)
-cm_init_guess_extrap2		  2             ! order of spline extrapolation for initial guess (t)
-cm_solver_pre_comp_type           1             ! method used to compute preconditioner, if applicable
-cm_solver_pre_comp_refactor       1000          ! number of steps before recomputing preconditioner
-cm_solver_pre_comp_droptol        0.0           ! threshold tolerance for dropping values in preconditioner computation (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_comp_sweeps         3             ! number of sweeps used to compute preconditioner (FG-ILUT)
-cm_solver_pre_comp_sai_thres      0.1           ! ratio of charge matrix NNZ's used to compute preconditioner (SAI)
-cm_solver_pre_app_type            1             ! method used to apply preconditioner (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_app_jacobi_iters    50            ! num. Jacobi iterations used for applying precondition (ICHOLT/ILUT/FG-ILUT)
-
-temp_init               0.0                     ! desired initial temperature of the simulated system
-temp_final              300.0                   ! desired final temperature of the simulated system
-t_mass                  0.16666                 ! 0.16666 for Nose-Hoover nvt ! 100.0 for npt! in fs, thermal inertia parameter
-t_mode                  0                       ! 0: T-coupling only, 1: step-wise, 2: constant slope
-t_rate                  -100.0                  ! in K
-t_freq                  4.0                     ! in ps
-
-pressure                0.000101325             ! desired pressure of the simulated system in GPa, 1atm = 0.000101325 GPa
-p_mass                  5000.00                 ! in fs, pressure inertia parameter
-compress                0.008134                ! in ps^2 * A / amu ( 4.5X10^(-5) bar^(-1) )
-press_mode              0                       ! 0: internal + external pressure, 1: ext only, 2: int only
-
-geo_format              1                       ! 0: custom, 1: pdb, 2: bgf
-write_freq              0                       ! write trajectory after so many steps
-traj_compress           0                       ! 0: no compression  1: uses zlib to compress trajectory output
-traj_format             0                       ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb
-traj_title              WATER_NVE               ! (no white spaces)
-atom_info               1                       ! 0: no atom info, 1: print basic atom info in the trajectory file
-atom_forces             0                       ! 0: basic atom format, 1: print force on each atom in the trajectory file
-atom_velocities         0                       ! 0: basic atom format, 1: print the velocity of each atom in the trajectory file
-bond_info               1                       ! 0: do not print bonds, 1: print bonds in the trajectory file
-angle_info              1                       ! 0: do not print angles, 1: print angles in the trajectory file
-test_forces             0                       ! 0: normal run, 1: at every timestep print each force type into a different file
-
-molec_anal              0                       ! 1: outputs newly formed molecules as the simulation progresses
-freq_molec_anal         0                       ! perform molecular analysis at every 'this many' timesteps
-dipole_anal             0                       ! 1: calculate a electric dipole moment of the system
-freq_dipole_anal        1                       ! calculate electric dipole moment at every 'this many' steps
-diffusion_coef          0                       ! 1: calculate diffusion coefficient of the system
-freq_diffusion_coef     1                       ! calculate diffusion coefficient at every 'this many' steps
-restrict_type           2                       ! -1: all types of atoms, 0 and up: only this type of atoms
-
-restart_format          1                       ! 0: restarts in ASCII  1: restarts in binary
-restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps
diff --git a/test_harness/control_silica_300000_serial b/test_harness/control_silica_300000_serial
deleted file mode 100644
index 6fc327fe..00000000
--- a/test_harness/control_silica_300000_serial
+++ /dev/null
@@ -1,68 +0,0 @@
-simulation_name         silica_300000_notab_nve_qeq_serial           ! output files will carry this name + their specific extension
-ensemble_type           0                       ! 0: NVE, 1: Berendsen NVT, 2: nose-Hoover NVT, 3: semi-isotropic NPT, 4: isotropic NPT, 5: anisotropic NPT
-nsteps                  100                     ! number of simulation steps
-dt                      0.10                    ! time step in fs
-periodic_boundaries     1                       ! 0: no periodic boundaries, 1: periodic boundaries
-
-reposition_atoms        0                       ! 0: just fit to periodic boundaries, 1: CoM to the center of box, 3: CoM to the origin
-restrict_bonds          0                       ! enforce the bonds given in CONECT lines of pdb file for this many steps
-tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
-energy_update_freq      1
-remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
-
-nbrhood_cutoff          4.5                     ! near neighbors cutoff for bond calculations (Angstroms)
-bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
-thb_cutoff              0.001                   ! cutoff value for three body interactions (Angstroms)
-hbond_cutoff            7.50                    ! cutoff distance for hydrogen bond interactions (Angstroms)
-
-charge_method         		  0             ! charge method: 0 = QEq, 1 = EEM, 2 = ACKS2
-cm_q_net              		  0.0           ! net system charge
-cm_solver_type        		  0             ! iterative linear solver for charge method: 0 = GMRES(k), 1 = GMRES_H(k), 2 = CG, 3 = SDM
-cm_solver_max_iters   		  20            ! max solver iterations
-cm_solver_restart     		  100           ! inner iterations of before restarting (GMRES(k)/GMRES_H(k))
-cm_solver_q_err       		  1e-6          ! relative residual norm threshold used in solver
-cm_domain_sparsity     		  1.0           ! scalar for scaling cut-off distance, used to sparsify charge matrix (between 0.0 and 1.0)
-cm_init_guess_extrap1		  3             ! order of spline extrapolation for initial guess (s)
-cm_init_guess_extrap2		  2             ! order of spline extrapolation for initial guess (t)
-cm_solver_pre_comp_type           1             ! method used to compute preconditioner, if applicable
-cm_solver_pre_comp_refactor       1000          ! number of steps before recomputing preconditioner
-cm_solver_pre_comp_droptol        0.0           ! threshold tolerance for dropping values in preconditioner computation (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_comp_sweeps         3             ! number of sweeps used to compute preconditioner (FG-ILUT)
-cm_solver_pre_comp_sai_thres      0.1           ! ratio of charge matrix NNZ's used to compute preconditioner (SAI)
-cm_solver_pre_app_type            1             ! method used to apply preconditioner (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_app_jacobi_iters    50            ! num. Jacobi iterations used for applying precondition (ICHOLT/ILUT/FG-ILUT)
-
-temp_init               0.0                     ! desired initial temperature of the simulated system
-temp_final              300.0                   ! desired final temperature of the simulated system
-t_mass                  0.16666                 ! 0.16666 for Nose-Hoover nvt ! 100.0 for npt! in fs, thermal inertia parameter
-t_mode                  0                       ! 0: T-coupling only, 1: step-wise, 2: constant slope
-t_rate                  -100.0                  ! in K
-t_freq                  4.0                     ! in ps
-
-pressure                0.000101325             ! desired pressure of the simulated system in GPa, 1atm = 0.000101325 GPa
-p_mass                  5000.00                 ! in fs, pressure inertia parameter
-compress                0.008134                ! in ps^2 * A / amu ( 4.5X10^(-5) bar^(-1) )
-press_mode              0                       ! 0: internal + external pressure, 1: ext only, 2: int only
-
-geo_format              0                       ! 0: custom, 1: pdb, 2: bgf
-write_freq              0                       ! write trajectory after so many steps
-traj_compress           0                       ! 0: no compression  1: uses zlib to compress trajectory output
-traj_format             0                       ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb
-traj_title              WATER_NVE               ! (no white spaces)
-atom_info               1                       ! 0: no atom info, 1: print basic atom info in the trajectory file
-atom_forces             0                       ! 0: basic atom format, 1: print force on each atom in the trajectory file
-atom_velocities         0                       ! 0: basic atom format, 1: print the velocity of each atom in the trajectory file
-bond_info               1                       ! 0: do not print bonds, 1: print bonds in the trajectory file
-angle_info              1                       ! 0: do not print angles, 1: print angles in the trajectory file
-test_forces             0                       ! 0: normal run, 1: at every timestep print each force type into a different file
-
-molec_anal              0                       ! 1: outputs newly formed molecules as the simulation progresses
-freq_molec_anal         0                       ! perform molecular analysis at every 'this many' timesteps
-dipole_anal             0                       ! 1: calculate a electric dipole moment of the system
-freq_dipole_anal        1                       ! calculate electric dipole moment at every 'this many' steps
-diffusion_coef          0                       ! 1: calculate diffusion coefficient of the system
-freq_diffusion_coef     1                       ! calculate diffusion coefficient at every 'this many' steps
-restrict_type           2                       ! -1: all types of atoms, 0 and up: only this type of atoms
-
-restart_format          1                       ! 0: restarts in ASCII  1: restarts in binary
-restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps
diff --git a/test_harness/control_silica_6000_serial b/test_harness/control_silica_6000_serial
deleted file mode 100644
index 5b4cee39..00000000
--- a/test_harness/control_silica_6000_serial
+++ /dev/null
@@ -1,68 +0,0 @@
-simulation_name         silica_6000_notab_nve_qeq_serial           ! output files will carry this name + their specific extension
-ensemble_type           0                       ! 0: NVE, 1: Berendsen NVT, 2: nose-Hoover NVT, 3: semi-isotropic NPT, 4: isotropic NPT, 5: anisotropic NPT
-nsteps                  100                     ! number of simulation steps
-dt                      0.10                    ! time step in fs
-periodic_boundaries     1                       ! 0: no periodic boundaries, 1: periodic boundaries
-
-reposition_atoms        0                       ! 0: just fit to periodic boundaries, 1: CoM to the center of box, 3: CoM to the origin
-restrict_bonds          0                       ! enforce the bonds given in CONECT lines of pdb file for this many steps
-tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
-energy_update_freq      1
-remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
-
-nbrhood_cutoff          4.5                     ! near neighbors cutoff for bond calculations (Angstroms)
-bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
-thb_cutoff              0.001                   ! cutoff value for three body interactions (Angstroms)
-hbond_cutoff            7.50                    ! cutoff distance for hydrogen bond interactions (Angstroms)
-
-charge_method         		  0             ! charge method: 0 = QEq, 1 = EEM, 2 = ACKS2
-cm_q_net              		  0.0           ! net system charge
-cm_solver_type        		  0             ! iterative linear solver for charge method: 0 = GMRES(k), 1 = GMRES_H(k), 2 = CG, 3 = SDM
-cm_solver_max_iters   		  20            ! max solver iterations
-cm_solver_restart     		  100           ! inner iterations of before restarting (GMRES(k)/GMRES_H(k))
-cm_solver_q_err       		  1e-6          ! relative residual norm threshold used in solver
-cm_domain_sparsity     		  1.0           ! scalar for scaling cut-off distance, used to sparsify charge matrix (between 0.0 and 1.0)
-cm_init_guess_extrap1		  3             ! order of spline extrapolation for initial guess (s)
-cm_init_guess_extrap2		  2             ! order of spline extrapolation for initial guess (t)
-cm_solver_pre_comp_type           1             ! method used to compute preconditioner, if applicable
-cm_solver_pre_comp_refactor       1000          ! number of steps before recomputing preconditioner
-cm_solver_pre_comp_droptol        0.0           ! threshold tolerance for dropping values in preconditioner computation (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_comp_sweeps         3             ! number of sweeps used to compute preconditioner (FG-ILUT)
-cm_solver_pre_comp_sai_thres      0.1           ! ratio of charge matrix NNZ's used to compute preconditioner (SAI)
-cm_solver_pre_app_type            1             ! method used to apply preconditioner (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_app_jacobi_iters    50            ! num. Jacobi iterations used for applying precondition (ICHOLT/ILUT/FG-ILUT)
-
-temp_init               0.0                     ! desired initial temperature of the simulated system
-temp_final              300.0                   ! desired final temperature of the simulated system
-t_mass                  0.16666                 ! 0.16666 for Nose-Hoover nvt ! 100.0 for npt! in fs, thermal inertia parameter
-t_mode                  0                       ! 0: T-coupling only, 1: step-wise, 2: constant slope
-t_rate                  -100.0                  ! in K
-t_freq                  4.0                     ! in ps
-
-pressure                0.000101325             ! desired pressure of the simulated system in GPa, 1atm = 0.000101325 GPa
-p_mass                  5000.00                 ! in fs, pressure inertia parameter
-compress                0.008134                ! in ps^2 * A / amu ( 4.5X10^(-5) bar^(-1) )
-press_mode              0                       ! 0: internal + external pressure, 1: ext only, 2: int only
-
-geo_format              1                       ! 0: custom, 1: pdb, 2: bgf
-write_freq              0                       ! write trajectory after so many steps
-traj_compress           0                       ! 0: no compression  1: uses zlib to compress trajectory output
-traj_format             0                       ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb
-traj_title              WATER_NVE               ! (no white spaces)
-atom_info               1                       ! 0: no atom info, 1: print basic atom info in the trajectory file
-atom_forces             0                       ! 0: basic atom format, 1: print force on each atom in the trajectory file
-atom_velocities         0                       ! 0: basic atom format, 1: print the velocity of each atom in the trajectory file
-bond_info               1                       ! 0: do not print bonds, 1: print bonds in the trajectory file
-angle_info              1                       ! 0: do not print angles, 1: print angles in the trajectory file
-test_forces             0                       ! 0: normal run, 1: at every timestep print each force type into a different file
-
-molec_anal              0                       ! 1: outputs newly formed molecules as the simulation progresses
-freq_molec_anal         0                       ! perform molecular analysis at every 'this many' timesteps
-dipole_anal             0                       ! 1: calculate a electric dipole moment of the system
-freq_dipole_anal        1                       ! calculate electric dipole moment at every 'this many' steps
-diffusion_coef          0                       ! 1: calculate diffusion coefficient of the system
-freq_diffusion_coef     1                       ! calculate diffusion coefficient at every 'this many' steps
-restrict_type           2                       ! -1: all types of atoms, 0 and up: only this type of atoms
-
-restart_format          1                       ! 0: restarts in ASCII  1: restarts in binary
-restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps
diff --git a/test_harness/control_silica_72000_serial b/test_harness/control_silica_72000_serial
deleted file mode 100644
index 1990d37a..00000000
--- a/test_harness/control_silica_72000_serial
+++ /dev/null
@@ -1,68 +0,0 @@
-simulation_name         silica_72000_notab_nve_qeq_serial           ! output files will carry this name + their specific extension
-ensemble_type           0                       ! 0: NVE, 1: Berendsen NVT, 2: nose-Hoover NVT, 3: semi-isotropic NPT, 4: isotropic NPT, 5: anisotropic NPT
-nsteps                  100                     ! number of simulation steps
-dt                      0.10                    ! time step in fs
-periodic_boundaries     1                       ! 0: no periodic boundaries, 1: periodic boundaries
-
-reposition_atoms        0                       ! 0: just fit to periodic boundaries, 1: CoM to the center of box, 3: CoM to the origin
-restrict_bonds          0                       ! enforce the bonds given in CONECT lines of pdb file for this many steps
-tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
-energy_update_freq      1
-remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
-
-nbrhood_cutoff          4.5                     ! near neighbors cutoff for bond calculations (Angstroms)
-bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
-thb_cutoff              0.001                   ! cutoff value for three body interactions (Angstroms)
-hbond_cutoff            7.50                    ! cutoff distance for hydrogen bond interactions (Angstroms)
-
-charge_method         		  0             ! charge method: 0 = QEq, 1 = EEM, 2 = ACKS2
-cm_q_net              		  0.0           ! net system charge
-cm_solver_type        		  0             ! iterative linear solver for charge method: 0 = GMRES(k), 1 = GMRES_H(k), 2 = CG, 3 = SDM
-cm_solver_max_iters   		  20            ! max solver iterations
-cm_solver_restart     		  100           ! inner iterations of before restarting (GMRES(k)/GMRES_H(k))
-cm_solver_q_err       		  1e-6          ! relative residual norm threshold used in solver
-cm_domain_sparsity     		  1.0           ! scalar for scaling cut-off distance, used to sparsify charge matrix (between 0.0 and 1.0)
-cm_init_guess_extrap1		  3             ! order of spline extrapolation for initial guess (s)
-cm_init_guess_extrap2		  2             ! order of spline extrapolation for initial guess (t)
-cm_solver_pre_comp_type           1             ! method used to compute preconditioner, if applicable
-cm_solver_pre_comp_refactor       1000          ! number of steps before recomputing preconditioner
-cm_solver_pre_comp_droptol        0.0           ! threshold tolerance for dropping values in preconditioner computation (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_comp_sweeps         3             ! number of sweeps used to compute preconditioner (FG-ILUT)
-cm_solver_pre_comp_sai_thres      0.1           ! ratio of charge matrix NNZ's used to compute preconditioner (SAI)
-cm_solver_pre_app_type            1             ! method used to apply preconditioner (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_app_jacobi_iters    50            ! num. Jacobi iterations used for applying precondition (ICHOLT/ILUT/FG-ILUT)
-
-temp_init               0.0                     ! desired initial temperature of the simulated system
-temp_final              300.0                   ! desired final temperature of the simulated system
-t_mass                  0.16666                 ! 0.16666 for Nose-Hoover nvt ! 100.0 for npt! in fs, thermal inertia parameter
-t_mode                  0                       ! 0: T-coupling only, 1: step-wise, 2: constant slope
-t_rate                  -100.0                  ! in K
-t_freq                  4.0                     ! in ps
-
-pressure                0.000101325             ! desired pressure of the simulated system in GPa, 1atm = 0.000101325 GPa
-p_mass                  5000.00                 ! in fs, pressure inertia parameter
-compress                0.008134                ! in ps^2 * A / amu ( 4.5X10^(-5) bar^(-1) )
-press_mode              0                       ! 0: internal + external pressure, 1: ext only, 2: int only
-
-geo_format              0                       ! 0: custom, 1: pdb, 2: bgf
-write_freq              0                       ! write trajectory after so many steps
-traj_compress           0                       ! 0: no compression  1: uses zlib to compress trajectory output
-traj_format             0                       ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb
-traj_title              WATER_NVE               ! (no white spaces)
-atom_info               1                       ! 0: no atom info, 1: print basic atom info in the trajectory file
-atom_forces             0                       ! 0: basic atom format, 1: print force on each atom in the trajectory file
-atom_velocities         0                       ! 0: basic atom format, 1: print the velocity of each atom in the trajectory file
-bond_info               1                       ! 0: do not print bonds, 1: print bonds in the trajectory file
-angle_info              1                       ! 0: do not print angles, 1: print angles in the trajectory file
-test_forces             0                       ! 0: normal run, 1: at every timestep print each force type into a different file
-
-molec_anal              0                       ! 1: outputs newly formed molecules as the simulation progresses
-freq_molec_anal         0                       ! perform molecular analysis at every 'this many' timesteps
-dipole_anal             0                       ! 1: calculate a electric dipole moment of the system
-freq_dipole_anal        1                       ! calculate electric dipole moment at every 'this many' steps
-diffusion_coef          0                       ! 1: calculate diffusion coefficient of the system
-freq_diffusion_coef     1                       ! calculate diffusion coefficient at every 'this many' steps
-restrict_type           2                       ! -1: all types of atoms, 0 and up: only this type of atoms
-
-restart_format          1                       ! 0: restarts in ASCII  1: restarts in binary
-restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps
diff --git a/test_harness/control_water_327000_serial b/test_harness/control_water_327000_serial
deleted file mode 100644
index e895ac17..00000000
--- a/test_harness/control_water_327000_serial
+++ /dev/null
@@ -1,68 +0,0 @@
-simulation_name         water_327000_notab_nve_qeq_serial           ! output files will carry this name + their specific extension
-ensemble_type           0                       ! 0: NVE, 1: Berendsen NVT, 2: nose-Hoover NVT, 3: semi-isotropic NPT, 4: isotropic NPT, 5: anisotropic NPT
-nsteps                  100                     ! number of simulation steps
-dt                      0.10                    ! time step in fs
-periodic_boundaries     1                       ! 0: no periodic boundaries, 1: periodic boundaries
-
-reposition_atoms        0                       ! 0: just fit to periodic boundaries, 1: CoM to the center of box, 3: CoM to the origin
-restrict_bonds          0                       ! enforce the bonds given in CONECT lines of pdb file for this many steps
-tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
-energy_update_freq      1
-remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
-
-nbrhood_cutoff          4.5                     ! near neighbors cutoff for bond calculations (Angstroms)
-bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
-thb_cutoff              0.001                   ! cutoff value for three body interactions (Angstroms)
-hbond_cutoff            7.50                    ! cutoff distance for hydrogen bond interactions (Angstroms)
-
-charge_method         		  0             ! charge method: 0 = QEq, 1 = EEM, 2 = ACKS2
-cm_q_net              		  0.0           ! net system charge
-cm_solver_type        		  0             ! iterative linear solver for charge method: 0 = GMRES(k), 1 = GMRES_H(k), 2 = CG, 3 = SDM
-cm_solver_max_iters   		  20            ! max solver iterations
-cm_solver_restart     		  100           ! inner iterations of before restarting (GMRES(k)/GMRES_H(k))
-cm_solver_q_err       		  1e-6          ! relative residual norm threshold used in solver
-cm_domain_sparsity     		  1.0           ! scalar for scaling cut-off distance, used to sparsify charge matrix (between 0.0 and 1.0)
-cm_init_guess_extrap1		  3             ! order of spline extrapolation for initial guess (s)
-cm_init_guess_extrap2		  2             ! order of spline extrapolation for initial guess (t)
-cm_solver_pre_comp_type           1             ! method used to compute preconditioner, if applicable
-cm_solver_pre_comp_refactor       1000          ! number of steps before recomputing preconditioner
-cm_solver_pre_comp_droptol        0.0           ! threshold tolerance for dropping values in preconditioner computation (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_comp_sweeps         3             ! number of sweeps used to compute preconditioner (FG-ILUT)
-cm_solver_pre_comp_sai_thres      0.1           ! ratio of charge matrix NNZ's used to compute preconditioner (SAI)
-cm_solver_pre_app_type            1             ! method used to apply preconditioner (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_app_jacobi_iters    50            ! num. Jacobi iterations used for applying precondition (ICHOLT/ILUT/FG-ILUT)
-
-temp_init               0.0                     ! desired initial temperature of the simulated system
-temp_final              300.0                   ! desired final temperature of the simulated system
-t_mass                  0.16666                 ! 0.16666 for Nose-Hoover nvt ! 100.0 for npt! in fs, thermal inertia parameter
-t_mode                  0                       ! 0: T-coupling only, 1: step-wise, 2: constant slope
-t_rate                  -100.0                  ! in K
-t_freq                  4.0                     ! in ps
-
-pressure                0.000101325             ! desired pressure of the simulated system in GPa, 1atm = 0.000101325 GPa
-p_mass                  5000.00                 ! in fs, pressure inertia parameter
-compress                0.008134                ! in ps^2 * A / amu ( 4.5X10^(-5) bar^(-1) )
-press_mode              0                       ! 0: internal + external pressure, 1: ext only, 2: int only
-
-geo_format              0                       ! 0: custom, 1: pdb, 2: bgf
-write_freq              0                       ! write trajectory after so many steps
-traj_compress           0                       ! 0: no compression  1: uses zlib to compress trajectory output
-traj_format             0                       ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb
-traj_title              WATER_NVE               ! (no white spaces)
-atom_info               1                       ! 0: no atom info, 1: print basic atom info in the trajectory file
-atom_forces             0                       ! 0: basic atom format, 1: print force on each atom in the trajectory file
-atom_velocities         0                       ! 0: basic atom format, 1: print the velocity of each atom in the trajectory file
-bond_info               1                       ! 0: do not print bonds, 1: print bonds in the trajectory file
-angle_info              1                       ! 0: do not print angles, 1: print angles in the trajectory file
-test_forces             0                       ! 0: normal run, 1: at every timestep print each force type into a different file
-
-molec_anal              0                       ! 1: outputs newly formed molecules as the simulation progresses
-freq_molec_anal         0                       ! perform molecular analysis at every 'this many' timesteps
-dipole_anal             0                       ! 1: calculate a electric dipole moment of the system
-freq_dipole_anal        1                       ! calculate electric dipole moment at every 'this many' steps
-diffusion_coef          0                       ! 1: calculate diffusion coefficient of the system
-freq_diffusion_coef     1                       ! calculate diffusion coefficient at every 'this many' steps
-restrict_type           2                       ! -1: all types of atoms, 0 and up: only this type of atoms
-
-restart_format          1                       ! 0: restarts in ASCII  1: restarts in binary
-restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps
diff --git a/test_harness/control_water_6540_serial b/test_harness/control_water_6540_serial
deleted file mode 100644
index edeb3b50..00000000
--- a/test_harness/control_water_6540_serial
+++ /dev/null
@@ -1,68 +0,0 @@
-simulation_name         water_6540_notab_nve_qeq_serial           ! output files will carry this name + their specific extension
-ensemble_type           0                       ! 0: NVE, 1: Berendsen NVT, 2: nose-Hoover NVT, 3: semi-isotropic NPT, 4: isotropic NPT, 5: anisotropic NPT
-nsteps                  100                     ! number of simulation steps
-dt                      0.10                    ! time step in fs
-periodic_boundaries     1                       ! 0: no periodic boundaries, 1: periodic boundaries
-
-reposition_atoms        0                       ! 0: just fit to periodic boundaries, 1: CoM to the center of box, 3: CoM to the origin
-restrict_bonds          0                       ! enforce the bonds given in CONECT lines of pdb file for this many steps
-tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
-energy_update_freq      1
-remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
-
-nbrhood_cutoff          4.5                     ! near neighbors cutoff for bond calculations (Angstroms)
-bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
-thb_cutoff              0.001                   ! cutoff value for three body interactions (Angstroms)
-hbond_cutoff            7.50                    ! cutoff distance for hydrogen bond interactions (Angstroms)
-
-charge_method         		  0             ! charge method: 0 = QEq, 1 = EEM, 2 = ACKS2
-cm_q_net              		  0.0           ! net system charge
-cm_solver_type        		  0             ! iterative linear solver for charge method: 0 = GMRES(k), 1 = GMRES_H(k), 2 = CG, 3 = SDM
-cm_solver_max_iters   		  20            ! max solver iterations
-cm_solver_restart     		  100           ! inner iterations of before restarting (GMRES(k)/GMRES_H(k))
-cm_solver_q_err       		  1e-6          ! relative residual norm threshold used in solver
-cm_domain_sparsity     		  1.0           ! scalar for scaling cut-off distance, used to sparsify charge matrix (between 0.0 and 1.0)
-cm_init_guess_extrap1		  3             ! order of spline extrapolation for initial guess (s)
-cm_init_guess_extrap2		  2             ! order of spline extrapolation for initial guess (t)
-cm_solver_pre_comp_type           1             ! method used to compute preconditioner, if applicable
-cm_solver_pre_comp_refactor       1000          ! number of steps before recomputing preconditioner
-cm_solver_pre_comp_droptol        0.0           ! threshold tolerance for dropping values in preconditioner computation (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_comp_sweeps         3             ! number of sweeps used to compute preconditioner (FG-ILUT)
-cm_solver_pre_comp_sai_thres      0.1           ! ratio of charge matrix NNZ's used to compute preconditioner (SAI)
-cm_solver_pre_app_type            1             ! method used to apply preconditioner (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_app_jacobi_iters    50            ! num. Jacobi iterations used for applying precondition (ICHOLT/ILUT/FG-ILUT)
-
-temp_init               0.0                     ! desired initial temperature of the simulated system
-temp_final              300.0                   ! desired final temperature of the simulated system
-t_mass                  0.16666                 ! 0.16666 for Nose-Hoover nvt ! 100.0 for npt! in fs, thermal inertia parameter
-t_mode                  0                       ! 0: T-coupling only, 1: step-wise, 2: constant slope
-t_rate                  -100.0                  ! in K
-t_freq                  4.0                     ! in ps
-
-pressure                0.000101325             ! desired pressure of the simulated system in GPa, 1atm = 0.000101325 GPa
-p_mass                  5000.00                 ! in fs, pressure inertia parameter
-compress                0.008134                ! in ps^2 * A / amu ( 4.5X10^(-5) bar^(-1) )
-press_mode              0                       ! 0: internal + external pressure, 1: ext only, 2: int only
-
-geo_format              1                       ! 0: custom, 1: pdb, 2: bgf
-write_freq              0                       ! write trajectory after so many steps
-traj_compress           0                       ! 0: no compression  1: uses zlib to compress trajectory output
-traj_format             0                       ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb
-traj_title              WATER_NVE               ! (no white spaces)
-atom_info               1                       ! 0: no atom info, 1: print basic atom info in the trajectory file
-atom_forces             0                       ! 0: basic atom format, 1: print force on each atom in the trajectory file
-atom_velocities         0                       ! 0: basic atom format, 1: print the velocity of each atom in the trajectory file
-bond_info               1                       ! 0: do not print bonds, 1: print bonds in the trajectory file
-angle_info              1                       ! 0: do not print angles, 1: print angles in the trajectory file
-test_forces             0                       ! 0: normal run, 1: at every timestep print each force type into a different file
-
-molec_anal              0                       ! 1: outputs newly formed molecules as the simulation progresses
-freq_molec_anal         0                       ! perform molecular analysis at every 'this many' timesteps
-dipole_anal             0                       ! 1: calculate a electric dipole moment of the system
-freq_dipole_anal        1                       ! calculate electric dipole moment at every 'this many' steps
-diffusion_coef          0                       ! 1: calculate diffusion coefficient of the system
-freq_diffusion_coef     1                       ! calculate diffusion coefficient at every 'this many' steps
-restrict_type           2                       ! -1: all types of atoms, 0 and up: only this type of atoms
-
-restart_format          1                       ! 0: restarts in ASCII  1: restarts in binary
-restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps
diff --git a/test_harness/control_water_78480_serial b/test_harness/control_water_78480_serial
deleted file mode 100644
index dbc5080f..00000000
--- a/test_harness/control_water_78480_serial
+++ /dev/null
@@ -1,68 +0,0 @@
-simulation_name         water_78480_notab_nve_qeq_serial           ! output files will carry this name + their specific extension
-ensemble_type           0                       ! 0: NVE, 1: Berendsen NVT, 2: nose-Hoover NVT, 3: semi-isotropic NPT, 4: isotropic NPT, 5: anisotropic NPT
-nsteps                  100                     ! number of simulation steps
-dt                      0.10                    ! time step in fs
-periodic_boundaries     1                       ! 0: no periodic boundaries, 1: periodic boundaries
-
-reposition_atoms        0                       ! 0: just fit to periodic boundaries, 1: CoM to the center of box, 3: CoM to the origin
-restrict_bonds          0                       ! enforce the bonds given in CONECT lines of pdb file for this many steps
-tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
-energy_update_freq      1
-remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
-
-nbrhood_cutoff          4.5                     ! near neighbors cutoff for bond calculations (Angstroms)
-bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
-thb_cutoff              0.001                   ! cutoff value for three body interactions (Angstroms)
-hbond_cutoff            7.50                    ! cutoff distance for hydrogen bond interactions (Angstroms)
-
-charge_method         		  0             ! charge method: 0 = QEq, 1 = EEM, 2 = ACKS2
-cm_q_net              		  0.0           ! net system charge
-cm_solver_type        		  0             ! iterative linear solver for charge method: 0 = GMRES(k), 1 = GMRES_H(k), 2 = CG, 3 = SDM
-cm_solver_max_iters   		  20            ! max solver iterations
-cm_solver_restart     		  100           ! inner iterations of before restarting (GMRES(k)/GMRES_H(k))
-cm_solver_q_err       		  1e-6          ! relative residual norm threshold used in solver
-cm_domain_sparsity     		  1.0           ! scalar for scaling cut-off distance, used to sparsify charge matrix (between 0.0 and 1.0)
-cm_init_guess_extrap1		  3             ! order of spline extrapolation for initial guess (s)
-cm_init_guess_extrap2		  2             ! order of spline extrapolation for initial guess (t)
-cm_solver_pre_comp_type           1             ! method used to compute preconditioner, if applicable
-cm_solver_pre_comp_refactor       1000          ! number of steps before recomputing preconditioner
-cm_solver_pre_comp_droptol        0.0           ! threshold tolerance for dropping values in preconditioner computation (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_comp_sweeps         3             ! number of sweeps used to compute preconditioner (FG-ILUT)
-cm_solver_pre_comp_sai_thres      0.1           ! ratio of charge matrix NNZ's used to compute preconditioner (SAI)
-cm_solver_pre_app_type            1             ! method used to apply preconditioner (ICHOLT/ILUT/FG-ILUT)
-cm_solver_pre_app_jacobi_iters    50            ! num. Jacobi iterations used for applying precondition (ICHOLT/ILUT/FG-ILUT)
-
-temp_init               0.0                     ! desired initial temperature of the simulated system
-temp_final              300.0                   ! desired final temperature of the simulated system
-t_mass                  0.16666                 ! 0.16666 for Nose-Hoover nvt ! 100.0 for npt! in fs, thermal inertia parameter
-t_mode                  0                       ! 0: T-coupling only, 1: step-wise, 2: constant slope
-t_rate                  -100.0                  ! in K
-t_freq                  4.0                     ! in ps
-
-pressure                0.000101325             ! desired pressure of the simulated system in GPa, 1atm = 0.000101325 GPa
-p_mass                  5000.00                 ! in fs, pressure inertia parameter
-compress                0.008134                ! in ps^2 * A / amu ( 4.5X10^(-5) bar^(-1) )
-press_mode              0                       ! 0: internal + external pressure, 1: ext only, 2: int only
-
-geo_format              0                       ! 0: custom, 1: pdb, 2: bgf
-write_freq              0                       ! write trajectory after so many steps
-traj_compress           0                       ! 0: no compression  1: uses zlib to compress trajectory output
-traj_format             0                       ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb
-traj_title              WATER_NVE               ! (no white spaces)
-atom_info               1                       ! 0: no atom info, 1: print basic atom info in the trajectory file
-atom_forces             0                       ! 0: basic atom format, 1: print force on each atom in the trajectory file
-atom_velocities         0                       ! 0: basic atom format, 1: print the velocity of each atom in the trajectory file
-bond_info               1                       ! 0: do not print bonds, 1: print bonds in the trajectory file
-angle_info              1                       ! 0: do not print angles, 1: print angles in the trajectory file
-test_forces             0                       ! 0: normal run, 1: at every timestep print each force type into a different file
-
-molec_anal              0                       ! 1: outputs newly formed molecules as the simulation progresses
-freq_molec_anal         0                       ! perform molecular analysis at every 'this many' timesteps
-dipole_anal             0                       ! 1: calculate a electric dipole moment of the system
-freq_dipole_anal        1                       ! calculate electric dipole moment at every 'this many' steps
-diffusion_coef          0                       ! 1: calculate diffusion coefficient of the system
-freq_diffusion_coef     1                       ! calculate diffusion coefficient at every 'this many' steps
-restrict_type           2                       ! -1: all types of atoms, 0 and up: only this type of atoms
-
-restart_format          1                       ! 0: restarts in ASCII  1: restarts in binary
-restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps
diff --git a/test_harness/submit_short_jobs.bash b/test_harness/submit_short_jobs.bash
index 4c44a8b7..bbfa259a 100755
--- a/test_harness/submit_short_jobs.bash
+++ b/test_harness/submit_short_jobs.bash
@@ -1,17 +1,31 @@
 #!/bin/bash
 
 
+# submit job scripts of specified type
+#
+# inputs: 1) job_type, 2) data set
 function submit_job_serial
 {
-	SIM_NAME="spuremd-${4}"
-	qsub -l "walltime=${JOB_TIME},nodes=${JOB_NODES}:ppn=${JOB_PPN},feature=${JOB_FEATURE},mem=${JOB_MEM}" \
-		-o "${SIM_NAME}" -j oe << EOF
-#!/bin/bash
-module purge
-module load GNU/6.2 MKL/11.2
-cd "\${PBS_O_WORKDIR}"
-../sPuReMD/bin/spuremd "${1}" "${2}" "${3}"
-EOF
+	python3 ../../tools/run_sim.py submit_jobs \
+		-b "../../sPuReMD/bin/spuremd" \
+		-p ensemble_type "0" \
+		-p nsteps "100" \
+		-p tabulate_long_range "0" \
+		-p charge_method "0" \
+		-p cm_solver_type "0" \
+		-p cm_solver_max_iters "50" \
+		-p cm_solver_restart "200" \
+		-p cm_solver_q_err "1e-6" \
+		-p cm_domain_sparsity "1.0" \
+		-p cm_solver_pre_comp_type "1" \
+		-p cm_solver_pre_comp_refactor "10000" \
+		-p cm_solver_pre_comp_droptol "0.0" \
+		-p cm_solver_pre_comp_sweeps "3" \
+		-p cm_solver_pre_comp_sai_thres "0.1" \
+		-p cm_solver_pre_app_type "0" \
+		-p cm_solver_pre_app_jacobi_iters "30" \
+		-p threads "1" \
+		"${1}" "${2}"
 }
 
 
@@ -43,74 +57,83 @@ EOF
 }
 
 
-############
-# Serial Runs #
-############
+# serial jobs (spuremd)
 JOB_TIME="03:59:00"
 JOB_NODES="1"
 JOB_PPN="1"
 JOB_FEATURE="lac"
 JOB_MEM="120gb"
-
-sub_job_serial  "../data/benchmarks/metal/zno_6912.pdb" \
-        "../data/benchmarks/metal/ffield.zno" \
-	"control_zno_6912_serial" \
-	"zno_6912_serial"
-
-sub_job_serial "../data/benchmarks/silica/silica_6000.pdb" \
-	"../data/benchmarks/silica/ffield-bio" \
-	"control_silica_6000_serial" \
-	"silica_6000_serial"
-
-sub_job_serial  "../data/benchmarks/water/water_6540.pdb" \
-	"../data/benchmarks/water/ffield.water" \
-	"control_water_6540_serial" \
-	"water_6540_serial"
-
-############
-# MPI Runs #
-############
-JOB_TIME="03:59:00"
-JOB_NODES="1"
-JOB_PPN="2"
-JOB_FEATURE="lac"
-JOB_MEM="120gb"
-
-sub_job_mpi "../data/benchmarks/metal/zno_6912.pdb"
-	"../data/benchmarks/metal/ffield.zno" \
-	"control_zno_6912_mpi" \
-	"zno_6912_mpi"
-
-sub_job_mpi "../data/benchmarks/silica/silica_6000.pdb" \
-	"../data/benchmarks/silica/ffield-bio" \
-	"control_silica_6000_mpi" \
-	"silica_6000_mpi"
-
-sub_job_mpi "../data/benchmarks/water/water_6540.pdb" \
-	"../data/benchmarks/water/ffield.water" \
-       	"control_water_6540_mpi" \
-	"water_6540_mpi"
-
-################
-# MPI-GPU Runs #
-################
-JOB_TIME="03:59:00"
-JOB_NODES="2"
-JOB_PPN="1"
-JOB_FEATURE="lac"
-JOB_MEM="120gb"
-
-sub_job_mpi_gpu "../data/benchmarks/metal/zno_6912.pdb" \
-	"../data/benchmarks/metal/ffield.zno" 
-	"control_zno_6912_mpi_gpu" \
-	"zno_6912_mpi_gpu"
-
-sub_job_mpi_gpu "../data/benchmarks/silica/silica_6000.pdb" \
-	"../data/benchmarks/silica/ffield-bio" \
-	"control_silica_6000_mpi_gpu" \
-	"silica_6000_mpi_gpu"
-
-sub_job_mpi_gpu "../data/benchmarks/water/water_6540.pdb" \
-	"../data/benchmarks/water/ffield.water" \
-	"control_water_6540_mpi_gpu" \
-	"water_6540_mpi_gpu"
+DATA_DIR="serial"
+
+if [ ! -d "${DATA_DIR}" ]; then
+	mkdir "${DATA_DIR}"
+fi
+pushd "${DATA_DIR}" &> /dev/null
+
+submit_job_serial "slurm" "zno_6912"
+
+submit_job_serial "slurm" "silica_6000"
+
+submit_job_serial "slurm" "water_6540"
+
+popd &> /dev/null
+
+## mpi jobs (puremd)
+#JOB_TIME="03:59:00"
+#JOB_NODES="1"
+#JOB_PPN="2"
+#JOB_FEATURE="lac"
+#JOB_MEM="120gb"
+#DATA_DIR="mpi"
+#
+#if [ ! -d "${DATA_DIR}" ]; then
+#	mkdir "${DATA_DIR}"
+#fi
+#pushd "${DATA_DIR}" &> /dev/null
+#
+#submit_job_mpi "../data/benchmarks/metal/zno_6912.pdb"
+#	"../data/benchmarks/metal/ffield.zno" \
+#	"control_zno_6912_mpi" \
+#	"zno_6912_mpi"
+#
+#submit_job_mpi "../data/benchmarks/silica/silica_6000.pdb" \
+#	"../data/benchmarks/silica/ffield-bio" \
+#	"control_silica_6000_mpi" \
+#	"silica_6000_mpi"
+#
+#submit_job_mpi "../data/benchmarks/water/water_6540.pdb" \
+#	"../data/benchmarks/water/ffield.water" \
+#       	"control_water_6540_mpi" \
+#	"water_6540_mpi"
+#
+#popd &> /dev/null
+#
+## mpi+gpu jobs (pg-puremd)
+#JOB_TIME="03:59:00"
+#JOB_NODES="2"
+#JOB_PPN="1"
+#JOB_FEATURE="lac"
+#JOB_MEM="120gb"
+#DATA_DIR="mpi_gpu"
+#
+#if [ ! -d "${DATA_DIR}" ]; then
+#	mkdir "${DATA_DIR}"
+#fi
+#pushd "${DATA_DIR}" &> /dev/null
+#
+#submit_job_mpi_gpu "../data/benchmarks/metal/zno_6912.pdb" \
+#	"../data/benchmarks/metal/ffield.zno" 
+#	"control_zno_6912_mpi_gpu" \
+#	"zno_6912_mpi_gpu"
+#
+#submit_job_mpi_gpu "../data/benchmarks/silica/silica_6000.pdb" \
+#	"../data/benchmarks/silica/ffield-bio" \
+#	"control_silica_6000_mpi_gpu" \
+#	"silica_6000_mpi_gpu"
+#
+#submit_job_mpi_gpu "../data/benchmarks/water/water_6540.pdb" \
+#	"../data/benchmarks/water/ffield.water" \
+#	"control_water_6540_mpi_gpu" \
+#	"water_6540_mpi_gpu"
+#
+#popd &> /dev/null
diff --git a/tools/run_sim.py b/tools/run_sim.py
index e9150086..cc4480c6 100644
--- a/tools/run_sim.py
+++ b/tools/run_sim.py
@@ -19,47 +19,91 @@ class TestCase():
         self.__result_file = result_file
         self.__control_regexes = { \
                 'name': lambda l, x: sub(
-                    r'(?P<key>simulation_name\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>simulation_name\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'ensemble_type': lambda l, x: sub(
-                    r'(?P<key>ensemble_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>ensemble_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'nsteps': lambda l, x: sub(
-                    r'(?P<key>nsteps\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>nsteps\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'dt': lambda l, x: sub(
+                    r'^(?P<key>dt\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'periodic_boundaries': lambda l, x: sub(
+                    r'^(?P<key>periodic_boundaries\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'reposition_atoms': lambda l, x: sub(
+                    r'^(?P<key>reposition_atoms\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'remove_CoM_vel': lambda l, x: sub(
+                    r'^(?P<key>remove_CoM_vel\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'reneighbor': lambda l, x: sub(
+                    r'^(?P<key>reneighbor\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'update_energy_freq': lambda l, x: sub(
+                    r'^(?P<key>update_energy_freq\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'tabulate_long_range': lambda l, x: sub(
-                    r'(?P<key>tabulate_long_range\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>tabulate_long_range\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'vlist_buffer': lambda l, x: sub(
+                    r'^(?P<key>vlist_buffer\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'nbrhood_cutoff': lambda l, x: sub(
+                    r'^(?P<key>nbrhood_cutoff\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'hbond_cutoff': lambda l, x: sub(
+                    r'^(?P<key>hbond_cutoff\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'thb_cutoff': lambda l, x: sub(
+                    r'^(?P<key>thb_cutoff\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'bond_graph_cutoff': lambda l, x: sub(
+                    r'^(?P<key>bond_graph_cutoff\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'charge_method': lambda l, x: sub(
-                    r'(?P<key>charge_method\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>charge_method\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_q_net': lambda l, x: sub(
-                    r'(?P<key>cm_q_net\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_q_net\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_type': lambda l, x: sub(
-                    r'(?P<key>cm_solver_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_max_iters': lambda l, x: sub(
-                    r'(?P<key>cm_solver_max_iters\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_max_iters\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_restart': lambda l, x: sub(
-                    r'(?P<key>cm_solver_restart\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_restart\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_q_err': lambda l, x: sub(
-                    r'(?P<key>cm_solver_q_err\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_q_err\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_domain_sparsity': lambda l, x: sub(
-                    r'(?P<key>cm_domain_sparsity\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_domain_sparsity\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_init_guess_extrap1': lambda l, x: sub(
-                    r'(?P<key>cm_init_guess_extrap1\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_init_guess_extrap1\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_init_guess_extrap2': lambda l, x: sub(
-                    r'(?P<key>cm_init_guess_extrap2\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_init_guess_extrap2\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_pre_comp_type': lambda l, x: sub(
-                    r'(?P<key>cm_solver_pre_comp_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_pre_comp_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_pre_comp_droptol': lambda l, x: sub(
-                    r'(?P<key>cm_solver_pre_comp_droptol\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_pre_comp_droptol\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_pre_comp_refactor': lambda l, x: sub(
-                    r'(?P<key>cm_solver_pre_comp_refactor\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_pre_comp_refactor\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_pre_comp_sweeps': lambda l, x: sub(
-                    r'(?P<key>cm_solver_pre_comp_sweeps\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_pre_comp_sweeps\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_pre_comp_sai_thres': lambda l, x: sub(
-                    r'(?P<key>cm_solver_pre_comp_sai_thres\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_pre_comp_sai_thres\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_pre_app_type': lambda l, x: sub(
-                    r'(?P<key>cm_solver_pre_app_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_pre_app_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'cm_solver_pre_app_jacobi_iters': lambda l, x: sub(
-                    r'(?P<key>cm_solver_pre_app_jacobi_iters\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>cm_solver_pre_app_jacobi_iters\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
                 'geo_format': lambda l, x: sub(
-                    r'(?P<key>geo_format\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                    r'^(?P<key>geo_format\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'temp_init': lambda l, x: sub(
+                    r'^(?P<key>temp_init\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'temp_final': lambda l, x: sub(
+                    r'^(?P<key>temp_final\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                't_mass': lambda l, x: sub(
+                    r'^(?P<key>t_mass\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                't_mode': lambda l, x: sub(
+                    r'^(?P<key>t_mode\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                't_rate': lambda l, x: sub(
+                    r'^(?P<key>t_rate\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                't_freq': lambda l, x: sub(
+                    r'^(?P<key>t_freq\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'pressure': lambda l, x: sub(
+                    r'^(?P<key>pressure\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'p_mass': lambda l, x: sub(
+                    r'^(?P<key>p_mass\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'pt_mass': lambda l, x: sub(
+                    r'^(?P<key>pt_mass\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'compress': lambda l, x: sub(
+                    r'^(?P<key>compress\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
+                'press_mode': lambda l, x: sub(
+                    r'^(?P<key>press_mode\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
         }
         self.__params['geo_format'] = geo_format
         self.__min_step = min_step
@@ -83,15 +127,17 @@ dt                      0.25                    ! time step in fs
 periodic_boundaries     1                       ! 0: no periodic boundaries, 1: periodic boundaries
 
 reposition_atoms        0                       ! 0: just fit to periodic boundaries, 1: CoM to the center of box, 3: CoM to the origin
+remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
+reneighbor              1                       ! frequency to recompute Verlet lists
 restrict_bonds          0                       ! enforce the bonds given in CONECT lines of pdb file for this many steps
-tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
 energy_update_freq      1
-remove_CoM_vel          500                     ! remove the translational and rotational vel around the center of mass at every 'this many' steps
+tabulate_long_range     0                       ! denotes the granularity of long range tabulation, 0 means no tabulation
 
-nbrhood_cutoff          5.0                     ! near neighbors cutoff for bond calculations (Angstroms)
-bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
+vlist_buffer            0.0                     ! skim distance on top of non-bonded interaction cutoff (Angstroms)
+nbrhood_cutoff          5.0                     ! cutoff distance for bond interaction (Angstroms)
+hbond_cutoff            7.5                     ! cutoff distance for hydrogen bond interactions (Angstroms)
 thb_cutoff              0.001                   ! cutoff value for three body interactions (Angstroms)
-hbond_cutoff            7.50                    ! cutoff distance for hydrogen bond interactions (Angstroms)
+bond_graph_cutoff       0.3                     ! bond strength cutoff for bond graphs (Angstroms)
 
 charge_method         		  0             ! charge method: 0 = QEq, 1 = EEM, 2 = ACKS2
 cm_q_net              		  0.0           ! net system charge
@@ -143,7 +189,7 @@ freq_diffusion_coef     1                       ! calculate diffusion coefficien
 restrict_type           2                       ! -1: all types of atoms, 0 and up: only this type of atoms
 
 restart_format          1                       ! 0: restarts in ASCII  1: restarts in binary
-restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps
+restart_freq            0                       ! 0: do not output any restart files. >0: output a restart file at every 'this many' steps\
 """
 
         # substitute key-value pairs in the text of the control file
@@ -207,10 +253,8 @@ restart_freq            0                       ! 0: do not output any restart f
             if proc_handle.returncode < 0:
                 print("WARNING: process terminated with code {0}".format(proc_handle.returncode))
 
-            print('stdout:')
-            print(stdout)
-            print('stderr:')
-            print(stderr)
+            print('stdout:\n{0}'.format(stdout), end='')
+            print('stderr:\n{0}'.format(stderr), end='')
 
             if path.exists(temp_file):
                 remove(temp_file)
@@ -315,8 +359,8 @@ restart_freq            0                       ! 0: do not output any restart f
     def _build_slurm_script(self, binary, param_values):
         from os import path
 
-        # back up two directory levels
-        base_dir = path.dirname(path.dirname(path.dirname(binary)))
+        # remove executable and back up two directory levels
+        base_dir = path.dirname(path.dirname(path.dirname(path.abspath(binary))))
 
         job_script = """\
 #!/bin/bash -login
@@ -346,8 +390,8 @@ python3 {0}/tools/run_sim.py run_md \\
     def _build_pbs_script(self, binary, param_values):
         from os import path
 
-        # back up two directory levels
-        base_dir = path.dirname(path.dirname(path.dirname(binary)))
+        # remove executable and back up two directory levels
+        base_dir = path.dirname(path.dirname(path.dirname(path.abspath(binary))))
 
         job_script = """\
 #!/bin/bash -login
@@ -390,12 +434,10 @@ python3 {0}/tools/run_sim.py run_md \\
 
             if proc_handle.returncode < 0:
                 print("WARNING: process terminated with code {0}".format(proc_handle.returncode))
-                print('stdout:')
-                print(stdout)
-                print('stderr:')
-                print(stderr)
+                print('stdout:\n{0}'.format(stdout), end='')
+                print('stderr:\n{0}'.format(stderr), end='')
             else:
-                print(stdout)
+                print(stdout, end='')
 
 
 if __name__ == '__main__':
@@ -404,12 +446,13 @@ if __name__ == '__main__':
     from sys import exit
 
     def setup_parser():
-        DATA = [ \
+        DATA_SETS = [ \
                 'bilayer_56800', 'bilayer_340800', \
                 'dna_19733', \
                 'petn_48256', \
                 'silica_6000', 'silica_72000', 'silica_300000', \
                 'water_6540', 'water_78480', 'water_327000', \
+                'zno_6912', \
                 ]
         JOB_TYPES = ['pbs', 'slurm']
 
@@ -424,7 +467,7 @@ if __name__ == '__main__':
         run_md_parser.add_argument('-p', '--params', metavar='params', action='append', default=None, nargs=2,
                 help='Paramater name and value pairs for the simulation, with multiple values comma delimited.')
         run_md_parser.add_argument('data_sets', nargs='+',
-                choices=DATA, help='Data sets for which to run simulations.')
+                choices=DATA_SETS, help='Data sets for which to run simulations.')
         run_md_parser.set_defaults(func=run_md)
 
         parse_results_parser.add_argument('-f', '--out_file', metavar='out_file', default=None, nargs=1,
@@ -436,7 +479,7 @@ if __name__ == '__main__':
         parse_results_parser.add_argument('-x', '--max_step', metavar='max_step', default=None, nargs=1,
                 help='Maxiumum simulation step for aggregating results.')
         parse_results_parser.add_argument('data_sets', nargs='+',
-                choices=DATA, help='Data sets for which to parse results.')
+                choices=DATA_SETS, help='Data sets for which to parse results.')
         parse_results_parser.set_defaults(func=parse_results)
 
         submit_jobs_parser.add_argument('-b', '--binary', metavar='binary', default=None, nargs=1,
@@ -446,7 +489,7 @@ if __name__ == '__main__':
         submit_jobs_parser.add_argument('job_script_type', nargs=1,
                 choices=JOB_TYPES, help='Type of job script.')
         submit_jobs_parser.add_argument('data_sets', nargs='+',
-                choices=DATA, help='Data sets for which to run simulations.')
+                choices=DATA_SETS, help='Data sets for which to run simulations.')
         submit_jobs_parser.set_defaults(func=submit_jobs)
 
         return parser
@@ -457,7 +500,18 @@ if __name__ == '__main__':
         control_params_dict = {
                 'ensemble_type': ['0'],
                 'nsteps': ['20'],
+                'dt': ['0.25'],
+                'periodic_boundaries': ['1'],
+                'reposition_atoms': ['0'],
+                'remove_CoM_vel': ['500'],
+                'reneighbor': ['1'],
+                'update_energy_freq': ['1'],
                 'tabulate_long_range': ['0'],
+                'vlist_buffer': ['0.0'],
+                'nbrhood_cutoff': ['5.0'],
+                'hbond_cutoff': ['0.0'],
+                'thb_cutoff': ['0.001'],
+                'bond_graph_cutoff': ['0.3'],
                 'charge_method': ['0'],
                 'cm_q_net': ['0.0'],
                 'cm_solver_type': ['0'],
@@ -476,6 +530,17 @@ if __name__ == '__main__':
                 'cm_solver_pre_app_jacobi_iters': ['30'],
                 'threads': ['1'],
                 'geo_format': [],
+                'temp_init': ['0.0'],
+                'temp_final': ['300.0'],
+                't_mass': ['0.166666'],
+                't_mode': ['0'],
+                't_rate': ['-100.0'],
+                't_freq': ['4.0'],
+                'pressure': ['0.000101325'],
+                'p_mass': ['5000.0'],
+                'pt_mass': ['5000.0'],
+                'compress': ['0.008134'],
+                'press_mode': ['0'],
         }
         return control_dir, data_dir, control_params_dict
 
@@ -582,16 +647,27 @@ if __name__ == '__main__':
                     result_header = header_str, result_body_fmt=body_fmt_str,
                     geo_format=['1'], result_file=result_file,
                     min_step=min_step, max_step=max_step))
+        if 'zno_6912' in data_sets:
+            test_cases.append(
+                TestCase('zno_6912',
+                    path.join(data_dir, 'metal/zno_6912.pdb'),
+                    path.join(data_dir, 'metal/ffield.zno'),
+                    path.join(control_dir, 'param.gpu.water'),
+                    params=control_params, result_header_fmt=header_fmt_str,
+                    result_header = header_str, result_body_fmt=body_fmt_str,
+                    geo_format=['1'], result_file=result_file,
+                    min_step=min_step, max_step=max_step))
 
         return test_cases
 
     def run_md(args):
-        base_dir = getcwd()
-        control_dir, data_dir, control_params_dict = setup_defaults(base_dir)
-
         if args.binary:
             binary = args.binary[0]
+            # remove executable and back up two directory levels
+            base_dir = path.dirname(path.dirname(path.dirname(path.abspath(binary))))
+            control_dir, data_dir, control_params_dict = setup_defaults(base_dir)
         else:
+            base_dir = getcwd()
             binary = path.join(base_dir, 'sPuReMD/bin/spuremd')
 
         # overwrite default control file parameter values if supplied via command line args
@@ -640,12 +716,13 @@ if __name__ == '__main__':
             test.parse_results()
 
     def submit_jobs(args):
-        base_dir = getcwd()
-        control_dir, data_dir, control_params_dict = setup_defaults(base_dir)
-
         if args.binary:
             binary = args.binary[0]
+            # remove executable and back up two directory levels
+            base_dir = path.dirname(path.dirname(path.dirname(path.abspath(binary))))
+            control_dir, data_dir, control_params_dict = setup_defaults(base_dir)
         else:
+            base_dir = getcwd()
             binary = path.join(base_dir, 'sPuReMD/bin/spuremd')
 
         # overwrite default control file parameter values if supplied via command line args
-- 
GitLab