Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,20 @@ The following table summarises the available methods and routines for the ansatz
| CCSD | RUG | RUG | RUG | RUG | RUG | G | RUG | RUG | - |
| CCSDT | RUG | RUG | RUG | | | | RUG | RUG | - |
| CCSDTQ | g | g | | | | | | | - |
| CCSD(T) | RuG | RuG | | | | | | | - |
| CCSDt | RG | RG | | | | | | | - |
| CCSD(T) | RUG | RUG | | | | | | | - |
| CCSDt' | RUG | RUG | | | | | | | - |
| CC2 | RUG | RUG | RUG | RUG | RUG | G | RUG | RUG | - |
| CC3 | RUG | RUG | | | | | | | - |
| LCCD | RUG | RUG | | | | | | | - |
| LCCSD | RUG | RUG | | | | | | | - |
| QCISD | RUG | RUG | | | | | | | - |
| DCD | RU | RU | | | | | | | - |
| DCSD | RU | RU | | | | | | | - |
| DF-CCD | RU | RU | RU | RU | RU | | RU | RU | - |
| DF-CCSD | RU | RU | RU | RU | RU | | RU | RU | - |
| DF-CC2 | RU | RU | RU | RU | RU | | RU | RU | - |
| DF-LCCD | RU | RU | | | | | | | - |
| DF-LCCSD | RU | RU | | | | | | | - |
| DF-QCISD | RU | RU | | | | | | | - |
| DF-DCD | RU | RU | | | | | | | - |
| DF-DCSD | RU | RU | | | | | | | - |
Expand Down
63 changes: 63 additions & 0 deletions ebcc/codegen/GLCCD.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
"""Code generated by `albert` version 0.0.0.

* date: 2024-12-17T16:11:07.723784
* python version: 3.10.12 (main, Nov 6 2024, 20:22:13) [GCC 11.4.0]
* albert version: 0.0.0
* caller: /home/ollie/git/albert/albert/code/einsum.py
* node: ollie-desktop
* system: Linux
* processor: x86_64
* release: 6.8.0-49-generic
"""

from ebcc import numpy as np
from ebcc.util import pack_2e, einsum, dirsum, Namespace


def energy(t2=None, v=None, **kwargs):
"""Code generated by `albert` 0.0.0.

Args:
t2:
v:

Returns:
e_cc:
"""

e_cc = einsum(t2, (0, 1, 2, 3), v.oovv, (0, 1, 2, 3), ()) * 0.25

return e_cc

def update_amps(f=None, t2=None, v=None, **kwargs):
"""Code generated by `albert` 0.0.0.

Args:
f:
t2:
v:

Returns:
t2new:
"""

t2new = einsum(t2, (0, 1, 2, 3), v.oooo, (4, 5, 0, 1), (4, 5, 2, 3)) * 0.5
t2new += v.oovv
t2new += einsum(t2, (0, 1, 2, 3), v.vvvv, (4, 5, 2, 3), (0, 1, 4, 5)) * 0.5
tmp0 = einsum(t2, (0, 1, 2, 3), f.vv, (4, 3), (0, 1, 4, 2))
t2new += np.transpose(tmp0, (1, 0, 2, 3))
t2new += np.transpose(tmp0, (1, 0, 3, 2)) * -1
del tmp0
tmp1 = einsum(t2, (0, 1, 2, 3), f.oo, (4, 1), (4, 0, 2, 3))
t2new += np.transpose(tmp1, (0, 1, 3, 2)) * -1
t2new += np.transpose(tmp1, (1, 0, 3, 2))
del tmp1
tmp2 = einsum(t2, (0, 1, 2, 3), v.ovov, (4, 3, 1, 5), (0, 4, 2, 5))
t2new += tmp2 * -1
t2new += np.transpose(tmp2, (0, 1, 3, 2))
t2new += np.transpose(tmp2, (1, 0, 2, 3))
t2new += np.transpose(tmp2, (1, 0, 3, 2)) * -1
del tmp2

return {"t2new": t2new}

85 changes: 85 additions & 0 deletions ebcc/codegen/GLCCSD.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
"""Code generated by `albert` version 0.0.0.

* date: 2024-12-17T16:19:25.157269
* python version: 3.10.12 (main, Nov 6 2024, 20:22:13) [GCC 11.4.0]
* albert version: 0.0.0
* caller: /home/ollie/git/albert/albert/code/einsum.py
* node: ollie-desktop
* system: Linux
* processor: x86_64
* release: 6.8.0-49-generic
"""

from ebcc import numpy as np
from ebcc.util import pack_2e, einsum, dirsum, Namespace


def energy(f=None, t1=None, t2=None, v=None, **kwargs):
"""Code generated by `albert` 0.0.0.

Args:
f:
t1:
t2:
v:

Returns:
e_cc:
"""

e_cc = einsum(t1, (0, 1), f.ov, (0, 1), ())
e_cc += einsum(v.oovv, (0, 1, 2, 3), t2, (0, 1, 2, 3), ()) * 0.25

return e_cc

def update_amps(f=None, t1=None, t2=None, v=None, **kwargs):
"""Code generated by `albert` 0.0.0.

Args:
f:
t1:
t2:
v:

Returns:
t1new:
t2new:
"""

t1new = einsum(t1, (0, 1), f.vv, (2, 1), (0, 2))
t1new += einsum(t2, (0, 1, 2, 3), v.ovoo, (4, 3, 0, 1), (4, 2)) * -0.5
t1new += einsum(v.ovov, (0, 1, 2, 3), t1, (2, 1), (0, 3)) * -1
t1new += einsum(t2, (0, 1, 2, 3), f.ov, (1, 3), (0, 2))
t1new += f.ov
t1new += einsum(f.oo, (0, 1), t1, (1, 2), (0, 2)) * -1
t1new += einsum(t2, (0, 1, 2, 3), v.ovvv, (1, 4, 2, 3), (0, 4)) * -0.5
t2new = einsum(t2, (0, 1, 2, 3), v.oooo, (4, 5, 0, 1), (4, 5, 2, 3)) * 0.5
t2new += v.oovv
t2new += einsum(v.vvvv, (0, 1, 2, 3), t2, (4, 5, 2, 3), (4, 5, 0, 1)) * 0.5
tmp0 = einsum(t2, (0, 1, 2, 3), v.ovov, (4, 3, 1, 5), (0, 4, 2, 5))
t2new += tmp0 * -1
t2new += np.transpose(tmp0, (0, 1, 3, 2))
t2new += np.transpose(tmp0, (1, 0, 2, 3))
t2new += np.transpose(tmp0, (1, 0, 3, 2)) * -1
del tmp0
tmp1 = einsum(v.ooov, (0, 1, 2, 3), t1, (2, 4), (0, 1, 4, 3))
tmp3 = np.copy(np.transpose(tmp1, (1, 0, 2, 3))) * -1
del tmp1
tmp2 = einsum(t2, (0, 1, 2, 3), f.vv, (4, 3), (0, 1, 4, 2))
tmp3 += np.transpose(tmp2, (1, 0, 2, 3)) * -1
del tmp2
t2new += tmp3 * -1
t2new += np.transpose(tmp3, (0, 1, 3, 2))
del tmp3
tmp4 = einsum(t2, (0, 1, 2, 3), f.oo, (4, 1), (4, 0, 2, 3))
tmp6 = np.copy(np.transpose(tmp4, (0, 1, 3, 2))) * -1
del tmp4
tmp5 = einsum(v.ovvv, (0, 1, 2, 3), t1, (4, 1), (4, 0, 2, 3))
tmp6 += np.transpose(tmp5, (0, 1, 3, 2))
del tmp5
t2new += tmp6
t2new += np.transpose(tmp6, (1, 0, 2, 3)) * -1
del tmp6

return {"t1new": t1new, "t2new": t2new}

87 changes: 87 additions & 0 deletions ebcc/codegen/RDFLCCD.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
"""Code generated by `albert` version 0.0.0.

* date: 2024-12-18T00:18:12.591121
* python version: 3.10.12 (main, Nov 6 2024, 20:22:13) [GCC 11.4.0]
* albert version: 0.0.0
* caller: /home/ollie/git/albert/albert/code/einsum.py
* node: ollie-desktop
* system: Linux
* processor: x86_64
* release: 6.8.0-49-generic
"""

from ebcc import numpy as np
from ebcc.util import pack_2e, einsum, dirsum, Namespace


def energy(t2=None, v=None, **kwargs):
"""Code generated by `albert` 0.0.0.

Args:
t2:
v:

Returns:
e_cc:
"""

tmp0 = np.copy(np.transpose(t2, (1, 0, 2, 3))) * 2
tmp0 += np.transpose(t2, (1, 0, 3, 2)) * -1
tmp1 = einsum(v.xov, (0, 1, 2), tmp0, (1, 3, 4, 2), (3, 4, 0)) * 0.5
del tmp0
e_cc = einsum(tmp1, (0, 1, 2), v.xov, (2, 0, 1), ()) * 2
del tmp1

return e_cc

def update_amps(f=None, t2=None, v=None, **kwargs):
"""Code generated by `albert` 0.0.0.

Args:
f:
t2:
v:

Returns:
t2new:
"""

tmp0 = einsum(v.xoo, (0, 1, 2), v.xoo, (0, 3, 4), (1, 3, 4, 2))
t2new = einsum(tmp0, (0, 1, 2, 3), t2, (1, 3, 4, 5), (2, 0, 4, 5))
del tmp0
t2new += einsum(v.xov, (0, 1, 2), v.xov, (0, 3, 4), (3, 1, 4, 2))
tmp1 = einsum(v.xvv, (0, 1, 2), v.xvv, (0, 3, 4), (1, 3, 4, 2))
t2new += einsum(t2, (0, 1, 2, 3), tmp1, (4, 2, 5, 3), (0, 1, 5, 4))
del tmp1
tmp2 = einsum(v.xvv, (0, 1, 2), v.xoo, (0, 3, 4), (3, 4, 1, 2))
tmp3 = einsum(tmp2, (0, 1, 2, 3), t2, (4, 1, 5, 3), (4, 0, 5, 2))
tmp7 = np.copy(tmp3)
del tmp3
tmp4 = np.copy(np.transpose(t2, (0, 1, 3, 2))) * 2
tmp4 += t2 * -1
tmp5 = einsum(v.xov, (0, 1, 2), tmp4, (1, 3, 4, 2), (3, 4, 0)) * 0.5
del tmp4
tmp6 = einsum(v.xov, (0, 1, 2), tmp5, (3, 4, 0), (1, 3, 2, 4)) * 2
del tmp5
tmp7 += np.transpose(tmp6, (1, 0, 3, 2)) * -1
del tmp6
t2new += tmp7 * -1
t2new += np.transpose(tmp7, (1, 0, 3, 2)) * -1
del tmp7
tmp8 = einsum(f.oo, (0, 1), t2, (2, 1, 3, 4), (0, 2, 3, 4))
tmp10 = np.copy(tmp8)
del tmp8
tmp9 = einsum(t2, (0, 1, 2, 3), tmp2, (4, 1, 5, 2), (0, 4, 3, 5))
del tmp2
tmp10 += tmp9
del tmp9
t2new += np.transpose(tmp10, (0, 1, 3, 2)) * -1
t2new += np.transpose(tmp10, (1, 0, 2, 3)) * -1
del tmp10
tmp11 = einsum(f.vv, (0, 1), t2, (2, 3, 4, 1), (2, 3, 0, 4))
t2new += np.transpose(tmp11, (0, 1, 3, 2))
t2new += np.transpose(tmp11, (1, 0, 2, 3))
del tmp11

return {"t2new": t2new}

117 changes: 117 additions & 0 deletions ebcc/codegen/RDFLCCSD.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
"""Code generated by `albert` version 0.0.0.

* date: 2024-12-18T00:18:30.019400
* python version: 3.10.12 (main, Nov 6 2024, 20:22:13) [GCC 11.4.0]
* albert version: 0.0.0
* caller: /home/ollie/git/albert/albert/code/einsum.py
* node: ollie-desktop
* system: Linux
* processor: x86_64
* release: 6.8.0-49-generic
"""

from ebcc import numpy as np
from ebcc.util import pack_2e, einsum, dirsum, Namespace


def energy(f=None, t1=None, t2=None, v=None, **kwargs):
"""Code generated by `albert` 0.0.0.

Args:
f:
t1:
t2:
v:

Returns:
e_cc:
"""

e_cc = einsum(f.ov, (0, 1), t1, (0, 1), ()) * 2
tmp0 = np.copy(np.transpose(t2, (1, 0, 2, 3))) * 2
tmp0 += np.transpose(t2, (1, 0, 3, 2)) * -1
tmp1 = einsum(tmp0, (0, 1, 2, 3), v.xov, (4, 0, 3), (1, 2, 4)) * 0.5
del tmp0
e_cc += einsum(v.xov, (0, 1, 2), tmp1, (1, 2, 0), ()) * 2
del tmp1

return e_cc

def update_amps(f=None, t1=None, t2=None, v=None, **kwargs):
"""Code generated by `albert` 0.0.0.

Args:
f:
t1:
t2:
v:

Returns:
t1new:
t2new:
"""

t1new = einsum(f.vv, (0, 1), t1, (2, 1), (2, 0))
t1new += f.ov
tmp0 = einsum(v.xov, (0, 1, 2), t1, (1, 2), (0,))
t1new += einsum(v.xov, (0, 1, 2), tmp0, (0,), (1, 2)) * 2
del tmp0
t1new += einsum(t1, (0, 1), f.oo, (2, 0), (2, 1)) * -1
tmp1 = einsum(v.xoo, (0, 1, 2), v.xov, (0, 3, 4), (1, 2, 3, 4))
tmp2 = np.copy(np.transpose(t2, (0, 1, 3, 2))) * 2
tmp2 += t2 * -1
t1new += einsum(tmp1, (0, 1, 2, 3), tmp2, (2, 0, 4, 3), (1, 4)) * -1
del tmp1, tmp2
tmp3 = einsum(t1, (0, 1), v.xoo, (2, 3, 0), (3, 1, 2))
tmp6 = np.copy(tmp3)
del tmp3
tmp4 = np.copy(np.transpose(t2, (0, 1, 3, 2)))
tmp4 += t2 * -0.5
tmp5 = einsum(tmp4, (0, 1, 2, 3), v.xov, (4, 0, 3), (1, 2, 4)) * 2
tmp6 += tmp5 * -1
del tmp5
t1new += einsum(v.xvv, (0, 1, 2), tmp6, (3, 2, 0), (3, 1)) * -1
t1new += einsum(tmp4, (0, 1, 2, 3), f.ov, (0, 3), (1, 2)) * 2
del tmp4
tmp7 = einsum(v.xvv, (0, 1, 2), v.xvv, (0, 3, 4), (1, 3, 4, 2))
t2new = einsum(t2, (0, 1, 2, 3), tmp7, (4, 3, 5, 2), (0, 1, 4, 5))
del tmp7
t2new += einsum(v.xov, (0, 1, 2), v.xov, (0, 3, 4), (1, 3, 2, 4))
tmp8 = einsum(v.xoo, (0, 1, 2), v.xoo, (0, 3, 4), (1, 3, 4, 2))
t2new += einsum(tmp8, (0, 1, 2, 3), t2, (1, 3, 4, 5), (2, 0, 4, 5))
del tmp8
tmp9 = einsum(v.xoo, (0, 1, 2), v.xvv, (0, 3, 4), (1, 2, 3, 4))
tmp10 = einsum(tmp9, (0, 1, 2, 3), t2, (4, 1, 5, 3), (4, 0, 5, 2))
tmp12 = np.copy(tmp10)
del tmp10
tmp11 = einsum(v.xov, (0, 1, 2), tmp6, (3, 4, 0), (1, 3, 2, 4))
del tmp6
tmp12 += np.transpose(tmp11, (1, 0, 3, 2))
del tmp11
t2new += tmp12 * -1
t2new += np.transpose(tmp12, (1, 0, 3, 2)) * -1
del tmp12
tmp13 = einsum(f.oo, (0, 1), t2, (2, 1, 3, 4), (0, 2, 3, 4))
tmp15 = np.copy(tmp13)
del tmp13
tmp14 = einsum(t2, (0, 1, 2, 3), tmp9, (4, 1, 5, 2), (0, 4, 3, 5))
del tmp9
tmp15 += tmp14
del tmp14
t2new += np.transpose(tmp15, (0, 1, 3, 2)) * -1
t2new += np.transpose(tmp15, (1, 0, 2, 3)) * -1
del tmp15
tmp16 = einsum(f.vv, (0, 1), t2, (2, 3, 4, 1), (2, 3, 0, 4))
tmp19 = np.copy(tmp16)
del tmp16
tmp17 = einsum(t1, (0, 1), v.xvv, (2, 3, 1), (0, 3, 2))
tmp18 = einsum(tmp17, (0, 1, 2), v.xov, (2, 3, 4), (0, 3, 4, 1))
del tmp17
tmp19 += tmp18
del tmp18
t2new += np.transpose(tmp19, (0, 1, 3, 2))
t2new += np.transpose(tmp19, (1, 0, 2, 3))
del tmp19

return {"t1new": t1new, "t2new": t2new}

Loading
Loading