Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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