1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import os
- import sys
- # check the python version
- if float(sys.version[:3]) <= 3.6:
- print("This script require Python 3. !")
- print("Try:")
- print("\n\tmodule load python3\n\n")
- print("and restart this script again.")
- print("Aborting...")
- sys.exit(1)
- if len(sys.argv) < 4:
- print('Bad arguments:', sys.argv)
- print('Usage:')
- print('\n\t python3 make_mpi_ensemble_algorithm_experiment.py where experiment ensemble_size run_folder_name\n')
- print('Arguments:\n')
- print('\twhere :\t\t\tWhere the experiment ensemble folders are located.')
- print('\texperiment :\t\tName of the experiment.')
- print('\tensemble_size :\t\tSize of the ensemble.')
- 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".')
- sys.exit(0)
- mail = 'jerome.sauer@uclouvain.be'
- walltime = '48:00:00'
- memory_per_task = '500mb'
- home_dir = os.getenv("HOME")
- scratch_dir = os.getenv("SCRATCH")
- plasim_dir = home_dir + "/PLASIM_ALGORITHM/"
- where = sys.argv[1]
- experiment = sys.argv[2]
- ensemble_size = int(sys.argv[3])
- run_folder = plasim_dir+"plasim/run"
- if len(sys.argv) == 5:
- run_folder_ext = sys.argv[4]
- run_folder += '_'+run_folder_ext
- if not os.path.isdir(run_folder):
- print("PLASIM run directory missing!")
- print("Run "+plasim_dir+"/most.x first.")
- print("Aborting...")
- sys.exit(1)
- print('Creating the directory holding the experiment ensemble...')
- experiment_folder = where+"/"+experiment+"/"
- os.system('mkdir -p '+experiment_folder)
- print('Creating the ensemble folders...')
- for i in range(1, ensemble_size+1):
- member_number = str(i).rjust(2, '0')
- ensemble_member_folder = experiment_folder+'run_'+experiment+'_'+member_number
- os.system('cp -r '+run_folder+' '+ensemble_member_folder)
- job_name = 'plasim_'+experiment+'_'+member_number
- f = open(ensemble_member_folder+'/PBS_'+job_name, 'w')
- f.write("""#!/bin/ksh
- #PBS -S /usr/bin/ksh
- #PBS -q nf
- #PBS -l EC_total_tasks=16
- #PBS -l EC_hyperthreads=1
-
- """)
- f.write('#PBS -N '+job_name+'\n')
- f.write('#PBS -o '+job_name+'.o\n')
- f.write('#PBS -e '+job_name+'.e\n\n')
- f.write('#PBS -m abe\n')
- f.write('#PBS -M '+mail+'\n\n')
- f.write('#PBS -l walltime='+walltime+'\n\n')
- f.write('#PBS -l EC_memory_per_task='+memory_per_task+'\n\n')
- f.write("""module switch PrgEnv-cray PrgEnv-gnu
- module load cray-snplauncher
- module load netcdf4
- module load netcdf
- module load cdo
- """)
- f.write('cd '+ensemble_member_folder+'\n')
- f.write('./most_plasim_run\n')
- f.close()
- print('Experiment ensemble created and available in the folder:')
- print(experiment_folder)
|