Example #1
0
def sherrill_gold_standard(func, label, **kwargs):
    r"""Function to call the quantum chemical method known as 'Gold Standard'
    in the Sherrill group. Uses :py:func:`~driver_cbs.complete_basis_set` to evaluate
    the following expression. Two-point extrapolation of the correlation energy
    performed according to :py:func:`~driver_cbs.corl_xtpl_helgaker_2`.

    .. math:: E_{total}^{\text{Au\_std}} = E_{total,\; \text{SCF}}^{\text{aug-cc-pVQZ}} \; + E_{corl,\; \text{MP2}}^{\text{aug-cc-pV[TQ]Z}} \; + \delta_{\text{MP2}}^{\text{CCSD(T)}}\big\vert_{\text{aug-cc-pVTZ}}

    >>> # [1] single-point energy by this composite method
    >>> energy('sherrill_gold_standard')

    >>> # [2] finite-difference geometry optimization
    >>> optimize('sherrill_gold_standard')

    >>> # [3] finite-difference geometry optimization, overwriting some pre-defined sherrill_gold_standard options
    >>> optimize('sherrill_gold_standard', corl_basis='cc-pV[DT]Z', delta_basis='3-21g')

    """
    kwargs['scf_basis'] = kwargs.get('scf_basis', 'aug-cc-pVQZ')
    kwargs['scf_scheme'] = kwargs.get('scf_scheme', driver_cbs.xtpl_highest_1)

    kwargs['corl_wfn'] = kwargs.get('corl_wfn', 'mp2')
    kwargs['corl_basis'] = kwargs.get('corl_basis', 'aug-cc-pV[TQ]Z')
    kwargs['corl_scheme'] = kwargs.get('corl_scheme', driver_cbs.corl_xtpl_helgaker_2)

    kwargs['delta_wfn'] = kwargs.get('delta_wfn', 'ccsd(t)')
    kwargs['delta_wfn_lesser'] = kwargs.get('delta_wfn_lesser', 'mp2')
    kwargs['delta_basis'] = kwargs.get('delta_basis', 'aug-cc-pVTZ')
    kwargs['delta_scheme'] = kwargs.get('delta_scheme', driver_cbs.xtpl_highest_1)

    if label == 'custom_function':
        label = 'Sherrill Group Gold Standard'
    return driver_cbs.cbs(func, label, **kwargs)
Example #2
0
def sherrill_gold_standard(func, label, **kwargs):
    r"""Function to call the quantum chemical method known as 'Gold Standard'
    in the Sherrill group. Uses :py:func:`~psi4.driver.cbs` to evaluate
    the following expression. Two-point extrapolation of the correlation energy
    performed according to :py:func:`~psi4.driver.driver_cbs.corl_xtpl_helgaker_2`.

    .. math:: E_{total}^{\text{Au\_std}} = E_{total,\; \text{SCF}}^{\text{aug-cc-pVQZ}} \; + E_{corl,\; \text{MP2}}^{\text{aug-cc-pV[TQ]Z}} \; + \delta_{\text{MP2}}^{\text{CCSD(T)}}\big\vert_{\text{aug-cc-pVTZ}}

    >>> # [1] single-point energy by this composite method
    >>> energy('sherrill_gold_standard')

    >>> # [2] finite-difference geometry optimization
    >>> optimize('sherrill_gold_standard')

    >>> # [3] finite-difference geometry optimization, overwriting some pre-defined sherrill_gold_standard options
    >>> optimize('sherrill_gold_standard', corl_basis='cc-pV[DT]Z', delta_basis='3-21g')

    """
    kwargs['scf_basis'] = kwargs.get('scf_basis', 'aug-cc-pVQZ')
    kwargs['scf_scheme'] = kwargs.get('scf_scheme', driver_cbs.xtpl_highest_1)

    kwargs['corl_wfn'] = kwargs.get('corl_wfn', 'mp2')
    kwargs['corl_basis'] = kwargs.get('corl_basis', 'aug-cc-pV[TQ]Z')
    kwargs['corl_scheme'] = kwargs.get('corl_scheme',
                                       driver_cbs.corl_xtpl_helgaker_2)

    kwargs['delta_wfn'] = kwargs.get('delta_wfn', 'ccsd(t)')
    kwargs['delta_wfn_lesser'] = kwargs.get('delta_wfn_lesser', 'mp2')
    kwargs['delta_basis'] = kwargs.get('delta_basis', 'aug-cc-pVTZ')
    kwargs['delta_scheme'] = kwargs.get('delta_scheme',
                                        driver_cbs.xtpl_highest_1)

    if label == 'custom_function':
        label = 'Sherrill Group Gold Standard'
    return driver_cbs.cbs(func, label, **kwargs)
Example #3
0
def allen_focal_point(func, label, **kwargs):
    r"""Function to call Wes Allen-style Focal
    Point Analysis. JCP 127 014306.  Uses
    :py:func:`~driver_cbs.complete_basis_set` to evaluate the following
    expression. SCF employs a three-point extrapolation according
    to :py:func:`~driver_cbs.scf_xtpl_helgaker_3`. MP2, CCSD, and
    CCSD(T) employ two-point extrapolation performed according to
    :py:func:`~driver_cbs.corl_xtpl_helgaker_2`.  CCSDT and CCSDT(Q)
    are plain deltas. This wrapper requires :ref:`Kallay's MRCC code <sec:mrcc>`.

    .. math:: E_{total}^{\text{FPA}} = E_{total,\; \text{SCF}}^{\text{cc-pV[Q56]Z}} \; + E_{corl,\; \text{MP2}}^{\text{cc-pV[56]Z}} \; + \delta_{\text{MP2}}^{\text{CCSD}}\big\vert_{\text{cc-pV[56]Z}} \; + \delta_{\text{CCSD}}^{\text{CCSD(T)}}\big\vert_{\text{cc-pV[56]Z}} \; + \delta_{\text{CCSD(T)}}^{\text{CCSDT}}\big\vert_{\text{cc-pVTZ}} \; + \delta_{\text{CCSDT}}^{\text{CCSDT(Q)}}\big\vert_{\text{cc-pVDZ}}

    >>> # [1] single-point energy by this composite method
    >>> energy('allen_focal_point')

    >>> # [2] finite-difference geometry optimization embarrasingly parallel
    >>> optimize('allen_focal_point', mode='sow')

    """

    # SCF
    kwargs['scf_basis'] = kwargs.get('scf_basis', 'cc-pV[Q56]Z')
    kwargs['scf_scheme'] = kwargs.get('scf_scheme', driver_cbs.scf_xtpl_helgaker_3)

    # delta MP2 - SCF
    kwargs['corl_wfn'] = kwargs.get('corl_wfn', 'mp2')
    kwargs['corl_basis'] = kwargs.get('corl_basis', 'cc-pV[56]Z')
    kwargs['corl_scheme'] = kwargs.get('corl_scheme', driver_cbs.corl_xtpl_helgaker_2)

    # delta CCSD - MP2
    kwargs['delta_wfn'] = kwargs.get('delta_wfn', 'mrccsd')
    kwargs['delta_wfn_lesser'] = kwargs.get('delta_wfn_lesser', 'mp2')
    kwargs['delta_basis'] = kwargs.get('delta_basis', 'cc-pV[56]Z')
    kwargs['delta_scheme'] = kwargs.get('delta_scheme', driver_cbs.corl_xtpl_helgaker_2)

    # delta CCSD(T) - CCSD
    kwargs['delta2_wfn'] = kwargs.get('delta2_wfn', 'mrccsd(t)')
    kwargs['delta2_wfn_lesser'] = kwargs.get('delta2_wfn_lesser', 'mrccsd')
    kwargs['delta2_basis'] = kwargs.get('delta2_basis', 'cc-pV[56]Z')
    kwargs['delta2_scheme'] = kwargs.get('delta2_scheme', driver_cbs.corl_xtpl_helgaker_2)

    # delta CCSDT - CCSD(T)
    kwargs['delta3_wfn'] = kwargs.get('delta3_wfn', 'mrccsdt')
    kwargs['delta3_wfn_lesser'] = kwargs.get('delta3_wfn_lesser', 'mrccsd(t)')
    kwargs['delta3_basis'] = kwargs.get('delta3_basis', 'cc-pVTZ')
    kwargs['delta3_scheme'] = kwargs.get('delta3_scheme', driver_cbs.xtpl_highest_1)

    # delta CCSDT(Q) - CCSDT
    kwargs['delta4_wfn'] = kwargs.get('delta4_wfn', 'mrccsdt(q)')
    kwargs['delta4_wfn_lesser'] = kwargs.get('delta4_wfn_lesser', 'mrccsdt')
    kwargs['delta4_basis'] = kwargs.get('delta4_basis', 'cc-pVDZ')
    kwargs['delta4_scheme'] = kwargs.get('delta4_scheme', driver_cbs.xtpl_highest_1)

    if label == 'custom_function':
        label = 'Allen Focal Point'
    return driver_cbs.cbs(func, label, **kwargs)
Example #4
0
def allen_focal_point(func, label, **kwargs):
    r"""Function to call Wes Allen-style Focal
    Point Analysis. JCP 127 014306.  Uses
    :py:func:`~psi4.driver.cbs` to evaluate the following
    expression. SCF employs a three-point extrapolation according
    to :py:func:`~psi4.driver.driver_cbs.scf_xtpl_helgaker_3`. MP2, CCSD, and
    CCSD(T) employ two-point extrapolation performed according to
    :py:func:`~psi4.driver.driver_cbs.corl_xtpl_helgaker_2`.  CCSDT and CCSDT(Q)
    are plain deltas. This wrapper requires :ref:`Kallay's MRCC code <sec:mrcc>`.

    .. math:: E_{total}^{\text{FPA}} = E_{total,\; \text{SCF}}^{\text{cc-pV[Q56]Z}} \; + E_{corl,\; \text{MP2}}^{\text{cc-pV[56]Z}} \; + \delta_{\text{MP2}}^{\text{CCSD}}\big\vert_{\text{cc-pV[56]Z}} \; + \delta_{\text{CCSD}}^{\text{CCSD(T)}}\big\vert_{\text{cc-pV[56]Z}} \; + \delta_{\text{CCSD(T)}}^{\text{CCSDT}}\big\vert_{\text{cc-pVTZ}} \; + \delta_{\text{CCSDT}}^{\text{CCSDT(Q)}}\big\vert_{\text{cc-pVDZ}}

    >>> # [1] single-point energy by this composite method
    >>> energy('allen_focal_point')

    >>> # [2] finite-difference geometry optimization embarrasingly parallel
    >>> optimize('allen_focal_point', mode='sow')

    """

    # SCF
    kwargs['scf_basis'] = kwargs.get('scf_basis', 'cc-pV[Q56]Z')
    kwargs['scf_scheme'] = kwargs.get('scf_scheme', driver_cbs.scf_xtpl_helgaker_3)

    # delta MP2 - SCF
    kwargs['corl_wfn'] = kwargs.get('corl_wfn', 'mp2')
    kwargs['corl_basis'] = kwargs.get('corl_basis', 'cc-pV[56]Z')
    kwargs['corl_scheme'] = kwargs.get('corl_scheme', driver_cbs.corl_xtpl_helgaker_2)

    # delta CCSD - MP2
    kwargs['delta_wfn'] = kwargs.get('delta_wfn', 'mrccsd')
    kwargs['delta_wfn_lesser'] = kwargs.get('delta_wfn_lesser', 'mp2')
    kwargs['delta_basis'] = kwargs.get('delta_basis', 'cc-pV[56]Z')
    kwargs['delta_scheme'] = kwargs.get('delta_scheme', driver_cbs.corl_xtpl_helgaker_2)

    # delta CCSD(T) - CCSD
    kwargs['delta2_wfn'] = kwargs.get('delta2_wfn', 'mrccsd(t)')
    kwargs['delta2_wfn_lesser'] = kwargs.get('delta2_wfn_lesser', 'mrccsd')
    kwargs['delta2_basis'] = kwargs.get('delta2_basis', 'cc-pV[56]Z')
    kwargs['delta2_scheme'] = kwargs.get('delta2_scheme', driver_cbs.corl_xtpl_helgaker_2)

    # delta CCSDT - CCSD(T)
    kwargs['delta3_wfn'] = kwargs.get('delta3_wfn', 'mrccsdt')
    kwargs['delta3_wfn_lesser'] = kwargs.get('delta3_wfn_lesser', 'mrccsd(t)')
    kwargs['delta3_basis'] = kwargs.get('delta3_basis', 'cc-pVTZ')
    kwargs['delta3_scheme'] = kwargs.get('delta3_scheme', driver_cbs.xtpl_highest_1)

    # delta CCSDT(Q) - CCSDT
    kwargs['delta4_wfn'] = kwargs.get('delta4_wfn', 'mrccsdt(q)')
    kwargs['delta4_wfn_lesser'] = kwargs.get('delta4_wfn_lesser', 'mrccsdt')
    kwargs['delta4_basis'] = kwargs.get('delta4_basis', 'cc-pVDZ')
    kwargs['delta4_scheme'] = kwargs.get('delta4_scheme', driver_cbs.xtpl_highest_1)

    if label == 'custom_function':
        label = 'Allen Focal Point'
    return driver_cbs.cbs(func, label, **kwargs)
Example #5
0
def allen_focal_point(func, label, **kwargs):
    r"""Function to call Wes Allen-style Focal
    Point Analysis. JCP 127 014306.  Uses
    :py:func:`~psi4.driver.cbs` to evaluate the following
    expression. SCF employs a three-point extrapolation according
    to :py:func:`~psi4.driver.driver_cbs.scf_xtpl_helgaker_3`. MP2, CCSD, and
    CCSD(T) employ two-point extrapolation performed according to
    :py:func:`~psi4.driver.driver_cbs.corl_xtpl_helgaker_2`.  CCSDT and CCSDT(Q)
    are plain deltas. This wrapper requires :ref:`Kallay's MRCC code <sec:mrcc>`.

    .. math:: E_{total}^{\text{FPA}} = E_{total,\; \text{SCF}}^{\text{cc-pV[Q56]Z}} \; + E_{corl,\; \text{MP2}}^{\text{cc-pV[56]Z}} \; + \delta_{\text{MP2}}^{\text{CCSD}}\big\vert_{\text{cc-pV[56]Z}} \; + \delta_{\text{CCSD}}^{\text{CCSD(T)}}\big\vert_{\text{cc-pV[56]Z}} \; + \delta_{\text{CCSD(T)}}^{\text{CCSDT}}\big\vert_{\text{cc-pVTZ}} \; + \delta_{\text{CCSDT}}^{\text{CCSDT(Q)}}\big\vert_{\text{cc-pVDZ}}

    >>> # [1] single-point energy by this composite method
    >>> energy('allen_focal_point')

    >>> # [2] single-point energy reducing the Hartree-Fock basis sets size
    >>> energy('allen_focal_point', scf_basis='cc-pV[TQ5]Z')

    """

    if not psi4.addons("mrcc"):
        raise ImportError(
            "Install MRCC (executable 'dmrcc') to use the allen_focal_point function."
        )

    scf = {  # HF
        'wfn': 'hf',
        'basis': kwargs.pop('scf_basis', 'cc-pV[Q56]Z'),
        'scheme': kwargs.pop('scf_scheme', 'scf_xtpl_helgaker_3'),
    }
    corl = {  # MP2 - HF
        'wfn': kwargs.pop('corl_wfn', 'mp2'),
        'basis': kwargs.pop('corl_basis', 'cc-pV[56]Z'),
        'scheme': kwargs.pop('corl_scheme', 'corl_xtpl_helgaker_2'),
    }
    delta = {  # CCSD - MP2
        'wfn': kwargs.pop('delta_wfn', 'mrccsd'),
        'wfn_lesser': kwargs.pop('delta_wfn_lesser', 'mp2'),
        'basis': kwargs.pop('delta_basis', 'cc-pV[56]Z'),
        'scheme': kwargs.pop('delta_scheme', 'corl_xtpl_helgaker_2'),
    }
    delta2 = {  # CCSD(T) - CCSD
        'wfn': kwargs.pop('delta2_wfn', 'mrccsd(t)'),
        'wfn_lesser': kwargs.pop('delta2_wfn_lesser', 'mrccsd'),
        'basis': kwargs.pop('delta2_basis', 'cc-pV[56]Z'),
        'scheme': kwargs.pop('delta2_scheme', 'corl_xtpl_helgaker_2'),
    }
    delta3 = {  # CCSDT - CCSD(T)
        'wfn': kwargs.pop('delta3_wfn', 'mrccsdt'),
        'wfn_lesser': kwargs.pop('delta3_wfn_lesser', 'mrccsd(t)'),
        'basis': kwargs.pop('delta3_basis', 'cc-pVTZ'),
        'scheme': kwargs.pop('delta3_scheme', 'xtpl_highest_1'),
    }
    delta4 = {  # CCSDT(Q) - CCSDT
        'wfn': kwargs.pop('delta4_wfn', 'mrccsdt(q)'),
        'wfn_lesser': kwargs.pop('delta4_wfn_lesser', 'mrccsdt'),
        'basis': kwargs.pop('delta4_basis', 'cc-pVDZ'),
        'scheme': kwargs.pop('delta4_scheme', 'xtpl_highest_1'),
    }

    kwargs["cbs_metadata"] = [scf, corl, delta, delta2, delta3, delta4]
    return driver_cbs.cbs(func, label, **kwargs)