job_values['processes'] = processes_per_node*nodes
  job_values['init_level']  = init_level
  job_values['hp_levs']  = hp_levs
  job_values['init_deg'] = init_deg
  job_values['penalty'] = penalty
  job_values['smooth_pred_sigma'] = smooth_pred_sigma
  job_values['smooth_pred_gammah'] = smooth_pred_gammah
  job_values['smooth_pred_gammap'] = smooth_pred_gammap
  job_values['domain_size'] = domain_size
  job_values['percentile'] = percentile
  
  cwd  = os.getcwd()
  if run_path is '.':
    rwd = cwd
  else:
    rwd  = cwd+'/'+run_path
    os.makedirs(rwd)

    
    
    
  job_input       = CreateInputFile(job_script,job_values)
  # Create the run directory #
  # run_dir = rwd+"/run_dir"
  # print "Creating run directory %s..."%(run_dir)
  # os.makedirs(run_dir)
  os.symlink(bin_path+executable,rwd+'/'+executable)
  job_input.set_value({"rundir":rwd})
  job_input.generate_input_file(fname = rwd+'/discosub.sh')
  os.chmod(rwd+'/discosub.sh',0700) # make job submission script executable
                                                 walltime)

  # 3) Weak scaling tests (multi-node):
  key_to_replace = 'nodes'
  replacement_values = [1, 1, 8, 64, 512]
  processes = [1, 8, 64, 512, 4096]
  levels = [3, 4, 5, 6, 7]
  
  cwd  = os.getcwd()
  if run_path is '.':
    rwd = cwd
  else:
    rwd  = cwd+'/'+run_path
    os.makedirs(rwd)

  job_input       = CreateInputFile(job_script,job_values)
  jobs = open(rwd+'/submit_all_jobs.sh','w')

  for i, replacement_value in enumerate(replacement_values):

    # Create the run directory #
    run_dir = rwd+"/run_dir"+str(i)
    print "Creating run directory %s..."%(run_dir)
    os.makedirs(run_dir)
    os.symlink(bin_path+executable,run_dir+'/'+executable)
    # shutil.copy(bin_path+'charmrun',run_dir)

    job_input.set_value({"rundir":run_dir})

    # replace default values #
    if key_to_replace == 'nodes': # for scaling tests