Exemple #1
0
def test_duccsdtq():
    """Test projective factorized UCCSDTQ on Ne using RHF/cc-pVDZ orbitals"""

    import forte.proc.scc as scc
    import forte
    import psi4

    forte.startup()

    ref_energy = -128.679023738907

    geom = "Ne"

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='cc-pVDZ',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(
        psi4_wfn, mo_spaces={'FROZEN_DOCC': [1, 0, 0, 0, 0, 0, 0, 0]})
    calc_data = scc.run_cc(forte_objs[1],
                           forte_objs[2],
                           forte_objs[3],
                           cc_type='ducc',
                           max_exc=4,
                           e_convergence=1.0e-11)

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:       {scf_energy}')
    print(f'  DUCCSDTQ energy: {energy}')
    print(f'  E - Eref:        {energy - ref_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-11)
Exemple #2
0
def test_ccsdtq():
    """Test CCSDTQ on H4 using RHF/DZ orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4

    ref_energy = -2.225370535177  # from psi4

    geom = """
     H 0.0 0.0 0.0
     H 0.0 0.0 1.0
     H 0.0 0.0 2.0
     H 0.0 0.0 3.0     
    """

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom, basis='DZ', reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(psi4_wfn, mo_spaces={})
    calc_data = scc.run_cc(
        forte_objs['as_ints'], forte_objs['scf_info'], forte_objs['mo_space_info'], cc_type='cc', max_exc=4
    )

    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:     {scf_energy}')
    print(f'  CCSDTQ energy: {energy}')
    print(f'  E - Eref:      {energy - ref_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-11)
Exemple #3
0
def test_uccsd_8():
    """Test projective unlinked UCCSD on H4 using RHF/STO-3G orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4

    forte.startup()

    ref_energy = -1.9976233094  # from Jonathon

    geom = """
     H 0.0 0.0 0.0
     H 0.0 0.0 1.5
     H 0.0 0.0 3.0
     H 0.0 0.0 4.5     
    """

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom, basis='sto-3g', reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(psi4_wfn, mo_spaces={})
    calc_data = scc.run_cc(
        forte_objs[1], forte_objs[2], forte_objs[3], cc_type='ucc', max_exc=2, e_convergence=1.0e-10, linked=False
    )

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][2]

    print(f'  HF energy:    {scf_energy}')
    print(f'  CCSD energy:  {energy}')
    print(f'  corr. energy: {energy - scf_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-6)
def test_ccsdtq_3():
    """Test CCSDTQ on Ne using RHF/cc-pVDZ orbitals"""

    import forte.proc.scc as scc
    import forte
    import psi4

    ref_energy = -128.679014931  # from Evangelista, J. Chem. Phys. 134, 224102 (2011).

    geom = "Ne"

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='cc-pVDZ',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(
        psi4_wfn, mo_spaces={'FROZEN_DOCC': [1, 0, 0, 0, 0, 0, 0, 0]})
    calc_data = scc.run_cc(forte_objs['as_ints'],
                           forte_objs['scf_info'],
                           forte_objs['mo_space_info'],
                           cc_type='cc',
                           max_exc=4,
                           e_convergence=1.0e-12)

    psi4.core.clean()

    energy = calc_data[-1][1]

    print(energy - ref_energy)
    assert energy == pytest.approx(ref_energy, 1.0e-9)
Exemple #5
0
def test_duccsd():
    """Test projective factorized UCCSDT on Ne using RHF/cc-pVDZ orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4

    ref_energy = -128.677997285129

    geom = "Ne"

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='cc-pVDZ',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(
        psi4_wfn, mo_spaces={'FROZEN_DOCC': [1, 0, 0, 0, 0, 0, 0, 0]})
    calc_data = scc.run_cc(forte_objs['as_ints'],
                           forte_objs['scf_info'],
                           forte_objs['mo_space_info'],
                           cc_type='ducc',
                           max_exc=2,
                           e_convergence=1.0e-10)

    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:     {scf_energy}')
    print(f'  DUCCSD energy: {energy}')
    print(f'  E - Eref:      {energy - ref_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-11)
Exemple #6
0
def test_uccsd():
    """Test projective UCCSD on H2 using RHF/DZ orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4

    ref_energy = -1.126712715716011  # UCCSD = FCI energy from psi4

    geom = """
     H
     H 1 1.0
    """

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='DZ',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(psi4_wfn, mo_spaces={})
    calc_data = scc.run_cc(forte_objs['as_ints'],
                           forte_objs['scf_info'],
                           forte_objs['mo_space_info'],
                           cc_type='ucc',
                           max_exc=2,
                           e_convergence=1.0e-11)

    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:    {scf_energy}')
    print(f'  UCCSD energy: {energy}')
    print(f'  E - Eref:     {energy - ref_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-11)
Exemple #7
0
def test_duccsdt():
    """Test projective factorized UCCSDT on Ne using RHF/cc-pVDZ orbitals"""

    ref_energy = -128.679016191303  # this number was obtained with the on_the_fly implementation

    geom = "Ne"

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='cc-pVDZ',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(
        psi4_wfn, mo_spaces={'FROZEN_DOCC': [1, 0, 0, 0, 0, 0, 0, 0]})
    calc_data = scc.run_cc(forte_objs['as_ints'],
                           forte_objs['scf_info'],
                           forte_objs['mo_space_info'],
                           cc_type='ducc',
                           max_exc=3,
                           e_convergence=1.0e-11)

    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:      {scf_energy}')
    print(f'  DUCCSDT energy: {energy}')
    print(f'  E - Eref:       {energy - ref_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-11)
Exemple #8
0
def test_uccsd_2():
    """Test projective UCCSD on Ne using RHF/cc-pVDZ orbitals"""

    import forte.proc.scc as scc
    import forte
    import psi4

    forte.startup()

    ref_energy = -128.677999887  # from Evangelista, J. Chem. Phys. 134, 224102 (2011).

    geom = "Ne"

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom, basis='cc-pVDZ', reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(psi4_wfn, mo_spaces={'FROZEN_DOCC': [1, 0, 0, 0, 0, 0, 0, 0]})
    calc_data = scc.run_cc(forte_objs[1], forte_objs[2], forte_objs[3], cc_type='ucc', max_exc=2, e_convergence=1.0e-10)

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:    {scf_energy}')
    print(f'  UCCSD energy: {energy}')
    print(f'  E - Eref:     {energy - ref_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-11)
Exemple #9
0
def test_uccsd_3():
    """Test projective UCCSD on Ne using RHF/cc-pVDZ orbitals"""

    import forte.proc.scc as scc
    import forte
    import psi4
    import os.path

    forte.startup()

    ref_energy = -107.655681875111

    psi4.set_options({'FORTE__FROZEN_DOCC': [2]})
    options = forte.prepare_forte_options()
    forte_objects = forte.prepare_forte_objects_from_fcidump(
        options, os.path.dirname(__file__))
    state_weights_map, mo_space_info, scf_info, fcidump = forte_objects
    ints = forte.make_ints_from_fcidump(fcidump, options, mo_space_info)
    as_ints = forte.make_active_space_ints(mo_space_info, ints, 'CORRELATED',
                                           [])
    calc_data = scc.run_cc(as_ints,
                           scf_info,
                           mo_space_info,
                           cc_type='ucc',
                           max_exc=2,
                           e_convergence=1.0e-10)

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  UCCSD energy: {energy}')
    assert energy == pytest.approx(ref_energy, 1.0e-9)
Exemple #10
0
def test_ccsd():
    """Test CCSD on H2 using RHF/DZ orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4

    forte.startup()

    ref_energy = -1.126712715716011  # CCSD = FCI energy from psi4

    geom = """
     H
     H 1 1.0
    """

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom, basis='DZ', reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(psi4_wfn, mo_spaces={})
    calc_data = scc.run_cc(
        forte_objs[1], forte_objs[2], forte_objs[3], cc_type='dcc', max_exc=2, e_convergence=1.0e-11, on_the_fly=True
    )

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:   {scf_energy}')
    print(f'  CCSD energy: {energy}')
    print(f'  E - Eref:    {energy - ref_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-11)
Exemple #11
0
def test_ul_uccsd_1():
    """Test projective unlinked UCCSD on H4 using RHF/STO-3G orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4
    import os.path

    forte.startup()

    ref_energy = -1.9437216535661626  # from Jonathon

    psi4.set_options({
        'FORTE__FCIDUMP_FILE': 'INTDUMP2',
        'FORTE__FCIDUMP_DOCC': [2],
        'FORTE__FROZEN_DOCC': [0],
    })

    options = forte.prepare_forte_options()
    forte_objects = forte.prepare_forte_objects_from_fcidump(
        options, os.path.dirname(__file__))
    state_weights_map, mo_space_info, scf_info, fcidump = forte_objects
    ints = forte.make_ints_from_fcidump(fcidump, options, mo_space_info)
    as_ints = forte.make_active_space_ints(mo_space_info, ints, 'CORRELATED',
                                           [])
    calc_data = scc.run_cc(as_ints,
                           scf_info,
                           mo_space_info,
                           cc_type='ucc',
                           max_exc=2,
                           e_convergence=1.0e-10,
                           linked=False,
                           diis_start=2)

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][2]

    assert energy == pytest.approx(ref_energy, 1.0e-6)
Exemple #12
0
def test_uccsd_4():
    """Test projective UCCSD on Ne using RHF/cc-pVDZ orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4

    forte.startup()

    ref_energy = -107.655681875111

    geom = """
    N
    N 1 1.3
    symmetry c1
    """

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='sto-3g',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(
        psi4_wfn, mo_spaces={'frozen_docc': [2]})
    calc_data = scc.run_cc(forte_objs[1],
                           forte_objs[2],
                           forte_objs[3],
                           cc_type='ucc',
                           max_exc=2,
                           e_convergence=1.0e-10)

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:    {scf_energy}')
    print(f'  CCSD energy:  {energy}')
    print(f'  corr. energy: {energy - scf_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-9)
Exemple #13
0
def test_ccsdtq_2():
    """Test CCSDTQ on H4 using RHF/cc-pVDZ orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4

    forte.startup()

    ref_energy = -2.253982496764673  # from psi4

    geom = """
     H 0.0 0.0 0.0
     H 0.0 0.0 1.0
     H 0.0 0.0 2.0
     H 0.0 0.0 3.0     
    """

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='cc-pVDZ',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(psi4_wfn, mo_spaces={})
    calc_data = scc.run_cc(forte_objs[1],
                           forte_objs[2],
                           forte_objs[3],
                           cc_type='cc',
                           max_exc=4,
                           e_convergence=1.0e-12)

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:     {scf_energy}')
    print(f'  CCSDTQ energy: {energy}')
    print(f'  E - Eref:      {energy - ref_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-11)
Exemple #14
0
def test_ccsd_3():
    """Test CCSD on H4 using RHF/DZ orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4

    forte.startup()

    ref_energy = -2.225059801642  # from psi4

    geom = """
     H 0.0 0.0 0.0
     H 0.0 0.0 1.0
     H 0.0 0.0 2.0
     H 0.0 0.0 3.0     
    """

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='DZ',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(psi4_wfn, mo_spaces={})
    calc_data = scc.run_cc(forte_objs[1],
                           forte_objs[2],
                           forte_objs[3],
                           cc_type='cc',
                           max_exc=2,
                           on_the_fly=True)

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:   {scf_energy}')
    print(f'  CCSD energy: {energy}')
    print(f'  E - Eref:    {energy - ref_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-11)
Exemple #15
0
def test_uccsd_7():
    """Test projective linearized unliked UCCSDT = CISDT on H4 using RHF/STO-3G orbitals"""

    import pytest
    import forte.proc.scc as scc
    import forte
    import psi4

    ref_energy = -1.9824130356  # from CISDT

    geom = """
     H 0.0 0.0 0.0
     H 0.0 0.0 1.5
     H 0.0 0.0 3.0
     H 0.0 0.0 4.5     
    """

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='sto-3g',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(psi4_wfn, mo_spaces={})
    calc_data = scc.run_cc(forte_objs['as_ints'],
                           forte_objs['scf_info'],
                           forte_objs['mo_space_info'],
                           cc_type='ucc',
                           max_exc=3,
                           e_convergence=1.0e-10,
                           linked=False,
                           maxk=1)

    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:    {scf_energy}')
    print(f'  CCSD energy:  {energy}')
    print(f'  corr. energy: {energy - scf_energy}')

    assert energy == pytest.approx(ref_energy, 1.0e-9)
Exemple #16
0
def test_ccsd2():
    """Test CCSD on H2 using RHF/DZ orbitals"""

    import forte.proc.scc as scc
    import forte
    import psi4

    forte.startup()

    ref_energy = -76.237730204702288  # CCSD energy from psi4

    geom = """
     O
     H 1 1.0
     H 1 1.0 2 104.5
    """

    scf_energy, psi4_wfn = forte.utils.psi4_scf(geom,
                                                basis='cc-pVDZ',
                                                reference='RHF')
    forte_objs = forte.utils.prepare_forte_objects(psi4_wfn, mo_spaces={})
    calc_data = scc.run_cc(forte_objs[1],
                           forte_objs[2],
                           forte_objs[3],
                           cc_type='cc',
                           max_exc=2,
                           e_convergence=1.0e-6,
                           r_convergence=1.0e-4,
                           compute_threshold=1.0e-6,
                           on_the_fly=True)

    forte.cleanup()
    psi4.core.clean()

    energy = calc_data[-1][1]

    print(f'  HF energy:   {scf_energy}')
    print(f'  CCSD energy: {energy}')
    print(f'  E - Eref:    {energy - ref_energy}')