# Mo_spin_eri vs mo_eri

I hope everyone here have had a wonderful Christmas!

I’m trying to understand what `mo_spin_eri` does. I was hoping that calling `mints.mo_spin_eri(C,C)` would give the same as `mints.mo_eri(C,C,C,C)`, but with intertwining zeros, or a blocked matrix with a copy of the latter in the diagonal blocks and zero in the other ones.

``````mints = psi4.core.MintsHelper(wfn.basisset())
R = np.asarray(mints.mo_eri(C,C,C,C))
R2 = np.asarray(mints.mo_spin_eri(C,C))
``````

and then printing the elements one by one, i.e.

``````print('R:')
for i in range(8):
for j in range(8):
for k in range(8):
for l in range(8):
print(i,j,k,l,R[i,j,k,l])

print('R2:')
for i in range(8):
for j in range(8):
for k in range(8):
for l in range(8):
print(i,j,k,l,R[i,j,k,l])
``````

for both, gives

``````R:
0 0 0 0 4.126398909483814
...

R2:
...
0 1 0 1 4.126398909483814
``````

Why is the <00|00> element of R equal to the <01|01> element of R2? I was expecting that <00|00> would be equal for both matrices.

The documentation for these functions is lacking, to say the least.

After looking at the code, I believe that `mo_spin_eri` returns `<AA||BB>` integrals, and `mo_eri` returns `(AB|CD)` integrals.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.