From 5eb1c17614e766138bdc19b7ec72acf4fb016312 Mon Sep 17 00:00:00 2001 From: Kevin Gasperich Date: Mon, 27 Jan 2020 13:36:13 -0600 Subject: [PATCH] added provider for complex mos; working on saving complex mos --- src/mo_basis/mos.irp.f | 23 +++++++++++++++++++++++ src/mo_basis/utils.irp.f | 27 +++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/src/mo_basis/mos.irp.f b/src/mo_basis/mos.irp.f index 23713f34..6cf76c1b 100644 --- a/src/mo_basis/mos.irp.f +++ b/src/mo_basis/mos.irp.f @@ -146,6 +146,29 @@ BEGIN_PROVIDER [ double precision, mo_coef_imag, (ao_num,mo_num) ] endif END_PROVIDER +BEGIN_PROVIDER [ complex*16, mo_coef_complex, (ao_num,mo_num) ] + implicit none + BEGIN_DOC + ! Molecular orbital coefficients on |AO| basis set + ! + ! mo_coef_complex(i,j) = coefficient of the i-th |AO| on the jth |MO| + ! + ! mo_label : Label characterizing the |MOs| (local, canonical, natural, etc) + END_DOC + integer :: i, j + double precision, allocatable :: buffer(:,:) + logical :: exists + PROVIDE ezfio_filename + + provide mo_coef mo_coef_imag + + do i=1,mo_num + do j=1,ao_num + mo_coef_complex(j,i) = dcmplx(mo_coef(j,i),mo_coef_imag(j,i)) + enddo + enddo +END_PROVIDER + BEGIN_PROVIDER [ double precision, mo_coef_in_ao_ortho_basis, (ao_num, mo_num) ] implicit none BEGIN_DOC diff --git a/src/mo_basis/utils.irp.f b/src/mo_basis/utils.irp.f index 12c6c79d..fd5c2b33 100644 --- a/src/mo_basis/utils.irp.f +++ b/src/mo_basis/utils.irp.f @@ -17,6 +17,15 @@ subroutine save_mos call ezfio_set_mo_basis_mo_coef(buffer) call ezfio_set_mo_basis_mo_occ(mo_occ) call ezfio_set_mo_basis_mo_class(mo_class) + if (is_periodic) then + buffer = 0.d0 + do j = 1, mo_num + do i = 1, ao_num + buffer(i,j) = mo_coef_imag(i,j) + enddo + enddo + call ezfio_set_mo_basis_mo_coef_imag(buffer) + endif deallocate (buffer) end @@ -39,6 +48,15 @@ subroutine save_mos_no_occ enddo enddo call ezfio_set_mo_basis_mo_coef(buffer) + if (is_periodic) then + buffer = 0.d0 + do j = 1, mo_num + do i = 1, ao_num + buffer(i,j) = mo_coef_imag(i,j) + enddo + enddo + call ezfio_set_mo_basis_mo_coef_imag(buffer) + endif deallocate (buffer) end @@ -63,6 +81,15 @@ subroutine save_mos_truncated(n) call ezfio_set_mo_basis_mo_coef(buffer) call ezfio_set_mo_basis_mo_occ(mo_occ) call ezfio_set_mo_basis_mo_class(mo_class) + if (is_periodic) then + buffer = 0.d0 + do j = 1, mo_num + do i = 1, ao_num + buffer(i,j) = mo_coef_imag(i,j) + enddo + enddo + call ezfio_set_mo_basis_mo_coef_imag(buffer) + endif deallocate (buffer) end