diff --git a/RELEASE_NOTES.org b/RELEASE_NOTES.org index e5fb24a7..02176ffa 100644 --- a/RELEASE_NOTES.org +++ b/RELEASE_NOTES.org @@ -29,7 +29,7 @@ - Disk-based Davidson when too much memory is required - Fixed bug in DIIS - Fixed bug in molden (Au -> Angs) - + *** User interface - Added ~qp_basis~ script to install a basis set from the ~bse~ @@ -38,7 +38,7 @@ ~psi_coef_qp_edit~ to accelerate the opening of qp_edit with large wave functions - Removed ~etc/ninja.rc~ - - Added flag to specify if the AOs are normalized + - Added flag to specify if the AOs are normalized - Added flag to specify if the primitive Gaussians are normalized - Added ~lin_dep_cutoff~, the cutoff for linear dependencies - Davidson convergence threshold can be adapted from PT2 @@ -51,7 +51,9 @@ - Added ~print_energy~ - Added ~print_hamiltonian~ - Added input for two body RDM - - Added keyword ~save_wf_after_selection~ + - Added keyword ~save_wf_after_selection~ + - Added a ~restore_symm~ flag to enforce the restoration of + symmetry in matrices *** Code @@ -75,11 +77,11 @@ - Added ~V_ne_psi_energy~ - Added ~h_core_guess~ routine - Fixed Laplacians in real space (indices) - - + - Added LIB file to add extra libs in plugin ao_one_e_integral_zero banned_excitations - - + + diff --git a/bin/qp_export_as_tgz b/bin/qp_export_as_tgz index 7332d1ed..20624dba 100755 --- a/bin/qp_export_as_tgz +++ b/bin/qp_export_as_tgz @@ -99,7 +99,9 @@ function find_libs () { } function find_exec () { - find ${QP_ROOT}/$1 -perm /u+x -type f + for i in $@ ; do + find ${QP_ROOT}/$i -perm /u+x -type f + done } @@ -119,7 +121,7 @@ fi echo "Copying binary files" # -------------------- -FORTRAN_EXEC=$(find_exec src) +FORTRAN_EXEC=$(find_exec src/*/) if [[ -z $FORTRAN_EXEC ]] ; then error 'No Fortran binaries found.' exit 1 diff --git a/etc/local.rc b/etc/local.rc index 954b315b..182599c6 100644 --- a/etc/local.rc +++ b/etc/local.rc @@ -19,4 +19,3 @@ # export QP_NIC=lo # export QP_NIC=ib0 - diff --git a/external/irpf90 b/external/irpf90 index 132a4a16..33ca5e10 160000 --- a/external/irpf90 +++ b/external/irpf90 @@ -1 +1 @@ -Subproject commit 132a4a1661c9878d21dcbf0ac14f7fe9a3b110d0 +Subproject commit 33ca5e1018f3bbb5e695e6ee558f5dac0753b271 diff --git a/scripts/compilation/qp_create_ninja b/scripts/compilation/qp_create_ninja index 38f7e765..a132bc9e 100755 --- a/scripts/compilation/qp_create_ninja +++ b/scripts/compilation/qp_create_ninja @@ -108,6 +108,17 @@ def ninja_create_env_variable(pwd_config_file): lib_usr = get_compilation_option(pwd_config_file, "LIB") str_lib = " ".join([lib_lapack, EZFIO_LIB, ZMQ_LIB, LIB, lib_usr]) + + # Read all LIB files in modules + libfile = "LIB" + try: + content = "" + with open(libfile,'r') as f: + content = f.read() + str_lib += " "+content + except IOError: + pass + l_string.append("LIB = {0} ".format(str_lib)) l_string.append("") diff --git a/scripts/ezfio_interface/ezfio_generate_provider.py b/scripts/ezfio_interface/ezfio_generate_provider.py index 4b43a88a..6b49955b 100755 --- a/scripts/ezfio_interface/ezfio_generate_provider.py +++ b/scripts/ezfio_interface/ezfio_generate_provider.py @@ -82,6 +82,8 @@ END_PROVIDER mpi_correspondance = {"integer": "MPI_INTEGER", "integer*8": "MPI_INTEGER8", "character*(32)": "MPI_CHARACTER", + "character*(64)": "MPI_CHARACTER", + "character*(256)": "MPI_CHARACTER", "logical": "MPI_LOGICAL", "double precision": "MPI_DOUBLE_PRECISION"} diff --git a/src/mo_one_e_ints/EZFIO.cfg b/src/mo_one_e_ints/EZFIO.cfg index ca4dabf4..d58b3da1 100644 --- a/src/mo_one_e_ints/EZFIO.cfg +++ b/src/mo_one_e_ints/EZFIO.cfg @@ -47,10 +47,3 @@ type: Disk_access doc: Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ] interface: ezfio,provider,ocaml default: None - - -[restore_symm] -type: logical -doc: If true, try to find symmetry in the MO coefficient matrices -interface: ezfio,provider,ocaml -default: True diff --git a/src/mo_one_e_ints/pot_mo_pseudo_ints.irp.f b/src/mo_one_e_ints/pot_mo_pseudo_ints.irp.f index 179b33ed..f4c1012d 100644 --- a/src/mo_one_e_ints/pot_mo_pseudo_ints.irp.f +++ b/src/mo_one_e_ints/pot_mo_pseudo_ints.irp.f @@ -26,3 +26,43 @@ BEGIN_PROVIDER [double precision, mo_pseudo_integrals, (mo_num,mo_num)] END_PROVIDER +BEGIN_PROVIDER [double precision, mo_pseudo_integrals_local, (mo_num,mo_num)] + implicit none + BEGIN_DOC + ! Pseudopotential integrals in |MO| basis + END_DOC + + if (do_pseudo) then + call ao_to_mo( & + ao_pseudo_integrals_local, & + size(ao_pseudo_integrals_local,1), & + mo_pseudo_integrals_local, & + size(mo_pseudo_integrals_local,1) & + ) + else + mo_pseudo_integrals_local = 0.d0 + endif + +END_PROVIDER + + +BEGIN_PROVIDER [double precision, mo_pseudo_integrals_non_local, (mo_num,mo_num)] + implicit none + BEGIN_DOC + ! Pseudopotential integrals in |MO| basis + END_DOC + + if (do_pseudo) then + call ao_to_mo( & + ao_pseudo_integrals_non_local, & + size(ao_pseudo_integrals_non_local,1), & + mo_pseudo_integrals_non_local, & + size(mo_pseudo_integrals_non_local,1) & + ) + else + mo_pseudo_integrals_non_local = 0.d0 + endif + +END_PROVIDER + + diff --git a/src/two_body_rdm/two_e_dm_mo.irp.f b/src/two_body_rdm/two_e_dm_mo.irp.f index 19e8d75e..4dadd2e6 100644 --- a/src/two_body_rdm/two_e_dm_mo.irp.f +++ b/src/two_body_rdm/two_e_dm_mo.irp.f @@ -5,18 +5,14 @@ BEGIN_PROVIDER [double precision, two_e_dm_mo, (mo_num,mo_num,mo_num,mo_num)] ! ! ! - ! WHERE ALL ORBITALS (i,j,k,l) BELONGS TO ALL OCCUPIED ORBITALS : core, inactive and active + ! where the indices (i,j,k,l) belong to all MOs. ! - ! THE NORMALIZATION (i.e. sum of diagonal elements) IS SET TO N_{elec} * (N_{elec} - 1)/2 + ! The normalization (i.e. sum of diagonal elements) is set to $N_{elec} * (N_{elec} - 1)/2$ ! - ! !!!!! WARNING !!!!! ALL SLATER DETERMINANTS IN PSI_DET MUST BELONG TO AN ACTIVE SPACE DEFINED BY "list_act" + ! !!!!! WARNING !!!!! IF "no_core_density" then all elements involving at least one CORE MO are set to zero + ! The state-averaged two-electron energy : ! - ! !!!!! WARNING !!!!! IF "no_core_density" then all elements involving at least one CORE MO is set to zero - ! The two-electron energy of each state can be computed as: - ! - ! \sum_{i,j,k,l = 1, n_core_inact_act_orb} two_e_dm_mo(i,j,k,l,istate) * < ii jj | kk ll > - ! - ! with ii = list_core_inact_act(i), jj = list_core_inact_act(j), kk = list_core_inact_act(k), ll = list_core_inact_act(l) + ! \sum_{i,j,k,l = 1, mo_num} two_e_dm_mo(i,j,k,l) * < ii jj | kk ll > END_DOC two_e_dm_mo = 0.d0 integer :: i,j,k,l,iorb,jorb,korb,lorb,istate diff --git a/src/utils/EZFIO.cfg b/src/utils/EZFIO.cfg new file mode 100644 index 00000000..7d367f0c --- /dev/null +++ b/src/utils/EZFIO.cfg @@ -0,0 +1,5 @@ +[restore_symm] +type: logical +doc: If true, try to find symmetry in the MO coefficient matrices +interface: ezfio,provider,ocaml +default: False