diff --git a/plugins/All_singles/README.rst b/plugins/All_singles/README.rst index b4b3f517..d3888edc 100644 --- a/plugins/All_singles/README.rst +++ b/plugins/All_singles/README.rst @@ -6,7 +6,77 @@ Needed Modules ============== .. Do not edit this section It was auto-generated .. by the `update_README.py` script. + + +.. image:: tree_dependency.png + +* `Generators_restart `_ +* `Perturbation `_ +* `Properties `_ +* `Selectors_no_sorted `_ +* `Utils `_ + Documentation ============= .. Do not edit this section It was auto-generated .. by the `update_README.py` script. + + +h_apply_just_1h_1p + Calls H_apply on the HF determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + +h_apply_just_1h_1p_diexc + Undocumented + + +h_apply_just_1h_1p_diexcorg + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_just_1h_1p_diexcp + Undocumented + + +h_apply_just_1h_1p_monoexc + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_just_mono + Calls H_apply on the HF determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + +h_apply_just_mono_diexc + Undocumented + + +h_apply_just_mono_diexcorg + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_just_mono_diexcp + Undocumented + + +h_apply_just_mono_monoexc + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +`restart_more_singles `_ + Generates and select single excitations + on the top of a given restart wave function + + +`routine `_ + Undocumented + diff --git a/plugins/CAS_SD/.gitignore b/plugins/CAS_SD/.gitignore index b8827b3b..380d6cbf 100644 --- a/plugins/CAS_SD/.gitignore +++ b/plugins/CAS_SD/.gitignore @@ -22,6 +22,9 @@ Properties Pseudo Selectors_full Utils +ZMQ +cas_s +cas_s_selected cas_sd cas_sd_selected ezfio_interface.irp.f diff --git a/plugins/CAS_SD/README.rst b/plugins/CAS_SD/README.rst index f2d76615..11f5d4cc 100644 --- a/plugins/CAS_SD/README.rst +++ b/plugins/CAS_SD/README.rst @@ -118,6 +118,106 @@ Documentation Undocumented +h_apply_cas_s + Calls H_apply on the HF determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + +h_apply_cas_s_diexc + Undocumented + + +h_apply_cas_s_diexcorg + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_cas_s_diexcp + Undocumented + + +h_apply_cas_s_monoexc + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_cas_s_pt2 + Calls H_apply on the HF determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + +h_apply_cas_s_pt2_diexc + Undocumented + + +h_apply_cas_s_pt2_diexcorg + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_cas_s_pt2_diexcp + Undocumented + + +h_apply_cas_s_pt2_monoexc + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_cas_s_selected + Calls H_apply on the HF determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + +h_apply_cas_s_selected_diexc + Undocumented + + +h_apply_cas_s_selected_diexcorg + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_cas_s_selected_diexcp + Undocumented + + +h_apply_cas_s_selected_monoexc + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_cas_s_selected_no_skip + Calls H_apply on the HF determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + +h_apply_cas_s_selected_no_skip_diexc + Undocumented + + +h_apply_cas_s_selected_no_skip_diexcorg + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_cas_s_selected_no_skip_diexcp + Undocumented + + +h_apply_cas_s_selected_no_skip_monoexc + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + h_apply_cas_sd Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. diff --git a/plugins/CAS_SD/tree_dependency.png b/plugins/CAS_SD/tree_dependency.png index 185c2b27..e53499c9 100644 Binary files a/plugins/CAS_SD/tree_dependency.png and b/plugins/CAS_SD/tree_dependency.png differ diff --git a/plugins/Full_CI/.gitignore b/plugins/Full_CI/.gitignore index fe4ea27b..674f56da 100644 --- a/plugins/Full_CI/.gitignore +++ b/plugins/Full_CI/.gitignore @@ -28,6 +28,7 @@ full_ci full_ci_no_skip irpf90.make irpf90_entities +micro_pt2 tags target_pt2 var_pt2_ratio \ No newline at end of file diff --git a/plugins/Full_CI/README.rst b/plugins/Full_CI/README.rst index 08a0d1ea..750db44c 100644 --- a/plugins/Full_CI/README.rst +++ b/plugins/Full_CI/README.rst @@ -107,6 +107,10 @@ h_apply_fci_pt2 excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. +h_apply_fci_pt2_collector + Collects results from the selection in an array of generators + + h_apply_fci_pt2_diexc Undocumented @@ -127,6 +131,19 @@ h_apply_fci_pt2_monoexc Assume N_int is already provided. +h_apply_fci_pt2_slave + Calls H_apply on the HF determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + +h_apply_fci_pt2_slave_inproc + Computes a buffer using threads + + +h_apply_fci_pt2_slave_tcp + Computes a buffer over the network + + h_apply_pt2_mono_delta_rho Calls H_apply on the HF determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. @@ -227,6 +244,18 @@ h_apply_select_mono_di_delta_rho_monoexc Assume N_int is already provided. +`micro_pt2 `_ + Helper program to compute the PT2 in distributed mode. + + +`provide_everything `_ + Undocumented + + +`run_wf `_ + Undocumented + + `var_pt2_ratio_run `_ Undocumented diff --git a/plugins/Full_CI/tree_dependency.png b/plugins/Full_CI/tree_dependency.png index caedb2e0..158a3945 100644 Binary files a/plugins/Full_CI/tree_dependency.png and b/plugins/Full_CI/tree_dependency.png differ diff --git a/plugins/Generators_CAS/tree_dependency.png b/plugins/Generators_CAS/tree_dependency.png index 5bbc55d0..749ec258 100644 Binary files a/plugins/Generators_CAS/tree_dependency.png and b/plugins/Generators_CAS/tree_dependency.png differ diff --git a/plugins/Generators_full/tree_dependency.png b/plugins/Generators_full/tree_dependency.png index 94ad6358..eed76866 100644 Binary files a/plugins/Generators_full/tree_dependency.png and b/plugins/Generators_full/tree_dependency.png differ diff --git a/plugins/Generators_restart/README.rst b/plugins/Generators_restart/README.rst index e7ab7045..09b4769c 100644 --- a/plugins/Generators_restart/README.rst +++ b/plugins/Generators_restart/README.rst @@ -2,3 +2,40 @@ Generators_restart Module ========================= +Needed Modules +============== +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +.. image:: tree_dependency.png + +* `Determinants `_ + +Documentation +============= +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +`n_det_generators `_ + Read the wave function + + +`psi_coef_generators `_ + read wf + .br + + +`psi_det_generators `_ + read wf + .br + + +`select_max `_ + Memo to skip useless selectors + + +`size_select_max `_ + Size of the select_max array + diff --git a/plugins/Hartree_Fock/.gitignore b/plugins/Hartree_Fock/.gitignore index f1a4ff4f..9f1c0929 100644 --- a/plugins/Hartree_Fock/.gitignore +++ b/plugins/Hartree_Fock/.gitignore @@ -5,6 +5,7 @@ AO_Basis Bitmask Electrons Ezfio_files +Huckel_guess IRPF90_man IRPF90_temp Integrals_Bielec @@ -15,6 +16,7 @@ Makefile Makefile.depend Nuclei Pseudo +SCF Utils ZMQ ezfio_interface.irp.f diff --git a/plugins/Hartree_Fock/README.rst b/plugins/Hartree_Fock/README.rst index aad4fd56..77521b94 100644 --- a/plugins/Hartree_Fock/README.rst +++ b/plugins/Hartree_Fock/README.rst @@ -25,6 +25,7 @@ Needed Modules * `Integrals_Bielec `_ * `MOGuess `_ +* `Bitmask `_ Documentation ============= @@ -32,11 +33,11 @@ Documentation .. by the `update_README.py` script. -`ao_bi_elec_integral_alpha `_ +`ao_bi_elec_integral_alpha `_ Alpha Fock matrix in AO basis set -`ao_bi_elec_integral_beta `_ +`ao_bi_elec_integral_beta `_ Alpha Fock matrix in AO basis set @@ -52,7 +53,7 @@ Documentation Diagonal Fock matrix in the MO basis -`diagonal_fock_matrix_mo_sum `_ +`diagonal_fock_matrix_mo_sum `_ diagonal element of the fock matrix calculated as the sum over all the interactions with all the electrons in the RHF determinant diagonal_Fock_matrix_mo_sum(i) = sum_{j=1, N_elec} 2 J_ij -K_ij @@ -62,23 +63,23 @@ Documentation Diagonal Fock matrix in the MO basis -`fock_matrix_alpha_ao `_ +`fock_matrix_alpha_ao `_ Alpha Fock matrix in AO basis set -`fock_matrix_alpha_mo `_ +`fock_matrix_alpha_mo `_ Fock matrix on the MO basis -`fock_matrix_ao `_ +`fock_matrix_ao `_ Fock matrix in AO basis set -`fock_matrix_beta_ao `_ +`fock_matrix_beta_ao `_ Alpha Fock matrix in AO basis set -`fock_matrix_beta_mo `_ +`fock_matrix_beta_mo `_ Fock matrix on the MO basis @@ -114,7 +115,7 @@ Documentation .br -`fock_mo_to_ao `_ +`fock_mo_to_ao `_ Undocumented @@ -134,7 +135,7 @@ Documentation S^-1 Beta density matrix in the AO basis x S^-1 -`hf_energy `_ +`hf_energy `_ Hartree-Fock energy @@ -142,18 +143,22 @@ Documentation Build the MOs using the extended Huckel model -`level_shift `_ +`level_shift `_ Energy shift on the virtual MOs to improve SCF convergence -`mo_guess_type `_ +`mo_guess_type `_ Initial MO guess. Can be [ Huckel | HCore ] -`n_it_scf_max `_ +`n_it_scf_max `_ Maximum number of SCF iterations +`no_oa_or_av_opt `_ + If true, skip the (inactive+core) --> (active) and the (active) --> (virtual) orbital rotations within the SCF procedure + + `run `_ Run SCF calculation @@ -165,6 +170,6 @@ Documentation optional: mo_basis.mo_coef -`thresh_scf `_ +`thresh_scf `_ Threshold on the convergence of the Hartree Fock energy diff --git a/plugins/Hartree_Fock/tree_dependency.png b/plugins/Hartree_Fock/tree_dependency.png index cb1d9738..67de2eee 100644 Binary files a/plugins/Hartree_Fock/tree_dependency.png and b/plugins/Hartree_Fock/tree_dependency.png differ diff --git a/plugins/MRCC_CASSD/.gitignore b/plugins/MRCC_CASSD/.gitignore index d81ca7b8..97bd070c 100644 --- a/plugins/MRCC_CASSD/.gitignore +++ b/plugins/MRCC_CASSD/.gitignore @@ -25,8 +25,10 @@ Psiref_CAS Psiref_Utils Selectors_full Utils +ZMQ ezfio_interface.irp.f irpf90.make irpf90_entities mrcc_cassd +mrcc_noiter tags \ No newline at end of file diff --git a/plugins/MRCC_CASSD/README.rst b/plugins/MRCC_CASSD/README.rst index b2713b43..0e38fe4c 100644 --- a/plugins/MRCC_CASSD/README.rst +++ b/plugins/MRCC_CASSD/README.rst @@ -55,6 +55,26 @@ Documentation Undocumented -`print_cas_coefs `_ +`mrcc_noiter `_ Undocumented + +`n_it_mrcc_max `_ + Maximum number of MRCC iterations + + +`print_cas_coefs `_ + Undocumented + + +`run `_ + Undocumented + + +`run_pt2 `_ + Undocumented + + +`thresh_mrcc `_ + Threshold on the convergence of the MRCC energy + diff --git a/plugins/MRCC_CASSD/tree_dependency.png b/plugins/MRCC_CASSD/tree_dependency.png index 480c38a8..e73ff165 100644 Binary files a/plugins/MRCC_CASSD/tree_dependency.png and b/plugins/MRCC_CASSD/tree_dependency.png differ diff --git a/plugins/MRCC_Utils/.gitignore b/plugins/MRCC_Utils/.gitignore index e6279f11..4c65ce66 100644 --- a/plugins/MRCC_Utils/.gitignore +++ b/plugins/MRCC_Utils/.gitignore @@ -24,8 +24,9 @@ Psiref_CAS Psiref_Utils Selectors_full Utils +ZMQ ezfio_interface.irp.f irpf90.make irpf90_entities -mrcc_general +mrcc_dummy tags \ No newline at end of file diff --git a/plugins/MRCC_Utils/README.rst b/plugins/MRCC_Utils/README.rst index 8b97bfbe..39b5684c 100644 --- a/plugins/MRCC_Utils/README.rst +++ b/plugins/MRCC_Utils/README.rst @@ -10,6 +10,7 @@ Needed Modules * `Selectors_full `_ * `Generators_full `_ * `Psiref_Utils `_ +* `Psiref_CAS `_ Documentation ============= @@ -21,14 +22,6 @@ Documentation Undocumented -`abort_all `_ - If True, all the calculation is aborted - - -`abort_here `_ - If True, all the calculation is aborted - - `add_poly `_ Add two polynomials D(t) =! D(t) +( B(t)+C(t)) @@ -43,11 +36,11 @@ Documentation Compute 1st dimension such that it is aligned for vectorization. -`apply_rotation `_ +`apply_rotation `_ Apply the rotation found by find_rotation -`approx_dble `_ +`approx_dble `_ Undocumented @@ -70,23 +63,19 @@ Documentation Binomial coefficients -`catch_signal `_ - What to do on Ctrl-C. If two Ctrl-C are pressed within 1 sec, the calculation if aborted. - - -`ci_eigenvectors_dressed `_ +`ci_eigenvectors_dressed `_ Eigenvectors/values of the CI matrix -`ci_eigenvectors_s2_dressed `_ +`ci_eigenvectors_s2_dressed `_ Eigenvectors/values of the CI matrix -`ci_electronic_energy_dressed `_ +`ci_electronic_energy_dressed `_ Eigenvectors/values of the CI matrix -`ci_energy_dressed `_ +`ci_energy_dressed `_ N_states lowest eigenvalues of the dressed CI matrix @@ -150,15 +139,15 @@ Documentation Undocumented -`delta_ii `_ +`delta_ii `_ Dressing matrix in N_det basis -`delta_ij `_ +`delta_ij `_ Dressing matrix in N_det basis -`diagonalize_ci_dressed `_ +`diagonalize_ci_dressed `_ Replace the coefficients of the CI states by the coefficients of the eigenstates of the CI matrix @@ -198,11 +187,15 @@ Documentation 1/n! -`find_rotation `_ +`find_rotation `_ Find A.C = B -`find_triples_and_quadruples `_ +`find_triples_and_quadruples `_ + Undocumented + + +`find_triples_and_quadruples_micro `_ Undocumented @@ -228,23 +221,7 @@ Documentation Undocumented -`gen_det_idx `_ - Undocumented - - -`gen_det_shortcut `_ - Undocumented - - -`gen_det_sorted `_ - Undocumented - - -`gen_det_version `_ - Undocumented - - -`get_pseudo_inverse `_ +`get_pseudo_inverse `_ Find C = A^-1 @@ -304,7 +281,32 @@ h_apply_mrcc_monoexc Assume N_int is already provided. -`h_matrix_dressed `_ +h_apply_mrcc_pt2 + Calls H_apply on the HF determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + +h_apply_mrcc_pt2_diexc + Undocumented + + +h_apply_mrcc_pt2_diexcorg + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +h_apply_mrcc_pt2_diexcp + Undocumented + + +h_apply_mrcc_pt2_monoexc + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + +`h_matrix_dressed `_ Dressed H with Delta_ij @@ -390,7 +392,11 @@ h_apply_mrcc_monoexc Hermite polynomial -`i2radix_sort `_ +`hij_mrcc `_ + < ref | H | Non-ref > matrix + + +`i2radix_sort `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. @@ -415,14 +421,14 @@ h_apply_mrcc_monoexc contains the new order of the elements. -`i8radix_sort `_ +`i8radix_sort `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. -`i8radix_sort_big `_ +`i8radix_sort_big `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. @@ -521,14 +527,14 @@ h_apply_mrcc_monoexc 1/i -`iradix_sort `_ +`iradix_sort `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. -`iradix_sort_big `_ +`iradix_sort_big `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. @@ -553,19 +559,15 @@ h_apply_mrcc_monoexc contains the new order of the elements. -`lambda_mrcc `_ +`lambda_mrcc `_ cm/ or perturbative 1/Delta_E(m) -`lambda_mrcc_tmp `_ - Undocumented - - -`lambda_pert `_ +`lambda_mrcc_pt2 `_ cm/ or perturbative 1/Delta_E(m) -`lapack_diag `_ +`lapack_diag `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -576,7 +578,7 @@ h_apply_mrcc_monoexc .br -`lapack_diag_s2 `_ +`lapack_diag_s2 `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -587,7 +589,7 @@ h_apply_mrcc_monoexc .br -`lapack_diagd `_ +`lapack_diagd `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -598,7 +600,7 @@ h_apply_mrcc_monoexc .br -`lapack_partial_diag `_ +`lapack_partial_diag `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -613,7 +615,11 @@ h_apply_mrcc_monoexc n! -`mrcc_dress `_ +`lowercase `_ + Transform to lower case + + +`mrcc_dress `_ Undocumented @@ -626,7 +632,7 @@ h_apply_mrcc_monoexc D(t) =! D(t) +( B(t)*C(t)) -`normalize `_ +`normalize `_ Normalizes vector u u is expected to be aligned in memory. @@ -635,8 +641,8 @@ h_apply_mrcc_monoexc Number of current OpenMP threads -`ortho_lowdin `_ - Compute C_new=C_old.S^-1/2 canonical orthogonalization. +`ortho_canonical `_ + Compute C_new=C_old.U.s^-1/2 canonical orthogonalization. .br overlap : overlap matrix .br @@ -653,8 +659,22 @@ h_apply_mrcc_monoexc .br -`oscillations `_ - Undocumented +`ortho_lowdin `_ + Compute C_new=C_old.S^-1/2 orthogonalization. + .br + overlap : overlap matrix + .br + LDA : leftmost dimension of overlap array + .br + N : Overlap matrix is NxN (array is (LDA,N) ) + .br + C : Coefficients of the vectors to orthogonalize. On exit, + orthogonal vectors + .br + LDC : leftmost dimension of C + .br + m : Coefficients matrix is MxN, ( array is (LDC,N) ) + .br `overlap_a_b_c `_ @@ -683,7 +703,7 @@ h_apply_mrcc_monoexc .br -`pert_determinants `_ +`pouet `_ Undocumented @@ -754,7 +774,7 @@ h_apply_mrcc_monoexc Undocumented -`set_generators_bitmasks_as_holes_and_particles `_ +`set_generators_bitmasks_as_holes_and_particles `_ Undocumented @@ -770,7 +790,7 @@ h_apply_mrcc_monoexc to be in integer*8 format -`set_zero_extra_diag `_ +`set_zero_extra_diag `_ Undocumented @@ -788,11 +808,16 @@ h_apply_mrcc_monoexc Stop the progress bar -`trap_signals `_ - What to do when a signal is caught. Here, trap Ctrl-C and call the control_C subroutine. +`svd `_ + Compute A = U.D.Vt + .br + LDx : leftmost dimension of x + .br + Dimsneion of A is m x n + .br -`u_dot_u `_ +`u_dot_u `_ Compute diff --git a/plugins/MRCC_Utils/tree_dependency.png b/plugins/MRCC_Utils/tree_dependency.png index 500e5d43..3c535b5c 100644 Binary files a/plugins/MRCC_Utils/tree_dependency.png and b/plugins/MRCC_Utils/tree_dependency.png differ diff --git a/plugins/Perturbation/README.rst b/plugins/Perturbation/README.rst index 4bf62a2a..810a58e1 100644 --- a/plugins/Perturbation/README.rst +++ b/plugins/Perturbation/README.rst @@ -239,7 +239,7 @@ perturb_buffer_moller_plesset .br -`pt2_epstein_nesbet `_ +`pt2_epstein_nesbet `_ compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution .br for the various N_st states. @@ -250,7 +250,7 @@ perturb_buffer_moller_plesset .br -`pt2_epstein_nesbet_2x2 `_ +`pt2_epstein_nesbet_2x2 `_ compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution .br for the various N_st states. @@ -261,7 +261,7 @@ perturb_buffer_moller_plesset .br -`pt2_epstein_nesbet_sc2 `_ +`pt2_epstein_nesbet_sc2 `_ compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution .br for the various N_st states, but with the CISD_SC2 energies and coefficients @@ -272,7 +272,7 @@ perturb_buffer_moller_plesset .br -`pt2_epstein_nesbet_sc2_no_projected `_ +`pt2_epstein_nesbet_sc2_no_projected `_ compute the Epstein-Nesbet perturbative first order coefficient and second order energetic contribution .br for the various N_st states, @@ -283,7 +283,7 @@ perturb_buffer_moller_plesset .br that can be repeated by repeating all the double excitations .br - : you repeat all the correlation energy already taken into account in CI_electronic_energy(1) + : you repeat all the correlation energy already taken into account in electronic_energy(1) .br that could be repeated to this determinant. .br @@ -296,7 +296,7 @@ perturb_buffer_moller_plesset H_pert_diag = c_pert -`pt2_epstein_nesbet_sc2_projected `_ +`pt2_epstein_nesbet_sc2_projected `_ compute the Epstein-Nesbet perturbative first order coefficient and second order energetic contribution .br for the various N_st states, @@ -307,7 +307,7 @@ perturb_buffer_moller_plesset .br that can be repeated by repeating all the double excitations .br - : you repeat all the correlation energy already taken into account in CI_electronic_energy(1) + : you repeat all the correlation energy already taken into account in electronic_energy(1) .br that could be repeated to this determinant. .br @@ -336,7 +336,7 @@ perturb_buffer_moller_plesset than pt2_max in absolute value -`pt2_moller_plesset `_ +`pt2_moller_plesset `_ compute the standard Moller-Plesset perturbative first order coefficient and second order energetic contribution .br for the various n_st states. @@ -347,7 +347,7 @@ perturb_buffer_moller_plesset .br -`remove_small_contributions `_ +`remove_small_contributions `_ Remove determinants with small contributions. N_states is assumed to be provided. @@ -356,15 +356,15 @@ perturb_buffer_moller_plesset Undocumented -`selection_criterion `_ +`selection_criterion `_ Threshold to select determinants. Set by selection routines. -`selection_criterion_factor `_ +`selection_criterion_factor `_ Threshold to select determinants. Set by selection routines. -`selection_criterion_min `_ +`selection_criterion_min `_ Threshold to select determinants. Set by selection routines. diff --git a/plugins/Perturbation/tree_dependency.png b/plugins/Perturbation/tree_dependency.png index dac64544..166e8035 100644 Binary files a/plugins/Perturbation/tree_dependency.png and b/plugins/Perturbation/tree_dependency.png differ diff --git a/plugins/Properties/.gitignore b/plugins/Properties/.gitignore index 1b17a42a..b2f0a113 100644 --- a/plugins/Properties/.gitignore +++ b/plugins/Properties/.gitignore @@ -1,23 +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 +# Automatically created by $QP_ROOT/scripts/module/module_handler.py .ninja_deps -ezfio_interface.irp.f -Ezfio_files +.ninja_log +AO_Basis +Bitmask Determinants +Electrons +Ezfio_files +IRPF90_man +IRPF90_temp +Integrals_Bielec Integrals_Monoelec MO_Basis -Utils -Pseudo -Bitmask -AO_Basis -Electrons +Makefile +Makefile.depend Nuclei -Integrals_Bielec \ No newline at end of file +Pseudo +Utils +ZMQ +ezfio_interface.irp.f +irpf90.make +irpf90_entities +print_hcc +print_mulliken +tags \ No newline at end of file diff --git a/plugins/Properties/README.rst b/plugins/Properties/README.rst index cd92ba14..92882e0f 100644 --- a/plugins/Properties/README.rst +++ b/plugins/Properties/README.rst @@ -50,6 +50,18 @@ Documentation average_spread(3) = +`conversion_factor_cm_1_hcc `_ + Conversion factor for the calculation of the hcc, according to the nuclear charge + + +`conversion_factor_gauss_hcc `_ + Conversion factor for the calculation of the hcc, according to the nuclear charge + + +`conversion_factor_mhz_hcc `_ + Conversion factor for the calculation of the hcc, according to the nuclear charge + + `delta_z `_ Undocumented @@ -62,6 +74,16 @@ Documentation Computes +`electronic_population_alpha `_ + spin population on the ao basis : + spin_population(i,j) = rho_AO(alpha)(i,j) - rho_AO(beta)(i,j) * + + +`electronic_population_beta `_ + spin population on the ao basis : + spin_population(i,j) = rho_AO(alpha)(i,j) - rho_AO(beta)(i,j) * + + `filter_connected_mono `_ Filters out the determinants that are not connected through PURE .br @@ -82,6 +104,14 @@ Documentation and with the density is stored in "density" +`gross_orbital_product_alpha `_ + gross orbital product + + +`gross_orbital_product_beta `_ + gross orbital product + + `i_o1_j `_ Returns where i and j are determinants and O1 is a ONE BODY OPERATOR @@ -128,6 +158,18 @@ Documentation .br +`iso_hcc_cm_1 `_ + isotropic hyperfine coupling constants among the various atoms + + +`iso_hcc_gauss `_ + isotropic hyperfine coupling constants among the various atoms + + +`iso_hcc_mhz `_ + isotropic hyperfine coupling constants among the various atoms + + `mo_integrated_delta_rho_one_point `_ .br array of the integrals needed of integrated_rho(alpha,z) - integrated_rho(beta,z) for z = z_one_point @@ -135,10 +177,71 @@ Documentation .br +`mulliken_densities_alpha `_ + .br + + +`mulliken_densities_beta `_ + .br + + +`mulliken_spin_densities `_ + ATOMIC SPIN POPULATION (ALPHA MINUS BETA) + + `n_z_pts `_ Undocumented +`print_hcc `_ + Undocumented + + +`print_hcc_main `_ + Undocumented + + +`print_mulliken `_ + Undocumented + + +`print_mulliken_sd `_ + Undocumented + + +`spin_density_at_nucleous `_ + value of the spin density at each nucleus + + +`spin_density_at_nucleous_contrib_mo `_ + value of the spin density at each nucleus + + +`spin_density_at_nucleous_contrib_mo_test `_ + value of the spin density at each nucleus + + +`spin_density_at_nucleous_contrib_per_mo `_ + value of the spin density at each nucleus + + +`spin_density_at_nucleous_from_mo `_ + value of the spin density at each nucleus + + +`spin_gross_orbital_product `_ + gross orbital product for the spin population + + +`spin_population `_ + spin population on the ao basis : + spin_population(i,j) = rho_AO(alpha)(i,j) - rho_AO(beta)(i,j) * + + +`spin_population_angular_momentum `_ + Undocumented + + `test_average_value `_ Undocumented diff --git a/plugins/Properties/tree_dependency.png b/plugins/Properties/tree_dependency.png index 1ba8d487..bab94f08 100644 Binary files a/plugins/Properties/tree_dependency.png and b/plugins/Properties/tree_dependency.png differ diff --git a/plugins/Psiref_CAS/.gitignore b/plugins/Psiref_CAS/.gitignore index d98a4abc..69ebdc69 100644 --- a/plugins/Psiref_CAS/.gitignore +++ b/plugins/Psiref_CAS/.gitignore @@ -6,24 +6,20 @@ Bitmask Determinants Electrons Ezfio_files -Generators_full -Hartree_Fock IRPF90_man IRPF90_temp Integrals_Bielec Integrals_Monoelec -MOGuess MO_Basis Makefile Makefile.depend Nuclei -Perturbation -Properties Pseudo -Selectors_full +Psiref_Utils Utils +ZMQ ezfio_interface.irp.f irpf90.make irpf90_entities -mrcc_general +overwrite_with_cas tags \ No newline at end of file diff --git a/plugins/Psiref_CAS/README.rst b/plugins/Psiref_CAS/README.rst index 1715049a..5d511317 100644 --- a/plugins/Psiref_CAS/README.rst +++ b/plugins/Psiref_CAS/README.rst @@ -75,6 +75,10 @@ Documentation determinants. idx_cas gives the indice of the CAS determinant in psi_det. +`overwrite_w_cas `_ + Undocumented + + `psi_ref `_ CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. @@ -85,10 +89,14 @@ Documentation determinants. idx_cas gives the indice of the CAS determinant in psi_det. -`psi_ref_coef_restart `_ +`psi_ref_coef_inv `_ + 1/psi_ref_coef + + +`psi_ref_coef_restart `_ Projection of the CAS wave function on the restart wave function. -`psi_ref_restart `_ +`psi_ref_restart `_ Projection of the CAS wave function on the restart wave function. diff --git a/plugins/Psiref_CAS/tree_dependency.png b/plugins/Psiref_CAS/tree_dependency.png index 1a922bdc..5e496a28 100644 Binary files a/plugins/Psiref_CAS/tree_dependency.png and b/plugins/Psiref_CAS/tree_dependency.png differ diff --git a/plugins/Psiref_Utils/README.rst b/plugins/Psiref_Utils/README.rst index c30cdb11..35232d23 100644 --- a/plugins/Psiref_Utils/README.rst +++ b/plugins/Psiref_Utils/README.rst @@ -119,6 +119,17 @@ Documentation Reference determinants sorted to accelerate the search of a random determinant in the wave function. +Needed Modules +============== +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +.. image:: tree_dependency.png + +* `Bitmask `_ +* `Determinants `_ + Documentation ============= .. Do not edit this section It was auto-generated @@ -129,14 +140,6 @@ Documentation Undocumented -`abort_all `_ - If True, all the calculation is aborted - - -`abort_here `_ - If True, all the calculation is aborted - - `add_poly `_ Add two polynomials D(t) =! D(t) +( B(t)+C(t)) @@ -151,11 +154,11 @@ Documentation Compute 1st dimension such that it is aligned for vectorization. -`apply_rotation `_ +`apply_rotation `_ Apply the rotation found by find_rotation -`approx_dble `_ +`approx_dble `_ Undocumented @@ -178,10 +181,6 @@ Documentation Binomial coefficients -`catch_signal `_ - What to do on Ctrl-C. If two Ctrl-C are pressed within 1 sec, the calculation if aborted. - - `dble_fact `_ Undocumented @@ -224,6 +223,10 @@ Documentation Undocumented +`extract_ref `_ + Replaces the total wave function by the normalized projection on the reference + + `f_integral `_ function that calculates the following integral \int_{\-infty}^{+\infty} x^n \exp(-p x^2) dx @@ -237,7 +240,7 @@ Documentation 1/n! -`find_rotation `_ +`find_rotation `_ Find A.C = B @@ -263,11 +266,11 @@ Documentation Undocumented -`get_index_in_psi_ref_sorted_bit `_ +`get_index_in_psi_ref_sorted_bit `_ Returns the index of the determinant in the ``psi_ref_sorted_bit`` array -`get_pseudo_inverse `_ +`get_pseudo_inverse `_ Find C = A^-1 @@ -302,7 +305,7 @@ Documentation Undocumented -`h_matrix_ref `_ +`h_matrix_ref `_ Undocumented @@ -387,7 +390,7 @@ Documentation been done going from psi_ref to psi_non_ref -`i2radix_sort `_ +`i2radix_sort `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. @@ -412,14 +415,14 @@ Documentation contains the new order of the elements. -`i8radix_sort `_ +`i8radix_sort `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. -`i8radix_sort_big `_ +`i8radix_sort_big `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. @@ -444,14 +447,14 @@ Documentation contains the new order of the elements. -`idx_non_ref `_ +`idx_non_ref `_ Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. -`idx_non_ref_rev `_ +`idx_non_ref_rev `_ Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. @@ -532,21 +535,21 @@ Documentation 1/i -`iradix_sort `_ +`iradix_sort `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. -`iradix_sort_big `_ +`iradix_sort_big `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. -`is_in_psi_ref `_ +`is_in_psi_ref `_ True if the determinant ``det`` is in the wave function @@ -568,7 +571,7 @@ Documentation contains the new order of the elements. -`lapack_diag `_ +`lapack_diag `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -579,7 +582,7 @@ Documentation .br -`lapack_diag_s2 `_ +`lapack_diag_s2 `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -590,7 +593,7 @@ Documentation .br -`lapack_diagd `_ +`lapack_diagd `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -601,7 +604,7 @@ Documentation .br -`lapack_partial_diag `_ +`lapack_partial_diag `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -616,19 +619,23 @@ Documentation n! +`lowercase `_ + Transform to lower case + + `multiply_poly `_ Multiply two polynomials D(t) =! D(t) +( B(t)*C(t)) -`n_det_non_ref `_ +`n_det_non_ref `_ Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. -`normalize `_ +`normalize `_ Normalizes vector u u is expected to be aligned in memory. @@ -637,8 +644,26 @@ Documentation Number of current OpenMP threads -`ortho_lowdin `_ - Compute C_new=C_old.S^-1/2 canonical orthogonalization. +`ortho_canonical `_ + Compute C_new=C_old.U.s^-1/2 canonical orthogonalization. + .br + overlap : overlap matrix + .br + LDA : leftmost dimension of overlap array + .br + N : Overlap matrix is NxN (array is (LDA,N) ) + .br + C : Coefficients of the vectors to orthogonalize. On exit, + orthogonal vectors + .br + LDC : leftmost dimension of C + .br + m : Coefficients matrix is MxN, ( array is (LDC,N) ) + .br + + +`ortho_lowdin `_ + Compute C_new=C_old.S^-1/2 orthogonalization. .br overlap : overlap matrix .br @@ -708,46 +733,54 @@ Documentation Current status for displaying progress bars. Global variable. -`psi_coef_ref_diagonalized `_ +`psi_non_ref `_ + Set of determinants which are not part of the reference, defined from the application + of the reference bitmask on the determinants. + idx_non_ref gives the indice of the determinant in psi_det. + idx_non_ref_rev gives the reverse. + + +`psi_non_ref_coef `_ + Set of determinants which are not part of the reference, defined from the application + of the reference bitmask on the determinants. + idx_non_ref gives the indice of the determinant in psi_det. + idx_non_ref_rev gives the reverse. + + +`psi_non_ref_coef_restart `_ + Set of determinants which are not part of the reference, defined from the application + of the reference bitmask on the determinants. + idx_non_ref gives the indice of the determinant in psi_det. + But this is with respect to the restart wave function. + + +`psi_non_ref_coef_sorted_bit `_ + Reference determinants sorted to accelerate the search of a random determinant in the wave + function. + + +`psi_non_ref_coef_transp `_ + Transposed psi_non_ref_coef + + +`psi_non_ref_restart `_ + Set of determinants which are not part of the reference, defined from the application + of the reference bitmask on the determinants. + idx_non_ref gives the indice of the determinant in psi_det. + But this is with respect to the restart wave function. + + +`psi_non_ref_sorted_bit `_ + Reference determinants sorted to accelerate the search of a random determinant in the wave + function. + + +`psi_ref_coef_diagonalized `_ Undocumented -`psi_non_ref `_ - Set of determinants which are not part of the reference, defined from the application - of the reference bitmask on the determinants. - idx_non_ref gives the indice of the determinant in psi_det. - idx_non_ref_rev gives the reverse. - - -`psi_non_ref_coef `_ - Set of determinants which are not part of the reference, defined from the application - of the reference bitmask on the determinants. - idx_non_ref gives the indice of the determinant in psi_det. - idx_non_ref_rev gives the reverse. - - -`psi_non_ref_coef_restart `_ - Set of determinants which are not part of the reference, defined from the application - of the reference bitmask on the determinants. - idx_non_ref gives the indice of the determinant in psi_det. - But this is with respect to the restart wave function. - - -`psi_non_ref_coef_sorted_bit `_ - Reference determinants sorted to accelerate the search of a random determinant in the wave - function. - - -`psi_non_ref_restart `_ - Set of determinants which are not part of the reference, defined from the application - of the reference bitmask on the determinants. - idx_non_ref gives the indice of the determinant in psi_det. - But this is with respect to the restart wave function. - - -`psi_non_ref_sorted_bit `_ - Reference determinants sorted to accelerate the search of a random determinant in the wave - function. +`psi_ref_coef_normalized `_ + Normalized coefficients of the reference `psi_ref_coef_sorted_bit `_ @@ -755,11 +788,15 @@ Documentation function. -`psi_ref_energy `_ +`psi_ref_coef_transp `_ + Transposed psi_ref_coef + + +`psi_ref_energy `_ Undocumented -`psi_ref_energy_diagonalized `_ +`psi_ref_energy_diagonalized `_ Undocumented @@ -772,6 +809,10 @@ Documentation Recenter two polynomials +`ref_hamiltonian_matrix `_ + H matrix in the Reference space + + `rint `_ .. math:: .br @@ -819,7 +860,7 @@ Documentation to be in integer*8 format -`set_zero_extra_diag `_ +`set_zero_extra_diag `_ Undocumented @@ -837,11 +878,16 @@ Documentation Stop the progress bar -`trap_signals `_ - What to do when a signal is caught. Here, trap Ctrl-C and call the control_C subroutine. +`svd `_ + Compute A = U.D.Vt + .br + LDx : leftmost dimension of x + .br + Dimsneion of A is m x n + .br -`u_dot_u `_ +`u_dot_u `_ Compute diff --git a/plugins/Psiref_Utils/tree_dependency.png b/plugins/Psiref_Utils/tree_dependency.png index 20482ad2..c527d617 100644 Binary files a/plugins/Psiref_Utils/tree_dependency.png and b/plugins/Psiref_Utils/tree_dependency.png differ diff --git a/plugins/Selectors_full/README.rst b/plugins/Selectors_full/README.rst index 795234b4..393e9421 100644 --- a/plugins/Selectors_full/README.rst +++ b/plugins/Selectors_full/README.rst @@ -165,35 +165,22 @@ Documentation Determinants on which we apply for perturbation. -`psi_selectors_ab `_ - Determinants on which we apply . - They are sorted by the 3 highest electrons in the alpha part, - then by the 3 highest electrons in the beta part to accelerate - the research of connected determinants. - - `psi_selectors_coef `_ Determinants on which we apply for perturbation. -`psi_selectors_coef_ab `_ - Determinants on which we apply . - They are sorted by the 3 highest electrons in the alpha part, - then by the 3 highest electrons in the beta part to accelerate - the research of connected determinants. - - `psi_selectors_diag_h_mat `_ Diagonal elements of the H matrix for each selectors -`psi_selectors_next_ab `_ - Determinants on which we apply . - They are sorted by the 3 highest electrons in the alpha part, - then by the 3 highest electrons in the beta part to accelerate - the research of connected determinants. - - `psi_selectors_size `_ Undocumented + +`zmq_get_psi `_ + Get the wave function from the qp_run scheduler + + +`zmq_put_psi `_ + Put the wave function on the qp_run scheduler + diff --git a/plugins/Selectors_full/tree_dependency.png b/plugins/Selectors_full/tree_dependency.png index f49b2e9a..66b2e88a 100644 Binary files a/plugins/Selectors_full/tree_dependency.png and b/plugins/Selectors_full/tree_dependency.png differ diff --git a/plugins/Selectors_no_sorted/README.rst b/plugins/Selectors_no_sorted/README.rst index 361b5845..1170123a 100644 --- a/plugins/Selectors_no_sorted/README.rst +++ b/plugins/Selectors_no_sorted/README.rst @@ -185,3 +185,165 @@ Needed Modules * `Determinants `_ +Needed Modules +============== +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +.. image:: tree_dependency.png + +* `Determinants `_ + +Documentation +============= +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +`coef_hf_selector `_ + energy of correlation per determinant respect to the Hartree Fock determinant + .br + for the all the double excitations in the selectors determinants + .br + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + .br + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + .br + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + +`delta_e_per_selector `_ + energy of correlation per determinant respect to the Hartree Fock determinant + .br + for the all the double excitations in the selectors determinants + .br + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + .br + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + .br + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + +`double_index_selectors `_ + degree of excitation respect to Hartree Fock for the wave function + .br + for the all the selectors determinants + .br + double_index_selectors = list of the index of the double excitations + .br + n_double_selectors = number of double excitations in the selectors determinants + + +`e_corr_double_only `_ + energy of correlation per determinant respect to the Hartree Fock determinant + .br + for the all the double excitations in the selectors determinants + .br + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + .br + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + .br + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + +`e_corr_per_selectors `_ + energy of correlation per determinant respect to the Hartree Fock determinant + .br + for the all the double excitations in the selectors determinants + .br + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + .br + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + .br + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + +`e_corr_second_order `_ + energy of correlation per determinant respect to the Hartree Fock determinant + .br + for the all the double excitations in the selectors determinants + .br + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + .br + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + .br + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + +`exc_degree_per_selectors `_ + degree of excitation respect to Hartree Fock for the wave function + .br + for the all the selectors determinants + .br + double_index_selectors = list of the index of the double excitations + .br + n_double_selectors = number of double excitations in the selectors determinants + + +`i_h_hf_per_selectors `_ + energy of correlation per determinant respect to the Hartree Fock determinant + .br + for the all the double excitations in the selectors determinants + .br + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + .br + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + .br + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + +`inv_selectors_coef_hf `_ + energy of correlation per determinant respect to the Hartree Fock determinant + .br + for the all the double excitations in the selectors determinants + .br + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + .br + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + .br + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + +`inv_selectors_coef_hf_squared `_ + energy of correlation per determinant respect to the Hartree Fock determinant + .br + for the all the double excitations in the selectors determinants + .br + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + .br + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + .br + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + +`n_det_selectors `_ + For Single reference wave functions, the number of selectors is 1 : the + Hartree-Fock determinant + + +`n_double_selectors `_ + degree of excitation respect to Hartree Fock for the wave function + .br + for the all the selectors determinants + .br + double_index_selectors = list of the index of the double excitations + .br + n_double_selectors = number of double excitations in the selectors determinants + + +`psi_selectors `_ + Determinants on which we apply for perturbation. + + +`psi_selectors_coef `_ + Determinants on which we apply for perturbation. + + +`psi_selectors_diag_h_mat `_ + Diagonal elements of the H matrix for each selectors + + +`psi_selectors_size `_ + Undocumented + diff --git a/src/AO_Basis/README.rst b/src/AO_Basis/README.rst index 0596085c..ae9acdf0 100644 --- a/src/AO_Basis/README.rst +++ b/src/AO_Basis/README.rst @@ -56,56 +56,72 @@ Documentation .. by the `update_README.py` script. -`ao_coef `_ - AO Coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. +`ao_cartesian `_ + If true, use AOs in Cartesian coordinates (6d,10f,...) + + +`ao_coef `_ + Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. + + +`ao_coef_normalization_factor `_ + Coefficients including the AO normalization + + +`ao_coef_normalization_libint_factor `_ + Coefficients including the AO normalization `ao_coef_normalized `_ Coefficients including the AO normalization -`ao_coef_normalized_ordered `_ +`ao_coef_normalized_ordered `_ Sorted primitives to accelerate 4 index MO transformation -`ao_coef_normalized_ordered_transp `_ +`ao_coef_normalized_ordered_transp `_ Transposed ao_coef_normalized_ordered -`ao_expo `_ - expo for each primitive of each ao_basis +`ao_expo `_ + Exponents for each primitive of each AO -`ao_expo_ordered `_ +`ao_expo_ordered `_ Sorted primitives to accelerate 4 index MO transformation -`ao_expo_ordered_transp `_ +`ao_expo_ordered_transp `_ Transposed ao_expo_ordered -`ao_l `_ +`ao_l `_ ao_l = l value of the AO: a+b+c in x^a y^b z^c -`ao_l_char `_ +`ao_l_char `_ ao_l = l value of the AO: a+b+c in x^a y^b z^c -`ao_l_char_space `_ +`ao_l_char_space `_ Undocumented +`ao_l_max `_ + ao_l = l value of the AO: a+b+c in x^a y^b z^c + + `ao_md5 `_ - MD5 key characteristic of the AO basis + MD5 key, specific of the AO basis -`ao_nucl `_ - Index of the nuclei on which the ao is centered +`ao_nucl `_ + Index of the nucleus on which the AO is centered -`ao_num `_ - number of ao +`ao_num `_ + number of AOs `ao_num_align `_ @@ -137,11 +153,17 @@ Documentation :math:`\int \chi_i(r) \chi_j(r) dr)` -`ao_power `_ - power for each dimension for each ao_basis +`ao_power `_ + Powers of x, y and z for each AO -`ao_prim_num `_ +`ao_power_index `_ + Unique index given to a triplet of powers: + .br + 1/2 (l-n_x)*(l-n_x+1) + n_z + 1 + + +`ao_prim_num `_ Number of primitives per atomic orbital @@ -149,15 +171,63 @@ Documentation Undocumented -`ao_prim_num_max_align `_ +`ao_prim_num_max_align `_ Number of primitives per atomic orbital aligned -`l_to_charater `_ +`ao_value `_ + return the value of the ith ao at point r + + +`cart_to_sphe_0 `_ + Spherical -> Cartesian Transformation matrix for l=0 + + +`cart_to_sphe_1 `_ + Spherical -> Cartesian Transformation matrix for l=1 + + +`cart_to_sphe_2 `_ + Spherical -> Cartesian Transformation matrix for l=2 + + +`cart_to_sphe_3 `_ + Spherical -> Cartesian Transformation matrix for l=3 + + +`cart_to_sphe_4 `_ + Spherical -> Cartesian Transformation matrix for l=4 + + +`cart_to_sphe_5 `_ + Spherical -> Cartesian Transformation matrix for l=5 + + +`cart_to_sphe_6 `_ + Spherical -> Cartesian Transformation matrix for l=6 + + +`cart_to_sphe_7 `_ + Spherical -> Cartesian Transformation matrix for l=7 + + +`cart_to_sphe_8 `_ + Spherical -> Cartesian Transformation matrix for l=8 + + +`cart_to_sphe_9 `_ + Spherical -> Cartesian Transformation matrix for l=9 + + +`give_all_aos_at_r `_ + gives the values of aos at a given point r + + +`l_to_charater `_ character corresponding to the "L" value of an AO orbital -`n_aos_max `_ +`n_aos_max `_ Number of AOs per atom @@ -169,21 +239,21 @@ Documentation Undocumented -`nucl_aos `_ +`nucl_aos `_ List of AOs attached on each atom -`nucl_list_shell_aos `_ +`nucl_list_shell_aos `_ Index of the shell type Aos and of the corresponding Aos Per convention, for P,D,F and G AOs, we take the index of the AO with the the corresponding power in the "X" axis -`nucl_n_aos `_ +`nucl_n_aos `_ Number of AOs per atom -`nucl_num_shell_aos `_ +`nucl_num_shell_aos `_ Index of the shell type Aos and of the corresponding Aos Per convention, for P,D,F and G AOs, we take the index of the AO with the the corresponding power in the "X" axis diff --git a/src/Bitmask/README.rst b/src/Bitmask/README.rst index 697ef620..fbf13d22 100644 --- a/src/Bitmask/README.rst +++ b/src/Bitmask/README.rst @@ -72,16 +72,16 @@ Documentation Transform a bit string to a string for printing -`cas_bitmask `_ +`cas_bitmask `_ Bitmasks for CAS reference determinants. (N_int, alpha/beta, CAS reference) -`cis_ijkl_bitmask `_ - Bitmask to include all possible single excitations from Hartree-Fock +`closed_shell_ref_bitmask `_ + Undocumented -`core_bitmask `_ - Reunion of the inactive, active and virtual bitmasks +`core_bitmask `_ + Core orbitals bitmask `debug_det `_ @@ -98,7 +98,11 @@ Documentation Bitmask to include all possible MOs -`generators_bitmask `_ +`full_ijkl_bitmask_4 `_ + Undocumented + + +`generators_bitmask `_ Bitmasks for generator determinants. (N_int, alpha/beta, hole/particle, generator). .br @@ -118,7 +122,7 @@ Documentation .br -`generators_bitmask_restart `_ +`generators_bitmask_restart `_ Bitmasks for generator determinants. (N_int, alpha/beta, hole/particle, generator). .br @@ -138,64 +142,160 @@ Documentation .br -`hf_bitmask `_ +`hf_bitmask `_ Hartree Fock bit mask -`i_bitmask_gen `_ +`i_bitmask_gen `_ Current bitmask for the generators -`inact_bitmask `_ - Bitmasks for the inactive orbitals that are excited in post CAS method +`inact_bitmask `_ + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals -`inact_virt_bitmask `_ +`inact_virt_bitmask `_ Reunion of the inactive and virtual bitmasks +`index_holes_bitmask `_ + Index of the holes in the generators_bitmasks + + +`index_particl_bitmask `_ + Index of the holes in the generators_bitmasks + + +`initialize_bitmask_to_restart_ones `_ + Initialization of the generators_bitmask to the restart bitmask + + +`is_a_1h `_ + Undocumented + + +`is_a_1h1p `_ + Undocumented + + +`is_a_1h2p `_ + Undocumented + + +`is_a_1p `_ + Undocumented + + +`is_a_2p `_ + Undocumented + + `is_a_two_holes_two_particles `_ Undocumented -`list_inact `_ +`is_the_hole_in_det `_ Undocumented +`is_the_particl_in_det `_ + Undocumented + + +`list_act `_ + list of active orbitals + + +`list_core `_ + List of the core orbitals that are never excited in post CAS method + + +`list_inact `_ + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + + `list_to_bitstring `_ Returns the physical string "string(N_int,2)" from the array of occupations "list(N_int*bit_kind_size,2) -`list_virt `_ - Undocumented +`list_virt `_ + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods -`n_cas_bitmask `_ +`modify_bitmasks_for_hole `_ + modify the generators_bitmask in order that one can only excite + the electrons occupying i_hole + + +`modify_bitmasks_for_hole_in_out `_ + modify the generators_bitmask in order that one can only excite + the electrons occupying i_hole + + +`modify_bitmasks_for_particl `_ + modify the generators_bitmask in order that one can only excite + the electrons to the orbital i_part + + +`n_act_orb `_ + number of active orbitals + + +`n_cas_bitmask `_ Number of bitmasks for CAS -`n_generators_bitmask `_ +`n_core_orb `_ + Core orbitals bitmask + + +`n_generators_bitmask `_ Number of bitmasks for generators -`n_inact_orb `_ - Bitmasks for the inactive orbitals that are excited in post CAS method +`n_generators_bitmask_restart `_ + Number of bitmasks for generators + + +`n_inact_orb `_ + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals `n_int `_ Number of 64-bit integers needed to represent determinants as binary strings -`n_virt_orb `_ - Bitmasks for the inactive orbitals that are excited in post CAS method +`n_virt_orb `_ + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals `number_of_holes `_ Undocumented -`number_of_holes_verbose `_ +`number_of_holes_verbose `_ Undocumented @@ -203,7 +303,7 @@ Documentation Undocumented -`number_of_particles_verbose `_ +`number_of_particles_verbose `_ Undocumented @@ -211,22 +311,61 @@ Documentation Subroutine to print the content of a determinant using the '+-' notation +`print_generators_bitmasks_holes `_ + Undocumented + + +`print_generators_bitmasks_holes_for_one_generator `_ + Undocumented + + +`print_generators_bitmasks_particles `_ + Undocumented + + +`print_generators_bitmasks_particles_for_one_generator `_ + Undocumented + + `print_spindet `_ Subroutine to print the content of a determinant using the '+-' notation -`ref_bitmask `_ +`ref_bitmask `_ Reference bit mask, used in Slater rules, chosen as Hartree-Fock bitmask -`reunion_of_bitmask `_ +`reunion_of_bitmask `_ Reunion of the inactive, active and virtual bitmasks -`unpaired_alpha_electrons `_ +`reunion_of_cas_inact_bitmask `_ + Reunion of the inactive, active and virtual bitmasks + + +`reunion_of_core_inact_bitmask `_ + Reunion of the inactive, active and virtual bitmasks + + +`set_bitmask_hole_as_input `_ + set the generators_bitmask for the holes + as the input_bimask + + +`set_bitmask_particl_as_input `_ + set the generators_bitmask for the particles + as the input_bimask + + +`unpaired_alpha_electrons `_ Bitmask reprenting the unpaired alpha electrons in the HF_bitmask -`virt_bitmask `_ - Bitmasks for the inactive orbitals that are excited in post CAS method +`virt_bitmask `_ + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals diff --git a/src/Determinants/README.rst b/src/Determinants/README.rst index bd5c91ab..c6685945 100644 --- a/src/Determinants/README.rst +++ b/src/Determinants/README.rst @@ -15,22 +15,26 @@ Documentation .. by the `update_README.py` script. -`a_operator `_ +`a_operator `_ Needed for diag_H_mat_elem -`abs_psi_coef_max `_ +`abs_psi_coef_max `_ Max and min values of the coefficients -`abs_psi_coef_min `_ +`abs_psi_coef_min `_ Max and min values of the coefficients -`ac_operator `_ +`ac_operator `_ Needed for diag_H_mat_elem +`apply_excitation `_ + Undocumented + + `apply_mono `_ Undocumented @@ -39,12 +43,12 @@ Documentation Energy of the reference bitmask used in Slater rules -`bitstring_to_list_ab `_ +`bitstring_to_list_ab `_ Gives the inidices(+1) of the bits set to 1 in the bit string For alpha/beta determinants -`bitstring_to_list_ab_old `_ +`bitstring_to_list_ab_old `_ Gives the inidices(+1) of the bits set to 1 in the bit string For alpha/beta determinants @@ -82,11 +86,11 @@ Documentation N_states lowest eigenvalues of the CI matrix -`ci_sc2_eigenvectors `_ +`ci_sc2_eigenvectors `_ Eigenvectors/values of the CI matrix -`ci_sc2_electronic_energy `_ +`ci_sc2_electronic_energy `_ Eigenvectors/values of the CI matrix @@ -115,11 +119,11 @@ Documentation Initial guess vectors are not necessarily orthonormal -`connected_to_ref `_ +`connected_to_ref `_ Undocumented -`connected_to_ref_by_mono `_ +`connected_to_ref_by_mono `_ Undocumented @@ -128,11 +132,15 @@ Documentation After calling this subroutine, N_det, psi_det and psi_coef need to be touched -`create_minilist `_ +`create_microlist `_ Undocumented -`create_minilist_find_previous `_ +`create_minilist `_ + Undocumented + + +`create_minilist_find_previous `_ Undocumented @@ -141,11 +149,11 @@ Documentation of alpha and beta determinants -`davidson_converged `_ +`davidson_converged `_ True if the Davidson algorithm is converged -`davidson_criterion `_ +`davidson_criterion `_ Can be : [ energy | residual | both | wall_time | cpu_time | iterations ] @@ -217,7 +225,7 @@ Documentation ||Da||_i \sum_j C_{ij}**2 -`det_coef `_ +`det_coef `_ det_coef @@ -225,7 +233,7 @@ Documentation Undocumented -`det_occ `_ +`det_occ `_ det_occ @@ -241,16 +249,20 @@ Documentation Diagonalization algorithm (Davidson or Lapack) -`diag_h_mat_elem `_ +`diag_h_elements_sc2 `_ + Eigenvectors/values of the CI matrix + + +`diag_h_mat_elem `_ Computes -`diag_h_mat_elem_fock `_ +`diag_h_mat_elem_fock `_ Computes when i is at most a double excitation from a reference. -`diagonalize_ci `_ +`diagonalize_ci `_ Replace the coefficients of the CI states by the coefficients of the eigenstates of the CI matrix @@ -260,11 +272,26 @@ Documentation eigenstates of the CI matrix -`diagonalize_ci_sc2 `_ +`diagonalize_ci_sc2 `_ Replace the coefficients of the CI states_diag by the coefficients of the eigenstates of the CI matrix +`diagonalize_s2 `_ + Diagonalize the S^2 operator within the n_states_diag states required. Notice : the vectors are sorted by increasing S^2 values. + + +`diagonalize_s2_betweenstates `_ + You enter with nstates vectors in psi_coefs_inout that may be coupled by S^2 + The subroutine diagonalize the S^2 operator in the basis of these states. + The vectors that you obtain in output are no more coupled by S^2, + which does not necessary mean that they are eigenfunction of S^2. + n,nmax,nstates = number of determinants, physical dimension of the arrays and number of states + keys_tmp = array of integer(bit_kind) that represents the determinants + psi_coefs(i,j) = coeff of the ith determinant in the jth state + VECTORS ARE SUPPOSED TO BE ORTHONORMAL IN INPUT + + `do_mono_excitation `_ Apply the mono excitation operator : a^{dager}_(i_particle) a_(i_hole) of spin = ispin on key_in @@ -282,18 +309,34 @@ Documentation for a given couple of hole/particle excitations i. +`doubly_occ_empty_in_couple `_ + n_couples is the number of couples of orbitals to be checked + couples(i,1) = first orbital of the ith couple + couples(i,2) = second orbital of the ith couple + returns the array couples_out + couples_out(i) = .True. if det_in contains + an orbital empty in the ith couple AND + an orbital doubly occupied in the ith couple + + +`doubly_occ_empty_in_couple_and_no_hund_elsewhere `_ + n_couples is the number of couples of orbitals to be checked + couples(i,1) = first orbital of the ith couple + couples(i,2) = second orbital of the ith couple + returns the array couples_out + couples_out(i) = .True. if det_in contains + an orbital empty in the ith couple AND + an orbital doubly occupied in the ith couple + + `expected_s2 `_ Expected value of S2 : S*(S+1) -`fill_h_apply_buffer_no_selection `_ +`fill_h_apply_buffer_no_selection `_ Fill the H_apply buffer with determiants for CISD -`filter_3_highest_electrons `_ - Returns a determinant with only the 3 highest electrons - - `filter_connected `_ Filters out the determinants that are not connected by H .br @@ -306,7 +349,7 @@ Documentation idx(0) is the number of determinants that interact with key1 -`filter_connected_i_h_psi0 `_ +`filter_connected_i_h_psi0 `_ returns the array idx which contains the index of the .br determinants in the array key1 that interact @@ -316,7 +359,7 @@ Documentation idx(0) is the number of determinants that interact with key1 -`filter_connected_i_h_psi0_sc2 `_ +`filter_connected_i_h_psi0_sc2 `_ standard filter_connected_i_H_psi but returns in addition .br the array of the index of the non connected determinants to key1 @@ -348,7 +391,7 @@ Documentation Returns the excitation degree between two determinants -`get_excitation_degree_vector `_ +`get_excitation_degree_vector `_ Applies get_excitation_degree to an array of determinants @@ -364,11 +407,11 @@ Documentation Returns the index of the determinant in the ``psi_det_sorted_bit`` array -`get_mono_excitation `_ +`get_mono_excitation `_ Returns the excitation operator between two singly excited determinants and the phase -`get_occ_from_key `_ +`get_occ_from_key `_ Returns a list of occupation numbers from a bitstring @@ -384,6 +427,19 @@ Documentation Undocumented +`get_uj_s2_ui `_ + returns the matrix elements of S^2 "s2(i,j)" between the "nstates" states + psi_coefs_tmp(:,i) and psi_coefs_tmp(:,j) + + +`getmobiles `_ + Undocumented + + +`give_index_of_doubly_occ_in_active_space `_ + Undocumented + + `h_apply_buffer_allocated `_ Buffer of determinants/coefficients/perturbative energy for H_apply. Uninitialized. Filled by H_apply subroutines. @@ -402,7 +458,7 @@ Documentation Undocumented -`h_u_0 `_ +`h_u_0 `_ Computes v_0 = H|u_0> .br n : number of determinants @@ -410,19 +466,19 @@ Documentation H_jj : array of -`i_h_j `_ +`i_h_j `_ Returns where i and j are determinants -`i_h_j_phase_out `_ +`i_h_j_phase_out `_ Returns where i and j are determinants -`i_h_j_verbose `_ +`i_h_j_verbose `_ Returns where i and j are determinants -`i_h_psi `_ +`i_h_psi `_ Computes = \sum_J c_J . .br Uses filter_connected_i_H_psi0 to get all the |J> to which |i> @@ -431,14 +487,14 @@ Documentation minilists -`i_h_psi_minilist `_ +`i_h_psi_minilist `_ Computes = \sum_J c_J . .br Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The |J> are searched in short pre-computed lists. -`i_h_psi_sc2 `_ +`i_h_psi_sc2 `_ for the various Nstate .br returns in addition @@ -452,7 +508,7 @@ Documentation to repeat the excitations -`i_h_psi_sc2_verbose `_ +`i_h_psi_sc2_verbose `_ for the various Nstate .br returns in addition @@ -466,7 +522,7 @@ Documentation to repeat the excitations -`i_h_psi_sec_ord `_ +`i_h_psi_sec_ord `_ for the various Nstates @@ -481,19 +537,11 @@ Documentation idx_non_cas gives the indice of the determinant in psi_det. -`int_of_3_highest_electrons `_ - Returns an integer*8 as : - .br - |_<--- 21 bits ---><--- 21 bits ---><--- 21 bits --->| - .br - |0<--- i1 ---><--- i2 ---><--- i3 --->| - .br - It encodes the value of the indices of the 3 highest MOs - in descending order - .br +`is_connected_to `_ + Undocumented -`is_connected_to `_ +`is_connected_to_by_mono `_ Undocumented @@ -517,6 +565,14 @@ Documentation Energy of the reference bitmask used in Slater rules +`n_closed_shell `_ + Undocumented + + +`n_closed_shell_cas `_ + Undocumented + + `n_det `_ Number of determinants in the wave function @@ -534,15 +590,15 @@ Documentation determinants. idx_cas gives the indice of the CAS determinant in psi_det. -`n_det_max `_ +`n_det_max `_ Max number of determinants in the wave function -`n_det_max_jacobi `_ +`n_det_max_jacobi `_ Maximum number of determinants diagonalized by Jacobi -`n_det_max_property `_ +`n_det_max_property `_ Max number of determinants in the wave function when you select for a given property @@ -562,11 +618,15 @@ Documentation psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupation +`n_open_shell `_ + Undocumented + + `n_single_exc_bitmasks `_ Number of single excitation bitmasks -`n_states `_ +`n_states `_ Number of states to consider @@ -574,6 +634,16 @@ Documentation Number of states to consider for the diagonalization +`neutral_no_hund_in_couple `_ + n_couples is the number of couples of orbitals to be checked + couples(i,1) = first orbital of the ith couple + couples(i,2) = second orbital of the ith couple + returns the array couples_out + couples_out(i) = .True. if det_in contains + an orbital empty in the ith couple AND + an orbital doubly occupied in the ith couple + + `nucl_elec_ref_bitmask_energy `_ Energy of the reference bitmask used in Slater rules @@ -590,7 +660,15 @@ Documentation Number of possible determinants for a given occ_pattern -`one_body_dm_mo `_ +`one_body_dm_ao_alpha `_ + one body density matrix on the AO basis : rho_AO(alpha) , rho_AO(beta) + + +`one_body_dm_ao_beta `_ + one body density matrix on the AO basis : rho_AO(alpha) , rho_AO(beta) + + +`one_body_dm_mo `_ One-body density matrix @@ -602,19 +680,23 @@ Documentation Alpha and beta one-body density matrix for each state -`one_body_single_double_dm_mo_alpha `_ +`one_body_single_double_dm_mo_alpha `_ Alpha and beta one-body density matrix for each state -`one_body_single_double_dm_mo_beta `_ +`one_body_single_double_dm_mo_beta `_ Alpha and beta one-body density matrix for each state -`one_body_spin_density_mo `_ +`one_body_spin_density_ao `_ + one body spin density matrix on the AO basis : rho_AO(alpha) - rho_AO(beta) + + +`one_body_spin_density_mo `_ rho(alpha) - rho(beta) -`only_single_double_dm `_ +`only_single_double_dm `_ If true, The One body DM is calculated with ignoring the Double<->Doubles extra diag elements @@ -683,11 +765,11 @@ Documentation Undocumented -`psi_coef_max `_ +`psi_coef_max `_ Max and min values of the coefficients -`psi_coef_min `_ +`psi_coef_min `_ Max and min values of the coefficients @@ -695,13 +777,6 @@ Documentation Wave function sorted by determinants contribution to the norm (state-averaged) -`psi_coef_sorted_ab `_ - Determinants on which we apply . - They are sorted by the 3 highest electrons in the alpha part, - then by the 3 highest electrons in the beta part to accelerate - the research of connected determinants. - - `psi_coef_sorted_bit `_ Determinants on which we apply for perturbation. They are sorted by determinants interpreted as integers. Useful @@ -738,13 +813,6 @@ Documentation Wave function sorted by determinants contribution to the norm (state-averaged) -`psi_det_sorted_ab `_ - Determinants on which we apply . - They are sorted by the 3 highest electrons in the alpha part, - then by the 3 highest electrons in the beta part to accelerate - the research of connected determinants. - - `psi_det_sorted_bit `_ Determinants on which we apply for perturbation. They are sorted by determinants interpreted as integers. Useful @@ -752,13 +820,6 @@ Documentation function. -`psi_det_sorted_next_ab `_ - Determinants on which we apply . - They are sorted by the 3 highest electrons in the alpha part, - then by the 3 highest electrons in the beta part to accelerate - the research of connected determinants. - - `psi_non_cas `_ Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. @@ -787,15 +848,23 @@ Documentation psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupation +`pull_pt2 `_ + Pull PT2 calculation in the collector + + +`push_pt2 `_ + Push PT2 calculation to the collector + + `put_gess `_ Undocumented -`read_dets `_ +`read_dets `_ Reads the determinants from the EZFIO file -`read_wf `_ +`read_wf `_ If true, read the wave function from the EZFIO file @@ -816,7 +885,7 @@ Documentation be set before calling this function. -`s2_eig `_ +`s2_eig `_ Force the wave function to be an eigenfunction of S^2 @@ -832,27 +901,35 @@ Documentation z component of the Spin +`save_hf `_ + Undocumented + + `save_natorb `_ Undocumented -`save_natural_mos `_ +`save_natural_mos `_ Save natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis -`save_wavefunction `_ +`save_ref_determinant `_ + Undocumented + + +`save_wavefunction `_ Save the wave function into the EZFIO file -`save_wavefunction_general `_ +`save_wavefunction_general `_ Save the wave function into the EZFIO file -`save_wavefunction_specified `_ +`save_wavefunction_specified `_ Save the wave function into the EZFIO file -`save_wavefunction_unsorted `_ +`save_wavefunction_unsorted `_ Save the wave function into the EZFIO file @@ -860,7 +937,7 @@ Documentation Undocumented -`set_natural_mos `_ +`set_natural_mos `_ Set natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis @@ -882,13 +959,6 @@ Documentation Uncodumented : TODO -`sort_dets_by_3_highest_electrons `_ - Determinants on which we apply . - They are sorted by the 3 highest electrons in the alpha part, - then by the 3 highest electrons in the beta part to accelerate - the research of connected determinants. - - `sort_dets_by_det_search_key `_ Determinants are sorted are sorted according to their det_search_key. Useful to accelerate the search of a random determinant in the wave @@ -899,7 +969,7 @@ Documentation Return an integer*8 corresponding to a determinant index for searching -`state_average_weight `_ +`state_average_weight `_ Weights in the state-average calculation of the density matrix @@ -907,7 +977,7 @@ Documentation Uncodumented : TODO -`target_energy `_ +`target_energy `_ Energy that should be obtained when truncating the wave function (optional) @@ -915,11 +985,11 @@ Documentation convergence of the correlation energy of SC2 iterations -`threshold_davidson `_ +`threshold_davidson `_ Thresholds of Davidson's algorithm -`threshold_generators `_ +`threshold_generators `_ Thresholds on generators (fraction of the norm) @@ -927,6 +997,13 @@ Documentation Thresholds on selectors (fraction of the norm) +`u0_h_u_0 `_ + Computes e_0 = / + .br + n : number of determinants + .br + + `write_spindeterminants `_ Undocumented diff --git a/src/Determinants/tree_dependency.png b/src/Determinants/tree_dependency.png index f9eb10c3..9184383e 100644 Binary files a/src/Determinants/tree_dependency.png and b/src/Determinants/tree_dependency.png differ diff --git a/src/Ezfio_files/README.rst b/src/Ezfio_files/README.rst index 90e717bc..6b494339 100644 --- a/src/Ezfio_files/README.rst +++ b/src/Ezfio_files/README.rst @@ -181,6 +181,10 @@ Documentation variable if it is set, or as the 1st argument of the command line. +`ezfio_work_dir `_ + EZFIO/work/ + + `getunitandopen `_ :f: file name @@ -195,6 +199,10 @@ Documentation .br +output_all_singles + Output file for All_singles + + output_ao_basis Output file for AO_Basis @@ -203,12 +211,8 @@ output_bitmask Output file for Bitmask -output_cisd - Output file for CISD - - -output_cisd_selected - Output file for CISD_selected +output_cas_sd + Output file for CAS_SD `output_cpu_time_0 `_ @@ -227,18 +231,22 @@ output_ezfio_files Output file for Ezfio_files -output_fcidump - Output file for FCIdump - - output_full_ci Output file for Full_CI +output_generators_cas + Output file for Generators_CAS + + output_generators_full Output file for Generators_full +output_generators_restart + Output file for Generators_restart + + output_hartree_fock Output file for Hartree_Fock @@ -259,8 +267,12 @@ output_moguess Output file for MOGuess -output_mp2 - Output file for MP2 +output_mrcc_cassd + Output file for MRCC_CASSD + + +output_mrcc_utils + Output file for MRCC_Utils output_nuclei @@ -279,12 +291,20 @@ output_pseudo Output file for Pseudo +output_psiref_cas + Output file for Psiref_CAS + + +output_psiref_utils + Output file for Psiref_Utils + + output_selectors_full Output file for Selectors_full -output_singlerefmethod - Output file for SingleRefMethod +output_selectors_no_sorted + Output file for Selectors_no_sorted output_utils diff --git a/src/Ezfio_files/ezfio.irp.f b/src/Ezfio_files/ezfio.irp.f index 9432020f..6d2beb0b 100644 --- a/src/Ezfio_files/ezfio.irp.f +++ b/src/Ezfio_files/ezfio.irp.f @@ -31,3 +31,12 @@ BEGIN_PROVIDER [ character*(128), ezfio_filename ] END_PROVIDER +BEGIN_PROVIDER [ character*(128), ezfio_work_dir ] + implicit none + BEGIN_DOC + ! EZFIO/work/ + END_DOC + call ezfio_set_work_empty(.False.) + ezfio_work_dir = trim(ezfio_filename)//'/work/' +END_PROVIDER + diff --git a/src/Integrals_Bielec/.gitignore b/src/Integrals_Bielec/.gitignore index 1d52a821..aaf8a3d5 100644 --- a/src/Integrals_Bielec/.gitignore +++ b/src/Integrals_Bielec/.gitignore @@ -17,4 +17,6 @@ ZMQ ezfio_interface.irp.f irpf90.make irpf90_entities -tags \ No newline at end of file +qp_ao_ints +tags +test_integrals \ No newline at end of file diff --git a/src/Integrals_Bielec/README.rst b/src/Integrals_Bielec/README.rst index a22d791d..98fbbb92 100644 --- a/src/Integrals_Bielec/README.rst +++ b/src/Integrals_Bielec/README.rst @@ -9,6 +9,12 @@ Here, all bi-electronic integrals (:math:`1/r_{12}`) are computed. As they have MO integral, use ``get_mo_bielec_integral(i,j,k,l,mo_integrals_map)`` or ``mo_bielec_integral(i,j,k,l)``. +The conventions are: + +* For AO integrals : (ik|jl) = (11|22) +* For MO integrals : = <12|12> + + Needed Modules ============== @@ -48,28 +54,36 @@ Documentation i(r1) j(r1) 1/r12 k(r2) l(r2) -`ao_bielec_integral_schwartz `_ +`ao_bielec_integral_schwartz `_ Needed to compute Schwartz inequalities -`ao_bielec_integral_schwartz_accel `_ +`ao_bielec_integral_schwartz_accel `_ integral of the AO basis or (ij|kl) i(r1) j(r1) 1/r12 k(r2) l(r2) -`ao_bielec_integrals_in_map `_ +`ao_bielec_integrals_in_map `_ Map of Atomic integrals i(r1) j(r2) 1/r12 k(r1) l(r2) -`ao_bielec_integrals_in_map_collector `_ +`ao_bielec_integrals_in_map_collector `_ Collects results from the AO integral calculation -`ao_bielec_integrals_in_map_slave `_ +`ao_bielec_integrals_in_map_slave `_ Computes a buffer of integrals +`ao_bielec_integrals_in_map_slave_inproc `_ + Computes a buffer of integrals. i is the ID of the current thread. + + +`ao_bielec_integrals_in_map_slave_tcp `_ + Computes a buffer of integrals. i is the ID of the current thread. + + `ao_integrals_map `_ AO integrals @@ -78,7 +92,7 @@ Documentation If || < ao_integrals_threshold then is zero -`ao_l4 `_ +`ao_l4 `_ Computes the product of l values of i,j,k,and l @@ -98,15 +112,15 @@ Documentation Frees the memory of the AO map -`clear_mo_map `_ +`clear_mo_map `_ Frees the memory of the MO map -`compute_ao_bielec_integrals `_ +`compute_ao_bielec_integrals `_ Compute AO 1/r12 integrals for all i and fixed j,k,l -`compute_ao_integrals_jl `_ +`compute_ao_integrals_jl `_ Parallel client for AO integrals @@ -122,15 +136,15 @@ Documentation Compute integrals on the fly -`dump_ao_integrals `_ +`dump_ao_integrals `_ Save to disk the $ao integrals -`dump_mo_integrals `_ +`dump_mo_integrals `_ Save to disk the $ao integrals -`eri `_ +`eri `_ ATOMIC PRIMTIVE bielectronic integral between the 4 primitives :: primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2) primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2) @@ -152,7 +166,7 @@ Documentation t_w(i,2,k) = t(i) -`general_primitive_integral `_ +`general_primitive_integral `_ Computes the integral where p,q,r,s are Gaussian primitives @@ -174,126 +188,126 @@ Documentation Returns the number of elements in the AO map -`get_mo_bielec_integral `_ +`get_mo_bielec_integral `_ Returns one integral in the MO basis -`get_mo_bielec_integral_schwartz `_ +`get_mo_bielec_integral_schwartz `_ Returns one integral in the MO basis -`get_mo_bielec_integrals `_ +`get_mo_bielec_integrals `_ Returns multiple integrals in the MO basis, all i for j,k,l fixed. -`get_mo_bielec_integrals_ij `_ +`get_mo_bielec_integrals_ij `_ Returns multiple integrals in the MO basis, all i(1)j(2) 1/r12 k(1)l(2) i, j for k,l fixed. -`get_mo_map_size `_ +`get_mo_map_size `_ Return the number of elements in the MO map -`give_polynom_mult_center_x `_ +`give_polynom_mult_center_x `_ subroutine that returns the explicit polynom in term of the "t" variable of the following polynomw : I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q) -`i_x1_new `_ +`i_x1_new `_ recursive function involved in the bielectronic integral -`i_x1_pol_mult `_ +`i_x1_pol_mult `_ recursive function involved in the bielectronic integral -`i_x1_pol_mult_a1 `_ +`i_x1_pol_mult_a1 `_ recursive function involved in the bielectronic integral -`i_x1_pol_mult_a2 `_ +`i_x1_pol_mult_a2 `_ recursive function involved in the bielectronic integral -`i_x1_pol_mult_recurs `_ +`i_x1_pol_mult_recurs `_ recursive function involved in the bielectronic integral -`i_x2_new `_ +`i_x2_new `_ recursive function involved in the bielectronic integral -`i_x2_pol_mult `_ +`i_x2_pol_mult `_ recursive function involved in the bielectronic integral -`insert_into_ao_integrals_map `_ +`insert_into_ao_integrals_map `_ Create new entry into AO map -`insert_into_mo_integrals_map `_ +`insert_into_mo_integrals_map `_ Create new entry into MO map, or accumulate in an existing entry -`integrale_new `_ +`integrale_new `_ calculate the integral of the polynom :: I_x1(a_x+b_x, c_x+d_x,p,q) * I_x1(a_y+b_y, c_y+d_y,p,q) * I_x1(a_z+b_z, c_z+d_z,p,q) between ( 0 ; 1) -`load_ao_integrals `_ +`load_ao_integrals `_ Read from disk the $ao integrals -`load_mo_integrals `_ +`load_mo_integrals `_ Read from disk the $ao integrals -`mo_bielec_integral `_ +`mo_bielec_integral `_ Returns one integral in the MO basis -`mo_bielec_integral_jj `_ +`mo_bielec_integral_jj `_ mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij -`mo_bielec_integral_jj_anti `_ +`mo_bielec_integral_jj_anti `_ mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij -`mo_bielec_integral_jj_anti_from_ao `_ +`mo_bielec_integral_jj_anti_from_ao `_ mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij -`mo_bielec_integral_jj_exchange `_ +`mo_bielec_integral_jj_exchange `_ mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij -`mo_bielec_integral_jj_exchange_from_ao `_ +`mo_bielec_integral_jj_exchange_from_ao `_ mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij -`mo_bielec_integral_jj_from_ao `_ +`mo_bielec_integral_jj_from_ao `_ mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij -`mo_bielec_integral_schwartz `_ +`mo_bielec_integral_schwartz `_ Needed to compute Schwartz inequalities @@ -305,7 +319,7 @@ Documentation Computes an unique index for i,j,k,l integrals -`mo_integrals_map `_ +`mo_integrals_map `_ MO integrals @@ -317,12 +331,28 @@ Documentation Aligned n_pt_max_integrals -`n_pt_sup `_ +`n_pt_sup `_ Returns the upper boundary of the degree of the polynomial involved in the bielctronic integral : Ix(a_x,b_x,c_x,d_x) * Iy(a_y,b_y,c_y,d_y) * Iz(a_z,b_z,c_z,d_z) +`provide_all_mo_integrals `_ + Undocumented + + +`pull_integrals `_ + How the collector pulls the computed integrals + + +`push_integrals `_ + Push integrals in the push socket + + +`qp_ao_ints `_ + Increments a running calculation to compute AO integrals + + `read_ao_integrals `_ One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals diff --git a/src/Integrals_Bielec/tree_dependency.png b/src/Integrals_Bielec/tree_dependency.png index 4161fd0a..92944e89 100644 Binary files a/src/Integrals_Bielec/tree_dependency.png and b/src/Integrals_Bielec/tree_dependency.png differ diff --git a/src/Integrals_Monoelec/.gitignore b/src/Integrals_Monoelec/.gitignore index e8bd9b05..577068de 100644 --- a/src/Integrals_Monoelec/.gitignore +++ b/src/Integrals_Monoelec/.gitignore @@ -12,7 +12,9 @@ Makefile.depend Nuclei Pseudo Utils +check_orthonormality ezfio_interface.irp.f irpf90.make irpf90_entities +save_ortho_mos tags \ No newline at end of file diff --git a/src/Integrals_Monoelec/EZFIO.cfg b/src/Integrals_Monoelec/EZFIO.cfg new file mode 100644 index 00000000..04e49ec1 --- /dev/null +++ b/src/Integrals_Monoelec/EZFIO.cfg @@ -0,0 +1,12 @@ +[disk_access_mo_one_integrals] +type: Disk_access +doc: Read/Write MO one-electron integrals from/to disk [ Write | Read | None ] +interface: ezfio,provider,ocaml +default: None + +[disk_access_ao_one_integrals] +type: Disk_access +doc: Read/Write AO one-electron integrals from/to disk [ Write | Read | None ] +interface: ezfio,provider,ocaml +default: None + diff --git a/src/Integrals_Monoelec/README.rst b/src/Integrals_Monoelec/README.rst index 1d2d158b..d92cea0a 100644 --- a/src/Integrals_Monoelec/README.rst +++ b/src/Integrals_Monoelec/README.rst @@ -102,20 +102,20 @@ Documentation interaction nuclear electron -`ao_nucl_elec_integral_per_atom `_ +`ao_nucl_elec_integral_per_atom `_ ao_nucl_elec_integral_per_atom(i,j,k) = - where Rk is the geometry of the kth atom `ao_pseudo_integral `_ - Pseudo-potential + Pseudo-potential integrals -`ao_pseudo_integral_local `_ +`ao_pseudo_integral_local `_ Local pseudo-potential -`ao_pseudo_integral_non_local `_ +`ao_pseudo_integral_non_local `_ Local pseudo-potential @@ -141,44 +141,34 @@ Documentation Undocumented +`disk_access_ao_one_integrals `_ + Read/Write AO one-electron integrals from/to disk [ Write | Read | None ] + + +`disk_access_mo_one_integrals `_ + Read/Write MO one-electron integrals from/to disk [ Write | Read | None ] + + `do_print `_ Undocumented -`give_polynom_mult_center_mono_elec `_ +`give_polynom_mult_center_mono_elec `_ Undocumented -`i_x1_pol_mult_mono_elec `_ +`i_x1_pol_mult_mono_elec `_ Undocumented -`i_x2_pol_mult_mono_elec `_ +`i_x2_pol_mult_mono_elec `_ Undocumented -`int_gaus_pol `_ +`int_gaus_pol `_ Undocumented -`mo_deriv_1_x `_ - array of the integrals of MO_i * d/dx MO_j - array of the integrals of MO_i * d/dy MO_j - array of the integrals of MO_i * d/dz MO_j - - -`mo_deriv_1_y `_ - array of the integrals of MO_i * d/dx MO_j - array of the integrals of MO_i * d/dy MO_j - array of the integrals of MO_i * d/dz MO_j - - -`mo_deriv_1_z `_ - array of the integrals of MO_i * d/dx MO_j - array of the integrals of MO_i * d/dy MO_j - array of the integrals of MO_i * d/dz MO_j - - `mo_dipole_x `_ array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j @@ -198,12 +188,12 @@ Documentation `mo_kinetic_integral `_ - Undocumented + Kinetic energy integrals in the MO basis `mo_mono_elec_integral `_ - array of the mono electronic hamiltonian on the MOs basis - : sum of the kinetic and nuclear electronic potential + array of the mono electronic hamiltonian on the MOs basis : + sum of the kinetic and nuclear electronic potential `mo_nucl_elec_integral `_ @@ -219,25 +209,25 @@ Documentation interaction nuclear electron on the MO basis -`mo_spread_x `_ +`mo_spread_x `_ array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j -`mo_spread_y `_ +`mo_spread_y `_ array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j -`mo_spread_z `_ +`mo_spread_z `_ array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j -`nai_pol_mult `_ +`nai_pol_mult `_ Undocumented @@ -269,26 +259,74 @@ Documentation Undocumented +`pseudo_dz_k_transp `_ + Transposed arrays for pseudopotentials + + +`pseudo_dz_kl_transp `_ + Transposed arrays for pseudopotentials + + +`pseudo_n_k_transp `_ + Transposed arrays for pseudopotentials + + +`pseudo_n_kl_transp `_ + Transposed arrays for pseudopotentials + + +`pseudo_v_k_transp `_ + Transposed arrays for pseudopotentials + + +`pseudo_v_kl_transp `_ + Transposed arrays for pseudopotentials + + +`read_ao_one_integrals `_ + One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals + + +`read_mo_one_integrals `_ + One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals + + +`read_one_e_integrals `_ + Read the 1-electron integrals into in A(m,n) from file 'filename' + + `save_ortho_mos `_ Undocumented -`v_e_n `_ +`v_e_n `_ Undocumented -`v_phi `_ +`v_phi `_ Undocumented -`v_r `_ +`v_r `_ Undocumented -`v_theta `_ +`v_theta `_ Undocumented -`wallis `_ +`wallis `_ Undocumented + +`write_ao_one_integrals `_ + One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals + + +`write_mo_one_integrals `_ + One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals + + +`write_one_e_integrals `_ + Write the 1-electron integrals stored in A(m,n) into file 'filename' + diff --git a/src/Integrals_Monoelec/kin_ao_ints.irp.f b/src/Integrals_Monoelec/kin_ao_ints.irp.f index 10b065b4..e3e92348 100644 --- a/src/Integrals_Monoelec/kin_ao_ints.irp.f +++ b/src/Integrals_Monoelec/kin_ao_ints.irp.f @@ -123,26 +123,37 @@ END_PROVIDER BEGIN_PROVIDER [double precision, ao_kinetic_integral, (ao_num_align,ao_num)] - implicit none - BEGIN_DOC - ! array of the priminitve basis kinetic integrals - ! \langle \chi_i |\hat{T}| \chi_j \rangle - END_DOC - integer :: i,j,k,l - - !$OMP PARALLEL DO DEFAULT(NONE) & - !$OMP PRIVATE(i,j) & - !$OMP SHARED(ao_num, ao_num_align, ao_kinetic_integral,ao_deriv2_x,ao_deriv2_y,ao_deriv2_z) - do j = 1, ao_num - !DEC$ VECTOR ALWAYS - !DEC$ VECTOR ALIGNED - do i = 1, ao_num - ao_kinetic_integral(i,j) = -0.5d0 * (ao_deriv2_x(i,j) + ao_deriv2_y(i,j) + ao_deriv2_z(i,j) ) - enddo - do i = ao_num +1,ao_num_align - ao_kinetic_integral(i,j) = 0.d0 - enddo - enddo - !$OMP END PARALLEL DO + implicit none + BEGIN_DOC + ! array of the priminitve basis kinetic integrals + ! \langle \chi_i |\hat{T}| \chi_j \rangle + END_DOC + integer :: i,j,k,l + + if (read_ao_one_integrals) then + call read_one_e_integrals('ao_kinetic_integral', ao_kinetic_integral,& + size(ao_kinetic_integral,1), size(ao_kinetic_integral,2)) + print *, 'AO kinetic integrals read from disk' + else + !$OMP PARALLEL DO DEFAULT(NONE) & + !$OMP PRIVATE(i,j) & + !$OMP SHARED(ao_num, ao_num_align, ao_kinetic_integral,ao_deriv2_x,ao_deriv2_y,ao_deriv2_z) + do j = 1, ao_num + !DEC$ VECTOR ALWAYS + !DEC$ VECTOR ALIGNED + do i = 1, ao_num + ao_kinetic_integral(i,j) = -0.5d0 * (ao_deriv2_x(i,j) + ao_deriv2_y(i,j) + ao_deriv2_z(i,j) ) + enddo + do i = ao_num +1,ao_num_align + ao_kinetic_integral(i,j) = 0.d0 + enddo + enddo + !$OMP END PARALLEL DO + endif + if (write_ao_one_integrals) then + call write_one_e_integrals('ao_kinetic_integral', ao_kinetic_integral,& + size(ao_kinetic_integral,1), size(ao_kinetic_integral,2)) + print *, 'AO kinetic integrals written to disk' + endif END_PROVIDER diff --git a/src/Integrals_Monoelec/kin_mo_ints.irp.f b/src/Integrals_Monoelec/kin_mo_ints.irp.f index 2bcbd5df..2cd00376 100644 --- a/src/Integrals_Monoelec/kin_mo_ints.irp.f +++ b/src/Integrals_Monoelec/kin_mo_ints.irp.f @@ -1,25 +1,26 @@ - BEGIN_PROVIDER [double precision, mo_kinetic_integral, (mo_tot_num_align,mo_tot_num)] - implicit none - integer :: i1,j1,i,j - double precision :: c_i1 +BEGIN_PROVIDER [double precision, mo_kinetic_integral, (mo_tot_num_align,mo_tot_num)] + implicit none + BEGIN_DOC + ! Kinetic energy integrals in the MO basis + END_DOC + + if (read_mo_one_integrals) then + call read_one_e_integrals('mo_kinetic_integral', mo_kinetic_integral,& + size(mo_kinetic_integral,1), size(mo_kinetic_integral,2)) + print *, 'MO kinetic integrals read from disk' + else + call ao_to_mo( & + ao_kinetic_integral, & + size(ao_kinetic_integral,1), & + mo_kinetic_integral, & + size(mo_kinetic_integral,1), & + ) + endif + if (write_mo_one_integrals) then + call write_one_e_integrals('mo_kinetic_integral', mo_kinetic_integral,& + size(mo_kinetic_integral,1), size(mo_kinetic_integral,2)) + print *, 'MO kinetic integrals written to disk' + endif - mo_kinetic_integral = 0.d0 - !$OMP PARALLEL DO DEFAULT(none) & - !$OMP PRIVATE(i,j,i1,j1,c_i1) & - !$OMP SHARED(mo_tot_num,ao_num,mo_coef,ao_Kinetic_integral, & - !$OMP mo_kinetic_integral) - do i = 1,mo_tot_num - do j = 1,mo_tot_num - do i1 = 1,ao_num - c_i1 = mo_coef(i1,i) - !DIR$ VECTOR ALIGNED - do j1 = 1,ao_num - mo_kinetic_integral(j,i) = mo_kinetic_integral(j,i) + c_i1*mo_coef(j1,j) *& - ao_Kinetic_integral(j1,i1) - enddo - enddo - enddo - enddo - !$OMP END PARALLEL DO END_PROVIDER diff --git a/src/Integrals_Monoelec/mo_mono_ints.irp.f b/src/Integrals_Monoelec/mo_mono_ints.irp.f index 5bae9868..50ab7ffa 100644 --- a/src/Integrals_Monoelec/mo_mono_ints.irp.f +++ b/src/Integrals_Monoelec/mo_mono_ints.irp.f @@ -1,14 +1,15 @@ BEGIN_PROVIDER [ double precision, mo_mono_elec_integral,(mo_tot_num_align,mo_tot_num)] implicit none - integer :: i,j,n,l + integer :: i,j,n,l BEGIN_DOC - ! array of the mono electronic hamiltonian on the MOs basis - ! : sum of the kinetic and nuclear electronic potential + ! array of the mono electronic hamiltonian on the MOs basis : + ! sum of the kinetic and nuclear electronic potential END_DOC print*,'Providing the mono electronic integrals' do j = 1, mo_tot_num - do i = 1, mo_tot_num - mo_mono_elec_integral(i,j) = mo_nucl_elec_integral(i,j) + mo_kinetic_integral(i,j) + mo_pseudo_integral(i,j) - enddo + do i = 1, mo_tot_num + mo_mono_elec_integral(i,j) = mo_nucl_elec_integral(i,j) + & + mo_kinetic_integral(i,j) + mo_pseudo_integral(i,j) + enddo enddo END_PROVIDER diff --git a/src/Integrals_Monoelec/pot_ao_ints.irp.f b/src/Integrals_Monoelec/pot_ao_ints.irp.f index 9e64d5e2..45b9067a 100644 --- a/src/Integrals_Monoelec/pot_ao_ints.irp.f +++ b/src/Integrals_Monoelec/pot_ao_ints.irp.f @@ -1,73 +1,86 @@ - BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num_align,ao_num)] - BEGIN_DOC -! interaction nuclear electron - END_DOC - implicit none - double precision :: alpha, beta, gama, delta - integer :: num_A,num_B - double precision :: A_center(3),B_center(3),C_center(3) - integer :: power_A(3),power_B(3) - integer :: i,j,k,l,n_pt_in,m - double precision ::overlap_x,overlap_y,overlap_z,overlap,dx,NAI_pol_mult - - ao_nucl_elec_integral = 0.d0 - - ! _ - ! /| / |_) - ! | / | \ - ! - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i,j,k,l,m,alpha,beta,A_center,B_center,C_center,power_A,power_B, & - !$OMP num_A,num_B,Z,c,n_pt_in) & - !$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp, & - !$OMP n_pt_max_integrals,ao_nucl_elec_integral,nucl_num,nucl_charge) - - n_pt_in = n_pt_max_integrals - - !$OMP DO SCHEDULE (dynamic) - - do j = 1, ao_num - num_A = ao_nucl(j) - power_A(1:3)= ao_power(j,1:3) - A_center(1:3) = nucl_coord(num_A,1:3) - - do i = 1, ao_num - - num_B = ao_nucl(i) - power_B(1:3)= ao_power(i,1:3) - B_center(1:3) = nucl_coord(num_B,1:3) - - do l=1,ao_prim_num(j) - alpha = ao_expo_ordered_transp(l,j) - - do m=1,ao_prim_num(i) - beta = ao_expo_ordered_transp(m,i) - - double precision :: c - c = 0.d0 - - do k = 1, nucl_num - double precision :: Z - Z = nucl_charge(k) - - C_center(1:3) = nucl_coord(k,1:3) - - c = c - Z*NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in) - - enddo - ao_nucl_elec_integral(i,j) = ao_nucl_elec_integral(i,j) + & - ao_coef_normalized_ordered_transp(l,j)*ao_coef_normalized_ordered_transp(m,i)*c - enddo - enddo - enddo - enddo - - !$OMP END DO - !$OMP END PARALLEL - - END_PROVIDER +BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num_align,ao_num)] + BEGIN_DOC + ! interaction nuclear electron + END_DOC + implicit none + double precision :: alpha, beta, gama, delta + integer :: num_A,num_B + double precision :: A_center(3),B_center(3),C_center(3) + integer :: power_A(3),power_B(3) + integer :: i,j,k,l,n_pt_in,m + double precision :: overlap_x,overlap_y,overlap_z,overlap,dx,NAI_pol_mult + + if (read_ao_one_integrals) then + call read_one_e_integrals('ao_ne_integral', ao_nucl_elec_integral, & + size(ao_nucl_elec_integral,1), size(ao_nucl_elec_integral,2)) + print *, 'AO N-e integrals read from disk' + else + + ao_nucl_elec_integral = 0.d0 + + ! _ + ! /| / |_) + ! | / | \ + ! + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i,j,k,l,m,alpha,beta,A_center,B_center,C_center,power_A,power_B,& + !$OMP num_A,num_B,Z,c,n_pt_in) & + !$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp,& + !$OMP n_pt_max_integrals,ao_nucl_elec_integral,nucl_num,nucl_charge) + + n_pt_in = n_pt_max_integrals + + !$OMP DO SCHEDULE (dynamic) + + do j = 1, ao_num + num_A = ao_nucl(j) + power_A(1:3)= ao_power(j,1:3) + A_center(1:3) = nucl_coord(num_A,1:3) + + do i = 1, ao_num + + num_B = ao_nucl(i) + power_B(1:3)= ao_power(i,1:3) + B_center(1:3) = nucl_coord(num_B,1:3) + + do l=1,ao_prim_num(j) + alpha = ao_expo_ordered_transp(l,j) + + do m=1,ao_prim_num(i) + beta = ao_expo_ordered_transp(m,i) + + double precision :: c + c = 0.d0 + + do k = 1, nucl_num + double precision :: Z + Z = nucl_charge(k) + + C_center(1:3) = nucl_coord(k,1:3) + + c = c - Z*NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in) + + enddo + ao_nucl_elec_integral(i,j) = ao_nucl_elec_integral(i,j) +& + ao_coef_normalized_ordered_transp(l,j)*ao_coef_normalized_ordered_transp(m,i)*c + enddo + enddo + enddo + enddo + + !$OMP END DO + !$OMP END PARALLEL + endif + if (write_ao_one_integrals) then + call write_one_e_integrals('ao_ne_integral', ao_nucl_elec_integral, & + size(ao_nucl_elec_integral,1), size(ao_nucl_elec_integral,2)) + print *, 'AO N-e integrals written to disk' + endif + + +END_PROVIDER BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral_per_atom, (ao_num_align,ao_num,nucl_num)] BEGIN_DOC diff --git a/src/Integrals_Monoelec/pot_ao_pseudo_ints.irp.f b/src/Integrals_Monoelec/pot_ao_pseudo_ints.irp.f index 789bc9ea..28437b27 100644 --- a/src/Integrals_Monoelec/pot_ao_pseudo_ints.irp.f +++ b/src/Integrals_Monoelec/pot_ao_pseudo_ints.irp.f @@ -1,17 +1,32 @@ BEGIN_PROVIDER [ double precision, ao_pseudo_integral, (ao_num_align,ao_num)] implicit none BEGIN_DOC -! Pseudo-potential + ! Pseudo-potential integrals END_DOC - ao_pseudo_integral = 0.d0 - if (do_pseudo) then - if (pseudo_klocmax > 0) then - ao_pseudo_integral += ao_pseudo_integral_local - endif - if (pseudo_kmax > 0) then - ao_pseudo_integral += ao_pseudo_integral_non_local + + if (read_ao_one_integrals) then + call read_one_e_integrals('ao_pseudo_integral', ao_pseudo_integral,& + size(ao_pseudo_integral,1), size(ao_pseudo_integral,2)) + print *, 'AO pseudopotential integrals read from disk' + else + + ao_pseudo_integral = 0.d0 + if (do_pseudo) then + if (pseudo_klocmax > 0) then + ao_pseudo_integral += ao_pseudo_integral_local + endif + if (pseudo_kmax > 0) then + ao_pseudo_integral += ao_pseudo_integral_non_local + endif endif endif + + if (write_ao_one_integrals) then + call write_one_e_integrals('ao_pseudo_integral', ao_pseudo_integral,& + size(ao_pseudo_integral,1), size(ao_pseudo_integral,2)) + print *, 'AO pseudopotential integrals written to disk' + endif + END_PROVIDER BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num_align,ao_num)] diff --git a/src/Integrals_Monoelec/pot_mo_ints.irp.f b/src/Integrals_Monoelec/pot_mo_ints.irp.f index 69bb654d..f7e9e145 100644 --- a/src/Integrals_Monoelec/pot_mo_ints.irp.f +++ b/src/Integrals_Monoelec/pot_mo_ints.irp.f @@ -1,59 +1,46 @@ BEGIN_PROVIDER [double precision, mo_nucl_elec_integral, (mo_tot_num_align,mo_tot_num)] implicit none - integer :: i1,j1,i,j - double precision :: c_i1,c_j1 BEGIN_DOC ! interaction nuclear electron on the MO basis END_DOC - double precision, allocatable :: X(:,:) - allocate(X(ao_num_align,mo_tot_num)) - - call dgemm('N','N',ao_num,mo_tot_num,ao_num, & - 1.d0, & - ao_nucl_elec_integral, size(ao_nucl_elec_integral,1), & - mo_coef,size(mo_coef,1), & - 0.d0, X, size(X,1)) - - call dgemm('T','N',mo_tot_num,mo_tot_num,ao_num, & - 1.d0, & - mo_coef,size(mo_coef,1), & - X, size(X,1), & - 0.d0, mo_nucl_elec_integral, size(mo_nucl_elec_integral,1)) - - deallocate(X) + if (read_mo_one_integrals) then + call read_one_e_integrals('mo_ne_integral', mo_nucl_elec_integral, & + size(mo_nucl_elec_integral,1), size(mo_nucl_elec_integral,2)) + print *, 'MO N-e integrals read from disk' + else + call ao_to_mo( & + ao_nucl_elec_integral, & + size(ao_nucl_elec_integral,1), & + mo_nucl_elec_integral, & + size(mo_nucl_elec_integral,1), & + ) + endif + if (write_mo_one_integrals) then + call write_one_e_integrals('mo_ne_integral', mo_nucl_elec_integral, & + size(mo_nucl_elec_integral,1), size(mo_nucl_elec_integral,2)) + print *, 'MO N-e integrals written to disk' + endif END_PROVIDER BEGIN_PROVIDER [double precision, mo_nucl_elec_integral_per_atom, (mo_tot_num_align,mo_tot_num,nucl_num)] implicit none - integer :: i1,j1,i,j,k - double precision :: c_i1,c_j1 BEGIN_DOC ! mo_nucl_elec_integral_per_atom(i,j,k) = - ! where Rk is the geometry of the kth atom END_DOC - allocate(X(ao_num_align,mo_tot_num)) - double precision, allocatable :: X(:,:) - - do k = 1, nucl_num - - call dgemm('N','N',ao_num,mo_tot_num,ao_num, & - 1.d0, & - ao_nucl_elec_integral_per_atom, size(ao_nucl_elec_integral_per_atom,1),& - mo_coef,size(mo_coef,1), & - 0.d0, X, size(X,1)) - - call dgemm('T','N',mo_tot_num,mo_tot_num,ao_num, & - 1.d0, & - mo_coef,size(mo_coef,1), & - X, size(X,1), & - 0.d0, mo_nucl_elec_integral_per_atom(1,1,k), size(mo_nucl_elec_integral_per_atom,1)) - + mo_nucl_elec_integral_per_atom = 0.d0 + do k = 1, nucl_num + call ao_to_mo( & + ao_nucl_elec_integral_per_atom(1,1,k), & + size(ao_nucl_elec_integral_per_atom,1), & + mo_nucl_elec_integral_per_atom(1,1,k), & + size(mo_nucl_elec_integral_per_atom,1), & + ) enddo - deallocate(X) END_PROVIDER diff --git a/src/Integrals_Monoelec/pot_mo_pseudo_ints.irp.f b/src/Integrals_Monoelec/pot_mo_pseudo_ints.irp.f index 6c412e4b..9553aa6d 100644 --- a/src/Integrals_Monoelec/pot_mo_pseudo_ints.irp.f +++ b/src/Integrals_Monoelec/pot_mo_pseudo_ints.irp.f @@ -1,33 +1,27 @@ BEGIN_PROVIDER [double precision, mo_pseudo_integral, (mo_tot_num_align,mo_tot_num)] implicit none - integer :: i1,j1,i,j - double precision :: c_i1,c_j1 BEGIN_DOC ! interaction nuclear electron on the MO basis END_DOC - mo_pseudo_integral = 0.d0 - - if (.not.do_pseudo) then - return + if (read_mo_one_integrals) then + call read_one_e_integrals('mo_pseudo_integral', mo_pseudo_integral,& + size(mo_pseudo_integral,1), size(mo_pseudo_integral,2)) + print *, 'MO pseudopotential integrals read from disk' + else + call ao_to_mo( & + ao_pseudo_integral, & + size(ao_pseudo_integral,1), & + mo_pseudo_integral, & + size(mo_pseudo_integral,1), & + ) endif - !$OMP PARALLEL DO DEFAULT(none) & - !$OMP PRIVATE(i,j,i1,j1,c_j1,c_i1) & - !$OMP SHARED(mo_tot_num,ao_num,mo_coef, & - !$OMP mo_pseudo_integral, ao_pseudo_integral) - do i = 1, mo_tot_num - do j = 1, mo_tot_num - do i1 = 1,ao_num - c_i1 = mo_coef(i1,i) - do j1 = 1,ao_num - c_j1 = c_i1*mo_coef(j1,j) - mo_pseudo_integral(j,i) = mo_pseudo_integral(j,i) + & - c_j1 * ao_pseudo_integral(j1,i1) - enddo - enddo - enddo - enddo - !$OMP END PARALLEL DO + if (write_mo_one_integrals) then + call write_one_e_integrals('mo_pseudo_integral', mo_pseudo_integral,& + size(mo_pseudo_integral,1), size(mo_pseudo_integral,2)) + print *, 'MO pseudopotential integrals written to disk' + endif + END_PROVIDER diff --git a/src/Integrals_Monoelec/read_write.irp.f b/src/Integrals_Monoelec/read_write.irp.f new file mode 100644 index 00000000..697bf356 --- /dev/null +++ b/src/Integrals_Monoelec/read_write.irp.f @@ -0,0 +1,84 @@ + BEGIN_PROVIDER [ logical, read_ao_one_integrals ] +&BEGIN_PROVIDER [ logical, read_mo_one_integrals ] +&BEGIN_PROVIDER [ logical, write_ao_one_integrals ] +&BEGIN_PROVIDER [ logical, write_mo_one_integrals ] + + BEGIN_DOC + ! One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals + END_DOC + implicit none + + if (disk_access_ao_one_integrals.EQ.'Read') then + read_ao_one_integrals = .True. + write_ao_one_integrals = .False. + + else if (disk_access_ao_one_integrals.EQ.'Write') then + read_ao_one_integrals = .False. + write_ao_one_integrals = .True. + + else if (disk_access_ao_one_integrals.EQ.'None') then + read_ao_one_integrals = .False. + write_ao_one_integrals = .False. + + else + print *, 'bielec_integrals/disk_access_ao_integrals has a wrong type' + stop 1 + + endif + + if (disk_access_mo_one_integrals.EQ.'Read') then + read_mo_one_integrals = .True. + write_mo_one_integrals = .False. + + else if (disk_access_mo_one_integrals.EQ.'Write') then + read_mo_one_integrals = .False. + write_mo_one_integrals = .True. + + else if (disk_access_mo_one_integrals.EQ.'None') then + read_mo_one_integrals = .False. + write_mo_one_integrals = .False. + + else + print *, 'bielec_integrals/disk_access_mo_integrals has a wrong type' + stop 1 + + endif + +END_PROVIDER + +subroutine write_one_e_integrals(filename, A, m, n) + implicit none + BEGIN_DOC +! Write the 1-electron integrals stored in A(m,n) into file 'filename' + END_DOC + character(len=*), intent(in) :: filename + integer, intent(in) :: m,n + double precision, intent(in) :: A(m,n) + + integer :: iunit + integer, external :: getUnitAndOpen + character*(256) :: f + + iunit = getUnitAndOpen( trim(ezfio_work_dir)//trim(filename), 'W' ) + write(iunit) A + close(iunit) +end + +subroutine read_one_e_integrals(filename, A, m, n) + implicit none + BEGIN_DOC +! Read the 1-electron integrals into in A(m,n) from file 'filename' + END_DOC + character(len=*), intent(in) :: filename + integer, intent(in) :: m,n + double precision, intent(out) :: A(m,n) + + integer :: iunit + integer, external :: getUnitAndOpen + character*(256) :: f + + iunit = getUnitAndOpen( trim(ezfio_work_dir)//trim(filename), 'R' ) + read(iunit) A + close(iunit) +end + diff --git a/src/Integrals_Monoelec/spread_dipole_mo.irp.f b/src/Integrals_Monoelec/spread_dipole_mo.irp.f index d7306727..da91bee5 100644 --- a/src/Integrals_Monoelec/spread_dipole_mo.irp.f +++ b/src/Integrals_Monoelec/spread_dipole_mo.irp.f @@ -7,30 +7,26 @@ ! array of the integrals of MO_i * z MO_j END_DOC implicit none - integer :: i1,j1,i,j - double precision :: c_i1,c_j1 - mo_dipole_x = 0.d0 - mo_dipole_y = 0.d0 - mo_dipole_z = 0.d0 - !$OMP PARALLEL DO DEFAULT(none) & - !$OMP PRIVATE(i,j,i1,j1,c_j1,c_i1) & - !$OMP SHARED(mo_tot_num,ao_num,mo_coef, & - !$OMP mo_dipole_x,mo_dipole_y,mo_dipole_z,ao_dipole_x,ao_dipole_y,ao_dipole_z) - do i = 1, mo_tot_num - do j = 1, mo_tot_num - do i1 = 1,ao_num - c_i1 = mo_coef(i1,i) - do j1 = 1,ao_num - c_j1 = c_i1*mo_coef(j1,j) - mo_dipole_x(j,i) = mo_dipole_x(j,i) + c_j1 * ao_dipole_x(j1,i1) - mo_dipole_y(j,i) = mo_dipole_y(j,i) + c_j1 * ao_dipole_y(j1,i1) - mo_dipole_z(j,i) = mo_dipole_z(j,i) + c_j1 * ao_dipole_z(j1,i1) - enddo - enddo - enddo - enddo - !$OMP END PARALLEL DO + call ao_to_mo( & + ao_dipole_x, & + size(ao_dipole_x,1), & + mo_dipole_x, & + size(mo_dipole_x,1), & + ) + call ao_to_mo( & + ao_dipole_y, & + size(ao_dipole_y,1), & + mo_dipole_y, & + size(mo_dipole_y,1), & + ) + call ao_to_mo( & + ao_dipole_z, & + size(ao_dipole_z,1), & + mo_dipole_z, & + size(mo_dipole_z,1), & + ) + END_PROVIDER BEGIN_PROVIDER [double precision, mo_spread_x , (mo_tot_num_align,mo_tot_num)] @@ -42,60 +38,23 @@ END_PROVIDER ! array of the integrals of MO_i * z^2 MO_j END_DOC implicit none - integer :: i1,j1,i,j - double precision :: c_i1,c_j1 - - mo_nucl_elec_integral = 0.d0 - !$OMP PARALLEL DO DEFAULT(none) & - !$OMP PRIVATE(i,j,i1,j1,c_j1,c_i1) & - !$OMP SHARED(mo_tot_num,ao_num,mo_coef, & - !$OMP mo_spread_x,mo_spread_y,mo_spread_z,ao_spread_x,ao_spread_y,ao_spread_z) - do i = 1, mo_tot_num - do j = 1, mo_tot_num - do i1 = 1,ao_num - c_i1 = mo_coef(i1,i) - do j1 = 1,ao_num - c_j1 = c_i1*mo_coef(j1,j) - mo_spread_x(j,i) = mo_spread_x(j,i) + c_j1 * ao_spread_x(j1,i1) - mo_spread_y(j,i) = mo_spread_y(j,i) + c_j1 * ao_spread_y(j1,i1) - mo_spread_z(j,i) = mo_spread_z(j,i) + c_j1 * ao_spread_z(j1,i1) - enddo - enddo - enddo - enddo - !$OMP END PARALLEL DO -END_PROVIDER - - BEGIN_PROVIDER [double precision, mo_deriv_1_x , (mo_tot_num_align,mo_tot_num)] -&BEGIN_PROVIDER [double precision, mo_deriv_1_y , (mo_tot_num_align,mo_tot_num)] -&BEGIN_PROVIDER [double precision, mo_deriv_1_z , (mo_tot_num_align,mo_tot_num)] - BEGIN_DOC - ! array of the integrals of MO_i * d/dx MO_j - ! array of the integrals of MO_i * d/dy MO_j - ! array of the integrals of MO_i * d/dz MO_j - END_DOC - implicit none - integer :: i1,j1,i,j - double precision :: c_i1,c_j1 - - mo_nucl_elec_integral = 0.d0 - !$OMP PARALLEL DO DEFAULT(none) & - !$OMP PRIVATE(i,j,i1,j1,c_j1,c_i1) & - !$OMP SHARED(mo_tot_num,ao_num,mo_coef, & - !$OMP mo_deriv_1_x,mo_deriv_1_y,mo_deriv_1_z,ao_spread_x,ao_spread_y,ao_spread_z) - do i = 1, mo_tot_num - do j = 1, mo_tot_num - do i1 = 1,ao_num - c_i1 = mo_coef(i1,i) - do j1 = 1,ao_num - c_j1 = c_i1*mo_coef(j1,j) - mo_deriv_1_x(j,i) = mo_deriv_1_x(j,i) + c_j1 * ao_spread_x(j1,i1) - mo_deriv_1_y(j,i) = mo_deriv_1_y(j,i) + c_j1 * ao_spread_y(j1,i1) - mo_deriv_1_z(j,i) = mo_deriv_1_z(j,i) + c_j1 * ao_spread_z(j1,i1) - enddo - enddo - enddo - enddo - !$OMP END PARALLEL DO + call ao_to_mo( & + ao_spread_x, & + size(ao_spread_x,1), & + mo_spread_x, & + size(mo_spread_x,1), & + ) + call ao_to_mo( & + ao_spread_y, & + size(ao_spread_y,1), & + mo_spread_y, & + size(mo_spread_y,1), & + ) + call ao_to_mo( & + ao_spread_z, & + size(ao_spread_z,1), & + mo_spread_z, & + size(mo_spread_z,1), & + ) END_PROVIDER diff --git a/src/MOGuess/.gitignore b/src/MOGuess/.gitignore index 797574f4..a912636d 100644 --- a/src/MOGuess/.gitignore +++ b/src/MOGuess/.gitignore @@ -4,6 +4,7 @@ AO_Basis Electrons Ezfio_files +H_CORE_guess IRPF90_man IRPF90_temp Integrals_Monoelec diff --git a/src/MOGuess/README.rst b/src/MOGuess/README.rst index 06a21370..3fca60c0 100644 --- a/src/MOGuess/README.rst +++ b/src/MOGuess/README.rst @@ -28,7 +28,11 @@ Documentation .. by the `update_README.py` script. -`ao_ortho_lowdin_coef `_ +`ao_ortho_canonical_nucl_elec_integral `_ + Undocumented + + +`ao_ortho_lowdin_coef `_ matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_lowdin_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_lowdin orbital @@ -38,15 +42,11 @@ Documentation Undocumented -`ao_ortho_lowdin_overlap `_ +`ao_ortho_lowdin_overlap `_ overlap matrix of the ao_ortho_lowdin supposed to be the Identity -`guess_mimi `_ - Produce `H_core` MO orbital - - `h_core_guess `_ Produce `H_core` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ @@ -55,7 +55,3 @@ Documentation `hcore_guess `_ Produce `H_core` MO orbital - -`prog_truncate_mo `_ - Truncate MO set - diff --git a/src/MO_Basis/.gitignore b/src/MO_Basis/.gitignore index 8eb04d30..110e93f9 100644 --- a/src/MO_Basis/.gitignore +++ b/src/MO_Basis/.gitignore @@ -1,17 +1,17 @@ -# 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 +# Automatically created by $QP_ROOT/scripts/module/module_handler.py .ninja_deps -ezfio_interface.irp.f -Utils -Nuclei +.ninja_log AO_Basis Electrons -Ezfio_files \ No newline at end of file +Ezfio_files +IRPF90_man +IRPF90_temp +Makefile +Makefile.depend +Nuclei +Utils +ezfio_interface.irp.f +irpf90.make +irpf90_entities +swap_mos +tags \ No newline at end of file diff --git a/src/MO_Basis/README.rst b/src/MO_Basis/README.rst index afc6008b..aa99670b 100644 --- a/src/MO_Basis/README.rst +++ b/src/MO_Basis/README.rst @@ -58,7 +58,44 @@ Documentation .. by the `update_README.py` script. -`ao_to_mo `_ +`ao_cart_to_sphe_coef `_ + matrix of the coefficients of the mos generated by the + orthonormalization by the S^{-1/2} canonical transformation of the aos + ao_cart_to_sphe_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + +`ao_cart_to_sphe_inv `_ + AO_cart_to_sphe_coef^(-1) + + +`ao_cart_to_sphe_num `_ + matrix of the coefficients of the mos generated by the + orthonormalization by the S^{-1/2} canonical transformation of the aos + ao_cart_to_sphe_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + +`ao_cart_to_sphe_overlap `_ + AO overlap matrix in the spherical basis set + + +`ao_ortho_canonical_coef `_ + matrix of the coefficients of the mos generated by the + orthonormalization by the S^{-1/2} canonical transformation of the aos + ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + +`ao_ortho_canonical_num `_ + matrix of the coefficients of the mos generated by the + orthonormalization by the S^{-1/2} canonical transformation of the aos + ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + +`ao_ortho_canonical_overlap `_ + overlap matrix of the ao_ortho_canonical. + Expected to be the Identity + + +`ao_to_mo `_ Transform A from the AO basis to the MO basis @@ -67,7 +104,7 @@ Documentation generate MOs -`mix_mo_jk `_ +`mix_mo_jk `_ subroutine that rotates the jth MO with the kth MO to give two new MO's that are '+' = 1/sqrt(2) (|j> + |k>) @@ -80,17 +117,21 @@ Documentation Undocumented -`mo_as_eigvectors_of_mo_matrix_sort_by_observable `_ +`mo_as_eigvectors_of_mo_matrix_sort_by_observable `_ Undocumented -`mo_coef `_ +`mo_as_svd_vectors_of_mo_matrix `_ + Undocumented + + +`mo_coef `_ Molecular orbital coefficients on AO basis set mo_coef(i,j) = coefficient of the ith ao on the jth mo mo_label : Label characterizing the MOS (local, canonical, natural, etc) -`mo_coef_transp `_ +`mo_coef_transp `_ Molecular orbital coefficients on AO basis set @@ -102,13 +143,13 @@ Documentation Density matrix in MO basis (virtual MOs) -`mo_label `_ +`mo_label `_ Molecular orbital coefficients on AO basis set mo_coef(i,j) = coefficient of the ith ao on the jth mo mo_label : Label characterizing the MOS (local, canonical, natural, etc) -`mo_occ `_ +`mo_occ `_ MO occupation numbers @@ -116,15 +157,15 @@ Documentation Undocumented -`mo_sort_by_observable `_ +`mo_sort_by_observable `_ Undocumented -`mo_to_ao `_ +`mo_to_ao `_ Transform A from the MO basis to the AO basis -`mo_to_ao_no_overlap `_ +`mo_to_ao_no_overlap `_ Transform A from the MO basis to the S^-1 AO basis @@ -132,11 +173,11 @@ Documentation Total number of molecular orbitals and the size of the keys corresponding -`mo_tot_num_align `_ +`mo_tot_num_align `_ Aligned variable for dimensioning of arrays -`s_mo_coef `_ +`s_mo_coef `_ Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix. @@ -147,3 +188,7 @@ Documentation `save_mos_truncated `_ Undocumented + +`swap_mos `_ + Undocumented + diff --git a/src/Pseudo/README.rst b/src/Pseudo/README.rst index cba187aa..2b3f87dd 100644 --- a/src/Pseudo/README.rst +++ b/src/Pseudo/README.rst @@ -28,15 +28,19 @@ Documentation .. by the `update_README.py` script. -`do_pseudo `_ +`do_pseudo `_ Using pseudo potential integral or not -`pseudo_dz_k `_ +`nucl_charge_remove `_ + Nuclear charges removed + + +`pseudo_dz_k `_ test -`pseudo_dz_kl `_ +`pseudo_dz_kl `_ test @@ -44,23 +48,23 @@ Documentation R_maxof the QMC grid -`pseudo_grid_size `_ +`pseudo_grid_size `_ Nb of points of the QMC grid -`pseudo_klocmax `_ +`pseudo_klocmax `_ test -`pseudo_kmax `_ +`pseudo_kmax `_ test -`pseudo_lmax `_ +`pseudo_lmax `_ test -`pseudo_n_k `_ +`pseudo_n_k `_ test @@ -68,10 +72,10 @@ Documentation test -`pseudo_v_k `_ +`pseudo_v_k `_ test -`pseudo_v_kl `_ +`pseudo_v_kl `_ test diff --git a/src/Utils/README.rst b/src/Utils/README.rst index ecd5db56..03ec80f5 100644 --- a/src/Utils/README.rst +++ b/src/Utils/README.rst @@ -14,14 +14,6 @@ Documentation Undocumented -`abort_all `_ - If True, all the calculation is aborted - - -`abort_here `_ - If True, all the calculation is aborted - - `add_poly `_ Add two polynomials D(t) =! D(t) +( B(t)+C(t)) @@ -36,11 +28,11 @@ Documentation Compute 1st dimension such that it is aligned for vectorization. -`apply_rotation `_ +`apply_rotation `_ Apply the rotation found by find_rotation -`approx_dble `_ +`approx_dble `_ Undocumented @@ -63,10 +55,6 @@ Documentation Binomial coefficients -`catch_signal `_ - What to do on Ctrl-C. If two Ctrl-C are pressed within 1 sec, the calculation if aborted. - - `dble_fact `_ Undocumented @@ -122,7 +110,7 @@ Documentation 1/n! -`find_rotation `_ +`find_rotation `_ Find A.C = B @@ -148,7 +136,7 @@ Documentation Undocumented -`get_pseudo_inverse `_ +`get_pseudo_inverse `_ Find C = A^-1 @@ -257,7 +245,7 @@ Documentation Hermite polynomial -`i2radix_sort `_ +`i2radix_sort `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. @@ -282,14 +270,14 @@ Documentation contains the new order of the elements. -`i8radix_sort `_ +`i8radix_sort `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. -`i8radix_sort_big `_ +`i8radix_sort_big `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. @@ -388,14 +376,14 @@ Documentation 1/i -`iradix_sort `_ +`iradix_sort `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. -`iradix_sort_big `_ +`iradix_sort_big `_ Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. @@ -420,7 +408,7 @@ Documentation contains the new order of the elements. -`lapack_diag `_ +`lapack_diag `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -431,7 +419,7 @@ Documentation .br -`lapack_diag_s2 `_ +`lapack_diag_s2 `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -442,7 +430,7 @@ Documentation .br -`lapack_diagd `_ +`lapack_diagd `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -453,7 +441,7 @@ Documentation .br -`lapack_partial_diag `_ +`lapack_partial_diag `_ Diagonalize matrix H .br H is untouched between input and ouptut @@ -468,12 +456,16 @@ Documentation n! +`lowercase `_ + Transform to lower case + + `multiply_poly `_ Multiply two polynomials D(t) =! D(t) +( B(t)*C(t)) -`normalize `_ +`normalize `_ Normalizes vector u u is expected to be aligned in memory. @@ -482,8 +474,26 @@ Documentation Number of current OpenMP threads -`ortho_lowdin `_ - Compute C_new=C_old.S^-1/2 canonical orthogonalization. +`ortho_canonical `_ + Compute C_new=C_old.U.s^-1/2 canonical orthogonalization. + .br + overlap : overlap matrix + .br + LDA : leftmost dimension of overlap array + .br + N : Overlap matrix is NxN (array is (LDA,N) ) + .br + C : Coefficients of the vectors to orthogonalize. On exit, + orthogonal vectors + .br + LDC : leftmost dimension of C + .br + m : Coefficients matrix is MxN, ( array is (LDC,N) ) + .br + + +`ortho_lowdin `_ + Compute C_new=C_old.S^-1/2 orthogonalization. .br overlap : overlap matrix .br @@ -597,7 +607,7 @@ Documentation to be in integer*8 format -`set_zero_extra_diag `_ +`set_zero_extra_diag `_ Undocumented @@ -624,11 +634,7 @@ Documentation .br -`trap_signals `_ - What to do when a signal is caught. Here, trap Ctrl-C and call the control_C subroutine. - - -`u_dot_u `_ +`u_dot_u `_ Compute diff --git a/src/ZMQ/README.rst b/src/ZMQ/README.rst index f189ce24..187af23e 100644 --- a/src/ZMQ/README.rst +++ b/src/ZMQ/README.rst @@ -5,38 +5,134 @@ ZMQ Socket address : defined as an environment variable : QP_RUN_ADDRESS +Needed Modules +============== +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +.. image:: tree_dependency.png + +* `Utils `_ + Documentation ============= .. Do not edit this section It was auto-generated .. by the `update_README.py` script. -`qp_run_address `_ +`add_task_to_taskserver `_ + Get a task from the task server + + +`connect_to_taskserver `_ + Connect to the task server and obtain the worker ID + + +`disconnect_from_taskserver `_ + Disconnect from the task server + + +`end_parallel_job `_ + End a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' + + +`end_zmq_pair_socket `_ + Terminate socket on which the results are sent. + + +`end_zmq_pull_socket `_ + Terminate socket on which the results are sent. + + +`end_zmq_push_socket `_ + Terminate socket on which the results are sent. + + +`end_zmq_to_qp_run_socket `_ + Terminate the socket from the application to qp_run + + +`get_task_from_taskserver `_ + Get a task from the task server + + +`new_parallel_job `_ + Start a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' + + +`new_zmq_pair_socket `_ + Socket on which the collector and the main communicate + + +`new_zmq_pull_socket `_ + Socket on which the results are sent. If thread is 1, use inproc + + +`new_zmq_push_socket `_ + Socket on which the results are sent. If thread is 1, use inproc + + +`new_zmq_to_qp_run_socket `_ + Socket on which the qp_run process replies + + +`qp_run_address `_ Address of the qp_run socket Example : tcp://130.120.229.139:12345 -`zmq_context `_ - Context for the ZeroMQ library - - -`zmq_port `_ +`reset_zmq_addresses `_ Undocumented -`zmq_port_start `_ +`switch_qp_run_to_master `_ + Address of the master qp_run socket + Example : tcp://130.120.229.139:12345 + + +`task_done_to_taskserver `_ + Get a task from the task server + + +`zmq_context `_ + Context for the ZeroMQ library + + +`zmq_delete_task `_ + When a task is done, it has to be removed from the list of tasks on the qp_run + queue. This guarantees that the results have been received in the pull. + + +`zmq_port `_ + Return the value of the ZMQ port from the corresponding integer + + +`zmq_port_start `_ Address of the qp_run socket Example : tcp://130.120.229.139:12345 -`zmq_socket_pull `_ +`zmq_socket_pair_inproc_address `_ Socket which pulls the results (2) -`zmq_socket_push `_ - Socket on which to push the results (1) +`zmq_socket_pull_inproc_address `_ + Socket which pulls the results (2) -`zmq_to_qp_run_socket `_ - Socket on which the qp_run process replies +`zmq_socket_pull_tcp_address `_ + Socket which pulls the results (2) + + +`zmq_socket_push_inproc_address `_ + Socket which pulls the results (2) + + +`zmq_socket_push_tcp_address `_ + Socket which pulls the results (2) + + +`zmq_state `_ + Threads executing work through the ZeroMQ interface