Skip to content

Commit 69aa652

Browse files
committed
Change remaining part of cioverlap_orb.pyx
Change TD_NAC to TD_NAC_ORB, also variables Change part which assign, deallocate NACME variables
1 parent f157839 commit 69aa652

File tree

1 file changed

+19
-36
lines changed

1 file changed

+19
-36
lines changed

src/qm/cioverlap/cioverlap_orb.pyx

Lines changed: 19 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# cython: language_level=3
22
from cpython.mem cimport PyMem_Malloc, PyMem_Free
33

4-
cdef extern from "tdnac.c":
5-
void TD_NAC_ORB(int istep, int nst, int nbasis double dt, \
4+
cdef extern from "tdnac_orb.c":
5+
void TD_NAC_ORB(int istep, int nst, int nbasis, double dt, \
66
double **nacme, double **ao_overlap, double **mo_coef_old, double **mo_coef_new, int l_spin_restricted)
77

88
def orb_overlap(qm, molecule, istep_py, dt_py, active_spin, l_spin_restricted):
@@ -12,7 +12,7 @@ def orb_overlap(qm, molecule, istep_py, dt_py, active_spin, l_spin_restricted):
1212
double **mo_coef_old
1313
double **mo_coef_new
1414

15-
int istep, ist, nst, ibasis, jbasis, nbasis
15+
int istep, ist, ibasis, jbasis, nbasis
1616
double dt
1717

1818
# Assign size variables
@@ -32,13 +32,13 @@ def orb_overlap(qm, molecule, istep_py, dt_py, active_spin, l_spin_restricted):
3232
nacme = <double**> PyMem_Malloc(nst * sizeof(double*))
3333

3434
ao_overlap = <double**> PyMem_Malloc(nbasis * sizeof(double*))
35-
mo_coef_old = <double**> PyMem_Malloc(norb * sizeof(double*))
36-
mo_coef_new = <double**> PyMem_Malloc(norb * sizeof(double*))
35+
mo_coef_old = <double**> PyMem_Malloc(nst * sizeof(double*))
36+
mo_coef_new = <double**> PyMem_Malloc(nst * sizeof(double*))
3737

3838
for ist in range(nst):
3939
nacme[ist] = <double*> PyMem_Malloc(nst * sizeof(double))
40-
mo_coef_old[iorb] = <double*> PyMem_Malloc(nbasis * sizeof(double))
41-
mo_coef_new[iorb] = <double*> PyMem_Malloc(nbasis * sizeof(double))
40+
mo_coef_old[ist] = <double*> PyMem_Malloc(nbasis * sizeof(double))
41+
mo_coef_new[ist] = <double*> PyMem_Malloc(nbasis * sizeof(double))
4242

4343
for ibasis in range(nbasis):
4444
ao_overlap[ibasis] = <double*> PyMem_Malloc(nbasis * sizeof(double))
@@ -57,28 +57,24 @@ def orb_overlap(qm, molecule, istep_py, dt_py, active_spin, l_spin_restricted):
5757
mo_coef_old[ist][ibasis] = qm.mo_coef_old[ist, ibasis]
5858
mo_coef_new[ist][ibasis] = qm.mo_coef_new[ist, ibasis]
5959

60-
# Calculate TDNAC term for CIoverlap
61-
TD_NAC(istep, nst, nbasis, norb, nocc, nvirt, dt, orb_ini, orb_final, nacme, \
62-
ao_overlap, mo_coef_old, mo_coef_new, ci_coef_old, ci_coef_new)
60+
# Calculate TDNAC term
61+
TD_NAC_ORB(istep, nst, nbasis, dt, nacme, ao_overlap, mo_coef_old, mo_coef_new, l_spin_restricted)
6362

6463
# Assign NACME variables from C to python
6564
for ist in range(nst):
6665
for jst in range(nst):
6766
molecule.nacme[ist, jst] = nacme[ist][jst]
68-
69-
for iorb in range(norb):
70-
for ibasis in range(nbasis):
71-
qm.mo_coef_old[iorb, ibasis] = mo_coef_new[iorb][ibasis]
67+
68+
if (l_spin_restricted == 1 and active_spin == "up+dw"):
69+
for ist in range(nst):
70+
for jst in range(nst):
71+
molecule.nacme[nst + ist, nst + jst] = nacme[ist][jst]
7272

7373
for ist in range(nst):
74-
for iorb in range(nocc):
75-
for jorb in range(nvirt):
76-
qm.ci_coef_old[ist, iorb, jorb] = ci_coef_new[ist][iorb][jorb]
74+
for ibasis in range(nbasis):
75+
qm.mo_coef_old[ist, ibasis] = mo_coef_new[ist][ibasis]
7776

7877
# Deallocate NACME variables
79-
PyMem_Free(orb_ini)
80-
PyMem_Free(orb_final)
81-
8278
for ist in range(nst):
8379
PyMem_Free(nacme[ist])
8480

@@ -87,24 +83,11 @@ def orb_overlap(qm, molecule, istep_py, dt_py, active_spin, l_spin_restricted):
8783
for ibasis in range(nbasis):
8884
PyMem_Free(ao_overlap[ibasis])
8985

90-
for iorb in range(norb):
91-
PyMem_Free(mo_coef_old[iorb])
92-
PyMem_Free(mo_coef_new[iorb])
86+
for ist in range(nst):
87+
PyMem_Free(mo_coef_old[ist])
88+
PyMem_Free(mo_coef_new[ist])
9389

9490
PyMem_Free(ao_overlap)
9591
PyMem_Free(mo_coef_old)
9692
PyMem_Free(mo_coef_new)
9793

98-
for ist in range(nst):
99-
for iorb in range(nocc):
100-
PyMem_Free(ci_coef_old[ist][iorb])
101-
PyMem_Free(ci_coef_new[ist][iorb])
102-
103-
for ist in range(nst):
104-
PyMem_Free(ci_coef_old[ist])
105-
PyMem_Free(ci_coef_new[ist])
106-
107-
PyMem_Free(ci_coef_old)
108-
PyMem_Free(ci_coef_new)
109-
110-

0 commit comments

Comments
 (0)