def zero_point_energy(spc_dct_i, pf_filesystems, spc_model_dct_i, run_prefix, saddle=False): """ compute the ZPE including torsional and anharmonic corrections """ ioprinter.info_message('- Calculating zero-point energy') # Calculate ZPVE is_atom = False if not saddle: if typ.is_atom(spc_dct_i): is_atom = True if is_atom: zpe = 0.0 else: _, _, zpe, _, _, _, _, _ = vib.full_vib_analysis( spc_dct_i, pf_filesystems, spc_model_dct_i, run_prefix, zrxn=(None if not saddle else 'placeholder')) return zpe
def _skip(spc_name, spc_dct_i): """ check if frequencies should be skipped """ skip = False if 'ts' not in spc_name: if typ.is_atom(spc_dct_i): skip = True return skip
def read_spc_data(spc_dct, spc_name, pes_mod_dct_i, spc_mod_dct_i, run_prefix, save_prefix, chn_basis_ene_dct, calc_chn_ene=True, spc_locs=None): """ Reads all required data from the SAVE filesystem for a given species. Also sets the writer for appropriately formatting the data into an MESS input file string. All of the data that is read is determined by the models that are described in the pes and spc model dictionaries. Info and basis species stored in dicts. :param spc_dct: :type spc_dct: :param spc_name: mechanism name of species :type spc_name: str :param pes_mod_dct_i: keyword dict of specific PES model :type pes_mod_dct_i: dict[] :param spc_mod_dct_i: keyword dict of specific species model :type spc_mod_dct_i: dict[] :param run_prefix: root-path to the run-filesystem :type run_prefix: str :param save_prefix: root-path to the save-filesystem :type save_prefix: str :param chn_basis_ene_dct: basis species <names> for mechanism species :type chn_basis_ene_dct: dict[] :rtype: (dict[], dict[]) """ ioprinter.obj('line_plus') ioprinter.reading(f'filesystem info for {spc_name}', newline=1) vib_model = spc_mod_dct_i['vib']['mod'] tors_model = spc_mod_dct_i['tors']['mod'] spc_dct_i = spc_dct[spc_name] if typ.is_atom(spc_dct_i): inf_dct = atm_data(spc_dct, spc_name, pes_mod_dct_i, spc_mod_dct_i, run_prefix, save_prefix) writer = 'atom_block' else: if vib_model == 'tau' or 'tau' in tors_model: inf_dct = tau_data(spc_dct_i, spc_mod_dct_i, run_prefix, save_prefix, saddle=False) writer = 'tau_block' else: inf_dct, chn_basis_ene_dct = mol_data(spc_name, spc_dct, pes_mod_dct_i, spc_mod_dct_i, chn_basis_ene_dct, run_prefix, save_prefix, calc_chn_ene=calc_chn_ene, spc_locs=spc_locs, zrxn=None) writer = 'species_block' # Add writer to inf dct inf_dct['writer'] = writer return inf_dct, chn_basis_ene_dct