make_mpi_ensemble_experiment.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import os
  2. import sys
  3. # check the python version
  4. if float(sys.version[:3]) <= 3.6:
  5. print("This script require Python 3. !")
  6. print("Try:")
  7. print("\n\tmodule load python3\n\n")
  8. print("and restart this script again.")
  9. print("Aborting...")
  10. sys.exit(1)
  11. if len(sys.argv) < 4:
  12. print('Bad arguments:', sys.argv)
  13. print('Usage:')
  14. print('\n\t python3 make_mpi_ensemble_experiment.py where experiment ensemble_size run_folder_name\n')
  15. print('Arguments:\n')
  16. print('\twhere :\t\t\tWhere the experiment ensemble folders are located.')
  17. print('\texperiment :\t\tName of the experiment.')
  18. print('\tensemble_size :\t\tSize of the ensemble.')
  19. print('\trun_folder_name :\tOptional. Addtional name added to the "run_" folder name in plasim folder. Used to selected experiment executable. If not provided, assumes run folder is "run".')
  20. sys.exit(0)
  21. #mail = 'jerome.sauer@uclouvain.be'
  22. #walltime = '48:00:00'
  23. #memory_per_task = '500mb'
  24. home_dir = os.getenv("HOME")
  25. scratch_dir = "/cfast/jsauer/"
  26. plasim_dir = home_dir + "/PLASIM/"
  27. where = sys.argv[1]
  28. experiment = sys.argv[2]
  29. ensemble_size = int(sys.argv[3])
  30. run_folder = plasim_dir+"plasim/run"
  31. if len(sys.argv) == 5:
  32. run_folder_ext = sys.argv[4]
  33. run_folder += '_'+run_folder_ext
  34. if not os.path.isdir(run_folder):
  35. print("PLASIM run directory missing!")
  36. print("Run "+plasim_dir+"/most.x first.")
  37. print("Aborting...")
  38. sys.exit(1)
  39. print('Creating the directory holding the experiment ensemble...')
  40. experiment_folder = where+"/"+experiment+"/"
  41. os.system('mkdir -p '+experiment_folder)
  42. print('Creating the ensemble folders...')
  43. for i in range(1, ensemble_size+1):
  44. member_number = str(i).rjust(2, '0')
  45. ensemble_member_folder = experiment_folder+'run_'+experiment+'_'+member_number
  46. os.system('cp -r '+run_folder+' '+ensemble_member_folder)
  47. #print('Creating the ensemble folders...')
  48. #for i in range(1, ensemble_size+1):
  49. # member_number = str(i).rjust(2, '0')
  50. # ensemble_member_folder = experiment_folder+'run_'+experiment+'_'+member_number
  51. # os.system('cp -r '+run_folder+' '+ensemble_member_folder)
  52. # job_name = 'plasim_'+experiment+'_'+member_number
  53. # f = open(ensemble_member_folder+'/PBS_'+job_name, 'w')
  54. # f.write("""#!/bin/ksh
  55. ##PBS -S /usr/bin/ksh
  56. ##PBS -q nf
  57. ##PBS -l EC_total_tasks=16
  58. ##PBS -l EC_hyperthreads=1
  59. #
  60. #
  61. #""")
  62. #
  63. # f.write('#PBS -N '+job_name+'\n')
  64. # f.write('#PBS -o '+job_name+'.o\n')
  65. # f.write('#PBS -e '+job_name+'.e\n\n')
  66. #
  67. # f.write('#PBS -m abe\n')
  68. # f.write('#PBS -M '+mail+'\n\n')
  69. # f.write('#PBS -l walltime='+walltime+'\n\n')
  70. # f.write('#PBS -l EC_memory_per_task='+memory_per_task+'\n\n')
  71. #
  72. # f.write("""module switch PrgEnv-cray PrgEnv-gnu
  73. #module load cray-snplauncher
  74. #
  75. #module load netcdf4
  76. #module load netcdf
  77. #module load cdo
  78. #
  79. #""")
  80. # f.write('cd '+ensemble_member_folder+'\n')
  81. # f.write('./most_plasim_run\n')
  82. # f.close()
  83. #
  84. #print('Experiment ensemble created and available in the folder:')
  85. #print(experiment_folder)