From 8c6bb03a234b02bff0b872a86706a681a914dc29 Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Fri, 25 Nov 2016 23:07:45 +0100 Subject: [PATCH] Fixed the perturbation with psi_ref instead of psi_det --- .../Generators_CAS/Generators_full/.gitignore | 25 ++ .../Generators_full/NEEDED_CHILDREN_MODULES | 1 + .../Generators_CAS/Generators_full/README.rst | 61 +++++ .../Generators_full/generators.irp.f | 75 ++++++ .../Generators_full/tree_dependency.png | Bin 0 -> 82663 bytes plugins/Generators_CAS/generators.irp.f | 16 +- plugins/MRCC_Utils/NEEDED_CHILDREN_MODULES | 2 +- plugins/MRCC_Utils/mrcc_utils.irp.f | 41 ++++ plugins/MRPT/NEEDED_CHILDREN_MODULES | 2 +- {src => plugins}/MRPT_Utils/EZFIO.cfg | 0 {src => plugins}/MRPT_Utils/H_apply.irp.f | 0 .../MRPT_Utils/NEEDED_CHILDREN_MODULES | 0 {src => plugins}/MRPT_Utils/README.rst | 0 .../MRPT_Utils/energies_cas.irp.f | 214 +++++++++--------- .../MRPT_Utils/excitations_cas.irp.f | 0 plugins/MRPT_Utils/ezfio_interface.irp.f | 42 ++++ .../MRPT_Utils/fock_like_operators.irp.f | 0 {src => plugins}/MRPT_Utils/give_2h2p.irp.f | 0 {src => plugins}/MRPT_Utils/mrpt_dress.irp.f | 42 ++-- {src => plugins}/MRPT_Utils/mrpt_utils.irp.f | 176 +++++++------- {src => plugins}/MRPT_Utils/new_way.irp.f | 20 +- .../new_way_second_order_coef.irp.f | 8 +- .../MRPT_Utils/psi_active_prov.irp.f | 0 .../MRPT_Utils/second_order_new.irp.f | 8 +- .../MRPT_Utils/second_order_new_2p.irp.f | 4 +- .../MRPT_Utils/utils_bitmask.irp.f | 0 plugins/mrcepa0/NEEDED_CHILDREN_MODULES | 2 +- scripts/generate_h_apply.py | 6 +- src/Determinants/H_apply_nozmq.template.f | 2 +- src/Determinants/H_apply_zmq.template.f | 2 +- 30 files changed, 499 insertions(+), 250 deletions(-) create mode 100644 plugins/Generators_CAS/Generators_full/.gitignore create mode 100644 plugins/Generators_CAS/Generators_full/NEEDED_CHILDREN_MODULES create mode 100644 plugins/Generators_CAS/Generators_full/README.rst create mode 100644 plugins/Generators_CAS/Generators_full/generators.irp.f create mode 100644 plugins/Generators_CAS/Generators_full/tree_dependency.png rename {src => plugins}/MRPT_Utils/EZFIO.cfg (100%) rename {src => plugins}/MRPT_Utils/H_apply.irp.f (100%) rename {src => plugins}/MRPT_Utils/NEEDED_CHILDREN_MODULES (100%) rename {src => plugins}/MRPT_Utils/README.rst (100%) rename {src => plugins}/MRPT_Utils/energies_cas.irp.f (80%) rename {src => plugins}/MRPT_Utils/excitations_cas.irp.f (100%) create mode 100644 plugins/MRPT_Utils/ezfio_interface.irp.f rename {src => plugins}/MRPT_Utils/fock_like_operators.irp.f (100%) rename {src => plugins}/MRPT_Utils/give_2h2p.irp.f (100%) rename {src => plugins}/MRPT_Utils/mrpt_dress.irp.f (78%) rename {src => plugins}/MRPT_Utils/mrpt_utils.irp.f (72%) rename {src => plugins}/MRPT_Utils/new_way.irp.f (98%) rename {src => plugins}/MRPT_Utils/new_way_second_order_coef.irp.f (99%) rename {src => plugins}/MRPT_Utils/psi_active_prov.irp.f (100%) rename {src => plugins}/MRPT_Utils/second_order_new.irp.f (99%) rename {src => plugins}/MRPT_Utils/second_order_new_2p.irp.f (99%) rename {src => plugins}/MRPT_Utils/utils_bitmask.irp.f (100%) diff --git a/plugins/Generators_CAS/Generators_full/.gitignore b/plugins/Generators_CAS/Generators_full/.gitignore new file mode 100644 index 00000000..8d85dede --- /dev/null +++ b/plugins/Generators_CAS/Generators_full/.gitignore @@ -0,0 +1,25 @@ +# Automatically created by /home/razoa/quantum_package/scripts/module/module_handler.py +IRPF90_temp +IRPF90_man +irpf90_entities +tags +irpf90.make +Makefile +Makefile.depend +build.ninja +.ninja_log +.ninja_deps +ezfio_interface.irp.f +Ezfio_files +Determinants +Integrals_Monoelec +MO_Basis +Utils +Pseudo +Bitmask +AO_Basis +Electrons +MOGuess +Nuclei +Hartree_Fock +Integrals_Bielec \ No newline at end of file diff --git a/plugins/Generators_CAS/Generators_full/NEEDED_CHILDREN_MODULES b/plugins/Generators_CAS/Generators_full/NEEDED_CHILDREN_MODULES new file mode 100644 index 00000000..54f54203 --- /dev/null +++ b/plugins/Generators_CAS/Generators_full/NEEDED_CHILDREN_MODULES @@ -0,0 +1 @@ +Determinants Hartree_Fock diff --git a/plugins/Generators_CAS/Generators_full/README.rst b/plugins/Generators_CAS/Generators_full/README.rst new file mode 100644 index 00000000..c30193a2 --- /dev/null +++ b/plugins/Generators_CAS/Generators_full/README.rst @@ -0,0 +1,61 @@ +====================== +Generators_full Module +====================== + +All the determinants of the wave function are generators. In this way, the Full CI +space is explored. + +Needed Modules +============== + +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + +.. image:: tree_dependency.png + +* `Determinants `_ +* `Hartree_Fock `_ + +Needed Modules +============== +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +.. image:: tree_dependency.png + +* `Determinants `_ +* `Hartree_Fock `_ + +Documentation +============= +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +`degree_max_generators `_ + Max degree of excitation (respect to HF) of the generators + + +`n_det_generators `_ + For Single reference wave functions, the number of generators is 1 : the + Hartree-Fock determinant + + +`psi_coef_generators `_ + For Single reference wave functions, the generator is the + Hartree-Fock determinant + + +`psi_det_generators `_ + For Single reference wave functions, the generator is the + Hartree-Fock determinant + + +`select_max `_ + Memo to skip useless selectors + + +`size_select_max `_ + Size of the select_max array + diff --git a/plugins/Generators_CAS/Generators_full/generators.irp.f b/plugins/Generators_CAS/Generators_full/generators.irp.f new file mode 100644 index 00000000..eea5821b --- /dev/null +++ b/plugins/Generators_CAS/Generators_full/generators.irp.f @@ -0,0 +1,75 @@ +use bitmasks + +BEGIN_PROVIDER [ integer, N_det_generators ] + implicit none + BEGIN_DOC + ! For Single reference wave functions, the number of generators is 1 : the + ! Hartree-Fock determinant + END_DOC + integer :: i + double precision :: norm + call write_time(output_determinants) + norm = 0.d0 + N_det_generators = N_det + do i=1,N_det + norm = norm + psi_average_norm_contrib_sorted(i) + if (norm >= threshold_generators) then + N_det_generators = i + exit + endif + enddo + N_det_generators = max(N_det_generators,1) + call write_int(output_determinants,N_det_generators,'Number of generators') +END_PROVIDER + + BEGIN_PROVIDER [ integer(bit_kind), psi_det_generators, (N_int,2,psi_det_size) ] +&BEGIN_PROVIDER [ double precision, psi_coef_generators, (psi_det_size,N_states) ] + implicit none + BEGIN_DOC + ! For Single reference wave functions, the generator is the + ! Hartree-Fock determinant + END_DOC + integer :: i, k + psi_coef_generators = 0.d0 + psi_det_generators = 0_bit_kind + do i=1,N_det_generators + do k=1,N_int + psi_det_generators(k,1,i) = psi_det_sorted(k,1,i) + psi_det_generators(k,2,i) = psi_det_sorted(k,2,i) + enddo + psi_coef_generators(i,:) = psi_coef_sorted(i,:) + enddo + +END_PROVIDER + +BEGIN_PROVIDER [integer, degree_max_generators] + implicit none + BEGIN_DOC +! Max degree of excitation (respect to HF) of the generators + END_DOC + integer :: i,degree + degree_max_generators = 0 + do i = 1, N_det_generators + call get_excitation_degree(HF_bitmask,psi_det_generators(1,1,i),degree,N_int) + if(degree .gt. degree_max_generators)then + degree_max_generators = degree + endif + enddo +END_PROVIDER + +BEGIN_PROVIDER [ integer, size_select_max] + implicit none + BEGIN_DOC + ! Size of the select_max array + END_DOC + size_select_max = 10000 +END_PROVIDER + +BEGIN_PROVIDER [ double precision, select_max, (size_select_max) ] + implicit none + BEGIN_DOC + ! Memo to skip useless selectors + END_DOC + select_max = huge(1.d0) +END_PROVIDER + diff --git a/plugins/Generators_CAS/Generators_full/tree_dependency.png b/plugins/Generators_CAS/Generators_full/tree_dependency.png new file mode 100644 index 0000000000000000000000000000000000000000..eed768663d7f287bfec3d9b93f170370955e4983 GIT binary patch literal 82663 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
yec~N#>BwPs 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 literal 0 HcmV?d00001 diff --git a/plugins/Generators_CAS/generators.irp.f b/plugins/Generators_CAS/generators.irp.f index f47341de..10fbfaee 100644 --- a/plugins/Generators_CAS/generators.irp.f +++ b/plugins/Generators_CAS/generators.irp.f @@ -9,14 +9,14 @@ BEGIN_PROVIDER [ integer, N_det_generators ] logical :: good call write_time(output_determinants) N_det_generators = 0 - do i=1,N_det + do i=1,N_det_ref do l=1,n_cas_bitmask good = .True. do k=1,N_int good = good .and. ( & - iand(not(cas_bitmask(k,1,l)), psi_det(k,1,i)) == & + iand(not(cas_bitmask(k,1,l)), psi_ref(k,1,i)) == & iand(not(cas_bitmask(k,1,l)), HF_bitmask(k,1)) ) .and. ( & - iand(not(cas_bitmask(k,2,l)), psi_det(k,2,i)) == & + iand(not(cas_bitmask(k,2,l)), psi_ref(k,2,i)) == & iand(not(cas_bitmask(k,2,l)), HF_bitmask(k,2)) ) enddo if (good) then @@ -41,14 +41,14 @@ END_PROVIDER integer :: i, k, l, m logical :: good m=0 - do i=1,N_det + do i=1,N_det_ref do l=1,n_cas_bitmask good = .True. do k=1,N_int good = good .and. ( & - iand(not(cas_bitmask(k,1,l)), psi_det(k,1,i)) == & + iand(not(cas_bitmask(k,1,l)), psi_ref(k,1,i)) == & iand(not(cas_bitmask(k,1,l)), HF_bitmask(k,1)) .and. ( & - iand(not(cas_bitmask(k,2,l)), psi_det(k,2,i)) == & + iand(not(cas_bitmask(k,2,l)), psi_ref(k,2,i)) == & iand(not(cas_bitmask(k,2,l)), HF_bitmask(k,2) )) ) enddo if (good) then @@ -58,8 +58,8 @@ END_PROVIDER if (good) then m = m+1 do k=1,N_int - psi_det_generators(k,1,m) = psi_det(k,1,i) - psi_det_generators(k,2,m) = psi_det(k,2,i) + psi_det_generators(k,1,m) = psi_ref(k,1,i) + psi_det_generators(k,2,m) = psi_ref(k,2,i) enddo psi_coef_generators(m,:) = psi_coef(m,:) endif diff --git a/plugins/MRCC_Utils/NEEDED_CHILDREN_MODULES b/plugins/MRCC_Utils/NEEDED_CHILDREN_MODULES index 801d2f51..3dc21fd0 100644 --- a/plugins/MRCC_Utils/NEEDED_CHILDREN_MODULES +++ b/plugins/MRCC_Utils/NEEDED_CHILDREN_MODULES @@ -1 +1 @@ -Perturbation Selectors_full Generators_full Psiref_Utils Psiref_CAS +Perturbation Selectors_full Generators_full Psiref_Utils Psiref_CAS MRPT_Utils diff --git a/plugins/MRCC_Utils/mrcc_utils.irp.f b/plugins/MRCC_Utils/mrcc_utils.irp.f index 0540eed9..c1a277cf 100644 --- a/plugins/MRCC_Utils/mrcc_utils.irp.f +++ b/plugins/MRCC_Utils/mrcc_utils.irp.f @@ -629,6 +629,44 @@ END_PROVIDER call sort_det(psi_non_ref_sorted, psi_non_ref_sorted_idx, N_det_non_ref, N_int) END_PROVIDER + BEGIN_PROVIDER [ double precision, rho_mrpt, (N_det_non_ref, N_states) ] + implicit none + integer :: i, j, k + double precision :: coef_mrpt(N_States),coef_array(N_states),hij,delta_e(N_states) + double precision :: hij_array(N_det_Ref),delta_e_array(N_det_ref,N_states) + do i = 1, N_det_non_ref + do j = 1, N_det_ref + do k = 1, N_States + coef_array(j) = psi_ref_coef(j,k) + enddo + call i_h_j(psi_ref(1,1,j), psi_non_ref(1,1,i), N_int, Hij_array(j)) + call get_delta_e_dyall(psi_ref(1,1,j),psi_non_ref(1,1,i),coef_array,hij_array(j),delta_e) + print*,delta_e(:) + do k = 1, N_states + delta_e_Array(j,k) = delta_e(k) + enddo + enddo + do k = 1, N_states + do j = 1, N_det_Ref + coef_mrpt(k) += psi_ref_coef(j,k) * hij_array(j) / delta_e_array(j,k) + enddo + enddo + do k = 1, N_States + if(dabs(coef_mrpt(k)) .le.1.d-10)then + rho_mrpt(i,k) = 0.d0 + exit + endif + print*,k,psi_non_ref_coef(i,k) , coef_mrpt(k) + if(psi_non_ref_coef(i,k) / coef_mrpt(k) .lt.0d0)then + rho_mrpt(i,k) = 1.d0 + else + rho_mrpt(i,k) = psi_non_ref_coef(i,k) / coef_mrpt(k) + endif + enddo + enddo + + END_PROVIDER + BEGIN_PROVIDER [ double precision, dIj_unique, (hh_nex, N_states) ] &BEGIN_PROVIDER [ double precision, rho_mrcc, (N_det_non_ref, N_states) ] @@ -983,6 +1021,9 @@ double precision function get_dij_index(II, i, s, Nint) call get_phase(psi_ref(1,1,II), psi_non_ref(1,1,i), phase, N_int) get_dij_index = get_dij(psi_ref(1,1,II), psi_non_ref(1,1,i), s, Nint) * phase get_dij_index = get_dij_index + else if(lambda_type == 3) then + call i_h_j(psi_ref(1,1,II), psi_non_ref(1,1,i), Nint, HIi) + get_dij_index = HIi * rho_mrpt(i, s) end if end function diff --git a/plugins/MRPT/NEEDED_CHILDREN_MODULES b/plugins/MRPT/NEEDED_CHILDREN_MODULES index 7340c609..041b0136 100644 --- a/plugins/MRPT/NEEDED_CHILDREN_MODULES +++ b/plugins/MRPT/NEEDED_CHILDREN_MODULES @@ -1 +1 @@ -MRPT_Utils Selectors_full Generators_full +MRPT_Utils Selectors_full Psiref_CAS Generators_CAS diff --git a/src/MRPT_Utils/EZFIO.cfg b/plugins/MRPT_Utils/EZFIO.cfg similarity index 100% rename from src/MRPT_Utils/EZFIO.cfg rename to plugins/MRPT_Utils/EZFIO.cfg diff --git a/src/MRPT_Utils/H_apply.irp.f b/plugins/MRPT_Utils/H_apply.irp.f similarity index 100% rename from src/MRPT_Utils/H_apply.irp.f rename to plugins/MRPT_Utils/H_apply.irp.f diff --git a/src/MRPT_Utils/NEEDED_CHILDREN_MODULES b/plugins/MRPT_Utils/NEEDED_CHILDREN_MODULES similarity index 100% rename from src/MRPT_Utils/NEEDED_CHILDREN_MODULES rename to plugins/MRPT_Utils/NEEDED_CHILDREN_MODULES diff --git a/src/MRPT_Utils/README.rst b/plugins/MRPT_Utils/README.rst similarity index 100% rename from src/MRPT_Utils/README.rst rename to plugins/MRPT_Utils/README.rst diff --git a/src/MRPT_Utils/energies_cas.irp.f b/plugins/MRPT_Utils/energies_cas.irp.f similarity index 80% rename from src/MRPT_Utils/energies_cas.irp.f rename to plugins/MRPT_Utils/energies_cas.irp.f index 8f29717c..54e1a3f8 100644 --- a/src/MRPT_Utils/energies_cas.irp.f +++ b/plugins/MRPT_Utils/energies_cas.irp.f @@ -3,7 +3,7 @@ BEGIN_PROVIDER [ double precision, energy_cas_dyall, (N_states)] integer :: i double precision :: energies(N_states) do i = 1, N_states - call u0_H_dyall_u0(energies,psi_active,psi_coef,n_det,psi_det_size,psi_det_size,N_states,i) + call u0_H_dyall_u0(energies,psi_active,psi_ref_coef,n_det_ref,psi_det_size,psi_det_size,N_states,i) energy_cas_dyall(i) = energies(i) print*, 'energy_cas_dyall(i)', energy_cas_dyall(i) enddo @@ -15,7 +15,7 @@ BEGIN_PROVIDER [ double precision, energy_cas_dyall_no_exchange, (N_states)] integer :: i double precision :: energies(N_states) do i = 1, N_states - call u0_H_dyall_u0_no_exchange(energies,psi_active,psi_coef,n_det,psi_det_size,psi_det_size,N_states,i) + call u0_H_dyall_u0_no_exchange(energies,psi_active,psi_ref_coef,n_det_ref,psi_det_size,psi_det_size,N_states,i) energy_cas_dyall_no_exchange(i) = energies(i) print*, 'energy_cas_dyall(i)_no_exchange', energy_cas_dyall_no_exchange(i) enddo @@ -31,7 +31,7 @@ BEGIN_PROVIDER [ double precision, one_creat, (n_act_orb,2,N_states)] double precision :: norm_out(N_states) integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) use bitmasks integer :: iorb @@ -44,7 +44,7 @@ BEGIN_PROVIDER [ double precision, one_creat, (n_act_orb,2,N_states)] spin_exc = ispin do i = 1, n_det do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) + psi_in_out_coef(i,j) = psi_ref_coef(i,j) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -53,8 +53,8 @@ BEGIN_PROVIDER [ double precision, one_creat, (n_act_orb,2,N_states)] enddo do state_target = 1,N_states call apply_exc_to_psi(orb,hole_particle,spin_exc, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) + call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) one_creat(iorb,ispin,state_target) = energy_cas_dyall(state_target) - energies(state_target) enddo enddo @@ -72,7 +72,7 @@ BEGIN_PROVIDER [ double precision, one_anhil, (n_act_orb,2,N_states)] integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb integer :: state_target @@ -84,7 +84,7 @@ BEGIN_PROVIDER [ double precision, one_anhil, (n_act_orb,2,N_states)] spin_exc = ispin do i = 1, n_det do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) + psi_in_out_coef(i,j) = psi_ref_coef(i,j) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -93,8 +93,8 @@ BEGIN_PROVIDER [ double precision, one_anhil, (n_act_orb,2,N_states)] enddo do state_target = 1, N_states call apply_exc_to_psi(orb,hole_particle,spin_exc, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) + call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) one_anhil(iorb,ispin,state_target) = energy_cas_dyall(state_target) - energies(state_target) enddo enddo @@ -113,7 +113,7 @@ BEGIN_PROVIDER [ double precision, two_creat, (n_act_orb,n_act_orb,2,2,N_states) integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb,jorb integer :: state_target @@ -130,7 +130,7 @@ BEGIN_PROVIDER [ double precision, two_creat, (n_act_orb,n_act_orb,2,2,N_states) spin_exc_j = jspin do i = 1, n_det do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) + psi_in_out_coef(i,j) = psi_ref_coef(i,j) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -139,10 +139,10 @@ BEGIN_PROVIDER [ double precision, two_creat, (n_act_orb,n_act_orb,2,2,N_states) enddo do state_target = 1 , N_states call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) + call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) two_creat(iorb,jorb,ispin,jspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) enddo enddo @@ -163,7 +163,7 @@ BEGIN_PROVIDER [ double precision, two_anhil, (n_act_orb,n_act_orb,2,2,N_states) integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb,jorb integer :: state_target @@ -181,7 +181,7 @@ BEGIN_PROVIDER [ double precision, two_anhil, (n_act_orb,n_act_orb,2,2,N_states) spin_exc_j = jspin do i = 1, n_det do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) + psi_in_out_coef(i,j) = psi_ref_coef(i,j) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -189,10 +189,10 @@ BEGIN_PROVIDER [ double precision, two_anhil, (n_act_orb,n_act_orb,2,2,N_states) enddo enddo call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) + call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) two_anhil(iorb,jorb,ispin,jspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) enddo enddo @@ -213,7 +213,7 @@ BEGIN_PROVIDER [ double precision, one_anhil_one_creat, (n_act_orb,n_act_orb,2,2 double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb,jorb integer :: state_target double precision :: energies(n_states) @@ -229,7 +229,7 @@ BEGIN_PROVIDER [ double precision, one_anhil_one_creat, (n_act_orb,n_act_orb,2,2 spin_exc_j = jspin do i = 1, n_det do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) + psi_in_out_coef(i,j) = psi_ref_coef(i,j) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -238,14 +238,14 @@ BEGIN_PROVIDER [ double precision, one_anhil_one_creat, (n_act_orb,n_act_orb,2,2 enddo do state_target = 1, N_states call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) !if(orb_i == orb_j .and. ispin .ne. jspin)then - call u0_H_dyall_u0_no_exchange(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + call u0_H_dyall_u0_no_exchange(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) one_anhil_one_creat(iorb,jorb,ispin,jspin,state_target) = energy_cas_dyall_no_exchange(state_target) - energies(state_target) !else - ! call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + ! call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) ! one_anhil_one_creat(iorb,jorb,ispin,jspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) !endif enddo @@ -268,7 +268,7 @@ BEGIN_PROVIDER [ double precision, two_anhil_one_creat, (n_act_orb,n_act_orb,n_a integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb,jorb integer :: korb @@ -291,7 +291,7 @@ BEGIN_PROVIDER [ double precision, two_anhil_one_creat, (n_act_orb,n_act_orb,n_a spin_exc_k = kspin do i = 1, n_det do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) + psi_in_out_coef(i,j) = psi_ref_coef(i,j) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -301,12 +301,12 @@ BEGIN_PROVIDER [ double precision, two_anhil_one_creat, (n_act_orb,n_act_orb,n_a do state_target = 1, N_states call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_k,hole_particle_k,spin_exc_k, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) + call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) two_anhil_one_creat(iorb,jorb,korb,ispin,jspin,kspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) enddo enddo @@ -330,7 +330,7 @@ BEGIN_PROVIDER [ double precision, two_creat_one_anhil, (n_act_orb,n_act_orb,n_a integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb,jorb integer :: korb @@ -353,7 +353,7 @@ BEGIN_PROVIDER [ double precision, two_creat_one_anhil, (n_act_orb,n_act_orb,n_a spin_exc_k = kspin do i = 1, n_det do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) + psi_in_out_coef(i,j) = psi_ref_coef(i,j) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -362,12 +362,12 @@ BEGIN_PROVIDER [ double precision, two_creat_one_anhil, (n_act_orb,n_act_orb,n_a enddo do state_target = 1, N_states call apply_exc_to_psi(orb_k,hole_particle_k,spin_exc_k, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) + call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) two_creat_one_anhil(iorb,jorb,korb,ispin,jspin,kspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) enddo enddo @@ -391,7 +391,7 @@ BEGIN_PROVIDER [ double precision, three_creat, (n_act_orb,n_act_orb,n_act_orb,2 integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb,jorb integer :: korb @@ -414,7 +414,7 @@ BEGIN_PROVIDER [ double precision, three_creat, (n_act_orb,n_act_orb,n_act_orb,2 spin_exc_k = kspin do i = 1, n_det do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) + psi_in_out_coef(i,j) = psi_ref_coef(i,j) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -423,12 +423,12 @@ BEGIN_PROVIDER [ double precision, three_creat, (n_act_orb,n_act_orb,n_act_orb,2 enddo do state_target = 1, N_states call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_k,hole_particle_k,spin_exc_k, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) + call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) three_creat(iorb,jorb,korb,ispin,jspin,kspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) enddo enddo @@ -452,7 +452,7 @@ BEGIN_PROVIDER [ double precision, three_anhil, (n_act_orb,n_act_orb,n_act_orb,2 integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb,jorb integer :: korb @@ -475,7 +475,7 @@ BEGIN_PROVIDER [ double precision, three_anhil, (n_act_orb,n_act_orb,n_act_orb,2 spin_exc_k = kspin do i = 1, n_det do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) + psi_in_out_coef(i,j) = psi_ref_coef(i,j) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -484,12 +484,12 @@ BEGIN_PROVIDER [ double precision, three_anhil, (n_act_orb,n_act_orb,n_act_orb,2 enddo do state_target = 1, N_states call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) call apply_exc_to_psi(orb_k,hole_particle_k,spin_exc_k, & - norm_out,psi_in_out,psi_in_out_coef, n_det,n_det,n_det,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) + call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) three_anhil(iorb,jorb,korb,ispin,jspin,kspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) enddo enddo @@ -515,7 +515,7 @@ END_PROVIDER integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb,jorb,i_ok integer :: state_target @@ -543,8 +543,8 @@ END_PROVIDER enddo do i = 1, n_det do j = 1, N_int - psi_in_out(j,1,i) = psi_det(j,1,i) - psi_in_out(j,2,i) = psi_det(j,2,i) + psi_in_out(j,1,i) = psi_ref(j,1,i) + psi_in_out(j,2,i) = psi_ref(j,2,i) enddo call do_mono_excitation(psi_in_out(1,1,i),orb_i,orb_v,ispin,i_ok) if(i_ok.ne.1)then @@ -552,10 +552,10 @@ END_PROVIDER call debug_det(psi_in_out,N_int) print*, 'pb, i_ok ne 0 !!!' endif - call i_H_j(psi_in_out(1,1,i),psi_det(1,1,i),N_int,hij) + call i_H_j(psi_in_out(1,1,i),psi_ref(1,1,i),N_int,hij) do j = 1, n_states double precision :: coef,contrib - coef = psi_coef(i,j) !* psi_coef(i,j) + coef = psi_ref_coef(i,j) !* psi_ref_coef(i,j) psi_in_out_coef(i,j) = coef * hij norm(j,ispin) += psi_in_out_coef(i,j) * psi_in_out_coef(i,j) enddo @@ -571,7 +571,7 @@ END_PROVIDER norm(j,ispin) = 1.d0/dsqrt(norm(j,ispin)) endif enddo - do i = 1, N_det + do i = 1, N_det_ref do j = 1, N_states psi_in_out_coef(i,j) = psi_in_out_coef(i,j) * norm(j,ispin) norm_bis(j,ispin) += psi_in_out_coef(i,j) * psi_in_out_coef(i,j) @@ -584,8 +584,8 @@ END_PROVIDER do state_target = 1, N_states energies_alpha_beta(state_target, ispin) = 0.d0 if(norm(state_target,ispin) .ne. 0.d0 .and. dabs(norm_no_inv(state_target,ispin)) .gt. thresh_norm)then -! call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) - call u0_H_dyall_u0_no_exchange(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) +! call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) + call u0_H_dyall_u0_no_exchange(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) energies_alpha_beta(state_target, ispin) += energies(state_target) endif enddo @@ -616,7 +616,7 @@ BEGIN_PROVIDER [ double precision, one_anhil_inact, (n_inact_orb,n_act_orb,N_Sta integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: jorb,i_ok,aorb,orb_a integer :: state_target @@ -643,8 +643,8 @@ BEGIN_PROVIDER [ double precision, one_anhil_inact, (n_inact_orb,n_act_orb,N_Sta do ispin = 1,2 do i = 1, n_det do j = 1, N_int - psi_in_out(j,1,i) = psi_det(j,1,i) - psi_in_out(j,2,i) = psi_det(j,2,i) + psi_in_out(j,1,i) = psi_ref(j,1,i) + psi_in_out(j,2,i) = psi_ref(j,2,i) enddo call do_mono_excitation(psi_in_out(1,1,i),orb_i,orb_a,ispin,i_ok) if(i_ok.ne.1)then @@ -652,11 +652,11 @@ BEGIN_PROVIDER [ double precision, one_anhil_inact, (n_inact_orb,n_act_orb,N_Sta psi_in_out_coef(i,j) = 0.d0 enddo else - call i_H_j(psi_in_out(1,1,i),psi_det(1,1,i),N_int,hij) + call i_H_j(psi_in_out(1,1,i),psi_ref(1,1,i),N_int,hij) do j = 1, n_states double precision :: coef,contrib - coef = psi_coef(i,j) !* psi_coef(i,j) - psi_in_out_coef(i,j) = sign(coef,psi_coef(i,j)) * hij + coef = psi_ref_coef(i,j) !* psi_ref_coef(i,j) + psi_in_out_coef(i,j) = sign(coef,psi_ref_coef(i,j)) * hij norm(j,ispin) += psi_in_out_coef(i,j) * psi_in_out_coef(i,j) enddo endif @@ -671,7 +671,7 @@ BEGIN_PROVIDER [ double precision, one_anhil_inact, (n_inact_orb,n_act_orb,N_Sta endif enddo double precision :: norm_bis(N_states,2) - do i = 1, N_det + do i = 1, N_det_ref do j = 1, N_states psi_in_out_coef(i,j) = psi_in_out_coef(i,j) * norm(j,ispin) norm_bis(j,ispin) += psi_in_out_coef(i,j)* psi_in_out_coef(i,j) @@ -684,7 +684,7 @@ BEGIN_PROVIDER [ double precision, one_anhil_inact, (n_inact_orb,n_act_orb,N_Sta do state_target = 1, N_states energies_alpha_beta(state_target, ispin) = 0.d0 if(norm(state_target,ispin) .ne. 0.d0 .and. dabs(norm_no_inv(state_target,ispin)) .gt. thresh_norm)then - call u0_H_dyall_u0_no_exchange(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) + call u0_H_dyall_u0_no_exchange(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) energies_alpha_beta(state_target, ispin) += energies(state_target) endif enddo @@ -715,7 +715,7 @@ BEGIN_PROVIDER [ double precision, one_creat_virt, (n_act_orb,n_virt_orb,N_State integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states)) integer :: iorb,jorb,i_ok,aorb,orb_a integer :: state_target @@ -742,8 +742,8 @@ BEGIN_PROVIDER [ double precision, one_creat_virt, (n_act_orb,n_virt_orb,N_State do ispin = 1,2 do i = 1, n_det do j = 1, N_int - psi_in_out(j,1,i) = psi_det(j,1,i) - psi_in_out(j,2,i) = psi_det(j,2,i) + psi_in_out(j,1,i) = psi_ref(j,1,i) + psi_in_out(j,2,i) = psi_ref(j,2,i) enddo call do_mono_excitation(psi_in_out(1,1,i),orb_a,orb_v,ispin,i_ok) if(i_ok.ne.1)then @@ -751,11 +751,11 @@ BEGIN_PROVIDER [ double precision, one_creat_virt, (n_act_orb,n_virt_orb,N_State psi_in_out_coef(i,j) = 0.d0 enddo else - call i_H_j(psi_in_out(1,1,i),psi_det(1,1,i),N_int,hij) + call i_H_j(psi_in_out(1,1,i),psi_ref(1,1,i),N_int,hij) do j = 1, n_states double precision :: coef,contrib - coef = psi_coef(i,j) !* psi_coef(i,j) - psi_in_out_coef(i,j) = sign(coef,psi_coef(i,j)) * hij + coef = psi_ref_coef(i,j) !* psi_ref_coef(i,j) + psi_in_out_coef(i,j) = sign(coef,psi_ref_coef(i,j)) * hij norm(j,ispin) += psi_in_out_coef(i,j) * psi_in_out_coef(i,j) enddo endif @@ -770,7 +770,7 @@ BEGIN_PROVIDER [ double precision, one_creat_virt, (n_act_orb,n_virt_orb,N_State endif enddo double precision :: norm_bis(N_states,2) - do i = 1, N_det + do i = 1, N_det_ref do j = 1, N_states psi_in_out_coef(i,j) = psi_in_out_coef(i,j) * norm(j,ispin) norm_bis(j,ispin) += psi_in_out_coef(i,j)* psi_in_out_coef(i,j) @@ -783,8 +783,8 @@ BEGIN_PROVIDER [ double precision, one_creat_virt, (n_act_orb,n_virt_orb,N_State do state_target = 1, N_states energies_alpha_beta(state_target, ispin) = 0.d0 if(norm(state_target,ispin) .ne. 0.d0 .and. dabs(norm_no_inv(state_target,ispin)) .gt. thresh_norm)then -! call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) - call u0_H_dyall_u0_no_exchange(energies,psi_in_out,psi_in_out_coef,n_det,n_det,n_det,N_states,state_target) +! call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) + call u0_H_dyall_u0_no_exchange(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) energies_alpha_beta(state_target, ispin) += energies(state_target) endif enddo @@ -812,38 +812,38 @@ END_PROVIDER subroutine give_singles_and_partial_doubles_1h1p_contrib(matrix_1h1p,e_corr_from_1h1p_singles) implicit none - double precision , intent(inout) :: matrix_1h1p(N_det,N_det,N_states) + double precision , intent(inout) :: matrix_1h1p(N_det_ref,N_det_ref,N_states) double precision , intent(out) :: e_corr_from_1h1p_singles(N_states) integer :: i,vorb,j integer :: ispin,jspin integer :: orb_i, hole_particle_i integer :: orb_v - double precision :: norm_out(N_states),diag_elem(N_det),interact_psi0(N_det) + double precision :: norm_out(N_states),diag_elem(N_det_ref),interact_psi0(N_det_ref) double precision :: delta_e_inact_virt(N_states) integer(bit_kind), allocatable :: psi_in_out(:,:,:) double precision, allocatable :: psi_in_out_coef(:,:) double precision, allocatable :: H_matrix(:,:),eigenvectors(:,:),eigenvalues(:),interact_cas(:,:) double precision, allocatable :: delta_e_det(:,:) use bitmasks - allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det,N_states),H_matrix(N_det+1,N_det+1)) - allocate (eigenvectors(size(H_matrix,1),N_det+1)) - allocate (eigenvalues(N_det+1),interact_cas(N_det,N_det)) - allocate (delta_e_det(N_det,N_det)) + allocate (psi_in_out(N_int,2,n_det),psi_in_out_coef(n_det_ref,N_states),H_matrix(N_det_ref+1,N_det_ref+1)) + allocate (eigenvectors(size(H_matrix,1),N_det_ref+1)) + allocate (eigenvalues(N_det_ref+1),interact_cas(N_det_ref,N_det_ref)) + allocate (delta_e_det(N_det_ref,N_det_ref)) integer :: iorb,jorb,i_ok integer :: state_target double precision :: energies(n_states) double precision :: hij double precision :: energies_alpha_beta(N_states,2) - double precision :: lamda_pt2(N_det) + double precision :: lamda_pt2(N_det_ref) double precision :: accu(N_states),norm - double precision :: amplitudes_alpha_beta(N_det,2) - double precision :: delta_e_alpha_beta(N_det,2) + double precision :: amplitudes_alpha_beta(N_det_ref,2) + double precision :: delta_e_alpha_beta(N_det_ref,2) double precision :: coef_array(N_states) - double precision :: coef_perturb(N_det) - double precision :: coef_perturb_bis(N_det) + double precision :: coef_perturb(N_det_ref) + double precision :: coef_perturb_bis(N_det_ref) do vorb = 1,n_virt_orb orb_v = list_virt(vorb) @@ -856,8 +856,8 @@ subroutine give_singles_and_partial_doubles_1h1p_contrib(matrix_1h1p,e_corr_from do ispin = 1,2 do i = 1, n_det do j = 1, N_int - psi_in_out(j,1,i) = psi_det(j,1,i) - psi_in_out(j,2,i) = psi_det(j,2,i) + psi_in_out(j,1,i) = psi_ref(j,1,i) + psi_in_out(j,2,i) = psi_ref(j,2,i) enddo call do_mono_excitation(psi_in_out(1,1,i),orb_i,orb_v,ispin,i_ok) if(i_ok.ne.1)then @@ -866,11 +866,11 @@ subroutine give_singles_and_partial_doubles_1h1p_contrib(matrix_1h1p,e_corr_from print*, 'pb, i_ok ne 0 !!!' endif interact_psi0(i) = 0.d0 - do j = 1 , N_det - call i_H_j(psi_in_out(1,1,i),psi_det(1,1,j),N_int,hij) - call get_delta_e_dyall(psi_det(1,1,j),psi_in_out(1,1,i),coef_array,hij,delta_e_det(i,j)) + do j = 1 , N_det_ref + call i_H_j(psi_in_out(1,1,i),psi_ref(1,1,j),N_int,hij) + call get_delta_e_dyall(psi_ref(1,1,j),psi_in_out(1,1,i),coef_array,hij,delta_e_det(i,j)) interact_cas(i,j) = hij - interact_psi0(i) += hij * psi_coef(j,1) + interact_psi0(i) += hij * psi_ref_coef(j,1) enddo do j = 1, N_int psi_in_out(j,1,i) = psi_active(j,1,i) @@ -882,27 +882,27 @@ subroutine give_singles_and_partial_doubles_1h1p_contrib(matrix_1h1p,e_corr_from do state_target = 1, N_states ! Building the Hamiltonian matrix H_matrix(1,1) = energy_cas_dyall(state_target) - do i = 1, N_det + do i = 1, N_det_ref ! interaction with psi0 - H_matrix(1,i+1) = interact_psi0(i)!* psi_coef(i,state_target) - H_matrix(i+1,1) = interact_psi0(i)!* psi_coef(i,state_target) + H_matrix(1,i+1) = interact_psi0(i)!* psi_ref_coef(i,state_target) + H_matrix(i+1,1) = interact_psi0(i)!* psi_ref_coef(i,state_target) ! diagonal elements H_matrix(i+1,i+1) = diag_elem(i) - delta_e_inact_virt(state_target) ! print*, 'H_matrix(i+1,i+1)',H_matrix(i+1,i+1) - do j = i+1, N_det + do j = i+1, N_det_ref call i_H_j_dyall(psi_in_out(1,1,i),psi_in_out(1,1,j),N_int,hij) H_matrix(i+1,j+1) = hij !0.d0 ! H_matrix(j+1,i+1) = hij !0.d0 ! enddo enddo - call lapack_diag(eigenvalues,eigenvectors,H_matrix,size(H_matrix,1),N_det+1) + call lapack_diag(eigenvalues,eigenvectors,H_matrix,size(H_matrix,1),N_det_ref+1) e_corr_from_1h1p_singles(state_target) += eigenvalues(1) - energy_cas_dyall(state_target) - do i = 1, N_det + do i = 1, N_det_ref psi_in_out_coef(i,state_target) = eigenvectors(i+1,1)/eigenvectors(1,1) coef_perturb(i) = 0.d0 - do j = 1, N_det - coef_perturb(i) += psi_coef(j,state_target) * interact_cas(i,j) *1.d0/delta_e_det(i,j) + do j = 1, N_det_ref + coef_perturb(i) += psi_ref_coef(j,state_target) * interact_cas(i,j) *1.d0/delta_e_det(i,j) enddo coef_perturb_bis(i) = interact_psi0(i) / (eigenvalues(1) - H_matrix(i+1,i+1)) if(dabs(interact_psi0(i)) .gt. 1.d-12)then @@ -913,22 +913,22 @@ subroutine give_singles_and_partial_doubles_1h1p_contrib(matrix_1h1p,e_corr_from enddo if(dabs(eigenvalues(1) - energy_cas_dyall(state_target)).gt.1.d-10)then print*, '' - do i = 1, N_det+1 + do i = 1, N_det_ref+1 write(*,'(100(F16.10))') H_matrix(i,:) enddo accu = 0.d0 - do i = 1, N_det + do i = 1, N_det_ref accu(state_target) += psi_in_out_coef(i,state_target) * interact_psi0(i) enddo print*, '' print*, 'e corr diagonal ',accu(state_target) accu = 0.d0 - do i = 1, N_det + do i = 1, N_det_ref accu(state_target) += coef_perturb(i) * interact_psi0(i) enddo print*, 'e corr perturb ',accu(state_target) accu = 0.d0 - do i = 1, N_det + do i = 1, N_det_ref accu(state_target) += coef_perturb_bis(i) * interact_psi0(i) enddo print*, 'e corr perturb EN',accu(state_target) @@ -941,10 +941,10 @@ subroutine give_singles_and_partial_doubles_1h1p_contrib(matrix_1h1p,e_corr_from write(*,'(100(F16.10,X))')coef_perturb_bis(:) endif integer :: k - do k = 1, N_det - do i = 1, N_det + do k = 1, N_det_ref + do i = 1, N_det_ref matrix_1h1p(i,i,state_target) += interact_cas(k,i) * interact_cas(k,i) * lamda_pt2(k) - do j = i+1, N_det + do j = i+1, N_det_ref matrix_1h1p(i,j,state_target) += interact_cas(k,i) * interact_cas(k,j) * lamda_pt2(k) matrix_1h1p(j,i,state_target) += interact_cas(k,i) * interact_cas(k,j) * lamda_pt2(k) enddo diff --git a/src/MRPT_Utils/excitations_cas.irp.f b/plugins/MRPT_Utils/excitations_cas.irp.f similarity index 100% rename from src/MRPT_Utils/excitations_cas.irp.f rename to plugins/MRPT_Utils/excitations_cas.irp.f diff --git a/plugins/MRPT_Utils/ezfio_interface.irp.f b/plugins/MRPT_Utils/ezfio_interface.irp.f new file mode 100644 index 00000000..ebe0bf52 --- /dev/null +++ b/plugins/MRPT_Utils/ezfio_interface.irp.f @@ -0,0 +1,42 @@ +! DO NOT MODIFY BY HAND +! Created by $QP_ROOT/scripts/ezfio_interface/ei_handler.py +! from file /home/giner/qp_bis/quantum_package/src/MRPT_Utils/EZFIO.cfg + + +BEGIN_PROVIDER [ logical, do_third_order_1h1p ] + implicit none + BEGIN_DOC +! If true, compute the third order contribution for the 1h1p + END_DOC + + logical :: has + PROVIDE ezfio_filename + + call ezfio_has_mrpt_utils_do_third_order_1h1p(has) + if (has) then + call ezfio_get_mrpt_utils_do_third_order_1h1p(do_third_order_1h1p) + else + print *, 'mrpt_utils/do_third_order_1h1p not found in EZFIO file' + stop 1 + endif + +END_PROVIDER + +BEGIN_PROVIDER [ logical, pure_state_specific_mrpt2 ] + implicit none + BEGIN_DOC +! If true, diagonalize the dressed matrix for each state and do a state following of the initial states + END_DOC + + logical :: has + PROVIDE ezfio_filename + + call ezfio_has_mrpt_utils_pure_state_specific_mrpt2(has) + if (has) then + call ezfio_get_mrpt_utils_pure_state_specific_mrpt2(pure_state_specific_mrpt2) + else + print *, 'mrpt_utils/pure_state_specific_mrpt2 not found in EZFIO file' + stop 1 + endif + +END_PROVIDER diff --git a/src/MRPT_Utils/fock_like_operators.irp.f b/plugins/MRPT_Utils/fock_like_operators.irp.f similarity index 100% rename from src/MRPT_Utils/fock_like_operators.irp.f rename to plugins/MRPT_Utils/fock_like_operators.irp.f diff --git a/src/MRPT_Utils/give_2h2p.irp.f b/plugins/MRPT_Utils/give_2h2p.irp.f similarity index 100% rename from src/MRPT_Utils/give_2h2p.irp.f rename to plugins/MRPT_Utils/give_2h2p.irp.f diff --git a/src/MRPT_Utils/mrpt_dress.irp.f b/plugins/MRPT_Utils/mrpt_dress.irp.f similarity index 78% rename from src/MRPT_Utils/mrpt_dress.irp.f rename to plugins/MRPT_Utils/mrpt_dress.irp.f index 60bb2b69..f5e7bd40 100644 --- a/src/MRPT_Utils/mrpt_dress.irp.f +++ b/plugins/MRPT_Utils/mrpt_dress.irp.f @@ -44,15 +44,15 @@ subroutine mrpt_dress(delta_ij_, Ndet,i_generator,n_selected,det_buffer,Nint,ip integer :: N_miniList, leng double precision :: delta_e(N_states),hij_tmp integer :: index_i,index_j - double precision :: phase_array(N_det),phase + double precision :: phase_array(N_det_ref),phase integer :: exc(0:2,2,2),degree - leng = max(N_det_generators, N_det) + leng = max(N_det_ref, N_det_ref) allocate(miniList(Nint, 2, leng), idx_miniList(leng)) !create_minilist_find_previous(key_mask, fullList, miniList, N_fullList, N_miniList, fullMatch, Nint) - call create_minilist_find_previous(key_mask, psi_det_generators, miniList, i_generator-1, N_miniList, fullMatch, Nint) + call create_minilist_find_previous(key_mask, psi_ref, miniList, i_generator-1, N_miniList, fullMatch, Nint) if(fullMatch) then return @@ -62,7 +62,7 @@ subroutine mrpt_dress(delta_ij_, Ndet,i_generator,n_selected,det_buffer,Nint,ip call find_connections_previous(i_generator,n_selected,det_buffer,Nint,tq,N_tq,miniList,N_minilist) if(N_tq > 0) then - call create_minilist(key_mask, psi_det, miniList, idx_miniList, N_det, N_minilist, Nint) + call create_minilist(key_mask, psi_ref, miniList, idx_miniList, N_det_ref, N_minilist, Nint) end if @@ -79,18 +79,18 @@ subroutine mrpt_dress(delta_ij_, Ndet,i_generator,n_selected,det_buffer,Nint,ip phase_array =0.d0 do i = 1,idx_alpha(0) index_i = idx_alpha(i) - call i_h_j(tq(1,1,i_alpha),psi_det(1,1,index_i),Nint,hialpha) + call i_h_j(tq(1,1,i_alpha),psi_ref(1,1,index_i),Nint,hialpha) double precision :: coef_array(N_states) do i_state = 1, N_states - coef_array(i_state) = psi_coef(index_i,i_state) + coef_array(i_state) = psi_ref_coef(index_i,i_state) enddo if(dabs(hialpha).le.1.d-10)then delta_e = 1.d+20 else - call get_delta_e_dyall(psi_det(1,1,index_i),tq(1,1,i_alpha),coef_array,hialpha,delta_e) + call get_delta_e_dyall(psi_ref(1,1,index_i),tq(1,1,i_alpha),coef_array,hialpha,delta_e) endif hij_array(index_i) = hialpha - call get_excitation(psi_det(1,1,index_i),tq(1,1,i_alpha),exc,degree,phase,N_int) + call get_excitation(psi_ref(1,1,index_i),tq(1,1,i_alpha),exc,degree,phase,N_int) ! phase_array(index_i) = phase do i_state = 1,N_states delta_e_inv_array(index_i,i_state) = 1.d0/delta_e(i_state) @@ -103,12 +103,12 @@ subroutine mrpt_dress(delta_ij_, Ndet,i_generator,n_selected,det_buffer,Nint,ip call omp_set_lock( psi_ref_bis_lock(index_i) ) do j = 1, idx_alpha(0) index_j = idx_alpha(j) -! call get_excitation(psi_det(1,1,index_i),psi_det(1,1,index_i),exc,degree,phase,N_int) +! call get_excitation(psi_ref(1,1,index_i),psi_ref(1,1,index_i),exc,degree,phase,N_int) ! if(index_j.ne.index_i)then ! if(phase_array(index_j) * phase_array(index_i) .ne. phase)then ! print*, phase_array(index_j) , phase_array(index_i) ,phase -! call debug_det(psi_det(1,1,index_i),N_int) -! call debug_det(psi_det(1,1,index_j),N_int) +! call debug_det(psi_ref(1,1,index_i),N_int) +! call debug_det(psi_ref(1,1,index_j),N_int) ! call debug_det(tq(1,1,i_alpha),N_int) ! stop ! endif @@ -126,14 +126,14 @@ end - BEGIN_PROVIDER [ integer(bit_kind), gen_det_sorted, (N_int,2,N_det_generators,2) ] -&BEGIN_PROVIDER [ integer, gen_det_shortcut, (0:N_det_generators,2) ] -&BEGIN_PROVIDER [ integer, gen_det_version, (N_int, N_det_generators,2) ] -&BEGIN_PROVIDER [ integer, gen_det_idx, (N_det_generators,2) ] - gen_det_sorted(:,:,:,1) = psi_det_generators(:,:,:N_det_generators) - gen_det_sorted(:,:,:,2) = psi_det_generators(:,:,:N_det_generators) - call sort_dets_ab_v(gen_det_sorted(:,:,:,1), gen_det_idx(:,1), gen_det_shortcut(0:,1), gen_det_version(:,:,1), N_det_generators, N_int) - call sort_dets_ba_v(gen_det_sorted(:,:,:,2), gen_det_idx(:,2), gen_det_shortcut(0:,2), gen_det_version(:,:,2), N_det_generators, N_int) + BEGIN_PROVIDER [ integer(bit_kind), gen_det_sorted, (N_int,2,N_det_ref,2) ] +&BEGIN_PROVIDER [ integer, gen_det_shortcut, (0:N_det_ref,2) ] +&BEGIN_PROVIDER [ integer, gen_det_version, (N_int, N_det_ref,2) ] +&BEGIN_PROVIDER [ integer, gen_det_idx, (N_det_ref,2) ] + gen_det_sorted(:,:,:,1) = psi_ref(:,:,:N_det_ref) + gen_det_sorted(:,:,:,2) = psi_ref(:,:,:N_det_ref) + call sort_dets_ab_v(gen_det_sorted(:,:,:,1), gen_det_idx(:,1), gen_det_shortcut(0:,1), gen_det_version(:,:,1), N_det_ref, N_int) + call sort_dets_ba_v(gen_det_sorted(:,:,:,2), gen_det_idx(:,2), gen_det_shortcut(0:,2), gen_det_version(:,:,2), N_det_ref, N_int) END_PROVIDER @@ -159,7 +159,7 @@ subroutine find_connections_previous(i_generator,n_selected,det_buffer,Nint,tq,N logical, external :: is_connected_to - integer(bit_kind),intent(in) :: miniList(Nint,2,N_det_generators) + integer(bit_kind),intent(in) :: miniList(Nint,2,N_det_ref) integer,intent(in) :: N_miniList @@ -172,7 +172,7 @@ subroutine find_connections_previous(i_generator,n_selected,det_buffer,Nint,tq,N cycle end if - if (.not. is_in_wavefunction(det_buffer(1,1,i),Nint,N_det)) then + if (.not. is_in_wavefunction(det_buffer(1,1,i),Nint,N_det_ref)) then N_tq += 1 do k=1,N_int tq(k,1,N_tq) = det_buffer(k,1,i) diff --git a/src/MRPT_Utils/mrpt_utils.irp.f b/plugins/MRPT_Utils/mrpt_utils.irp.f similarity index 72% rename from src/MRPT_Utils/mrpt_utils.irp.f rename to plugins/MRPT_Utils/mrpt_utils.irp.f index 8ac8e3e0..31013bb7 100644 --- a/src/MRPT_Utils/mrpt_utils.irp.f +++ b/plugins/MRPT_Utils/mrpt_utils.irp.f @@ -1,5 +1,5 @@ - BEGIN_PROVIDER [ double precision, delta_ij, (N_det,N_det,N_states) ] + BEGIN_PROVIDER [ double precision, delta_ij, (N_det_ref,N_det_ref,N_states) ] &BEGIN_PROVIDER [ double precision, second_order_pt_new, (N_states) ] &BEGIN_PROVIDER [ double precision, second_order_pt_new_1h, (N_states) ] &BEGIN_PROVIDER [ double precision, second_order_pt_new_1p, (N_states) ] @@ -11,7 +11,7 @@ &BEGIN_PROVIDER [ double precision, second_order_pt_new_2h2p, (N_states) ] implicit none BEGIN_DOC - ! Dressing matrix in N_det basis + ! Dressing matrix in N_det_ref basis END_DOC integer :: i,j,m integer :: i_state @@ -21,17 +21,17 @@ delta_ij = 0.d0 - allocate (delta_ij_tmp(N_det,N_det,N_states)) + allocate (delta_ij_tmp(N_det_ref,N_det_ref,N_states)) ! 1h delta_ij_tmp = 0.d0 - call H_apply_mrpt_1h(delta_ij_tmp,N_det) + call H_apply_mrpt_1h(delta_ij_tmp,N_det_ref) accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do i = 1, N_det_ref + do j = 1, N_det_ref + accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo enddo @@ -41,12 +41,12 @@ ! 1p delta_ij_tmp = 0.d0 - call H_apply_mrpt_1p(delta_ij_tmp,N_det) + call H_apply_mrpt_1p(delta_ij_tmp,N_det_ref) accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do i = 1, N_det_ref + do j = 1, N_det_ref + accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo enddo @@ -56,15 +56,15 @@ ! 1h1p delta_ij_tmp = 0.d0 - call H_apply_mrpt_1h1p(delta_ij_tmp,N_det) + call H_apply_mrpt_1h1p(delta_ij_tmp,N_det_ref) double precision :: e_corr_from_1h1p_singles(N_states) !call give_singles_and_partial_doubles_1h1p_contrib(delta_ij_tmp,e_corr_from_1h1p_singles) !call give_1h1p_only_doubles_spin_cross(delta_ij_tmp) accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do i = 1, N_det_ref + do j = 1, N_det_ref + accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo enddo @@ -78,9 +78,9 @@ call give_1h1p_sec_order_singles_contrib(delta_ij_tmp) accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do i = 1, N_det_ref + do j = 1, N_det_ref + accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo enddo @@ -91,12 +91,12 @@ ! 2h delta_ij_tmp = 0.d0 - call H_apply_mrpt_2h(delta_ij_tmp,N_det) + call H_apply_mrpt_2h(delta_ij_tmp,N_det_ref) accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do i = 1, N_det_ref + do j = 1, N_det_ref + accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo enddo @@ -106,12 +106,12 @@ ! 2p delta_ij_tmp = 0.d0 - call H_apply_mrpt_2p(delta_ij_tmp,N_det) + call H_apply_mrpt_2p(delta_ij_tmp,N_det_ref) accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do i = 1, N_det_ref + do j = 1, N_det_ref + accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo enddo @@ -122,12 +122,12 @@ ! 1h2p delta_ij_tmp = 0.d0 call give_1h2p_contrib(delta_ij_tmp) -!!!!call H_apply_mrpt_1h2p(delta_ij_tmp,N_det) +!!!!call H_apply_mrpt_1h2p(delta_ij_tmp,N_det_ref) accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do i = 1, N_det_ref + do j = 1, N_det_ref + accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo enddo @@ -138,12 +138,12 @@ ! 2h1p delta_ij_tmp = 0.d0 call give_2h1p_contrib(delta_ij_tmp) -!!!! call H_apply_mrpt_2h1p(delta_ij_tmp,N_det) + !!!!call H_apply_mrpt_2h1p(delta_ij_tmp,N_det_ref) accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do i = 1, N_det_ref + do j = 1, N_det_ref + accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo enddo @@ -153,12 +153,12 @@ ! 2h2p delta_ij_tmp = 0.d0 -!!!!!call H_apply_mrpt_2h2p(delta_ij_tmp,N_det) +!!!!!call H_apply_mrpt_2h2p(delta_ij_tmp,N_det_ref) accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do i = 1, N_det_ref + do j = 1, N_det_ref + accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo enddo @@ -169,7 +169,7 @@ double precision :: contrib_2h2p(N_states) call give_2h2p(contrib_2h2p) do i_state = 1, N_states - do i = 1, N_det + do i = 1, N_det_ref delta_ij(i,i,i_state) += contrib_2h2p(i_state) enddo second_order_pt_new_2h2p(i_state) = contrib_2h2p(i_state) @@ -180,10 +180,10 @@ ! total accu = 0.d0 do i_state = 1, N_states - do i = 1, N_det + do i = 1, N_det_ref ! write(*,'(1000(F16.10,x))')delta_ij(i,:,:) - do j = i_state, N_det - accu(i_state) += delta_ij(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) + do j = i_state, N_det_ref + accu(i_state) += delta_ij(j,i,i_state) * psi_ref_coef(i,i_state) * psi_ref_coef(j,i_state) enddo enddo second_order_pt_new(i_state) = accu(i_state) @@ -195,13 +195,15 @@ END_PROVIDER - BEGIN_PROVIDER [double precision, Hmatrix_dressed_pt2_new, (N_det,N_det,N_states)] + BEGIN_PROVIDER [double precision, Hmatrix_dressed_pt2_new, (N_det_ref,N_det_ref,N_states)] implicit none integer :: i,j,i_state + double precision :: hij do i_state = 1, N_states - do i = 1,N_det - do j = 1,N_det - Hmatrix_dressed_pt2_new(j,i,i_state) = H_matrix_all_dets(j,i) + delta_ij(j,i,i_state) + do i = 1,N_det_ref + do j = 1,N_det_ref + call i_h_j(psi_ref(1,1,j),psi_ref(1,1,i),N_int,hij) + Hmatrix_dressed_pt2_new(j,i,i_state) = hij + delta_ij(j,i,i_state) enddo enddo enddo @@ -209,13 +211,15 @@ END_PROVIDER - BEGIN_PROVIDER [double precision, Hmatrix_dressed_pt2_new_symmetrized, (N_det,N_det,N_states)] + BEGIN_PROVIDER [double precision, Hmatrix_dressed_pt2_new_symmetrized, (N_det_ref,N_det_ref,N_states)] implicit none integer :: i,j,i_state + double precision :: hij do i_state = 1, N_states - do i = 1,N_det - do j = i,N_det - Hmatrix_dressed_pt2_new_symmetrized(j,i,i_state) = H_matrix_all_dets(j,i) & + do i = 1,N_det_ref + do j = i,N_det_ref + call i_h_j(psi_ref(1,1,j),psi_ref(1,1,i),N_int,hij) + Hmatrix_dressed_pt2_new_symmetrized(j,i,i_state) = hij & + 0.5d0 * ( delta_ij(j,i,i_state) + delta_ij(i,j,i_state) ) Hmatrix_dressed_pt2_new_symmetrized(i,j,i_state) = Hmatrix_dressed_pt2_new_symmetrized(j,i,i_state) enddo @@ -224,7 +228,7 @@ END_PROVIDER END_PROVIDER BEGIN_PROVIDER [ double precision, CI_electronic_dressed_pt2_new_energy, (N_states_diag) ] - &BEGIN_PROVIDER [ double precision, CI_dressed_pt2_new_eigenvectors, (N_det,N_states_diag) ] + &BEGIN_PROVIDER [ double precision, CI_dressed_pt2_new_eigenvectors, (N_det_ref,N_states_diag) ] &BEGIN_PROVIDER [ double precision, CI_dressed_pt2_new_eigenvectors_s2, (N_states_diag) ] BEGIN_DOC ! Eigenvectors/values of the CI matrix @@ -243,18 +247,18 @@ END_PROVIDER double precision, allocatable :: s2_eigvalues(:) double precision, allocatable :: e_array(:) integer, allocatable :: iorder(:) - double precision :: overlap(N_det) + double precision :: overlap(N_det_ref) double precision, allocatable :: psi_tmp(:) ! Guess values for the "N_states_diag" states of the CI_dressed_pt2_new_eigenvectors - do j=1,min(N_states,N_det) - do i=1,N_det - CI_dressed_pt2_new_eigenvectors(i,j) = psi_coef(i,j) + do j=1,min(N_states,N_det_ref) + do i=1,N_det_ref + CI_dressed_pt2_new_eigenvectors(i,j) = psi_ref_coef(i,j) enddo enddo - do j=min(N_states,N_det)+1,N_states_diag - do i=1,N_det + do j=min(N_states,N_det_ref)+1,N_states_diag + do i=1,N_det_ref CI_dressed_pt2_new_eigenvectors(i,j) = 0.d0 enddo enddo @@ -265,33 +269,33 @@ END_PROVIDER stop else if (diag_algorithm == "Lapack") then - allocate (eigenvectors(N_det,N_det)) - allocate (eigenvalues(N_det)) + allocate (eigenvectors(N_det_ref,N_det_ref)) + allocate (eigenvalues(N_det_ref)) if(pure_state_specific_mrpt2)then - allocate (hmatrix_tmp(N_det,N_det)) - allocate (iorder(N_det)) - allocate (psi_tmp(N_det)) + allocate (hmatrix_tmp(N_det_ref,N_det_ref)) + allocate (iorder(N_det_ref)) + allocate (psi_tmp(N_det_ref)) print*,'' print*,'***************************' do i_state = 1, N_states !! Big loop over states print*,'' print*,'Diagonalizing with the dressing for state',i_state - do i = 1, N_det - do j = 1, N_det + do i = 1, N_det_ref + do j = 1, N_det_ref hmatrix_tmp(j,i) = Hmatrix_dressed_pt2_new_symmetrized(j,i,i_state) enddo enddo call lapack_diag(eigenvalues,eigenvectors, & - Hmatrix_dressed_pt2_new_symmetrized(1,1,1),N_det,N_det) + Hmatrix_dressed_pt2_new_symmetrized(1,1,1),N_det_ref,N_det_ref) write(*,'(A86)')'Looking for the most overlapping state within all eigenvectors of the dressed matrix' print*,'' print*,'Calculating the overlap for ...' - do i = 1, N_det + do i = 1, N_det_ref overlap(i) = 0.d0 iorder(i) = i print*,'eigenvector',i - do j = 1, N_det - overlap(i)+= psi_coef(j,i_state) * eigenvectors(j,i) + do j = 1, N_det_ref + overlap(i)+= psi_ref_coef(j,i_state) * eigenvectors(j,i) enddo overlap(i) = -dabs(overlap(i)) print*,'energy = ',eigenvalues(i) + nuclear_repulsion @@ -305,26 +309,26 @@ END_PROVIDER print*,'with the overlap of ',dabs(overlap(1)) print*,'and an energy of ',eigenvalues(iorder(1)) + nuclear_repulsion print*,'Calculating the S^2 value ...' - do i=1,N_det + do i=1,N_det_ref CI_dressed_pt2_new_eigenvectors(i,i_state) = eigenvectors(i,iorder(1)) psi_tmp(i) = eigenvectors(i,iorder(1)) enddo CI_electronic_dressed_pt2_new_energy(i_state) = eigenvalues(iorder(1)) - call u_0_S2_u_0(CI_dressed_pt2_new_eigenvectors_s2(i_state),psi_tmp,N_det,psi_det,N_int,1,N_det) + call u_0_S2_u_0(CI_dressed_pt2_new_eigenvectors_s2(i_state),psi_tmp,N_det_ref,psi_det,N_int,1,N_det_ref) print*,'S^2 = ', CI_dressed_pt2_new_eigenvectors_s2(i_state) enddo else call lapack_diag(eigenvalues,eigenvectors, & - Hmatrix_dressed_pt2_new_symmetrized(1,1,1),N_det,N_det) + Hmatrix_dressed_pt2_new_symmetrized(1,1,1),N_det_ref,N_det_ref) CI_electronic_dressed_pt2_new_energy(:) = 0.d0 if (s2_eig) then i_state = 0 - allocate (s2_eigvalues(N_det)) - allocate(index_good_state_array(N_det),good_state_array(N_det)) + allocate (s2_eigvalues(N_det_ref)) + allocate(index_good_state_array(N_det_ref),good_state_array(N_det_ref)) good_state_array = .False. - call u_0_S2_u_0(s2_eigvalues,eigenvectors,N_det,psi_det,N_int,& - N_det,size(eigenvectors,1)) - do j=1,N_det + call u_0_S2_u_0(s2_eigvalues,eigenvectors,N_det_ref,psi_det,N_int,& + N_det_ref,size(eigenvectors,1)) + do j=1,N_det_ref ! Select at least n_states states with S^2 values closed to "expected_s2" print*, eigenvalues(j)+nuclear_repulsion, s2_eigvalues(j) if(dabs(s2_eigvalues(j)-expected_s2).le.0.5d0)then @@ -339,20 +343,20 @@ END_PROVIDER if (i_state /= 0) then ! Fill the first "i_state" states that have a correct S^2 value do j = 1, i_state - do i=1,N_det + do i=1,N_det_ref CI_dressed_pt2_new_eigenvectors(i,j) = eigenvectors(i,index_good_state_array(j)) enddo CI_electronic_dressed_pt2_new_energy(j) = eigenvalues(index_good_state_array(j)) CI_dressed_pt2_new_eigenvectors_s2(j) = s2_eigvalues(index_good_state_array(j)) enddo i_other_state = 0 - do j = 1, N_det + do j = 1, N_det_ref if(good_state_array(j))cycle i_other_state +=1 if(i_state+i_other_state.gt.n_states)then exit endif - do i=1,N_det + do i=1,N_det_ref CI_dressed_pt2_new_eigenvectors(i,i_state+i_other_state) = eigenvectors(i,j) enddo CI_electronic_dressed_pt2_new_energy(i_state+i_other_state) = eigenvalues(j) @@ -362,15 +366,15 @@ END_PROVIDER else print*,'' print*,'!!!!!!!! WARNING !!!!!!!!!' - print*,' Within the ',N_det,'determinants selected' + print*,' Within the ',N_det_ref,'determinants selected' print*,' and the ',N_states_diag,'states requested' print*,' We did not find any state with S^2 values close to ',expected_s2 print*,' We will then set the first N_states eigenvectors of the H matrix' print*,' as the CI_dressed_pt2_new_eigenvectors' print*,' You should consider more states and maybe ask for s2_eig to be .True. or just enlarge the CI space' print*,'' - do j=1,min(N_states_diag,N_det) - do i=1,N_det + do j=1,min(N_states_diag,N_det_ref) + do i=1,N_det_ref CI_dressed_pt2_new_eigenvectors(i,j) = eigenvectors(i,j) enddo CI_electronic_dressed_pt2_new_energy(j) = eigenvalues(j) @@ -380,11 +384,11 @@ END_PROVIDER deallocate(index_good_state_array,good_state_array) deallocate(s2_eigvalues) else - call u_0_S2_u_0(CI_dressed_pt2_new_eigenvectors_s2,eigenvectors,N_det,psi_det,N_int,& - min(N_det,N_states_diag),size(eigenvectors,1)) + call u_0_S2_u_0(CI_dressed_pt2_new_eigenvectors_s2,eigenvectors,N_det_ref,psi_det,N_int,& + min(N_det_ref,N_states_diag),size(eigenvectors,1)) ! Select the "N_states_diag" states of lowest energy - do j=1,min(N_det,N_states) - do i=1,N_det + do j=1,min(N_det_ref,N_states) + do i=1,N_det_ref CI_dressed_pt2_new_eigenvectors(i,j) = eigenvectors(i,j) enddo CI_electronic_dressed_pt2_new_energy(j) = eigenvalues(j) diff --git a/src/MRPT_Utils/new_way.irp.f b/plugins/MRPT_Utils/new_way.irp.f similarity index 98% rename from src/MRPT_Utils/new_way.irp.f rename to plugins/MRPT_Utils/new_way.irp.f index 3624b7d3..a4bbe93a 100644 --- a/src/MRPT_Utils/new_way.irp.f +++ b/plugins/MRPT_Utils/new_way.irp.f @@ -38,8 +38,8 @@ subroutine give_2h1p_contrib(matrix_2h1p) active_int(a,2) = get_mo_bielec_integral(iorb,jorb,aorb,rorb,mo_integrals_map) ! exchange enddo - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) double precision :: delta_e(n_act_orb,2,N_states) integer :: istate integer :: index_orb_act_mono(N_det,3) @@ -232,8 +232,8 @@ subroutine give_1h2p_contrib(matrix_1h2p) active_int(a,2) = get_mo_bielec_integral(iorb,aorb,vorb,rorb,mo_integrals_map) ! exchange enddo - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) double precision :: delta_e(n_act_orb,2,N_states) integer :: istate integer :: index_orb_act_mono(N_det,3) @@ -413,8 +413,8 @@ subroutine give_1h1p_sec_order_singles_contrib(matrix_1h1p) double precision :: get_mo_bielec_integral double precision :: active_int(n_act_orb,2) double precision :: hij,phase - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) integer :: istate double precision :: hja,delta_e_inact_virt(N_states) integer :: kspin,degree_scalar @@ -572,8 +572,8 @@ subroutine give_1p_sec_order_singles_contrib(matrix_1p) integer :: accu_elec double precision :: get_mo_bielec_integral double precision :: hij,phase - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) integer :: istate double precision :: hja,delta_e_act_virt(N_states) integer :: kspin,degree_scalar @@ -715,8 +715,8 @@ subroutine give_1h1p_only_doubles_spin_cross(matrix_1h1p) double precision :: get_mo_bielec_integral double precision :: active_int(n_act_orb,2) double precision :: hij,phase - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) integer :: istate double precision :: hja,delta_e_inact_virt(N_states) integer(bit_kind) :: pert_det(N_int,2,n_act_orb,n_act_orb,2) diff --git a/src/MRPT_Utils/new_way_second_order_coef.irp.f b/plugins/MRPT_Utils/new_way_second_order_coef.irp.f similarity index 99% rename from src/MRPT_Utils/new_way_second_order_coef.irp.f rename to plugins/MRPT_Utils/new_way_second_order_coef.irp.f index 4c12dbe1..676e14e9 100644 --- a/src/MRPT_Utils/new_way_second_order_coef.irp.f +++ b/plugins/MRPT_Utils/new_way_second_order_coef.irp.f @@ -44,8 +44,8 @@ subroutine give_2h1p_contrib_sec_order(matrix_2h1p) perturb_dets_phase(a,2,1) = -1000.d0 enddo - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) double precision :: delta_e(n_act_orb,2,N_states) integer :: istate @@ -379,8 +379,8 @@ subroutine give_1h2p_contrib_sec_order(matrix_1h2p) double precision :: active_int(n_act_orb,2) double precision :: hij,phase double precision :: accu_contrib - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) double precision :: delta_e(n_act_orb,2,N_states) integer :: istate integer :: index_orb_act_mono(N_det,6) diff --git a/src/MRPT_Utils/psi_active_prov.irp.f b/plugins/MRPT_Utils/psi_active_prov.irp.f similarity index 100% rename from src/MRPT_Utils/psi_active_prov.irp.f rename to plugins/MRPT_Utils/psi_active_prov.irp.f diff --git a/src/MRPT_Utils/second_order_new.irp.f b/plugins/MRPT_Utils/second_order_new.irp.f similarity index 99% rename from src/MRPT_Utils/second_order_new.irp.f rename to plugins/MRPT_Utils/second_order_new.irp.f index ba3b421b..2a61eece 100644 --- a/src/MRPT_Utils/second_order_new.irp.f +++ b/plugins/MRPT_Utils/second_order_new.irp.f @@ -22,8 +22,8 @@ subroutine give_1h2p_new(matrix_1h2p) double precision :: active_int(n_act_orb,2) double precision :: hij,phase double precision :: accu_contrib(N_states) - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) double precision :: delta_e(n_act_orb,2,N_states) double precision :: delta_e_inv(n_act_orb,2,N_states) double precision :: delta_e_inactive_virt(N_states) @@ -502,8 +502,8 @@ subroutine give_2h1p_new(matrix_2h1p) double precision :: delta_e_inv(n_act_orb,2,N_states) double precision :: fock_operator_local(n_act_orb,n_act_orb,2) double precision :: delta_e_inactive_virt(N_states) - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) double precision :: delta_e(n_act_orb,2,N_states) integer :: istate integer :: index_orb_act_mono(N_det,3) diff --git a/src/MRPT_Utils/second_order_new_2p.irp.f b/plugins/MRPT_Utils/second_order_new_2p.irp.f similarity index 99% rename from src/MRPT_Utils/second_order_new_2p.irp.f rename to plugins/MRPT_Utils/second_order_new_2p.irp.f index 11ae18da..d086b6c5 100644 --- a/src/MRPT_Utils/second_order_new_2p.irp.f +++ b/plugins/MRPT_Utils/second_order_new_2p.irp.f @@ -21,8 +21,8 @@ subroutine give_2p_new(matrix_2p) double precision :: active_int(n_act_orb,n_act_orb,2) double precision :: hij,phase double precision :: accu_contrib(N_states) - integer :: degree(N_det) - integer :: idx(0:N_det) + integer :: degree(N_det_Ref) + integer :: idx(0:N_det_Ref) double precision :: delta_e(n_act_orb,n_act_orb,2,2,N_states) double precision :: delta_e_inv(n_act_orb,n_act_orb,2,2,N_states) double precision :: delta_e_inactive_virt(N_states) diff --git a/src/MRPT_Utils/utils_bitmask.irp.f b/plugins/MRPT_Utils/utils_bitmask.irp.f similarity index 100% rename from src/MRPT_Utils/utils_bitmask.irp.f rename to plugins/MRPT_Utils/utils_bitmask.irp.f diff --git a/plugins/mrcepa0/NEEDED_CHILDREN_MODULES b/plugins/mrcepa0/NEEDED_CHILDREN_MODULES index 8b6c5a18..fe8255d1 100644 --- a/plugins/mrcepa0/NEEDED_CHILDREN_MODULES +++ b/plugins/mrcepa0/NEEDED_CHILDREN_MODULES @@ -1 +1 @@ -Perturbation Selectors_full Generators_full Psiref_CAS MRCC_Utils ZMQ +Perturbation Selectors_full Generators_full Psiref_CAS MRCC_Utils ZMQ diff --git a/scripts/generate_h_apply.py b/scripts/generate_h_apply.py index c7714e8a..5dd1e4f3 100755 --- a/scripts/generate_h_apply.py +++ b/scripts/generate_h_apply.py @@ -343,7 +343,7 @@ class H_apply(object): """ self.data["size_max"] = "8192" self.data["initialization"] = """ - PROVIDE psi_selectors_coef psi_selectors E_corr_per_selectors psi_det_sorted_bit +! PROVIDE psi_selectors_coef psi_selectors E_corr_per_selectors psi_det_sorted_bit """ if self.do_double_exc == True: self.data["keys_work"] = """ @@ -370,7 +370,7 @@ class H_apply(object): double precision, intent(inout):: norm_pert(N_st) double precision, intent(inout):: H_pert_diag(N_st) double precision :: delta_pt2(N_st), norm_psi(N_st), pt2_old(N_st) - PROVIDE N_det_generators +! PROVIDE N_det_generators do k=1,N_st pt2(k) = 0.d0 norm_pert(k) = 0.d0 @@ -478,7 +478,7 @@ class H_apply_zmq(H_apply): double precision, intent(inout):: norm_pert(N_st) double precision, intent(inout):: H_pert_diag(N_st) double precision :: delta_pt2(N_st), norm_psi(N_st), pt2_old(N_st) - PROVIDE N_det_generators +! PROVIDE N_det_generators do k=1,N_st pt2(k) = 0.d0 norm_pert(k) = 0.d0 diff --git a/src/Determinants/H_apply_nozmq.template.f b/src/Determinants/H_apply_nozmq.template.f index 0c319fe3..5550d9d1 100644 --- a/src/Determinants/H_apply_nozmq.template.f +++ b/src/Determinants/H_apply_nozmq.template.f @@ -17,7 +17,7 @@ subroutine $subroutine($params_main) double precision, allocatable :: fock_diag_tmp(:,:) $initialization - PROVIDE H_apply_buffer_allocated mo_bielec_integrals_in_map psi_det_generators psi_coef_generators + PROVIDE H_apply_buffer_allocated mo_bielec_integrals_in_map !psi_det_generators psi_coef_generators nmax = mod( N_det_generators,nproc ) diff --git a/src/Determinants/H_apply_zmq.template.f b/src/Determinants/H_apply_zmq.template.f index 59544b79..3e4c1867 100644 --- a/src/Determinants/H_apply_zmq.template.f +++ b/src/Determinants/H_apply_zmq.template.f @@ -20,7 +20,7 @@ subroutine $subroutine($params_main) double precision, allocatable :: fock_diag_tmp(:,:) $initialization - PROVIDE H_apply_buffer_allocated mo_bielec_integrals_in_map psi_det_generators psi_coef_generators +! PROVIDE H_apply_buffer_allocated mo_bielec_integrals_in_map psi_det_generators psi_coef_generators integer(ZMQ_PTR), external :: new_zmq_pair_socket integer(ZMQ_PTR) :: zmq_socket_pair