From 4374145954f8a2edd4177d4ea71b01cf871a7b29 Mon Sep 17 00:00:00 2001 From: Kevin Gasperich Date: Tue, 11 Feb 2020 18:23:34 -0600 Subject: [PATCH] rename periodic -> complex --- REPLACE | 30 ++++++++++ src/ao_one_e_ints/ao_overlap.irp.f | 2 +- src/ao_two_e_ints/map_integrals.irp.f | 8 +-- src/ao_two_e_ints/map_integrals_complex.irp.f | 46 +++++++------- src/ao_two_e_ints/two_e_integrals.irp.f | 6 +- src/bitmask/track_orb.irp.f | 4 +- src/hartree_fock/hf_energy.irp.f | 2 +- src/hartree_fock/scf.irp.f | 6 +- src/mo_basis/mos.irp.f | 2 +- src/mo_basis/utils.irp.f | 6 +- src/mo_guess/h_core_guess_routine.irp.f | 2 +- src/mo_one_e_ints/orthonormalize.irp.f | 2 +- src/mo_two_e_ints/core_quantities.irp.f | 8 +-- .../four_idx_novvvv_complex.irp.f | 10 ++-- src/mo_two_e_ints/integrals_3_index.irp.f | 10 ++-- src/mo_two_e_ints/map_integrals.irp.f | 4 +- src/mo_two_e_ints/map_integrals_complex.irp.f | 60 +++++++++---------- src/mo_two_e_ints/mo_bi_integrals.irp.f | 32 +++++----- src/nuclei/EZFIO.cfg | 2 +- src/scf_utils/fock_matrix.irp.f | 6 +- src/utils_periodic/dump_ao_2e_complex.irp.f | 4 +- .../export_integrals_ao_periodic.irp.f | 14 ++--- .../import_integrals_ao_periodic.irp.f | 8 +-- .../import_mo_coef_periodic.irp.f | 2 +- src/utils_periodic/qp2-pbc-diff.txt | 40 ++++++------- 25 files changed, 173 insertions(+), 143 deletions(-) diff --git a/REPLACE b/REPLACE index 1f9fff4b..42d530b0 100755 --- a/REPLACE +++ b/REPLACE @@ -839,3 +839,33 @@ qp_name nucl_elec_ref_bitmask_energy -r ref_bitmask_n_e_energy qp_name ref_bitmask_e_n_energy -r ref_bitmask_n_e_energy qp_name read_ao_integrals_e_n -r read_ao_integrals_n_e qp_name write_ao_integrals_e_n -r write_ao_integrals_n_e +qp_name is_periodic -r is_complex +qp_name two_e_integrals_index_periodic -r two_e_integrals_index_complex +qp_name get_ao_two_e_integral_periodic -r get_ao_two_e_integral_complex +qp_name import_ao_integrals_periodic -r import_ao_integrals_complex +qp_name ao_two_e_integral_periodic_map_idx_sign -r ao_two_e_integral_complex_map_idx_sign +qp_name ao_ints_periodic_1 -r ao_ints_complex_1 +qp_name ao_ints_periodic_2 -r ao_ints_complex_2 +qp_name import_mo_coef_periodic -r import_mo_coef_complex +qp_name is_periodic -r is_complex +qp_name get_ao_two_e_integral_periodic_simple -r get_ao_two_e_integral_complex_simple +qp_name ao_integrals_cache_periodic -r ao_integrals_cache_complex +qp_name get_two_e_integral_periodic -r get_two_e_integral_complex +qp_name get_ao_two_e_integrals_non_zero_periodic -r get_ao_two_e_integrals_non_zero_complex +qp_name get_mo_two_e_integrals_exch_ii_periodic -r get_mo_two_e_integrals_exch_ii_complex +qp_name mo_ints_periodic_2 -r mo_ints_complex_2 +qp_name mo_ints_periodic_1 -r mo_ints_complex_1 +qp_name get_mo_two_e_integrals_i1j1_periodic -r get_mo_two_e_integrals_i1j1_complex +qp_name get_mo_two_e_integrals_exch_ijji_periodic -r get_mo_two_e_integrals_exch_ijji_complex +qp_name get_mo_two_e_integrals_periodic -r get_mo_two_e_integrals_complex +qp_name mo_integrals_cache_periodic -r mo_integrals_cache_complex +qp_name get_two_e_integral_periodic_simple -r get_two_e_integral_complex_simple +qp_name big_array_coulomb_integrals_periodic -r big_array_coulomb_integrals_complex +qp_name big_array_exchange_integrals_periodic -r big_array_exchange_integrals_complex +qp_name get_ao_two_e_integrals_periodic -r get_ao_two_e_integrals_complex +qp_name get_ao_two_e_integrals_non_zero_jl_periodic -r get_ao_two_e_integrals_non_zero_jl_complex +qp_name get_ao_two_e_integrals_non_zero_jl_from_list_periodic -r get_ao_two_e_integrals_non_zero_jl_from_list_complex +qp_name mo_two_e_integral_periodic -r mo_two_e_integral_complex +qp_name get_mo_two_e_integrals_ij_periodic -r get_mo_two_e_integrals_ij_complex +qp_name get_mo_two_e_integrals_coulomb_ii_periodic -r get_mo_two_e_integrals_coulomb_ii_complex +qp_name get_mo_two_e_integrals_coulomb_ijij_periodic -r get_mo_two_e_integrals_coulomb_ijij_complex diff --git a/src/ao_one_e_ints/ao_overlap.irp.f b/src/ao_one_e_ints/ao_overlap.irp.f index 49b75731..52a0ea1c 100644 --- a/src/ao_one_e_ints/ao_overlap.irp.f +++ b/src/ao_one_e_ints/ao_overlap.irp.f @@ -118,7 +118,7 @@ BEGIN_PROVIDER [ double precision, ao_overlap_abs,(ao_num,ao_num) ] double precision :: A_center(3), B_center(3) integer :: power_A(3), power_B(3) double precision :: lower_exp_val, dx - if (is_periodic) then + if (is_complex) then do j=1,ao_num do i= 1,ao_num ao_overlap_abs(i,j)= cdabs(ao_overlap_complex(i,j)) diff --git a/src/ao_two_e_ints/map_integrals.irp.f b/src/ao_two_e_ints/map_integrals.irp.f index 5fd3264b..8e213482 100644 --- a/src/ao_two_e_ints/map_integrals.irp.f +++ b/src/ao_two_e_ints/map_integrals.irp.f @@ -12,7 +12,7 @@ BEGIN_PROVIDER [ type(map_type), ao_integrals_map ] integer(key_kind) :: key_max integer(map_size_kind) :: sze call two_e_integrals_index(ao_num,ao_num,ao_num,ao_num,key_max) - if (is_periodic) then + if (is_complex) then sze = key_max*2 call map_init(ao_integrals_map,sze) call map_init(ao_integrals_map_2,sze) @@ -263,7 +263,7 @@ subroutine get_ao_two_e_integrals_non_zero(j,k,l,sze,out_val,out_val_index,non_z integer :: i integer(key_kind) :: hash double precision :: thresh,tmp - if(is_periodic) then + if(is_complex) then print*,'not implemented for periodic:',irp_here stop -1 endif @@ -311,7 +311,7 @@ subroutine get_ao_two_e_integrals_non_zero_jl(j,l,thresh,sze_max,sze,out_val,out integer(key_kind) :: hash double precision :: tmp - if(is_periodic) then + if(is_complex) then print*,'not implemented for periodic:',irp_here stop -1 endif @@ -361,7 +361,7 @@ subroutine get_ao_two_e_integrals_non_zero_jl_from_list(j,l,thresh,list,n_list,s integer(key_kind) :: hash double precision :: tmp - if(is_periodic) then + if(is_complex) then print*,'not implemented for periodic:',irp_here stop -1 endif diff --git a/src/ao_two_e_ints/map_integrals_complex.irp.f b/src/ao_two_e_ints/map_integrals_complex.irp.f index 3359d535..dc4e5542 100644 --- a/src/ao_two_e_ints/map_integrals_complex.irp.f +++ b/src/ao_two_e_ints/map_integrals_complex.irp.f @@ -1,7 +1,7 @@ use map_module -subroutine two_e_integrals_index_periodic(i,j,k,l,i1,p,q) +subroutine two_e_integrals_index_complex(i,j,k,l,i1,p,q) use map_module implicit none BEGIN_DOC @@ -138,7 +138,7 @@ subroutine two_e_integrals_index_reverse_complex_2(i,j,k,l,i1) end -BEGIN_PROVIDER [ complex*16, ao_integrals_cache_periodic, (0:64*64*64*64) ] +BEGIN_PROVIDER [ complex*16, ao_integrals_cache_complex, (0:64*64*64*64) ] implicit none BEGIN_DOC ! Cache of AO integrals for fast access @@ -151,7 +151,7 @@ BEGIN_PROVIDER [ complex*16, ao_integrals_cache_periodic, (0:64*64*64*64) ] complex(integral_kind) :: integral integer(key_kind) :: p,q,r,s,ik,jl logical :: ilek, jlel, iklejl - complex*16 :: get_ao_two_e_integral_periodic_simple + complex*16 :: get_ao_two_e_integral_complex_simple !$OMP PARALLEL DO PRIVATE (ilek,jlel,p,q,r,s, ik,jl,iklejl, & @@ -161,14 +161,14 @@ BEGIN_PROVIDER [ complex*16, ao_integrals_cache_periodic, (0:64*64*64*64) ] do j=ao_integrals_cache_min,ao_integrals_cache_max do i=ao_integrals_cache_min,ao_integrals_cache_max !DIR$ FORCEINLINE - integral = get_ao_two_e_integral_periodic_simple(i,j,k,l,& + integral = get_ao_two_e_integral_complex_simple(i,j,k,l,& ao_integrals_map,ao_integrals_map_2) ii = l-ao_integrals_cache_min ii = ior( shiftl(ii,6), k-ao_integrals_cache_min) ii = ior( shiftl(ii,6), j-ao_integrals_cache_min) ii = ior( shiftl(ii,6), i-ao_integrals_cache_min) - ao_integrals_cache_periodic(ii) = integral + ao_integrals_cache_complex(ii) = integral enddo enddo enddo @@ -177,7 +177,7 @@ BEGIN_PROVIDER [ complex*16, ao_integrals_cache_periodic, (0:64*64*64*64) ] END_PROVIDER -subroutine ao_two_e_integral_periodic_map_idx_sign(i,j,k,l,use_map1,idx,sign) +subroutine ao_two_e_integral_complex_map_idx_sign(i,j,k,l,use_map1,idx,sign) use map_module implicit none BEGIN_DOC @@ -209,7 +209,7 @@ subroutine ao_two_e_integral_periodic_map_idx_sign(i,j,k,l,use_map1,idx,sign) double precision, intent(out) :: sign integer(key_kind) :: p,q,r,s,ik,jl,ij,kl !DIR$ FORCEINLINE - call two_e_integrals_index_periodic(i,j,k,l,idx,ik,jl) + call two_e_integrals_index_complex(i,j,k,l,idx,ik,jl) p = min(i,j) r = max(i,j) ij = p+shiftr(r*r-r,1) @@ -267,7 +267,7 @@ subroutine ao_two_e_integral_periodic_map_idx_sign(i,j,k,l,use_map1,idx,sign) endif end -complex*16 function get_ao_two_e_integral_periodic_simple(i,j,k,l,map,map2) result(result) +complex*16 function get_ao_two_e_integral_complex_simple(i,j,k,l,map,map2) result(result) use map_module implicit none BEGIN_DOC @@ -285,7 +285,7 @@ complex*16 function get_ao_two_e_integral_periodic_simple(i,j,k,l,map,map2) resu double precision :: sign ! a.le.c, b.le.d, tri(a,c).le.tri(b,d) PROVIDE ao_two_e_integrals_in_map - call ao_two_e_integral_periodic_map_idx_sign(i,j,k,l,use_map1,idx,sign) + call ao_two_e_integral_complex_map_idx_sign(i,j,k,l,use_map1,idx,sign) if (use_map1) then call map_get(map,idx,tmp_re) call map_get(map,idx+1,tmp_im) @@ -304,7 +304,7 @@ complex*16 function get_ao_two_e_integral_periodic_simple(i,j,k,l,map,map2) resu end -complex*16 function get_ao_two_e_integral_periodic(i,j,k,l,map,map2) result(result) +complex*16 function get_ao_two_e_integral_complex(i,j,k,l,map,map2) result(result) use map_module implicit none BEGIN_DOC @@ -317,11 +317,11 @@ complex*16 function get_ao_two_e_integral_periodic(i,j,k,l,map,map2) result(resu type(map_type), intent(inout) :: map,map2 integer :: ii complex(integral_kind) :: tmp - complex(integral_kind) :: get_ao_two_e_integral_periodic_simple + complex(integral_kind) :: get_ao_two_e_integral_complex_simple integer(key_kind) :: p,q,r,s,ik,jl logical :: ilek, jlel, iklejl ! a.le.c, b.le.d, tri(a,c).le.tri(b,d) - PROVIDE ao_two_e_integrals_in_map ao_integrals_cache_periodic ao_integrals_cache_min + PROVIDE ao_two_e_integrals_in_map ao_integrals_cache_complex ao_integrals_cache_min !DIR$ FORCEINLINE ! if (ao_overlap_abs(i,k)*ao_overlap_abs(j,l) < ao_integrals_threshold ) then ! tmp = (0.d0,0.d0) @@ -334,20 +334,20 @@ complex*16 function get_ao_two_e_integral_periodic(i,j,k,l,map,map2) result(resu ii = ior(ii, j-ao_integrals_cache_min) ii = ior(ii, i-ao_integrals_cache_min) if (iand(ii, -64) /= 0) then - tmp = get_ao_two_e_integral_periodic_simple(i,j,k,l,map,map2) + tmp = get_ao_two_e_integral_complex_simple(i,j,k,l,map,map2) else ii = l-ao_integrals_cache_min ii = ior( shiftl(ii,6), k-ao_integrals_cache_min) ii = ior( shiftl(ii,6), j-ao_integrals_cache_min) ii = ior( shiftl(ii,6), i-ao_integrals_cache_min) - tmp = ao_integrals_cache_periodic(ii) + tmp = ao_integrals_cache_complex(ii) endif result = tmp endif end -subroutine get_ao_two_e_integrals_periodic(j,k,l,sze,out_val) +subroutine get_ao_two_e_integrals_complex(j,k,l,sze,out_val) use map_module BEGIN_DOC ! Gets multiple AO bi-electronic integral from the AO map . @@ -369,14 +369,14 @@ subroutine get_ao_two_e_integrals_periodic(j,k,l,sze,out_val) return endif - complex*16 :: get_ao_two_e_integral_periodic + complex*16 :: get_ao_two_e_integral_complex do i=1,sze - out_val(i) = get_ao_two_e_integral_periodic(i,j,k,l,ao_integrals_map,ao_integrals_map_2) + out_val(i) = get_ao_two_e_integral_complex(i,j,k,l,ao_integrals_map,ao_integrals_map_2) enddo end -subroutine get_ao_two_e_integrals_non_zero_periodic(j,k,l,sze,out_val,out_val_index,non_zero_int) +subroutine get_ao_two_e_integrals_non_zero_complex(j,k,l,sze,out_val,out_val_index,non_zero_int) print*,'not implemented for periodic',irp_here stop -1 ! use map_module @@ -392,7 +392,7 @@ subroutine get_ao_two_e_integrals_non_zero_periodic(j,k,l,sze,out_val,out_val_in ! integer :: i ! integer(key_kind) :: hash ! double precision :: thresh,tmp -! if(is_periodic) then +! if(is_complex) then ! print*,'not implemented for periodic:',irp_here ! stop -1 ! endif @@ -424,7 +424,7 @@ subroutine get_ao_two_e_integrals_non_zero_periodic(j,k,l,sze,out_val,out_val_in end -subroutine get_ao_two_e_integrals_non_zero_jl_periodic(j,l,thresh,sze_max,sze,out_val,out_val_index,non_zero_int) +subroutine get_ao_two_e_integrals_non_zero_jl_complex(j,l,thresh,sze_max,sze,out_val,out_val_index,non_zero_int) print*,'not implemented for periodic',irp_here stop -1 ! use map_module @@ -442,7 +442,7 @@ subroutine get_ao_two_e_integrals_non_zero_jl_periodic(j,l,thresh,sze_max,sze,ou ! integer(key_kind) :: hash ! double precision :: tmp ! -! if(is_periodic) then +! if(is_complex) then ! print*,'not implemented for periodic:',irp_here ! stop -1 ! endif @@ -475,7 +475,7 @@ subroutine get_ao_two_e_integrals_non_zero_jl_periodic(j,l,thresh,sze_max,sze,ou end -subroutine get_ao_two_e_integrals_non_zero_jl_from_list_periodic(j,l,thresh,list,n_list,sze_max,out_val,out_val_index,non_zero_int) +subroutine get_ao_two_e_integrals_non_zero_jl_from_list_complex(j,l,thresh,list,n_list,sze_max,out_val,out_val_index,non_zero_int) print*,'not implemented for periodic',irp_here stop -1 ! use map_module @@ -494,7 +494,7 @@ subroutine get_ao_two_e_integrals_non_zero_jl_from_list_periodic(j,l,thresh,list ! integer(key_kind) :: hash ! double precision :: tmp ! -! if(is_periodic) then +! if(is_complex) then ! print*,'not implemented for periodic:',irp_here ! stop -1 ! endif diff --git a/src/ao_two_e_ints/two_e_integrals.irp.f b/src/ao_two_e_ints/two_e_integrals.irp.f index e3ca0566..f3bb5c20 100644 --- a/src/ao_two_e_ints/two_e_integrals.irp.f +++ b/src/ao_two_e_ints/two_e_integrals.irp.f @@ -351,11 +351,11 @@ BEGIN_PROVIDER [ logical, ao_two_e_integrals_in_map ] double precision :: map_mb PROVIDE read_ao_two_e_integrals io_ao_two_e_integrals - if (is_periodic) then + if (is_complex) then if (read_ao_two_e_integrals) then print*,'Reading the AO integrals (periodic)' - call map_load_from_disk(trim(ezfio_filename)//'/work/ao_ints_periodic_1',ao_integrals_map) - call map_load_from_disk(trim(ezfio_filename)//'/work/ao_ints_periodic_2',ao_integrals_map_2) + call map_load_from_disk(trim(ezfio_filename)//'/work/ao_ints_complex_1',ao_integrals_map) + call map_load_from_disk(trim(ezfio_filename)//'/work/ao_ints_complex_2',ao_integrals_map_2) print*, 'AO integrals provided (periodic)' ao_two_e_integrals_in_map = .True. return diff --git a/src/bitmask/track_orb.irp.f b/src/bitmask/track_orb.irp.f index 9c430467..73bf78f3 100644 --- a/src/bitmask/track_orb.irp.f +++ b/src/bitmask/track_orb.irp.f @@ -22,7 +22,7 @@ subroutine initialize_mo_coef_begin_iteration ! ! Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef` END_DOC - if (is_periodic) then + if (is_complex) then mo_coef_begin_iteration_complex = mo_coef_complex else mo_coef_begin_iteration = mo_coef @@ -40,7 +40,7 @@ subroutine reorder_core_orb integer, allocatable :: index_core_orb(:),iorder(:) double precision, allocatable :: accu(:) integer :: i1,i2 - if (is_periodic) then + if (is_complex) then complex*16, allocatable :: accu_c(:) allocate(accu(mo_num),accu_c(mo_num),index_core_orb(n_core_orb),iorder(mo_num)) do i = 1, n_core_orb diff --git a/src/hartree_fock/hf_energy.irp.f b/src/hartree_fock/hf_energy.irp.f index 66b9deb2..db723600 100644 --- a/src/hartree_fock/hf_energy.irp.f +++ b/src/hartree_fock/hf_energy.irp.f @@ -22,7 +22,7 @@ END_PROVIDER HF_energy = nuclear_repulsion HF_two_electron_energy = 0.d0 HF_one_electron_energy = 0.d0 - if (is_periodic) then + if (is_complex) then complex*16 :: hf_1e_tmp, hf_2e_tmp hf_1e_tmp = (0.d0,0.d0) hf_2e_tmp = (0.d0,0.d0) diff --git a/src/hartree_fock/scf.irp.f b/src/hartree_fock/scf.irp.f index fabe9dd1..8dddda92 100644 --- a/src/hartree_fock/scf.irp.f +++ b/src/hartree_fock/scf.irp.f @@ -48,7 +48,7 @@ subroutine create_guess call ezfio_has_mo_basis_mo_coef(exists) if (.not.exists) then if (mo_guess_type == "HCore") then - if (is_periodic) then + if (is_complex) then mo_coef_complex = ao_ortho_lowdin_coef_complex TOUCH mo_coef_complex mo_label = 'Guess' @@ -68,7 +68,7 @@ subroutine create_guess SOFT_TOUCH mo_coef mo_label endif else if (mo_guess_type == "Huckel") then - if (is_periodic) then + if (is_complex) then call huckel_guess_complex else call huckel_guess @@ -92,7 +92,7 @@ subroutine run integer :: i_it, i, j, k mo_label = "Orthonormalized" - if (is_periodic) then + if (is_complex) then call roothaan_hall_scf_complex else call roothaan_hall_scf diff --git a/src/mo_basis/mos.irp.f b/src/mo_basis/mos.irp.f index 04386e6b..50ae3952 100644 --- a/src/mo_basis/mos.irp.f +++ b/src/mo_basis/mos.irp.f @@ -252,7 +252,7 @@ subroutine mix_mo_jk(j,k) dsqrt_2 = 1.d0/dsqrt(2.d0) i_plus = min(j,k) i_minus = max(j,k) - if (is_periodic) then + if (is_complex) then complex*16 :: array_tmp_c(ao_num,2) array_tmp_c = (0.d0,0.d0) do i = 1, ao_num diff --git a/src/mo_basis/utils.irp.f b/src/mo_basis/utils.irp.f index 4db5d3e9..a84f9fb7 100644 --- a/src/mo_basis/utils.irp.f +++ b/src/mo_basis/utils.irp.f @@ -10,7 +10,7 @@ subroutine save_mos call ezfio_set_mo_basis_mo_num(mo_num) call ezfio_set_mo_basis_mo_label(mo_label) call ezfio_set_mo_basis_ao_md5(ao_md5) - if (is_periodic) then + if (is_complex) then allocate ( buffer(ao_num,mo_num),buffer_im(ao_num,mo_num)) buffer = 0.d0 buffer_im = 0.d0 @@ -49,7 +49,7 @@ subroutine save_mos_no_occ !call ezfio_set_mo_basis_mo_num(mo_num) !call ezfio_set_mo_basis_mo_label(mo_label) !call ezfio_set_mo_basis_ao_md5(ao_md5) - if (is_periodic) then + if (is_complex) then allocate ( buffer(ao_num,mo_num),buffer_im(ao_num,mo_num)) buffer = 0.d0 buffer_im = 0.d0 @@ -86,7 +86,7 @@ subroutine save_mos_truncated(n) call ezfio_set_mo_basis_mo_num(n) call ezfio_set_mo_basis_mo_label(mo_label) call ezfio_set_mo_basis_ao_md5(ao_md5) - if (is_periodic) then + if (is_complex) then allocate ( buffer(ao_num,n),buffer_im(ao_num,n)) buffer = 0.d0 buffer_im = 0.d0 diff --git a/src/mo_guess/h_core_guess_routine.irp.f b/src/mo_guess/h_core_guess_routine.irp.f index 429f77ec..b3de1940 100644 --- a/src/mo_guess/h_core_guess_routine.irp.f +++ b/src/mo_guess/h_core_guess_routine.irp.f @@ -5,7 +5,7 @@ subroutine hcore_guess implicit none character*(64) :: label label = "Guess" - if (is_periodic) then + if (is_complex) then call mo_as_eigvectors_of_mo_matrix_complex(mo_one_e_integrals_complex, & size(mo_one_e_integrals_complex,1), & size(mo_one_e_integrals_complex,2),label,1,.false.) diff --git a/src/mo_one_e_ints/orthonormalize.irp.f b/src/mo_one_e_ints/orthonormalize.irp.f index aa8d85bc..d9675bc8 100644 --- a/src/mo_one_e_ints/orthonormalize.irp.f +++ b/src/mo_one_e_ints/orthonormalize.irp.f @@ -1,7 +1,7 @@ subroutine orthonormalize_mos implicit none integer :: m,p,s - if (is_periodic) then + if (is_complex) then m = size(mo_coef_complex,1) p = size(mo_overlap_complex,1) call ortho_lowdin_complex(mo_overlap_complex,p,mo_num,mo_coef_complex,m,ao_num) diff --git a/src/mo_two_e_ints/core_quantities.irp.f b/src/mo_two_e_ints/core_quantities.irp.f index 349b0cd1..8afbcd83 100644 --- a/src/mo_two_e_ints/core_quantities.irp.f +++ b/src/mo_two_e_ints/core_quantities.irp.f @@ -5,7 +5,7 @@ BEGIN_PROVIDER [double precision, core_energy] END_DOC integer :: i,j,k,l core_energy = 0.d0 - if (is_periodic) then + if (is_complex) then do i = 1, n_core_orb j = list_core(i) core_energy += 2.d0 * dble(mo_one_e_integrals_complex(j,j)) + mo_two_e_integrals_jj(j,j) @@ -51,7 +51,7 @@ END_PROVIDER BEGIN_PROVIDER [complex*16, core_fock_operator_complex, (mo_num,mo_num)] implicit none integer :: i,j,k,l,m,n - complex*16 :: get_two_e_integral_periodic + complex*16 :: get_two_e_integral_complex BEGIN_DOC ! this is the contribution to the Fock operator from the core electrons END_DOC @@ -63,8 +63,8 @@ BEGIN_PROVIDER [complex*16, core_fock_operator_complex, (mo_num,mo_num)] do m = 1, n_core_orb n = list_core(m) core_fock_operator_complex(j,l) += 2.d0 * & - get_two_e_integral_periodic(j,n,l,n,mo_integrals_map,mo_integrals_map_2) - & - get_two_e_integral_periodic(j,n,n,l,mo_integrals_map,mo_integrals_map_2) + get_two_e_integral_complex(j,n,l,n,mo_integrals_map,mo_integrals_map_2) - & + get_two_e_integral_complex(j,n,n,l,mo_integrals_map,mo_integrals_map_2) enddo enddo enddo diff --git a/src/mo_two_e_ints/four_idx_novvvv_complex.irp.f b/src/mo_two_e_ints/four_idx_novvvv_complex.irp.f index e02de3b7..0f129256 100644 --- a/src/mo_two_e_ints/four_idx_novvvv_complex.irp.f +++ b/src/mo_two_e_ints/four_idx_novvvv_complex.irp.f @@ -79,7 +79,7 @@ subroutine four_idx_novvvv_complex integer :: i,j,k,l,n_integrals1,n_integrals2 logical :: use_map1 complex*16, allocatable :: f(:,:,:), f2(:,:,:), d(:,:), T(:,:,:,:), T2(:,:,:,:) - complex*16, external :: get_ao_two_e_integral_periodic + complex*16, external :: get_ao_two_e_integral_complex integer(key_kind), allocatable :: idx1(:),idx2(:) complex(integral_kind), allocatable :: values1(:),values2(:) double precision :: sign_tmp @@ -107,8 +107,8 @@ subroutine four_idx_novvvv_complex do r=1,ao_num do q=1,ao_num do p=1,r - f (p,q,r) = get_ao_two_e_integral_periodic(p,q,r,s,ao_integrals_map,ao_integrals_map_2) - f (r,q,p) = get_ao_two_e_integral_periodic(r,q,p,s,ao_integrals_map,ao_integrals_map_2) + f (p,q,r) = get_ao_two_e_integral_complex(p,q,r,s,ao_integrals_map,ao_integrals_map_2) + f (r,q,p) = get_ao_two_e_integral_complex(r,q,p,s,ao_integrals_map,ao_integrals_map_2) enddo enddo enddo @@ -146,7 +146,7 @@ subroutine four_idx_novvvv_complex n_integrals2 = 0 do l=1,mo_num do k=1,mo_num - call ao_two_e_integral_periodic_map_idx_sign(list_core_inact_act(i),list_core_inact_act(j),k,l,use_map1,idx_tmp,sign_tmp) + call ao_two_e_integral_complex_map_idx_sign(list_core_inact_act(i),list_core_inact_act(j),k,l,use_map1,idx_tmp,sign_tmp) if (use_map1) then n_integrals1+=1 values1(n_integrals1) = dble(d(k,l)) @@ -176,7 +176,7 @@ subroutine four_idx_novvvv_complex n_integrals2 = 0 do l=1,mo_num do k=1,mo_num - call ao_two_e_integral_periodic_map_idx_sign(list_core_inact_act(i),k,list_core_inact_act(j),l,use_map1,idx_tmp,sign_tmp) + call ao_two_e_integral_complex_map_idx_sign(list_core_inact_act(i),k,list_core_inact_act(j),l,use_map1,idx_tmp,sign_tmp) if (use_map1) then n_integrals1+=1 values1(n_integrals1) = dble(d(k,l)) diff --git a/src/mo_two_e_ints/integrals_3_index.irp.f b/src/mo_two_e_ints/integrals_3_index.irp.f index 33d201d8..811ae493 100644 --- a/src/mo_two_e_ints/integrals_3_index.irp.f +++ b/src/mo_two_e_ints/integrals_3_index.irp.f @@ -25,8 +25,8 @@ END_PROVIDER - BEGIN_PROVIDER [complex*16, big_array_coulomb_integrals_periodic, (mo_num,mo_num, mo_num)] -&BEGIN_PROVIDER [complex*16, big_array_exchange_integrals_periodic,(mo_num,mo_num, mo_num)] + BEGIN_PROVIDER [complex*16, big_array_coulomb_integrals_complex, (mo_num,mo_num, mo_num)] +&BEGIN_PROVIDER [complex*16, big_array_exchange_integrals_complex,(mo_num,mo_num, mo_num)] implicit none BEGIN_DOC ! big_array_coulomb_integrals(j,i,k) = = (ik|jj) @@ -37,17 +37,17 @@ END_PROVIDER ! b_a_exch_int(j,i,k) = b_a_exch_int(j,k,i)* END_DOC integer :: i,j,k,l - complex*16 :: get_two_e_integral_periodic + complex*16 :: get_two_e_integral_complex complex*16 :: integral do k = 1, mo_num do i = 1, mo_num do j = 1, mo_num l = j - integral = get_two_e_integral_periodic(i,j,k,l,mo_integrals_map,mo_integrals_map_2) + integral = get_two_e_integral_complex(i,j,k,l,mo_integrals_map,mo_integrals_map_2) big_array_coulomb_integrals(j,i,k) = integral l = j - integral = get_two_e_integral_periodic(i,j,l,k,mo_integrals_map,mo_integrals_map_2) + integral = get_two_e_integral_complex(i,j,l,k,mo_integrals_map,mo_integrals_map_2) big_array_exchange_integrals(j,i,k) = integral enddo enddo diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index 9374ea80..bc69e10a 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -12,7 +12,7 @@ BEGIN_PROVIDER [ type(map_type), mo_integrals_map ] integer(key_kind) :: key_max integer(map_size_kind) :: sze call two_e_integrals_index(mo_num,mo_num,mo_num,mo_num,key_max) - if (is_periodic) then + if (is_complex) then sze = key_max*2 call map_init(mo_integrals_map,sze) call map_init(mo_integrals_map_2,sze) @@ -379,7 +379,7 @@ integer*8 function get_mo_map_size() ! Return the number of elements in the MO map END_DOC get_mo_map_size = mo_integrals_map % n_elements - if (is_periodic) then + if (is_complex) then get_mo_map_size += mo_integrals_map_2 % n_elements endif end diff --git a/src/mo_two_e_ints/map_integrals_complex.irp.f b/src/mo_two_e_ints/map_integrals_complex.irp.f index 20970a15..b4b6215b 100644 --- a/src/mo_two_e_ints/map_integrals_complex.irp.f +++ b/src/mo_two_e_ints/map_integrals_complex.irp.f @@ -16,7 +16,7 @@ subroutine insert_into_mo_integrals_map_2(n_integrals, & call map_update(mo_integrals_map_2, buffer_i, buffer_values, n_integrals, thr) end -BEGIN_PROVIDER [ complex*16, mo_integrals_cache_periodic, (0_8:128_8*128_8*128_8*128_8) ] +BEGIN_PROVIDER [ complex*16, mo_integrals_cache_complex, (0_8:128_8*128_8*128_8*128_8) ] implicit none BEGIN_DOC ! Cache of MO integrals for fast access @@ -27,7 +27,7 @@ BEGIN_PROVIDER [ complex*16, mo_integrals_cache_periodic, (0_8:128_8*128_8*128_8 integer*8 :: ii integer(key_kind) :: idx complex(integral_kind) :: integral - complex*16 :: get_two_e_integral_periodic_simple + complex*16 :: get_two_e_integral_complex_simple FREE ao_integrals_cache !$OMP PARALLEL DO PRIVATE (i,j,k,l,i4,j4,k4,l4,idx,ii,integral) do l=mo_integrals_cache_min_8,mo_integrals_cache_max_8 @@ -39,13 +39,13 @@ BEGIN_PROVIDER [ complex*16, mo_integrals_cache_periodic, (0_8:128_8*128_8*128_8 do i=mo_integrals_cache_min_8,mo_integrals_cache_max_8 i4 = int(i,4) !DIR$ FORCEINLINE - integral = get_two_e_integral_periodic_simple(i,j,k,l,& + integral = get_two_e_integral_complex_simple(i,j,k,l,& mo_integrals_map,mo_integrals_map_2) ii = l-mo_integrals_cache_min_8 ii = ior( shiftl(ii,7), k-mo_integrals_cache_min_8) ii = ior( shiftl(ii,7), j-mo_integrals_cache_min_8) ii = ior( shiftl(ii,7), i-mo_integrals_cache_min_8) - mo_integrals_cache_periodic(ii) = integral + mo_integrals_cache_complex(ii) = integral enddo enddo enddo @@ -55,7 +55,7 @@ BEGIN_PROVIDER [ complex*16, mo_integrals_cache_periodic, (0_8:128_8*128_8*128_8 END_PROVIDER -complex*16 function get_two_e_integral_periodic_simple(i,j,k,l,map,map2) result(result) +complex*16 function get_two_e_integral_complex_simple(i,j,k,l,map,map2) result(result) use map_module implicit none BEGIN_DOC @@ -70,7 +70,7 @@ complex*16 function get_two_e_integral_periodic_simple(i,j,k,l,map,map2) result( logical :: use_map1 double precision :: sign PROVIDE mo_two_e_integrals_in_map - call ao_two_e_integral_periodic_map_idx_sign(i,j,k,l,use_map1,idx,sign) + call ao_two_e_integral_complex_map_idx_sign(i,j,k,l,use_map1,idx,sign) if (use_map1) then call map_get(map,idx,tmp_re) call map_get(map,idx+1,tmp_im) @@ -88,7 +88,7 @@ complex*16 function get_two_e_integral_periodic_simple(i,j,k,l,map,map2) result( result = tmp end -complex*16 function get_two_e_integral_periodic(i,j,k,l,map,map2) +complex*16 function get_two_e_integral_complex(i,j,k,l,map,map2) use map_module implicit none BEGIN_DOC @@ -101,39 +101,39 @@ complex*16 function get_two_e_integral_periodic(i,j,k,l,map,map2) integer*8 :: ii_8 type(map_type), intent(inout) :: map,map2 complex(integral_kind) :: tmp - complex(integral_kind) :: get_two_e_integral_periodic_simple - PROVIDE mo_two_e_integrals_in_map mo_integrals_cache_periodic + complex(integral_kind) :: get_two_e_integral_complex_simple + PROVIDE mo_two_e_integrals_in_map mo_integrals_cache_complex ii = l-mo_integrals_cache_min ii = ior(ii, k-mo_integrals_cache_min) ii = ior(ii, j-mo_integrals_cache_min) ii = ior(ii, i-mo_integrals_cache_min) if (iand(ii, -128) /= 0) then - tmp = get_two_e_integral_periodic_simple(i,j,k,l,map,map2) + tmp = get_two_e_integral_complex_simple(i,j,k,l,map,map2) else ii_8 = int(l,8)-mo_integrals_cache_min_8 ii_8 = ior( shiftl(ii_8,7), int(k,8)-mo_integrals_cache_min_8) ii_8 = ior( shiftl(ii_8,7), int(j,8)-mo_integrals_cache_min_8) ii_8 = ior( shiftl(ii_8,7), int(i,8)-mo_integrals_cache_min_8) - tmp = mo_integrals_cache_periodic(ii_8) + tmp = mo_integrals_cache_complex(ii_8) endif - get_two_e_integral_periodic = tmp + get_two_e_integral_complex = tmp end -complex*16 function mo_two_e_integral_periodic(i,j,k,l) +complex*16 function mo_two_e_integral_complex(i,j,k,l) implicit none BEGIN_DOC ! Returns one integral in the MO basis END_DOC integer, intent(in) :: i,j,k,l - complex*16 :: get_two_e_integral_periodic - PROVIDE mo_two_e_integrals_in_map mo_integrals_cache_periodic + complex*16 :: get_two_e_integral_complex + PROVIDE mo_two_e_integrals_in_map mo_integrals_cache_complex PROVIDE mo_two_e_integrals_in_map !DIR$ FORCEINLINE - mo_two_e_integral_periodic = get_two_e_integral_periodic(i,j,k,l,mo_integrals_map,mo_integrals_map_2) + mo_two_e_integral_complex = get_two_e_integral_complex(i,j,k,l,mo_integrals_map,mo_integrals_map_2) return end -subroutine get_mo_two_e_integrals_periodic(j,k,l,sze,out_val,map,map2) +subroutine get_mo_two_e_integrals_complex(j,k,l,sze,out_val,map,map2) use map_module implicit none BEGIN_DOC @@ -144,18 +144,18 @@ subroutine get_mo_two_e_integrals_periodic(j,k,l,sze,out_val,map,map2) complex*16, intent(out) :: out_val(sze) type(map_type), intent(inout) :: map,map2 integer :: i - complex*16, external :: get_two_e_integral_periodic_simple + complex*16, external :: get_two_e_integral_complex_simple integer :: ii, ii0 integer*8 :: ii_8, ii0_8 complex(integral_kind) :: tmp integer(key_kind) :: i1, idx integer(key_kind) :: p,q,r,s,i2 - PROVIDE mo_two_e_integrals_in_map mo_integrals_cache_periodic + PROVIDE mo_two_e_integrals_in_map mo_integrals_cache_complex !DEBUG ! do i=1,sze -! out_val(i) = get_two_e_integral_periodic(i,j,k,l,map,map2) +! out_val(i) = get_two_e_integral_complex(i,j,k,l,map,map2) ! enddo ! return !DEBUG @@ -172,14 +172,14 @@ subroutine get_mo_two_e_integrals_periodic(j,k,l,sze,out_val,map,map2) ii = ior(ii0, i-mo_integrals_cache_min) if (iand(ii, -128) == 0) then ii_8 = ior( shiftl(ii0_8,7), int(i,8)-mo_integrals_cache_min_8) - out_val(i) = mo_integrals_cache_periodic(ii_8) + out_val(i) = mo_integrals_cache_complex(ii_8) else - out_val(i) = get_two_e_integral_periodic_simple(i,j,k,l,map,map2) + out_val(i) = get_two_e_integral_complex_simple(i,j,k,l,map,map2) endif enddo end -!subroutine get_mo_two_e_integrals_ij_periodic(k,l,sze,out_array,map) +!subroutine get_mo_two_e_integrals_ij_complex(k,l,sze,out_array,map) ! use map_module ! implicit none ! BEGIN_DOC @@ -233,7 +233,7 @@ end ! deallocate(pairs,hash,iorder,tmp_val) !end -!subroutine get_mo_two_e_integrals_i1j1_periodic(k,l,sze,out_array,map) +!subroutine get_mo_two_e_integrals_i1j1_complex(k,l,sze,out_array,map) ! use map_module ! implicit none ! BEGIN_DOC @@ -287,7 +287,7 @@ end ! deallocate(pairs,hash,iorder,tmp_val) !end -subroutine get_mo_two_e_integrals_coulomb_ii_periodic(k,l,sze,out_val,map,map2) +subroutine get_mo_two_e_integrals_coulomb_ii_complex(k,l,sze,out_val,map,map2) use map_module implicit none BEGIN_DOC @@ -311,7 +311,7 @@ subroutine get_mo_two_e_integrals_coulomb_ii_periodic(k,l,sze,out_val,map,map2) PROVIDE mo_two_e_integrals_in_map if (k.eq.l) then ! real, call other function - call get_mo_two_e_integrals_coulomb_ijij_periodic(k,sze,out_re,map2) + call get_mo_two_e_integrals_coulomb_ijij_complex(k,sze,out_re,map2) do i=1,sze out_val(i) = dcmplx(out_re(i),0.d0) enddo @@ -347,7 +347,7 @@ subroutine get_mo_two_e_integrals_coulomb_ii_periodic(k,l,sze,out_val,map,map2) endif end -subroutine get_mo_two_e_integrals_coulomb_ijij_periodic(j,sze,out_val,map2) +subroutine get_mo_two_e_integrals_coulomb_ijij_complex(j,sze,out_val,map2) use map_module implicit none BEGIN_DOC @@ -382,7 +382,7 @@ subroutine get_mo_two_e_integrals_coulomb_ijij_periodic(j,sze,out_val,map2) endif end -subroutine get_mo_two_e_integrals_exch_ii_periodic(k,l,sze,out_val,map,map2) +subroutine get_mo_two_e_integrals_exch_ii_complex(k,l,sze,out_val,map,map2) use map_module implicit none BEGIN_DOC @@ -410,7 +410,7 @@ subroutine get_mo_two_e_integrals_exch_ii_periodic(k,l,sze,out_val,map,map2) if (k.eq.l) then ! real, call other function - call get_mo_two_e_integrals_exch_ijji_periodic(k,sze,out_re,map,map2) + call get_mo_two_e_integrals_exch_ijji_complex(k,sze,out_re,map,map2) do i=1,sze out_val(i) = dcmplx(out_re(i),0.d0) enddo @@ -457,7 +457,7 @@ subroutine get_mo_two_e_integrals_exch_ii_periodic(k,l,sze,out_val,map,map2) endif end -subroutine get_mo_two_e_integrals_exch_ijji_periodic(j,sze,out_val,map,map2) +subroutine get_mo_two_e_integrals_exch_ijji_complex(j,sze,out_val,map,map2) use map_module implicit none BEGIN_DOC diff --git a/src/mo_two_e_ints/mo_bi_integrals.irp.f b/src/mo_two_e_ints/mo_bi_integrals.irp.f index bb998c26..bdaa86c9 100644 --- a/src/mo_two_e_ints/mo_bi_integrals.irp.f +++ b/src/mo_two_e_ints/mo_bi_integrals.irp.f @@ -33,12 +33,12 @@ BEGIN_PROVIDER [ logical, mo_two_e_integrals_in_map ] PROVIDE mo_class - if (is_periodic) then + if (is_complex) then mo_two_e_integrals_in_map = .True. if (read_mo_two_e_integrals) then print*,'Reading the MO integrals' - call map_load_from_disk(trim(ezfio_filename)//'/work/mo_ints_periodic_1',mo_integrals_map) - call map_load_from_disk(trim(ezfio_filename)//'/work/mo_ints_periodic_2',mo_integrals_map_2) + call map_load_from_disk(trim(ezfio_filename)//'/work/mo_ints_complex_1',mo_integrals_map) + call map_load_from_disk(trim(ezfio_filename)//'/work/mo_ints_complex_2',mo_integrals_map_2) print*, 'MO integrals provided (periodic)' return else @@ -77,8 +77,8 @@ BEGIN_PROVIDER [ logical, mo_two_e_integrals_in_map ] if (write_mo_two_e_integrals.and.mpi_master) then call ezfio_set_work_empty(.False.) - call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_periodic_1',mo_integrals_map) - call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_periodic_2',mo_integrals_map_2) + call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_complex_1',mo_integrals_map) + call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_complex_2',mo_integrals_map_2) call ezfio_set_mo_two_e_ints_io_mo_two_e_integrals('Read') endif else @@ -986,7 +986,7 @@ end double precision :: c integer :: n, pp integer, allocatable :: int_idx(:) - if (is_periodic) then + if (is_complex) then complex(integral_kind) :: integral2 complex(integral_kind), allocatable :: int_value2(:) complex*16 :: cz @@ -1022,7 +1022,7 @@ end do r=1,ao_num - call get_ao_two_e_integrals_non_zero_periodic(q,r,s,ao_num,int_value2,int_idx,n) + call get_ao_two_e_integrals_non_zero_complex(q,r,s,ao_num,int_value2,int_idx,n) do pp=1,n p = int_idx(pp) integral2 = int_value2(pp) @@ -1032,7 +1032,7 @@ end enddo endif enddo - call get_ao_two_e_integrals_non_zero_periodic(q,s,r,ao_num,int_value2,int_idx,n) + call get_ao_two_e_integrals_non_zero_complex(q,s,r,ao_num,int_value2,int_idx,n) do pp=1,n p = int_idx(pp) integral2 = int_value2(pp) @@ -1196,7 +1196,7 @@ END_PROVIDER integer :: n, pp integer, allocatable :: int_idx(:) - if (is_periodic) then + if (is_complex) then complex*16 :: cz complex(integral_kind) :: integral2 complex(integral_kind), allocatable :: int_value2(:) @@ -1236,7 +1236,7 @@ END_PROVIDER do r=1,ao_num - call get_ao_two_e_integrals_non_zero_periodic(q,r,s,ao_num,int_value2,int_idx,n) + call get_ao_two_e_integrals_non_zero_complex(q,r,s,ao_num,int_value2,int_idx,n) do pp=1,n p = int_idx(pp) integral2 = int_value2(pp) @@ -1247,7 +1247,7 @@ END_PROVIDER enddo endif enddo - call get_ao_two_e_integrals_non_zero_periodic(q,s,r,ao_num,int_value2,int_idx,n) + call get_ao_two_e_integrals_non_zero_complex(q,s,r,ao_num,int_value2,int_idx,n) do pp=1,n p = int_idx(pp) integral2 = int_value2(pp) @@ -1428,13 +1428,13 @@ END_PROVIDER PROVIDE mo_two_e_integrals_in_map mo_two_e_integrals_jj = 0.d0 mo_two_e_integrals_jj_exchange = 0.d0 - if (is_periodic) then - complex*16 :: get_two_e_integral_periodic + if (is_complex) then + complex*16 :: get_two_e_integral_complex do j=1,mo_num do i=1,mo_num - mo_two_e_integrals_jj(i,j) = dble(get_two_e_integral_periodic(i,j,i,j,& + mo_two_e_integrals_jj(i,j) = dble(get_two_e_integral_complex(i,j,i,j,& mo_integrals_map,mo_integrals_map_2)) - mo_two_e_integrals_jj_exchange(i,j) = dble(get_two_e_integral_periodic(i,j,j,i,& + mo_two_e_integrals_jj_exchange(i,j) = dble(get_two_e_integral_complex(i,j,j,i,& mo_integrals_map,mo_integrals_map_2)) mo_two_e_integrals_jj_anti(i,j) = mo_two_e_integrals_jj(i,j) - mo_two_e_integrals_jj_exchange(i,j) enddo @@ -1458,7 +1458,7 @@ subroutine clear_mo_map ! Frees the memory of the MO map END_DOC call map_deinit(mo_integrals_map) - if (is_periodic) then + if (is_complex) then call map_deinit(mo_integrals_map_2) endif FREE mo_integrals_map mo_two_e_integrals_jj mo_two_e_integrals_jj_anti diff --git a/src/nuclei/EZFIO.cfg b/src/nuclei/EZFIO.cfg index 1bd38194..a700d9b2 100644 --- a/src/nuclei/EZFIO.cfg +++ b/src/nuclei/EZFIO.cfg @@ -32,7 +32,7 @@ doc: Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|) type:double precision interface: ezfio -[is_periodic] +[is_complex] type: logical doc: If true, the calculation uses periodic boundary conditions interface: ezfio, provider, ocaml diff --git a/src/scf_utils/fock_matrix.irp.f b/src/scf_utils/fock_matrix.irp.f index b59f921b..a77a78fc 100644 --- a/src/scf_utils/fock_matrix.irp.f +++ b/src/scf_utils/fock_matrix.irp.f @@ -101,7 +101,7 @@ BEGIN_PROVIDER [ double precision, Fock_matrix_mo_alpha, (mo_num,mo_num) ] BEGIN_DOC ! Fock matrix on the MO basis END_DOC - if (is_periodic) then + if (is_complex) then print*,'error',irp_here stop -1 else @@ -115,7 +115,7 @@ BEGIN_PROVIDER [ double precision, Fock_matrix_mo_beta, (mo_num,mo_num) ] BEGIN_DOC ! Fock matrix on the MO basis END_DOC - if (is_periodic) then + if (is_complex) then print*,'error',irp_here stop -1 else @@ -158,7 +158,7 @@ BEGIN_PROVIDER [ double precision, SCF_energy ] SCF_energy = nuclear_repulsion integer :: i,j - if (is_periodic) then + if (is_complex) then complex*16 :: scf_e_tmp scf_e_tmp = dcmplx(SCF_energy,0.d0) do j=1,ao_num diff --git a/src/utils_periodic/dump_ao_2e_complex.irp.f b/src/utils_periodic/dump_ao_2e_complex.irp.f index 3d553f01..6ed197b4 100644 --- a/src/utils_periodic/dump_ao_2e_complex.irp.f +++ b/src/utils_periodic/dump_ao_2e_complex.irp.f @@ -9,12 +9,12 @@ subroutine run integer ::i,j,k,l provide ao_two_e_integrals_in_map - complex*16 :: get_ao_two_e_integral_periodic, tmp_cmplx + complex*16 :: get_ao_two_e_integral_complex, tmp_cmplx do i=1,ao_num do j=1,ao_num do k=1,ao_num do l=1,ao_num - tmp_cmplx = get_ao_two_e_integral_periodic(i,j,k,l,ao_integrals_map,ao_integrals_map_2) + tmp_cmplx = get_ao_two_e_integral_complex(i,j,k,l,ao_integrals_map,ao_integrals_map_2) print'(4(I4),2(E15.7))',i,j,k,l,tmp_cmplx enddo enddo diff --git a/src/utils_periodic/export_integrals_ao_periodic.irp.f b/src/utils_periodic/export_integrals_ao_periodic.irp.f index 8f268c3e..d24a51e2 100644 --- a/src/utils_periodic/export_integrals_ao_periodic.irp.f +++ b/src/utils_periodic/export_integrals_ao_periodic.irp.f @@ -130,7 +130,7 @@ provide ao_two_e_integrals_in_map ! call ezfio_set_ao_one_e_ints_ao_integrals_n_e(A(1:ao_num, 1:ao_num)) ! call ezfio_set_ao_one_e_ints_ao_integrals_n_e_imag(B(1:ao_num, 1:ao_num)) ! call ezfio_set_ao_one_e_ints_io_ao_integrals_n_e("Read") - complex*16 :: int2e_tmp1,int2e_tmp2,get_ao_two_e_integral_periodic_simple,get_ao_two_e_integral_periodic, tmp_cmplx + complex*16 :: int2e_tmp1,int2e_tmp2,get_ao_two_e_integral_complex_simple,get_ao_two_e_integral_complex, tmp_cmplx double precision :: tmp3,tmp4,tmp5,tmp6 double precision :: thr0 thr0 = 1.d-10 @@ -144,11 +144,11 @@ provide ao_two_e_integrals_in_map do read (iunit,*,end=13) i,j,k,l, tmp_re, tmp_im tmp_cmplx = dcmplx(tmp_re,tmp_im) - int2e_tmp1 = get_ao_two_e_integral_periodic_simple(i,j,k,l,ao_integrals_map,ao_integrals_map_2) - int2e_tmp2 = get_ao_two_e_integral_periodic(i,j,k,l,ao_integrals_map,ao_integrals_map_2) + int2e_tmp1 = get_ao_two_e_integral_complex_simple(i,j,k,l,ao_integrals_map,ao_integrals_map_2) + int2e_tmp2 = get_ao_two_e_integral_complex(i,j,k,l,ao_integrals_map,ao_integrals_map_2) ! print'(4(I4),3(E15.7))',i,j,k,l,tmp_re,real(int2e_tmp1),real(int2e_tmp2) ! print'(4(I4),3(E15.7))',i,j,k,l,tmp_im,imag(int2e_tmp1),imag(int2e_tmp2) - call ao_two_e_integral_periodic_map_idx_sign(i,j,k,l,use_map1,idx_tmp,sign) + call ao_two_e_integral_complex_map_idx_sign(i,j,k,l,use_map1,idx_tmp,sign) ! print*,use_map1,idx_tmp,sign call map_get(ao_integrals_map,idx_tmp,tmp3) call map_get(ao_integrals_map_2,idx_tmp,tmp4) @@ -164,7 +164,7 @@ provide ao_two_e_integrals_in_map ii = ior( shiftl(ii,6), k-ao_integrals_cache_min) ii = ior( shiftl(ii,6), j-ao_integrals_cache_min) ii = ior( shiftl(ii,6), i-ao_integrals_cache_min) -! print*,'cache(pbc)=', ao_integrals_cache_periodic(ii) +! print*,'cache(pbc)=', ao_integrals_cache_complex(ii) ! print*,'cache(old)=', ao_integrals_cache(ii) ! print* ! if (use_map1) then @@ -210,8 +210,8 @@ provide ao_two_e_integrals_in_map ! call map_sort(ao_integrals_map_2) ! call map_unique(ao_integrals_map_2) ! -! call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_periodic_1',ao_integrals_map) -! call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_periodic_2',ao_integrals_map_2) +! call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_complex_1',ao_integrals_map) +! call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_complex_2',ao_integrals_map_2) ! call ezfio_set_ao_two_e_ints_io_ao_two_e_integrals('Read' print*,'map1' do i=0,ao_integrals_map%map_size diff --git a/src/utils_periodic/import_integrals_ao_periodic.irp.f b/src/utils_periodic/import_integrals_ao_periodic.irp.f index e352cabd..bc20fc17 100644 --- a/src/utils_periodic/import_integrals_ao_periodic.irp.f +++ b/src/utils_periodic/import_integrals_ao_periodic.irp.f @@ -1,4 +1,4 @@ -program import_ao_integrals_periodic +program import_ao_integrals_complex call run end @@ -117,7 +117,7 @@ subroutine run buffer_values_2 = 0.d0 do read (iunit,*,end=13) i,j,k,l, tmp_re, tmp_im - call ao_two_e_integral_periodic_map_idx_sign(i,j,k,l,use_map1,idx_tmp,sign) + call ao_two_e_integral_complex_map_idx_sign(i,j,k,l,use_map1,idx_tmp,sign) print'(4(I4),(L3),(I6),(F7.1))',i,j,k,l,use_map1,idx_tmp,sign if (use_map1) then n_integrals_1 += 1 @@ -166,8 +166,8 @@ subroutine run call map_sort(ao_integrals_map_2) call map_unique(ao_integrals_map_2) - call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_periodic_1',ao_integrals_map) - call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_periodic_2',ao_integrals_map_2) + call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_complex_1',ao_integrals_map) + call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_complex_2',ao_integrals_map_2) call ezfio_set_ao_two_e_ints_io_ao_two_e_integrals('Read') end diff --git a/src/utils_periodic/import_mo_coef_periodic.irp.f b/src/utils_periodic/import_mo_coef_periodic.irp.f index 8cff838c..bc87b744 100644 --- a/src/utils_periodic/import_mo_coef_periodic.irp.f +++ b/src/utils_periodic/import_mo_coef_periodic.irp.f @@ -1,4 +1,4 @@ -program import_mo_coef_periodic +program import_mo_coef_complex PROVIDE ezfio_filename call run diff --git a/src/utils_periodic/qp2-pbc-diff.txt b/src/utils_periodic/qp2-pbc-diff.txt index d1953c8b..0b3378c3 100644 --- a/src/utils_periodic/qp2-pbc-diff.txt +++ b/src/utils_periodic/qp2-pbc-diff.txt @@ -50,12 +50,12 @@ ao_one_e_ints ao_integrals_n_e_per_atom_complex (should be simple, but currently we only use dummy nuclei) ao_two_e_ints (todo) - get_ao_two_e_integrals_non_zero_periodic - get_ao_two_e_integrals_non_zero_jl_periodic - get_ao_two_e_integrals_non_zero_jl_from_list_periodic + get_ao_two_e_integrals_non_zero_complex + get_ao_two_e_integrals_non_zero_jl_complex + get_ao_two_e_integrals_non_zero_jl_from_list_complex mo_two_e_ints (todo) - get_mo_two_e_integrals_ij_periodic + get_mo_two_e_integrals_ij_complex add_integrals_to_map_complex add_integrals_to_map_three_indices_complex add_integrals_to_map_no_exit_34_complex @@ -103,7 +103,7 @@ ocaml/Input_mo_basis.ml still needs mo_coef_to_string and to_string? src/nuclei/EZFIO.cfg - [is_periodic] + [is_complex] if true use periodic parts of code src/utils/linear_algebra.irp.f @@ -123,7 +123,7 @@ src/utils_periodic/import_integrals_ao_periodic.irp.f read ints from pyscf TODO: don't read ao_num from stdin -src/utils_periodic/import_mo_coef_periodic.irp.f +src/utils_periodic/import_mo_coef_complex.irp.f read mo_coef from pyscf @@ -154,7 +154,7 @@ src/ao_one_e_ints/pot_ao_pseudo_ints.irp.f each complex array is formed by combining real and imag arrays imag arrays can only be read from disk no complex/imag versions of ao_integrals_n_e_per_atom, but this should be straightforward if we need it later? - changed ao_overlap_abs so that it is set to cdabs(ao_overlap_complex) if (is_periodic) + changed ao_overlap_abs so that it is set to cdabs(ao_overlap_complex) if (is_complex) TODO: (maybe not the behavior we want) added S_inv_complex TODO: (no S_half_inv_complex yet) @@ -172,7 +172,7 @@ src/ao_one_e_ints/ao_ortho_canonical_complex.irp.f ao_ortho_canonical_num_complex similar to real version providers are linked, so easier to just make num_complex instead of using original num (even though they will both have the same value) - need to make sure this doesn't require any other downstream changes (i.e. replace ao_ortho_canonical_num with complex version if (is_periodic)) + need to make sure this doesn't require any other downstream changes (i.e. replace ao_ortho_canonical_num with complex version if (is_complex)) ao_ortho_canonical_overlap_complex similar to real version @@ -184,20 +184,20 @@ src/ao_one_e_ints/ao_ortho_canonical_complex.irp.f src/ao_two_e_ints/map_integrals.irp.f added ao_integrals_map_2 (provider linked to ao_integrals_map) - double size of both maps if (is_periodic) - subroutine two_e_integrals_index_periodic + double size of both maps if (is_complex) + subroutine two_e_integrals_index_complex same as real version, but return compound (2) indices to avoid recomputing - ao_integrals_cache_periodic + ao_integrals_cache_complex similar to real version - subroutine ao_two_e_integral_periodic_map_idx_sign + subroutine ao_two_e_integral_complex_map_idx_sign from i,j,k,l, return which map to use (T->1, F->2), location of real part of integral, sign of imaginary part of integral - complex*16 function get_ao_two_e_integral_periodic_simple + complex*16 function get_ao_two_e_integral_complex_simple args i,j,k,l,map1,map2 return complex integral composed of correct elements from one of the maps - complex*16 function get_ao_two_e_integral_periodic + complex*16 function get_ao_two_e_integral_complex same behavior as _simple version, but checks cache first returns integral from cache if possible, otherwise retrieves from map - subroutine get_ao_two_e_integrals_periodic + subroutine get_ao_two_e_integrals_complex same functionality as real version subroutine insert_into_ao_integrals_map_2 needed for second map @@ -323,8 +323,8 @@ src/mo_one_e_ints/pot_mo_pseudo_ints.irp.f for periodic AOs, we always read (can't compute) for MOs, we can either read from disk or transform from AOs simplest way might be to link all three providers (integrals{,_imag,_complex}) - if (.not.is_periodic), just ignore imag and complex arrays? - if (is_periodic) + if (.not.is_complex), just ignore imag and complex arrays? + if (is_complex) either read real/imag from disk and combine to form complex or transform complex MO ints from complex AO ints and also assign real/imag parts to separate arrays? @@ -354,7 +354,7 @@ src/hartree_fock/scf.irp.f subroutine create_guess should work for periodic TODO: decide what to do about mo_coef_complex and imag/real parts for touch/save!!! - TODO: call roothaan_hall_scf_complex if (is_periodic) + TODO: call roothaan_hall_scf_complex if (is_complex) src/scf_utils/diagonalize_fock_complex.irp.f @@ -373,7 +373,7 @@ src/scf_utils/diis_complex.irp.f src/scf_utils/fock_matrix.irp.f - added checks to make sure we don't end up in real providers if (is_periodic) + added checks to make sure we don't end up in real providers if (is_complex) probably not necessary? [ double precision, SCF_energy ] modified for periodic @@ -391,7 +391,7 @@ src/scf_utils/fock_matrix_complex.irp.f src/scf_utils/huckel_complex.irp.f similar to real version - could just put if (is_periodic) branch in real version? (instead of making separate subroutine) + could just put if (is_complex) branch in real version? (instead of making separate subroutine) has soft_touch mo_coef_complex and call to save_mos (see other notes on real/imag parts)