import sys # import argparse from mechlib.filesys import prefix_fs from mechlib.amech_io import parser as ioparser from mechlib.amech_io import printer as ioprinter from drivers import esdriver, thermodriver, ktpdriver, transdriver, procdriver # Set runtime options based on user input JOB_PATH = sys.argv[1] # Add a check to see if [1] exists; path exits # Print the header message and host name (probably combine into one function) ioprinter.program_header('amech') ioprinter.random_cute_animal() ioprinter.host_name() # Parse all of the input ioprinter.program_header('inp') INP_STRS = ioparser.read_amech_input(JOB_PATH) THY_DCT = ioparser.thy.theory_dictionary(INP_STRS['thy']) KMOD_DCT, SMOD_DCT = ioparser.models.models_dictionary( INP_STRS['mod'], THY_DCT) INP_KEY_DCT = ioparser.run.input_dictionary(INP_STRS['run']) PES_IDX_DCT = ioparser.run.pes_idxs(INP_STRS['run']) SPC_IDX_DCT = ioparser.run.spc_idxs(INP_STRS['run']) TSK_LST_DCT = ioparser.run.tasks(INP_STRS['run'], THY_DCT) SPC_DCT, GLOB_DCT = ioparser.spc.species_dictionary( INP_STRS['spc'], INP_STRS['dat'], INP_STRS['geo'], 'csv')
def _mechdriver_main(tmp_dir): """ Copy of MechDriver bin """ # print header message and host name (probably combine into one function) ioprinter.program_header('amech') ioprinter.random_cute_animal() ioprinter.host_name() # parse all of the input ioprinter.program_header('inp') inp_strs = ioparser.read_amech_input(tmp_dir) thy_dct = ioparser.thy.theory_dictionary(inp_strs['thy']) kmod_dct, smod_dct = ioparser.models.models_dictionary( inp_strs['mod'], thy_dct) inp_key_dct = ioparser.run.input_dictionary(inp_strs['run']) pes_idx_dct, spc_idx_dct = ioparser.run.chem_idxs(inp_strs['run']) tsk_lst_dct = ioparser.run.tasks( inp_strs['run'], inp_strs['mech'], thy_dct) spc_dct, glob_dct = ioparser.spc.species_dictionary( inp_strs['spc'], inp_strs['dat'], inp_strs['geo'], 'csv') pes_dct = ioparser.mech.pes_dictionary( inp_strs['mech'], 'chemkin', spc_dct) pes_rlst, spc_rlst = ioparser.rlst.run_lst( pes_dct, spc_dct, pes_idx_dct, spc_idx_dct) # build the run-save filesystem directories prefix_fs(inp_key_dct['run_prefix'], inp_key_dct['save_prefix']) # run drivers requested by user es_tsks = tsk_lst_dct.get('es') if es_tsks is not None: ioprinter.program_header('es') esdriver.run( pes_rlst, spc_rlst, es_tsks, spc_dct, glob_dct, thy_dct, inp_key_dct['run_prefix'], inp_key_dct['save_prefix'] ) ioprinter.program_exit('es') therm_tsks = tsk_lst_dct.get('thermo') if therm_tsks is not None: ioprinter.program_header('thermo') thermodriver.run( pes_rlst, spc_rlst, therm_tsks, kmod_dct, smod_dct, spc_dct, thy_dct, inp_key_dct['run_prefix'], inp_key_dct['save_prefix'], tmp_dir ) ioprinter.program_exit('thermo') trans_tsks = tsk_lst_dct.get('trans') if trans_tsks is not None: ioprinter.program_header('trans') if pes_dct: transdriver.run( pes_rlst, spc_rlst, trans_tsks, smod_dct, spc_dct, thy_dct, inp_key_dct['run_prefix'], inp_key_dct['save_prefix'] ) ioprinter.program_exit('trans') ktp_tsks = tsk_lst_dct.get('ktp') if ktp_tsks is not None: ioprinter.program_header('ktp') ktpdriver.run( pes_rlst, ktp_tsks, spc_dct, glob_dct, kmod_dct, smod_dct, inp_key_dct['run_prefix'], inp_key_dct['save_prefix'], tmp_dir ) ioprinter.program_exit('ktp') proc_tsks = tsk_lst_dct.get('proc') if proc_tsks is not None: ioprinter.program_header('proc') procdriver.run( pes_rlst, spc_rlst, proc_tsks, spc_dct, thy_dct, kmod_dct, smod_dct, inp_key_dct['run_prefix'], inp_key_dct['save_prefix'], tmp_dir ) ioprinter.program_exit('proc') # exit program ioprinter.obj('vspace') ioprinter.program_exit('amech')