diff --git a/TODO b/TODO index b789a405..e5c04408 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,16 @@ +* Virer tous les modules qui sont dans plugins + +# qp_module + +* Permettre aux utilisateurs de facilement deposer des plugins dans plugins via une commande +* Permettre de descendre plus bas dans l'arborescence de plugins pour permettre des `git clone` dans le repertoire plugins +* Mettre les fichiers de test dans le directory source +* Mettre le fichier LIB +* Mettre les fichiers install.sh dans les modules externes + +# Web/doc + +* Creer une page web pas trop degueu et la mettre ici : http://lcpq.github.io/quantum_package * Manu : README * data_energy_and_density * dft_keywords @@ -5,17 +18,17 @@ * dft_utils_one_body * dm_for_dft * integrals_erf + + + +# Exterieur + * Molden format : http://cheminf.cmbi.ru.nl/molden/molden_format.html -* Virer tous les modules qui sont dans plugins -* Permettre aux utilisateurs de facilement deposer des plugins dans plugins via une commande -* Permettre de descendre plus bas dans l'arborescence de plugins pour permettre des `git clone` dans le repertoire plugins -* Mettre les fichiers de test dans le directory source -* Separer les integrales bielectroniques en AO et MO -* Creer une page web pas trop degueu et la mettre ici : http://lcpq.github.io/quantum_package * Un module pour lire les integrales Moleculaires depuis un FCIDUMP * Un module pour lire des integrales Atomiques (voir module de Mimi pour lire les AO Slater) -* Plus de tests: + +# Tests: * CIS * CISD @@ -27,7 +40,7 @@ * DFT -* User doc: +# User doc: * qp_create_ezfio_from_xyz * qp_set_frozen_core @@ -42,12 +55,12 @@ * Running in parallel * Parameters for selection (Generators/selectors) -* Programmers doc: +# Programmers doc: * Example : Simple Hartree-Fock program from scratch * Examples : subroutine example_module -* Config file for Cray -* Implicit none obligatoire +# Config file for Cray + +# EZFIO sans fork -* EZFIO sans fork diff --git a/config/gfortran.cfg b/config/gfortran.cfg index 2256ccf4..a15cf1c7 100644 --- a/config/gfortran.cfg +++ b/config/gfortran.cfg @@ -35,14 +35,14 @@ OPENMP : 1 ; Append OpenMP flags # -ffast-math and the Fortran-specific # -fno-protect-parens and -fstack-arrays. [OPT] -FCFLAGS : -Ofast +FCFLAGS : -Ofast # Profiling flags ################# # [PROFILE] FC : -p -g -FCFLAGS : -Ofast +FCFLAGS : -Ofast # Debugging flags ################# @@ -51,7 +51,7 @@ FCFLAGS : -Ofast # -g : Extra debugging information # [DEBUG] -FCFLAGS : -fcheck=all -g +FCFLAGS : -fcheck=all -g # OpenMP flags ################# diff --git a/config/gfortran_avx.cfg b/config/gfortran_avx.cfg index 80bbbec9..6d5186fa 100644 --- a/config/gfortran_avx.cfg +++ b/config/gfortran_avx.cfg @@ -35,7 +35,7 @@ OPENMP : 1 ; Append OpenMP flags # -ffast-math and the Fortran-specific # -fno-protect-parens and -fstack-arrays. [OPT] -FCFLAGS : -Ofast +FCFLAGS : -Ofast # Profiling flags ################# @@ -51,7 +51,7 @@ FCFLAGS : -Ofast # -g : Extra debugging information # [DEBUG] -FCFLAGS : -fcheck=all -g +FCFLAGS : -fcheck=all -g # OpenMP flags ################# diff --git a/config/gfortran_debug.cfg b/config/gfortran_debug.cfg index dbd99539..29fad278 100644 --- a/config/gfortran_debug.cfg +++ b/config/gfortran_debug.cfg @@ -35,14 +35,14 @@ OPENMP : 1 ; Append OpenMP flags # -ffast-math and the Fortran-specific # -fno-protect-parens and -fstack-arrays. [OPT] -FCFLAGS : -Ofast +FCFLAGS : -Ofast # Profiling flags ################# # [PROFILE] FC : -p -g -FCFLAGS : -Ofast +FCFLAGS : -Ofast # Debugging flags ################# @@ -51,7 +51,7 @@ FCFLAGS : -Ofast # -g : Extra debugging information # [DEBUG] -FCFLAGS : -g -msse4.2 -fcheck=all -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant +FCFLAGS : -g -msse4.2 -fcheck=all -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant # OpenMP flags ################# diff --git a/config/gfortran_mpi.cfg b/config/gfortran_mpi.cfg index 6358d745..2dc4851e 100644 --- a/config/gfortran_mpi.cfg +++ b/config/gfortran_mpi.cfg @@ -35,14 +35,14 @@ OPENMP : 1 ; Append OpenMP flags # -ffast-math and the Fortran-specific # -fno-protect-parens and -fstack-arrays. [OPT] -FCFLAGS : -Ofast -msse4.2 +FCFLAGS : -Ofast -msse4.2 # Profiling flags ################# # [PROFILE] FC : -p -g -FCFLAGS : -Ofast -msse4.2 +FCFLAGS : -Ofast -msse4.2 # Debugging flags ################# @@ -51,7 +51,7 @@ FCFLAGS : -Ofast -msse4.2 # -g : Extra debugging information # [DEBUG] -FCFLAGS : -fcheck=all -g +FCFLAGS : -fcheck=all -g # OpenMP flags ################# diff --git a/config/ifort.cfg b/config/ifort.cfg index 0c630114..72a3406f 100644 --- a/config/ifort.cfg +++ b/config/ifort.cfg @@ -32,14 +32,14 @@ OPENMP : 1 ; Append OpenMP flags # [OPT] FC : -traceback -FCFLAGS : -xAVX -O2 -ip -ftz -g +FCFLAGS : -xAVX -O2 -ip -ftz -g # Profiling flags ################# # [PROFILE] FC : -p -g -FCFLAGS : -xSSE4.2 -O2 -ip -ftz +FCFLAGS : -xSSE4.2 -O2 -ip -ftz # Debugging flags ################# @@ -52,7 +52,7 @@ FCFLAGS : -xSSE4.2 -O2 -ip -ftz # [DEBUG] FC : -g -traceback -FCFLAGS : -xSSE2 -C -fpe0 +FCFLAGS : -xSSE2 -C -fpe0 -implicitnone # OpenMP flags ################# diff --git a/config/ifort_debug.cfg b/config/ifort_debug.cfg index f5b25e81..eeb4730e 100644 --- a/config/ifort_debug.cfg +++ b/config/ifort_debug.cfg @@ -32,14 +32,16 @@ OPENMP : 1 ; Append OpenMP flags # [OPT] FC : -traceback -FCFLAGS : -xAVX -O2 -ip -ftz -g +FCFLAGS : -xAVX -O2 -ip -ftz -g + # Profiling flags ################# # [PROFILE] FC : -p -g -FCFLAGS : -xSSE4.2 -O2 -ip -ftz +FCFLAGS : -xSSE4.2 -O2 -ip -ftz + # Debugging flags ################# @@ -52,7 +54,8 @@ FCFLAGS : -xSSE4.2 -O2 -ip -ftz # [DEBUG] FC : -g -traceback -FCFLAGS : -xSSE4.2 -C -fpe0 +FCFLAGS : -xSSE4.2 -C -fpe0 -implicitnone + # OpenMP flags ################# diff --git a/config/ifort_mpi.cfg b/config/ifort_mpi.cfg index f179dac6..9e965a96 100644 --- a/config/ifort_mpi.cfg +++ b/config/ifort_mpi.cfg @@ -31,14 +31,16 @@ OPENMP : 1 ; Append OpenMP flags # -ftz : Flushes denormal results to zero # [OPT] -FCFLAGS : -xSSE4.2 -O2 -ip -ftz -g -traceback +FCFLAGS : -xSSE4.2 -O2 -ip -ftz -g -traceback + # !xAVX # Profiling flags ################# # [PROFILE] FC : -p -g -FCFLAGS : -xSSE4.2 -O2 -ip -ftz +FCFLAGS : -xSSE4.2 -O2 -ip -ftz + # Debugging flags ################# @@ -51,7 +53,8 @@ FCFLAGS : -xSSE4.2 -O2 -ip -ftz # [DEBUG] FC : -g -traceback -FCFLAGS : -xSSE2 -C -fpe0 +FCFLAGS : -xSSE2 -C -fpe0 -implicitnone + # OpenMP flags ################# diff --git a/config/sse4_avx2.cfg b/config/sse4_avx2.cfg deleted file mode 100644 index eabf75a3..00000000 --- a/config/sse4_avx2.cfg +++ /dev/null @@ -1,62 +0,0 @@ -# Common flags -############## -# -# -mkl=[parallel|sequential] : Use the MKL library -# --ninja : Allow the utilisation of ninja. It is mandatory ! -# --align=32 : Align all provided arrays on a 32-byte boundary -# -[COMMON] -FC : ifort -LAPACK_LIB : -mkl=parallel -IRPF90 : irpf90 -IRPF90_FLAGS : --ninja --align=32 - -# Global options -################ -# -# 1 : Activate -# 0 : Deactivate -# -[OPTION] -MODE : OPT ; [ OPT | PROFILE | DEBUG ] : Chooses the section below -CACHE : 1 ; Enable cache_compile.py -OPENMP : 1 ; Append OpenMP flags - -# Optimization flags -#################### -# -# -xHost : Compile a binary optimized for the current architecture -# -O2 : O3 not better than O2. -# -ip : Inter-procedural optimizations -# -ftz : Flushes denormal results to zero -# -[OPT] -FCFLAGS : -axSSE4.2,AVX,CORE-AVX2 -O2 -ip -ftz -g -traceback - -# Profiling flags -################# -# -[PROFILE] -FC : -p -g -FCFLAGS : -xSSE4.2 -O2 -ip -ftz - -# Debugging flags -################# -# -# -traceback : Activate backtrace on runtime -# -fpe0 : All floating point exaceptions -# -C : Checks uninitialized variables, array subscripts, etc... -# -g : Extra debugging information -# -xSSE2 : Valgrind needs a very simple x86 executable -# -[DEBUG] -FC : -g -traceback -FCFLAGS : -xSSE2 -C -fpe0 - -# OpenMP flags -################# -# -[OPENMP] -FC : -openmp -IRPF90_FLAGS : --openmp - diff --git a/config/travis.cfg b/config/travis.cfg index 98eb7c2c..3566f97b 100644 --- a/config/travis.cfg +++ b/config/travis.cfg @@ -35,14 +35,16 @@ OPENMP : 1 ; Append OpenMP flags # -ffast-math and the Fortran-specific # -fno-protect-parens and -fstack-arrays. [OPT] -FCFLAGS : -Ofast -march=native +FCFLAGS : -Ofast -march=native + # Profiling flags ################# # [PROFILE] FC : -p -g -FCFLAGS : -Ofast +FCFLAGS : -Ofast -fimplicit-none + # Debugging flags ################# @@ -51,7 +53,8 @@ FCFLAGS : -Ofast # -g : Extra debugging information # [DEBUG] -FCFLAGS : -Ofast -fcheck=all -g -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant +FCFLAGS : -Ofast -fcheck=all -g -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant + # OpenMP flags ################# diff --git a/docs/source/modules/ao_one_e_integrals.rst b/docs/source/modules/ao_one_e_integrals.rst index cb8eb503..3f158a26 100644 --- a/docs/source/modules/ao_one_e_integrals.rst +++ b/docs/source/modules/ao_one_e_integrals.rst @@ -738,6 +738,20 @@ Subroutines / functions +.. c:function:: give_all_erf_kl_ao + + .. code:: text + + subroutine give_all_erf_kl_ao(integrals_ao,mu_in,C_center) + + File: :file:`pot_ao_erf_ints.irp.f` + + subroutine that returs all integrals over r of type erf(mu_in * |r-C_center|)/|r-C_center| + + + + + .. c:function:: give_polynom_mult_center_mono_elec .. code:: text @@ -753,6 +767,34 @@ Subroutines / functions +.. c:function:: give_polynom_mult_center_mono_elec_erf + + .. code:: text + + subroutine give_polynom_mult_center_mono_elec_erf(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in) + + File: :file:`pot_ao_erf_ints.irp.f` + + + + + + + +.. c:function:: give_polynom_mult_center_mono_elec_erf_opt + + .. code:: text + + subroutine give_polynom_mult_center_mono_elec_erf_opt(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center) + + File: :file:`pot_ao_erf_ints.irp.f` + + + + + + + .. c:function:: int_gaus_pol .. code:: text @@ -783,6 +825,34 @@ Subroutines / functions +.. c:function:: nai_pol_mult_erf + + .. code:: text + + double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in) + + File: :file:`pot_ao_erf_ints.irp.f` + + + + + + + +.. c:function:: nai_pol_mult_erf_ao + + .. code:: text + + double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center) + + File: :file:`pot_ao_erf_ints.irp.f` + + computes the following integral : int[-infty;+infty] dr AO_i_ao (r) AO_j_ao(r) erf(mu_in * |r-C_center|)/|r-C_center| + + + + + .. c:function:: overlap_bourrin_deriv_x .. code:: text diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst new file mode 100644 index 00000000..a0abc3a4 --- /dev/null +++ b/docs/source/modules/becke_numerical_grid.rst @@ -0,0 +1,82 @@ +.. _becke_numerical_grid: + +.. program:: becke_numerical_grid + +.. default-role:: option + +==================== +Becke Numerical Grid +==================== + +This module contains all quantities needed to build the Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions. + +This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains a certain number of radial and angular points. + +For a simple example of how to use the grid, see example.irp.f. + +The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/). +See next section for explanations and citation policies. + +.. code-block:: text + + This subroutine is part of a set of subroutines that generate + Lebedev grids [1-6] for integration on a sphere. The original + C-code [1] was kindly provided by Dr. Dmitri N. Laikov and + translated into fortran by Dr. Christoph van Wuellen. + This subroutine was translated using a C to fortran77 conversion + tool written by Dr. Christoph van Wuellen. + + Users of this code are asked to include reference [1] in their + publications, and in the user- and programmers-manuals + describing their codes. + + This code was distributed through CCL (http://www.ccl.net/). + + [1] V.I. Lebedev, and D.N. Laikov + "A quadrature formula for the sphere of the 131st + algebraic order of accuracy" + Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481. + + [2] V.I. Lebedev + "A quadrature formula for the sphere of 59th algebraic + order of accuracy" + Russian Acad. Sci. Dokl. Math., Vol. 50, 1995, pp. 283-286. + + [3] V.I. Lebedev, and A.L. Skorokhodov + "Quadrature formulas of orders 41, 47, and 53 for the sphere" + Russian Acad. Sci. Dokl. Math., Vol. 45, 1992, pp. 587-592. + + [4] V.I. Lebedev + "Spherical quadrature formulas exact to orders 25-29" + Siberian Mathematical Journal, Vol. 18, 1977, pp. 99-107. + + [5] V.I. Lebedev + "Quadratures on a sphere" + Computational Mathematics and Mathematical Physics, Vol. 16, + 1976, pp. 10-24. + + [6] V.I. Lebedev + "Values of the nodes and weights of ninth to seventeenth + order Gauss-Markov quadrature formulae invariant under the + octahedron group with inversion" + Computational Mathematics and Mathematical Physics, Vol. 15, + 1975, pp. 44-51. + + + + + +EZFIO parameters +---------------- + +.. option:: n_points_integration_angular + + Number of angular points per atom for 3d numerical integration, needed for DFT for example [ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ] + + Default: 590 + +.. option:: n_points_radial_grid + + Number of radial points per atom for 3d numerical integration, needed for DFT for example + + Default: 60 diff --git a/docs/source/modules/bitmask.rst b/docs/source/modules/bitmask.rst index a79c31fd..70547170 100644 --- a/docs/source/modules/bitmask.rst +++ b/docs/source/modules/bitmask.rst @@ -793,6 +793,20 @@ Subroutines / functions +.. c:function:: clear_bit_to_integer + + .. code:: text + + subroutine clear_bit_to_integer(i_physical,key,Nint) + + File: :file:`bitmasks_routines.irp.f` + + set to 0 the bit number i_physical in the bitstring key + + + + + .. c:function:: debug_det .. code:: text @@ -821,6 +835,20 @@ Subroutines / functions +.. c:function:: example_bitmask + + .. code:: text + + subroutine example_bitmask + + File: :file:`example.irp.f` + + subroutine that illustrates the main features available in bitmask + + + + + .. c:function:: initialize_bitmask_to_restart_ones .. code:: text @@ -1185,6 +1213,20 @@ Subroutines / functions +.. c:function:: set_bit_to_integer + + .. code:: text + + subroutine set_bit_to_integer(i_physical,key,Nint) + + File: :file:`bitmasks_routines.irp.f` + + set to 1 the bit number i_physical in the bitstring key + + + + + .. c:function:: set_bitmask_hole_as_input .. code:: text diff --git a/docs/source/modules/cassd.rst b/docs/source/modules/cassd.rst deleted file mode 100644 index 7177cc75..00000000 --- a/docs/source/modules/cassd.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. _cassd: - -.. program:: cassd - -.. default-role:: option - -===== -CASSD -===== - -Selected |CAS-SD|. - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Calculated CAS-SD energy - - -.. option:: energy_pt2 - - Calculated selected CAS-SD energy with PT2 correction - - -.. option:: do_ddci - - If true, remove purely inactive double excitations - - Default: False - -.. option:: do_only_1h1p - - If true, do only one hole/one particle excitations - - Default: False - -.. option:: do_singles - - If true, do only single excitations - - Default: True - -.. option:: do_doubles - - If true, do only double excitations - - Default: True diff --git a/docs/source/modules/champ.rst b/docs/source/modules/champ.rst deleted file mode 100644 index 1f92d020..00000000 --- a/docs/source/modules/champ.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. _champ: - -.. program:: champ - -.. default-role:: option - -=============== -CHAMP Interface -=============== - -For multi-state calculations, to extract state 2 use: - -.. code-block:: bash - - QP_STATE=2 qp_run save_for_champ x.ezfio - -(state 1 is the ground state). - - - - - -EZFIO parameters ----------------- - -.. option:: ci_threshold - - Threshold on the CI coefficients as in QMCChem - - Default: 1.e-8 diff --git a/docs/source/modules/cis.rst b/docs/source/modules/cis.rst index 00eaab9e..0b795572 100644 --- a/docs/source/modules/cis.rst +++ b/docs/source/modules/cis.rst @@ -34,6 +34,20 @@ Subroutines / functions +.. c:function:: cis + + .. code:: text + + subroutine cis + + File: :file:`cis.irp.f` + + Configuration Interaction with Single excitations. + + + + + .. c:function:: h_apply_cis .. code:: text diff --git a/docs/source/modules/cisd.rst b/docs/source/modules/cisd.rst index 2be52b97..73e4652a 100644 --- a/docs/source/modules/cisd.rst +++ b/docs/source/modules/cisd.rst @@ -34,15 +34,15 @@ Subroutines / functions -.. c:function:: cis +.. c:function:: cisd .. code:: text - subroutine cis + subroutine cisd File: :file:`cisd.irp.f` - + Configuration Interaction with Single and Double excitations. diff --git a/docs/source/modules/data_energy_and_density.rst b/docs/source/modules/data_energy_and_density.rst new file mode 100644 index 00000000..23ef15fa --- /dev/null +++ b/docs/source/modules/data_energy_and_density.rst @@ -0,0 +1,71 @@ +.. _data_energy_and_density: + +.. program:: data_energy_and_density + +.. default-role:: option + +============ +Data energy and density +============ + + +This module contains some global variables (such as densities and energies) which are stored in the EZFIO folder in a different place than determinants. This is used in practice to store density matrices which can be obtained from any methods, as long as they are stored in the same MO basis which is used for the calculations. In |RS-DFT| calculations, this can be done to perform damping on the density in order to speed up convergence. + + + +EZFIO parameters +---------------- + +.. option:: data_energy_var + + Variational energy computed with the wave function + + +.. option:: data_energy_proj + + Projected energy computed with the wave function + + +.. option:: data_one_body_alpha_dm_mo + + Alpha one body density matrix on the MO basis computed with the wave function + + +.. option:: data_one_body_beta_dm_mo + + Beta one body density matrix on the MO basis computed with the wave function + + + +Subroutines / functions +----------------------- + + + +.. c:function:: routine + + .. code:: text + + subroutine routine + + File: :file:`save_one_body_dm.irp.f` + + + + + + + +.. c:function:: save_one_body_dm + + .. code:: text + + subroutine save_one_body_dm + + File: :file:`save_one_body_dm.irp.f` + + programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder data_energy_and_density. + Then, the global variable data_one_body_alpha_dm_mo and data_one_body_beta_dm_mo will automatically read the density in a further calculation. + This can be used to perform dampin on the density in RS-DFT calculation (see the density_for_dft module). + + diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst index 3f58c574..50790573 100644 --- a/docs/source/modules/davidson.rst +++ b/docs/source/modules/davidson.rst @@ -191,6 +191,19 @@ Providers +.. c:var:: psi_energy_bielec + + .. code:: text + + double precision, allocatable :: psi_energy_bielec (N_states) + + File: :file:`u0_h_u0_bielec.irp.f` + + Energy of the current wave function + + + + .. c:var:: psi_energy_with_nucl_rep .. code:: text @@ -378,6 +391,112 @@ Subroutines / functions +.. c:function:: h_s2_u_0_bielec_nstates_openmp + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp(v_0,s_0,u_0,N_st,sze) + + File: :file:`u0_h_u0_bielec.irp.f` + + Computes v_0 = H|u_0> and s_0 = S^2 |u_0> + Assumes that the determinants are in psi_det + istart, iend, ishift, istep are used in ZMQ parallelization. + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0_bielec.irp.f` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_1 + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0_bielec.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_2 + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0_bielec.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_3 + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0_bielec.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_4 + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0_bielec.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_n_int + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0_bielec.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + .. c:function:: h_s2_u_0_nstates_openmp .. code:: text @@ -517,6 +636,22 @@ Subroutines / functions +.. c:function:: u_0_h_u_0_bielec + + .. code:: text + + subroutine u_0_H_u_0_bielec(e_0,u_0,n,keys_tmp,Nint,N_st,sze) + + File: :file:`u0_h_u0_bielec.irp.f` + + Computes e_0 = / + n : number of determinants + + + + + + .. c:function:: zmq_get_n_states_diag .. code:: text diff --git a/docs/source/modules/davidson_dressed.rst b/docs/source/modules/davidson_dressed.rst new file mode 100644 index 00000000..c0fb41af --- /dev/null +++ b/docs/source/modules/davidson_dressed.rst @@ -0,0 +1,106 @@ +.. _davidson_dressed: + +.. program:: davidson_dressed + +.. default-role:: option + +=============== +DavidsonDressed +=============== + +Davidson with single-column dressing. + + + + +Providers +--------- + + +.. c:var:: ci_eigenvectors_dressed + + .. code:: text + + double precision, allocatable :: ci_electronic_energy_dressed (N_states_diag) + double precision, allocatable :: ci_eigenvectors_dressed (N_det,N_states_diag) + double precision, allocatable :: ci_eigenvectors_s2_dressed (N_states_diag) + + File: :file:`diagonalize_ci.irp.f` + + Eigenvectors/values of the CI matrix + + + + +.. c:var:: ci_eigenvectors_s2_dressed + + .. code:: text + + double precision, allocatable :: ci_electronic_energy_dressed (N_states_diag) + double precision, allocatable :: ci_eigenvectors_dressed (N_det,N_states_diag) + double precision, allocatable :: ci_eigenvectors_s2_dressed (N_states_diag) + + File: :file:`diagonalize_ci.irp.f` + + Eigenvectors/values of the CI matrix + + + + +.. c:var:: ci_electronic_energy_dressed + + .. code:: text + + double precision, allocatable :: ci_electronic_energy_dressed (N_states_diag) + double precision, allocatable :: ci_eigenvectors_dressed (N_det,N_states_diag) + double precision, allocatable :: ci_eigenvectors_s2_dressed (N_states_diag) + + File: :file:`diagonalize_ci.irp.f` + + Eigenvectors/values of the CI matrix + + + + +.. c:var:: ci_energy_dressed + + .. code:: text + + double precision, allocatable :: ci_energy_dressed (N_states_diag) + + File: :file:`diagonalize_ci.irp.f` + + N_states lowest eigenvalues of the CI matrix + + + + +.. c:var:: h_matrix_dressed + + .. code:: text + + double precision, allocatable :: h_matrix_dressed (N_det,N_det) + + File: :file:`diagonalize_ci.irp.f` + + Dressed H with Delta_ij + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: diagonalize_ci_dressed + + .. code:: text + + subroutine diagonalize_CI_dressed + + File: :file:`diagonalize_ci.irp.f` + + Replace the coefficients of the CI states by the coefficients of the eigenstates of the CI matrix + + diff --git a/docs/source/modules/davidsonundressed.rst b/docs/source/modules/davidson_undressed.rst similarity index 92% rename from docs/source/modules/davidsonundressed.rst rename to docs/source/modules/davidson_undressed.rst index ccb87324..309a4145 100644 --- a/docs/source/modules/davidsonundressed.rst +++ b/docs/source/modules/davidson_undressed.rst @@ -1,6 +1,6 @@ -.. _davidsonundressed: +.. _davidson_undressed: -.. program:: davidsonundressed +.. program:: davidson_undressed .. default-role:: option diff --git a/docs/source/modules/davidsondressed.rst b/docs/source/modules/davidsondressed.rst deleted file mode 100644 index 78ff036f..00000000 --- a/docs/source/modules/davidsondressed.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _davidsondressed: - -.. program:: davidsondressed - -.. default-role:: option - -=============== -DavidsonDressed -=============== - -Davidson with single-column dressing. - - diff --git a/docs/source/modules/debug.rst b/docs/source/modules/debug.rst deleted file mode 100644 index 4080bda9..00000000 --- a/docs/source/modules/debug.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. _debug: - -.. program:: debug - -.. default-role:: option - -===== -debug -===== - -Debugging module. - diff --git a/docs/source/modules/density_for_dft.rst b/docs/source/modules/density_for_dft.rst new file mode 100644 index 00000000..15b3ebd9 --- /dev/null +++ b/docs/source/modules/density_for_dft.rst @@ -0,0 +1,11 @@ +.. _density_for_dft: + +.. program:: density_for_dft + +.. default-role:: option + +========== +DM_for_dft +========== + + diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst index a3763ead..832ac214 100644 --- a/docs/source/modules/determinants.rst +++ b/docs/source/modules/determinants.rst @@ -57,12 +57,6 @@ EZFIO parameters Default: 0.99 -.. option:: threshold_selectors - - Thresholds on selectors (fraction of the square of the norm) - - Default: 0.999 - .. option:: n_int Number of integers required to represent bitstrings (set in module :ref:`bitmask`) @@ -668,20 +662,6 @@ Providers -.. c:var:: one_body_dm_mo_alpha_old - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_alpha_old (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: one_body_dm_mo_beta_old (mo_tot_num,mo_tot_num,N_states) - - File: :file:`density_matrix.irp.f` - - Alpha and beta one-body density matrix for each state - - - - .. c:var:: one_body_dm_mo_beta .. code:: text @@ -710,20 +690,6 @@ Providers -.. c:var:: one_body_dm_mo_beta_old - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_alpha_old (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: one_body_dm_mo_beta_old (mo_tot_num,mo_tot_num,N_states) - - File: :file:`density_matrix.irp.f` - - Alpha and beta one-body density matrix for each state - - - - .. c:var:: one_body_dm_mo_diff .. code:: text @@ -1359,6 +1325,19 @@ Providers +.. c:var:: psi_energy_h_core + + .. code:: text + + double precision, allocatable :: psi_energy_h_core (N_states) + + File: :file:`psi_energy_mono_elec.irp.f` + + psi_energy_h_core = computed using the one_body_dm_mo_alpha+one_body_dm_mo_beta and mo_mono_elec_integral + + + + .. c:var:: psi_non_cas .. code:: text @@ -1685,20 +1664,6 @@ Subroutines / functions -.. c:function:: apply_mono - - .. code:: text - - subroutine apply_mono(i_hole,i_particle,ispin_excit,key_in,Nint) - - File: :file:`excitations_utils.irp.f` - - - - - - - .. c:function:: apply_particle .. code:: text @@ -1769,20 +1734,6 @@ Subroutines / functions -.. c:function:: clear_bit_to_integer - - .. code:: text - - subroutine clear_bit_to_integer(i_physical,key,Nint) - - File: :file:`create_excitations.irp.f` - - - - - - - .. c:function:: connected_to_ref .. code:: text @@ -1791,7 +1742,13 @@ Subroutines / functions File: :file:`connected_to_ref.irp.f` - + input : key : a given Slater determinant + : keys: a list of Slater determinants + : Ndet: the number of Slater determinants in keys + : N_past_in the number of Slater determinants for the connectivity research + output : 0 : key not connected to the N_past_in first Slater determinants in keys + i : key is connected to determinant i of keys + -i : key is the ith determinant of the reference wf keys @@ -1805,7 +1762,13 @@ Subroutines / functions File: :file:`connected_to_ref.irp.f` - + input : key : a given Slater determinant + : keys: a list of Slater determinants + : Ndet: the number of Slater determinants in keys + : N_past_in the number of Slater determinants for the connectivity research + output : 0 : key not connected by a MONO EXCITATION to the N_past_in first Slater determinants in keys + i : key is connected by a MONO EXCITATION to determinant i of keys + -i : key is the ith determinant of the reference wf keys @@ -2049,6 +2012,34 @@ Subroutines / functions +.. c:function:: example_determinants + + .. code:: text + + subroutine example_determinants + + File: :file:`example.irp.f` + + subroutine that illustrates the main features available in determinants + + + + + +.. c:function:: example_determinants_psi_det + + .. code:: text + + subroutine example_determinants_psi_det + + File: :file:`example.irp.f` + + subroutine that illustrates the main features available in determinants using the psi_det/psi_coef + + + + + .. c:function:: fill_h_apply_buffer_no_selection .. code:: text @@ -3073,6 +3064,20 @@ Subroutines / functions +.. c:function:: routine_example_psi_det + + .. code:: text + + subroutine routine_example_psi_det + + File: :file:`example.irp.f` + + subroutine that illustrates the main features available in determinants using many determinants + + + + + .. c:function:: s2_u_0 .. code:: text @@ -3203,20 +3208,6 @@ Subroutines / functions -.. c:function:: set_bit_to_integer - - .. code:: text - - subroutine set_bit_to_integer(i_physical,key,Nint) - - File: :file:`create_excitations.irp.f` - - - - - - - .. c:function:: set_natural_mos .. code:: text diff --git a/docs/source/modules/dft_keywords.rst b/docs/source/modules/dft_keywords.rst new file mode 100644 index 00000000..abe0c071 --- /dev/null +++ b/docs/source/modules/dft_keywords.rst @@ -0,0 +1,48 @@ +.. _dft_keywords: + +.. program:: dft_keywords + +.. default-role:: option + +============ +DFT Keywords +============ + +This module contains all keywords which are related to a DFT calculation + + + + + +EZFIO parameters +---------------- + +.. option:: exchange_functional + + name of the exchange functional + + Default: short_range_LDA + +.. option:: correlation_functional + + name of the correlation functional + + Default: short_range_LDA + +.. option:: HF_exchange + + Percentage of HF exchange in the DFT model + + Default: 0. + +.. option:: density_for_dft + + Type of density used for DFT calculation. If WFT it uses the density of the WFT stored in terms of determinants. If input_density it uses the one-body dm stored in data_.../ . If damping_rs_dft it uses the damping density between WFT and input_density + + Default: WFT + +.. option:: damping_for_rs_dft + + damping factor for the density used in RSFT. + + Default: 0.5 diff --git a/docs/source/modules/dft_utils_one_body.rst b/docs/source/modules/dft_utils_one_body.rst new file mode 100644 index 00000000..e620ff35 --- /dev/null +++ b/docs/source/modules/dft_utils_one_body.rst @@ -0,0 +1,19 @@ +.. _dft_utils_one_body: + +.. program:: dft_utils_one_body + +.. default-role:: option + +=========== +RSDFT_Utils +=========== + +Needed Modules +============== +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. +Documentation +============= +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + diff --git a/docs/source/modules/fci.rst b/docs/source/modules/fci.rst index 9cb5da3e..5b4e1bad 100644 --- a/docs/source/modules/fci.rst +++ b/docs/source/modules/fci.rst @@ -250,15 +250,15 @@ Subroutines / functions -.. c:function:: fci_zmq +.. c:function:: fci .. code:: text - subroutine fci_zmq + subroutine fci File: :file:`fci.irp.f` - + Selected Full Configuration Interaction. @@ -390,6 +390,20 @@ Subroutines / functions +.. c:function:: pt2 + + .. code:: text + + subroutine pt2 + + File: :file:`pt2.irp.f` + + Second order perturbative correction to the wave function contained in the EZFIO directory. + + + + + .. c:function:: pt2_collector .. code:: text @@ -446,20 +460,6 @@ Subroutines / functions -.. c:function:: pt2_stoch - - .. code:: text - - subroutine pt2_stoch - - File: :file:`pt2.irp.f` - - - - - - - .. c:function:: pull_pt2_results .. code:: text diff --git a/docs/source/modules/fouridx.rst b/docs/source/modules/fouridx.rst deleted file mode 100644 index b2981147..00000000 --- a/docs/source/modules/fouridx.rst +++ /dev/null @@ -1,31 +0,0 @@ -.. _fouridx: - -.. program:: fouridx - -.. default-role:: option - -======= -FourIdx -======= - -Four-index transformation. - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: four_idx - - .. code:: text - - subroutine four_idx - - File: :file:`Four_idx_transform.irp.f` - - 4-index transformation from AO to MO integrals - - diff --git a/docs/source/modules/mo_basis.rst b/docs/source/modules/mo_basis.rst index 73c91e1f..ffee31cb 100644 --- a/docs/source/modules/mo_basis.rst +++ b/docs/source/modules/mo_basis.rst @@ -196,6 +196,48 @@ Subroutines / functions +.. c:function:: give_all_mos_and_grad_and_lapl_at_r + + .. code:: text + + subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array) + + File: :file:`mos_in_r.irp.f` + + + + + + + +.. c:function:: give_all_mos_and_grad_at_r + + .. code:: text + + subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array) + + File: :file:`mos_in_r.irp.f` + + + + + + + +.. c:function:: give_all_mos_at_r + + .. code:: text + + subroutine give_all_mos_at_r(r,mos_array) + + File: :file:`mos_in_r.irp.f` + + + + + + + .. c:function:: mix_mo_jk .. code:: text diff --git a/docs/source/modules/moguess.rst b/docs/source/modules/mo_guess.rst similarity index 97% rename from docs/source/modules/moguess.rst rename to docs/source/modules/mo_guess.rst index ddf72da5..4aad0e54 100644 --- a/docs/source/modules/moguess.rst +++ b/docs/source/modules/mo_guess.rst @@ -1,6 +1,6 @@ -.. _moguess: +.. _mo_guess: -.. program:: moguess +.. program:: mo_guess .. default-role:: option diff --git a/docs/source/modules/integrals_bielec.rst b/docs/source/modules/mo_two_e_integrals.rst similarity index 57% rename from docs/source/modules/integrals_bielec.rst rename to docs/source/modules/mo_two_e_integrals.rst index 34495fb7..0e070336 100644 --- a/docs/source/modules/integrals_bielec.rst +++ b/docs/source/modules/mo_two_e_integrals.rst @@ -1,6 +1,6 @@ -.. _integrals_bielec: +.. _mo_two_e_integrals: -.. program:: integrals_bielec +.. program:: mo_two_e_integrals .. default-role:: option @@ -37,18 +37,12 @@ EZFIO parameters Default: None -.. option:: disk_access_ao_integrals +.. option:: disk_access_mo_integrals_erf - Read/Write |AO| integrals from/to disk [ Write | Read | None ] + Read/Write MO integrals with the long range interaction from/to disk [ Write | Read | None ] Default: None -.. option:: ao_integrals_threshold - - If | (pq|rs) | < `ao_integrals_threshold` then (pq|rs) is zero - - Default: 1.e-15 - .. option:: mo_integrals_threshold If | | < `mo_integrals_threshold` then is zero @@ -73,97 +67,11 @@ EZFIO parameters Default: False -.. option:: do_direct_integrals - - Compute integrals on the fly (very slow, only for debugging) - - Default: False - Providers --------- -.. c:var:: ao_bielec_integral_schwartz - - .. code:: text - - double precision, allocatable :: ao_bielec_integral_schwartz (ao_num,ao_num) - - File: :file:`ao_bi_integrals.irp.f` - - Needed to compute Schwartz inequalities - - - - -.. c:var:: ao_bielec_integrals_in_map - - .. code:: text - - logical :: ao_bielec_integrals_in_map - - File: :file:`ao_bi_integrals.irp.f` - - Map of Atomic integrals i(r1) j(r2) 1/r12 k(r1) l(r2) - - - - -.. c:var:: ao_integrals_cache - - .. code:: text - - double precision, allocatable :: ao_integrals_cache (0:64*64*64*64) - - File: :file:`map_integrals.irp.f` - - Cache of AO integrals for fast access - - - - -.. c:var:: ao_integrals_cache_max - - .. code:: text - - integer :: ao_integrals_cache_min - integer :: ao_integrals_cache_max - - File: :file:`map_integrals.irp.f` - - Min and max values of the AOs for which the integrals are in the cache - - - - -.. c:var:: ao_integrals_cache_min - - .. code:: text - - integer :: ao_integrals_cache_min - integer :: ao_integrals_cache_max - - File: :file:`map_integrals.irp.f` - - Min and max values of the AOs for which the integrals are in the cache - - - - -.. c:var:: ao_integrals_map - - .. code:: text - - type(map_type) :: ao_integrals_map - - File: :file:`map_integrals.irp.f` - - AO integrals - - - - .. c:var:: big_array_coulomb_integrals .. code:: text @@ -178,6 +86,20 @@ Providers +.. c:var:: big_array_coulomb_integrals_erf + + .. code:: text + + double precision, allocatable :: big_array_coulomb_integrals_erf (mo_tot_num,mo_tot_num,mo_tot_num) + double precision, allocatable :: big_array_exchange_integrals_erf (mo_tot_num,mo_tot_num,mo_tot_num) + + File: :file:`integrals_3_index.irp.f` + + + + + + .. c:var:: big_array_exchange_integrals .. code:: text @@ -192,6 +114,20 @@ Providers +.. c:var:: big_array_exchange_integrals_erf + + .. code:: text + + double precision, allocatable :: big_array_coulomb_integrals_erf (mo_tot_num,mo_tot_num,mo_tot_num) + double precision, allocatable :: big_array_exchange_integrals_erf (mo_tot_num,mo_tot_num,mo_tot_num) + + File: :file:`integrals_3_index.irp.f` + + + + + + .. c:var:: core_energy .. code:: text @@ -218,123 +154,16 @@ Providers -.. c:var:: gauleg_t2 +.. c:var:: insert_into_mo_integrals_erf_map .. code:: text - double precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) - double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2) + subroutine insert_into_mo_integrals_erf_map(n_integrals, & + buffer_i, buffer_values, thr) - File: :file:`gauss_legendre.irp.f` + File: :file:`map_integrals_erf.irp.f` - t_w(i,1,k) = w(i) t_w(i,2,k) = t(i) - - - - -.. c:var:: gauleg_w - - .. code:: text - - double precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) - double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2) - - File: :file:`gauss_legendre.irp.f` - - t_w(i,1,k) = w(i) t_w(i,2,k) = t(i) - - - - -.. c:var:: general_primitive_integral - - .. code:: text - - double precision function general_primitive_integral(dim, & - P_new,P_center,fact_p,p,p_inv,iorder_p, & - Q_new,Q_center,fact_q,q,q_inv,iorder_q) - - File: :file:`ao_bi_integrals.irp.f` - - Computes the integral where p,q,r,s are Gaussian primitives - - - - -.. c:var:: i_x1_new - - .. code:: text - - recursive subroutine I_x1_new(a,c,B_10,B_01,B_00,res,n_pt) - - File: :file:`ao_bi_integrals.irp.f` - - recursive function involved in the bielectronic integral - - - - -.. c:var:: i_x1_pol_mult_a1 - - .. code:: text - - recursive subroutine I_x1_pol_mult_a1(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) - - File: :file:`ao_bi_integrals.irp.f` - - recursive function involved in the bielectronic integral - - - - -.. c:var:: i_x1_pol_mult_a2 - - .. code:: text - - recursive subroutine I_x1_pol_mult_a2(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) - - File: :file:`ao_bi_integrals.irp.f` - - recursive function involved in the bielectronic integral - - - - -.. c:var:: i_x1_pol_mult_recurs - - .. code:: text - - recursive subroutine I_x1_pol_mult_recurs(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) - - File: :file:`ao_bi_integrals.irp.f` - - recursive function involved in the bielectronic integral - - - - -.. c:var:: i_x2_new - - .. code:: text - - recursive subroutine I_x2_new(c,B_10,B_01,B_00,res,n_pt) - - File: :file:`ao_bi_integrals.irp.f` - - recursive function involved in the bielectronic integral - - - - -.. c:var:: i_x2_pol_mult - - .. code:: text - - recursive subroutine I_x2_pol_mult(c,B_10,B_01,B_00,C_00,D_00,d,nd,dim) - - File: :file:`ao_bi_integrals.irp.f` - - recursive function involved in the bielectronic integral + Create new entry into MO map, or accumulate in an existing entry @@ -353,6 +182,96 @@ Providers +.. c:var:: mo_bielec_integral_erf_jj + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_erf_jj (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_exchange (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_anti (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + 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 + + + + +.. c:var:: mo_bielec_integral_erf_jj_anti + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_erf_jj (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_exchange (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_anti (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + 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 + + + + +.. c:var:: mo_bielec_integral_erf_jj_anti_from_ao + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_erf_jj_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + 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 + + + + +.. c:var:: mo_bielec_integral_erf_jj_exchange + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_erf_jj (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_exchange (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_anti (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + 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 + + + + +.. c:var:: mo_bielec_integral_erf_jj_exchange_from_ao + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_erf_jj_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + 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 + + + + +.. c:var:: mo_bielec_integral_erf_jj_from_ao + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_erf_jj_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_erf_jj_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + 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 + + + + .. c:var:: mo_bielec_integral_jj .. code:: text @@ -488,6 +407,19 @@ Providers +.. c:var:: mo_bielec_integrals_erf_in_map + + .. code:: text + + logical :: mo_bielec_integrals_erf_in_map + + File: :file:`mo_bi_integrals_erf.irp.f` + + If True, the map of MO bielectronic integrals is provided + + + + .. c:var:: mo_bielec_integrals_in_map .. code:: text @@ -578,6 +510,60 @@ Providers +.. c:var:: mo_integrals_erf_cache + + .. code:: text + + double precision, allocatable :: mo_integrals_erf_cache (0:64*64*64*64) + + File: :file:`map_integrals_erf.irp.f` + + Cache of MO integrals for fast access + + + + +.. c:var:: mo_integrals_erf_cache_max + + .. code:: text + + integer :: mo_integrals_erf_cache_min + integer :: mo_integrals_erf_cache_max + + File: :file:`map_integrals_erf.irp.f` + + Min and max values of the MOs for which the integrals are in the cache + + + + +.. c:var:: mo_integrals_erf_cache_min + + .. code:: text + + integer :: mo_integrals_erf_cache_min + integer :: mo_integrals_erf_cache_max + + File: :file:`map_integrals_erf.irp.f` + + Min and max values of the MOs for which the integrals are in the cache + + + + +.. c:var:: mo_integrals_erf_map + + .. code:: text + + type(map_type) :: mo_integrals_erf_map + + File: :file:`map_integrals_erf.irp.f` + + MO integrals + + + + .. c:var:: mo_integrals_map .. code:: text @@ -591,50 +577,30 @@ Providers -.. c:var:: read_ao_integrals - - .. code:: text - - logical :: read_ao_integrals - logical :: read_mo_integrals - logical :: write_ao_integrals - logical :: write_mo_integrals - - File: :file:`read_write.irp.f` - - One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals - - - - .. c:var:: read_mo_integrals .. code:: text - logical :: read_ao_integrals logical :: read_mo_integrals - logical :: write_ao_integrals logical :: write_mo_integrals File: :file:`read_write.irp.f` - One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals + Flag to read or write the |MO| integrals -.. c:var:: write_ao_integrals +.. c:var:: read_mo_integrals_erf .. code:: text - logical :: read_ao_integrals - logical :: read_mo_integrals - logical :: write_ao_integrals - logical :: write_mo_integrals + logical :: read_mo_integrals_erf + logical :: write_mo_integrals_erf File: :file:`read_write.irp.f` - One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals + Flag to read or write the |MO| erf integrals @@ -643,14 +609,26 @@ Providers .. code:: text - logical :: read_ao_integrals logical :: read_mo_integrals - logical :: write_ao_integrals logical :: write_mo_integrals File: :file:`read_write.irp.f` - One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals + Flag to read or write the |MO| integrals + + + + +.. c:var:: write_mo_integrals_erf + + .. code:: text + + logical :: read_mo_integrals_erf + logical :: write_mo_integrals_erf + + File: :file:`read_write.irp.f` + + Flag to read or write the |MO| erf integrals @@ -674,6 +652,20 @@ Subroutines / functions +.. c:function:: add_integrals_to_map_erf + + .. code:: text + + subroutine add_integrals_to_map_erf(mask_ijkl) + + File: :file:`mo_bi_integrals_erf.irp.f` + + Adds integrals to tha MO map according to some bitmask + + + + + .. c:function:: add_integrals_to_map_no_exit_34 .. code:: text @@ -702,141 +694,15 @@ Subroutines / functions -.. c:function:: ao_bielec_integral +.. c:function:: clear_mo_erf_map .. code:: text - double precision function ao_bielec_integral(i,j,k,l) + subroutine clear_mo_erf_map - File: :file:`ao_bi_integrals.irp.f` + File: :file:`mo_bi_integrals_erf.irp.f` - integral of the AO basis or (ij|kl) i(r1) j(r1) 1/r12 k(r2) l(r2) - - - - - -.. c:function:: ao_bielec_integral_schwartz_accel - - .. code:: text - - double precision function ao_bielec_integral_schwartz_accel(i,j,k,l) - - File: :file:`ao_bi_integrals.irp.f` - - integral of the AO basis or (ij|kl) i(r1) j(r1) 1/r12 k(r2) l(r2) - - - - - -.. c:function:: ao_bielec_integrals_in_map_collector - - .. code:: text - - subroutine ao_bielec_integrals_in_map_collector(zmq_socket_pull) - - File: :file:`ao_bielec_integrals_in_map_slave.irp.f` - - Collects results from the AO integral calculation - - - - - -.. c:function:: ao_bielec_integrals_in_map_slave - - .. code:: text - - subroutine ao_bielec_integrals_in_map_slave(thread,iproc) - - File: :file:`ao_bielec_integrals_in_map_slave.irp.f` - - Computes a buffer of integrals - - - - - -.. c:function:: ao_bielec_integrals_in_map_slave_inproc - - .. code:: text - - subroutine ao_bielec_integrals_in_map_slave_inproc(i) - - File: :file:`ao_bielec_integrals_in_map_slave.irp.f` - - Computes a buffer of integrals. i is the ID of the current thread. - - - - - -.. c:function:: ao_bielec_integrals_in_map_slave_tcp - - .. code:: text - - subroutine ao_bielec_integrals_in_map_slave_tcp(i) - - File: :file:`ao_bielec_integrals_in_map_slave.irp.f` - - Computes a buffer of integrals. i is the ID of the current thread. - - - - - -.. c:function:: ao_l4 - - .. code:: text - - integer function ao_l4(i,j,k,l) - - File: :file:`ao_bi_integrals.irp.f` - - Computes the product of l values of i,j,k,and l - - - - - -.. c:function:: bielec_integrals_index - - .. code:: text - - subroutine bielec_integrals_index(i,j,k,l,i1) - - File: :file:`map_integrals.irp.f` - - - - - - - -.. c:function:: bielec_integrals_index_reverse - - .. code:: text - - subroutine bielec_integrals_index_reverse(i,j,k,l,i1) - - File: :file:`map_integrals.irp.f` - - - - - - - -.. c:function:: clear_ao_map - - .. code:: text - - subroutine clear_ao_map - - File: :file:`map_integrals.irp.f` - - Frees the memory of the AO map + Frees the memory of the MO map @@ -856,141 +722,15 @@ Subroutines / functions -.. c:function:: compute_ao_bielec_integrals - - .. code:: text - - subroutine compute_ao_bielec_integrals(j,k,l,sze,buffer_value) - - File: :file:`ao_bi_integrals.irp.f` - - Compute AO 1/r12 integrals for all i and fixed j,k,l - - - - - -.. c:function:: compute_ao_integrals_jl - - .. code:: text - - subroutine compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value) - - File: :file:`ao_bi_integrals.irp.f` - - Parallel client for AO integrals - - - - - -.. c:function:: dump_ao_integrals - - .. code:: text - - subroutine dump_ao_integrals(filename) - - File: :file:`map_integrals.irp.f_template_694` - - Save to disk the $ao integrals - - - - - .. c:function:: dump_mo_integrals .. code:: text subroutine dump_mo_integrals(filename) - File: :file:`map_integrals.irp.f_template_694` - - Save to disk the $ao integrals - - - - - -.. c:function:: eri - - .. code:: text - - double precision function ERI(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) - - File: :file:`ao_bi_integrals.irp.f` - - 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) primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2) - - - - - -.. c:function:: gauleg - - .. code:: text - - subroutine gauleg(x1,x2,x,w,n) - - File: :file:`gauss_legendre.irp.f` - - Gauss-Legendre - - - - - -.. c:function:: get_ao_bielec_integral - - .. code:: text - - double precision function get_ao_bielec_integral(i,j,k,l,map) result(result) - File: :file:`map_integrals.irp.f` - Gets one AO bi-electronic integral from the AO map - - - - - -.. c:function:: get_ao_bielec_integrals - - .. code:: text - - subroutine get_ao_bielec_integrals(j,k,l,sze,out_val) - - File: :file:`map_integrals.irp.f` - - Gets multiple AO bi-electronic integral from the AO map . All i are retrieved for j,k,l fixed. - - - - - -.. c:function:: get_ao_bielec_integrals_non_zero - - .. code:: text - - subroutine get_ao_bielec_integrals_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int) - - File: :file:`map_integrals.irp.f` - - Gets multiple AO bi-electronic integral from the AO map . All non-zero i are retrieved for j,k,l fixed. - - - - - -.. c:function:: get_ao_map_size - - .. code:: text - - function get_ao_map_size() - - File: :file:`map_integrals.irp.f` - - Returns the number of elements in the AO map + Save to disk the |MO| integrals @@ -1010,6 +750,20 @@ Subroutines / functions +.. c:function:: get_mo_bielec_integral_erf + + .. code:: text + + double precision function get_mo_bielec_integral_erf(i,j,k,l,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns one integral in the MO basis + + + + + .. c:function:: get_mo_bielec_integrals .. code:: text @@ -1038,6 +792,76 @@ Subroutines / functions +.. c:function:: get_mo_bielec_integrals_erf + + .. code:: text + + subroutine get_mo_bielec_integrals_erf(j,k,l,sze,out_val,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals in the MO basis, all i for j,k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_erf_coulomb_ii + + .. code:: text + + subroutine get_mo_bielec_integrals_erf_coulomb_ii(k,l,sze,out_val,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) for k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_erf_exch_ii + + .. code:: text + + subroutine get_mo_bielec_integrals_erf_exch_ii(k,l,sze,out_val,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) for k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_erf_i1j1 + + .. code:: text + + subroutine get_mo_bielec_integrals_erf_i1j1(k,l,sze,out_array,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals in the MO basis, all i(1)j(1) erf(mu_erf * r12) /r12 k(2)l(2) i, j for k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_erf_ij + + .. code:: text + + subroutine get_mo_bielec_integrals_erf_ij(k,l,sze,out_array,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals in the MO basis, all i(1)j(2) 1/r12 k(1)l(2) i, j for k,l fixed. + + + + + .. c:function:: get_mo_bielec_integrals_exch_ii .. code:: text @@ -1066,6 +890,20 @@ Subroutines / functions +.. c:function:: get_mo_erf_map_size + + .. code:: text + + integer*8 function get_mo_erf_map_size() + + File: :file:`map_integrals_erf.irp.f` + + Return the number of elements in the MO map + + + + + .. c:function:: get_mo_map_size .. code:: text @@ -1080,83 +918,27 @@ Subroutines / functions -.. c:function:: give_polynom_mult_center_x - - .. code:: text - - subroutine give_polynom_mult_center_x(P_center,Q_center,a_x,d_x,p,q,n_pt_in,pq_inv,pq_inv_2,p10_1,p01_1,p10_2,p01_2,d,n_pt_out) - - File: :file:`ao_bi_integrals.irp.f` - - 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) - - - - - -.. c:function:: i_x1_pol_mult - - .. code:: text - - subroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) - - File: :file:`ao_bi_integrals.irp.f` - - recursive function involved in the bielectronic integral - - - - - -.. c:function:: insert_into_ao_integrals_map - - .. code:: text - - subroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values) - - File: :file:`map_integrals.irp.f` - - Create new entry into AO map - - - - - -.. c:function:: integrale_new - - .. code:: text - - subroutine integrale_new(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt) - - File: :file:`ao_bi_integrals.irp.f` - - 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) - - - - - -.. c:function:: load_ao_integrals - - .. code:: text - - integer function load_ao_integrals(filename) - - File: :file:`map_integrals.irp.f_template_694` - - Read from disk the $ao integrals - - - - - .. c:function:: load_mo_integrals .. code:: text integer function load_mo_integrals(filename) - File: :file:`map_integrals.irp.f_template_694` + File: :file:`map_integrals.irp.f` + + Read from disk the |MO| integrals + + + + + +.. c:function:: load_mo_integrals_erf + + .. code:: text + + integer function load_mo_integrals_erf(filename) + + File: :file:`map_integrals_erf.irp.f` Read from disk the $ao integrals @@ -1178,6 +960,34 @@ Subroutines / functions +.. c:function:: mo_bielec_integral_erf + + .. code:: text + + double precision function mo_bielec_integral_erf(i,j,k,l) + + File: :file:`map_integrals_erf.irp.f` + + Returns one integral in the MO basis + + + + + +.. c:function:: mo_bielec_integrals_erf_index + + .. code:: text + + subroutine mo_bielec_integrals_erf_index(i,j,k,l,i1) + + File: :file:`mo_bi_integrals_erf.irp.f` + + Computes an unique index for i,j,k,l integrals + + + + + .. c:function:: mo_bielec_integrals_index .. code:: text @@ -1192,28 +1002,42 @@ Subroutines / functions -.. c:function:: n_pt_sup +.. c:function:: provide_all_mo_integrals_erf .. code:: text - integer function n_pt_sup(a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) + subroutine provide_all_mo_integrals_erf - File: :file:`ao_bi_integrals.irp.f` + File: :file:`mo_bi_integrals_erf.irp.f` - 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) + -.. c:function:: push_integrals +.. c:function:: save_erf_bi_elec_integrals_mo .. code:: text - subroutine push_integrals(zmq_socket_push, n_integrals, buffer_i, buffer_value, task_id) + subroutine save_erf_bi_elec_integrals_mo - File: :file:`ao_bielec_integrals_in_map_slave.irp.f` + File: :file:`routines_save_integrals_erf.irp.f` - Push integrals in the push socket + + + + + + +.. c:function:: save_erf_bielec_ints_mo_into_ints_mo + + .. code:: text + + subroutine save_erf_bielec_ints_mo_into_ints_mo + + File: :file:`routines_save_integrals_erf.irp.f` + + diff --git a/docs/source/modules/mp2.rst b/docs/source/modules/mp2.rst deleted file mode 100644 index 518dcc9c..00000000 --- a/docs/source/modules/mp2.rst +++ /dev/null @@ -1,21 +0,0 @@ -.. _mp2: - -.. program:: mp2 - -.. default-role:: option - -========== -MP2 Module -========== - -Computes the |MP2| energy. - - - -EZFIO parameters ----------------- - -.. option:: energy - - |MP2| energy - diff --git a/docs/source/modules/mrcc.rst b/docs/source/modules/mrcc.rst index aa4ef515..fdd9db96 100644 --- a/docs/source/modules/mrcc.rst +++ b/docs/source/modules/mrcc.rst @@ -288,6 +288,20 @@ Subroutines / functions +.. c:function:: mrcc + + .. code:: text + + subroutine mrcc + + File: :file:`mrcc.irp.f` + + Multi-reference Coulped Cluster + + + + + .. c:function:: provide_all .. code:: text @@ -330,20 +344,6 @@ Subroutines / functions -.. c:function:: shifted_bk - - .. code:: text - - subroutine shifted_bk - - File: :file:`mrcc.irp.f` - - TODO - - - - - .. c:function:: shifted_bk_slave .. code:: text @@ -352,6 +352,6 @@ Subroutines / functions File: :file:`mrcc_slave.irp.f` - Helper program to compute the dress in distributed mode. + Helper program to compute the dressing in distributed mode. diff --git a/docs/source/modules/nuclei.rst b/docs/source/modules/nuclei.rst index 033e62c9..785b5e99 100644 --- a/docs/source/modules/nuclei.rst +++ b/docs/source/modules/nuclei.rst @@ -196,6 +196,19 @@ Providers +.. c:var:: nucl_dist_inv + + .. code:: text + + double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num) + + File: :file:`nuclei.irp.f` + + Inverse of the distance between nucleus I and nucleus J + + + + .. c:var:: nucl_dist_vec_x .. code:: text @@ -260,19 +273,6 @@ Providers -.. c:var:: positive_charge_barycentre - - .. code:: text - - double precision, allocatable :: positive_charge_barycentre (3) - - File: :file:`nuclei.irp.f` - - Centroid of the positive charges - - - - .. c:var:: slater_bragg_radii .. code:: text diff --git a/docs/source/modules/perturbation.rst b/docs/source/modules/perturbation.rst index 283c4e61..3226f126 100644 --- a/docs/source/modules/perturbation.rst +++ b/docs/source/modules/perturbation.rst @@ -476,7 +476,7 @@ Subroutines / functions subroutine pt2_decontracted (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - File: :file:`pt2_equations.irp.f_template_413` + File: :file:`pt2_equations.irp.f_template_412` @@ -490,7 +490,7 @@ Subroutines / functions subroutine pt2_dummy (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - File: :file:`pt2_equations.irp.f_template_413` + File: :file:`pt2_equations.irp.f_template_412` Dummy perturbation to add all connected determinants. @@ -504,7 +504,7 @@ Subroutines / functions subroutine pt2_epstein_nesbet (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - File: :file:`pt2_equations.irp.f_template_413` + File: :file:`pt2_equations.irp.f_template_412` compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution for the various N_st states. @@ -522,7 +522,7 @@ Subroutines / functions subroutine pt2_epstein_nesbet_2x2 (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - File: :file:`pt2_equations.irp.f_template_413` + File: :file:`pt2_equations.irp.f_template_412` compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution for the various N_st states. @@ -540,7 +540,7 @@ Subroutines / functions subroutine pt2_epstein_nesbet_2x2_no_ci_diag(electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - File: :file:`pt2_equations.irp.f_template_413` + File: :file:`pt2_equations.irp.f_template_412` compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution for the various N_st states. @@ -576,7 +576,7 @@ Subroutines / functions subroutine pt2_moller_plesset (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - File: :file:`pt2_equations.irp.f_template_413` + File: :file:`pt2_equations.irp.f_template_412` compute the standard Moller-Plesset perturbative first order coefficient and second order energetic contribution for the various n_st states. @@ -594,7 +594,7 @@ Subroutines / functions subroutine pt2_moller_plesset_general (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - File: :file:`pt2_equations.irp.f_template_413` + File: :file:`pt2_equations.irp.f_template_412` compute the general Moller-Plesset perturbative first order coefficient and second order energetic contribution for the various n_st states. @@ -612,7 +612,7 @@ Subroutines / functions subroutine pt2_qdpt (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - File: :file:`pt2_equations.irp.f_template_413` + File: :file:`pt2_equations.irp.f_template_412` compute the QDPT first order coefficient and second order energetic contribution for the various N_st states. diff --git a/docs/source/modules/selectors_full.rst b/docs/source/modules/selectors_full.rst index 5f46869b..b28cb9a9 100644 --- a/docs/source/modules/selectors_full.rst +++ b/docs/source/modules/selectors_full.rst @@ -57,3 +57,16 @@ Providers Determinants on which we apply for perturbation. + + +.. c:var:: threshold_selectors + + .. code:: text + + double precision :: threshold_selectors + + File: :file:`selectors.irp.f` + + Thresholds on selectors (fraction of the square of the norm) + + diff --git a/docs/source/modules/single_ref_method.rst b/docs/source/modules/single_ref_method.rst new file mode 100644 index 00000000..326997e2 --- /dev/null +++ b/docs/source/modules/single_ref_method.rst @@ -0,0 +1,85 @@ +.. _single_ref_method: + +.. program:: single_ref_method + +.. default-role:: option + +=============== +SingleDetMethod +=============== + +Include this module for single reference methods. +Using this module, the only generator determinant is the Hartree-Fock determinant. + + + + +Providers +--------- + + +.. c:var:: n_det_generators + + .. code:: text + + integer :: n_det_generators + + File: :file:`generators.irp.f` + + For Single reference wave functions, the number of generators is 1 : the Hartree-Fock determinant + + + + +.. c:var:: psi_coef_generators + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) + + File: :file:`generators.irp.f` + + For Single reference wave functions, the generator is the Hartree-Fock determinant + + + + +.. c:var:: psi_det_generators + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) + + File: :file:`generators.irp.f` + + For Single reference wave functions, the generator is the Hartree-Fock determinant + + + + +.. c:var:: select_max + + .. code:: text + + double precision, allocatable :: select_max (1) + + File: :file:`generators.irp.f` + + Memo to skip useless selectors + + + + +.. c:var:: size_select_max + + .. code:: text + + integer :: size_select_max + + File: :file:`generators.irp.f` + + Size of select_max + + diff --git a/docs/source/modules/singlerefmethod.rst b/docs/source/modules/singlerefmethod.rst deleted file mode 100644 index ebc8d4a6..00000000 --- a/docs/source/modules/singlerefmethod.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _singlerefmethod: - -.. program:: singlerefmethod - -.. default-role:: option - -=============== -SingleDetMethod -=============== - -Include this module for single reference methods. -Using this module, the only generator determinant is the Hartree-Fock determinant. - - diff --git a/docs/source/modules/tools.rst b/docs/source/modules/tools.rst index 7308e5b5..a09f4c4a 100644 --- a/docs/source/modules/tools.rst +++ b/docs/source/modules/tools.rst @@ -25,21 +25,35 @@ Subroutines / functions File: :file:`fcidump.irp.f` - + Produce a FCIDUMP file -.. c:function:: print_mos +.. c:function:: four_idx_transform .. code:: text - subroutine print_mos + subroutine four_idx_transform + + File: :file:`four_idx_transform.irp.f` + + 4-index transformation of two-electron integrals from AO to MO integrals + + + + + +.. c:function:: molden + + .. code:: text + + subroutine molden File: :file:`molden.irp.f` - + Produce a Molden file @@ -53,7 +67,7 @@ Subroutines / functions File: :file:`save_natorb.irp.f` - + Save natural MOs into the EZFIO @@ -67,7 +81,7 @@ Subroutines / functions File: :file:`save_ortho_mos.irp.f` - + Save orthonormalized MOs in the EZFIO. @@ -101,6 +115,20 @@ Subroutines / functions +.. c:function:: write_integrals + + .. code:: text + + subroutine write_integrals + + File: :file:`write_integrals_erf.irp.f` + + Saves the bielec erf integrals into the EZFIO + + + + + .. c:function:: write_intro_gamess .. code:: text diff --git a/docs/source/programmers_guide/index_providers.rst b/docs/source/programmers_guide/index_providers.rst index d3d0246f..73c1a631 100644 --- a/docs/source/programmers_guide/index_providers.rst +++ b/docs/source/programmers_guide/index_providers.rst @@ -9,7 +9,9 @@ Index of Providers * :c:data:`active_pp_idx` * :c:data:`ao_bi_elec_integral_alpha` * :c:data:`ao_bi_elec_integral_beta` +* :c:data:`ao_bielec_integral_erf_schwartz` * :c:data:`ao_bielec_integral_schwartz` +* :c:data:`ao_bielec_integrals_erf_in_map` * :c:data:`ao_bielec_integrals_in_map` * :c:data:`ao_cart_to_sphe_coef` * :c:data:`ao_cart_to_sphe_inv` @@ -37,6 +39,10 @@ Index of Providers * :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache_max` * :c:data:`ao_integrals_cache_min` +* :c:data:`ao_integrals_erf_cache` +* :c:data:`ao_integrals_erf_cache_max` +* :c:data:`ao_integrals_erf_cache_min` +* :c:data:`ao_integrals_erf_map` * :c:data:`ao_integrals_map` * :c:data:`ao_integrals_threshold` * :c:data:`ao_kinetic_integral` @@ -77,7 +83,9 @@ Index of Providers * :c:data:`barycentric_electronic_energy` * :c:data:`bi_elec_ref_bitmask_energy` * :c:data:`big_array_coulomb_integrals` +* :c:data:`big_array_coulomb_integrals_erf` * :c:data:`big_array_exchange_integrals` +* :c:data:`big_array_exchange_integrals_erf` * :c:data:`binom` * :c:data:`binom_int` * :c:data:`binom_int_transp` @@ -116,6 +124,10 @@ Index of Providers * :c:data:`core_inact_virt_bitmask` * :c:data:`corr_e_from_1h1p` * :c:data:`correlation_energy_ratio_max` +* :c:data:`data_energy_proj` +* :c:data:`data_energy_var` +* :c:data:`data_one_body_alpha_dm_mo` +* :c:data:`data_one_body_beta_dm_mo` * :c:data:`davidson_criterion` * :c:data:`davidson_sze_max` * :c:data:`degree_max_generators` @@ -134,8 +146,10 @@ Index of Providers * :c:data:`dij` * :c:data:`dij_unique` * :c:data:`disk_access_ao_integrals` +* :c:data:`disk_access_ao_integrals_erf` * :c:data:`disk_access_ao_one_integrals` * :c:data:`disk_access_mo_integrals` +* :c:data:`disk_access_mo_integrals_erf` * :c:data:`disk_access_mo_one_integrals` * :c:data:`disk_access_nuclear_repulsion` * :c:data:`disk_based_davidson` @@ -217,6 +231,7 @@ Index of Providers * :c:data:`gen_det_ref_sorted` * :c:data:`gen_det_ref_version` * :c:data:`general_primitive_integral` +* :c:data:`general_primitive_integral_erf` * :c:data:`generators_bitmask` * :c:data:`generators_bitmask_restart` * :c:data:`give_holes_and_particles_in_active_space` @@ -270,6 +285,7 @@ Index of Providers * :c:data:`inertia_tensor_eigenvectors` * :c:data:`initialize_dress_e0_denominator` * :c:data:`initialize_pt2_e0_denominator` +* :c:data:`insert_into_mo_integrals_erf_map` * :c:data:`insert_into_mo_integrals_map` * :c:data:`inv_int` * :c:data:`inv_norm_psi_ref` @@ -301,6 +317,12 @@ Index of Providers * :c:data:`max_degree_exc` * :c:data:`max_dim_diis` * :c:data:`max_exc_pert` +* :c:data:`mo_bielec_integral_erf_jj` +* :c:data:`mo_bielec_integral_erf_jj_anti` +* :c:data:`mo_bielec_integral_erf_jj_anti_from_ao` +* :c:data:`mo_bielec_integral_erf_jj_exchange` +* :c:data:`mo_bielec_integral_erf_jj_exchange_from_ao` +* :c:data:`mo_bielec_integral_erf_jj_from_ao` * :c:data:`mo_bielec_integral_jj` * :c:data:`mo_bielec_integral_jj_anti` * :c:data:`mo_bielec_integral_jj_anti_from_ao` @@ -310,6 +332,7 @@ Index of Providers * :c:data:`mo_bielec_integral_vv_anti_from_ao` * :c:data:`mo_bielec_integral_vv_exchange_from_ao` * :c:data:`mo_bielec_integral_vv_from_ao` +* :c:data:`mo_bielec_integrals_erf_in_map` * :c:data:`mo_bielec_integrals_in_map` * :c:data:`mo_class` * :c:data:`mo_coef` @@ -325,6 +348,10 @@ Index of Providers * :c:data:`mo_integrals_cache_max_8` * :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_cache_min_8` +* :c:data:`mo_integrals_erf_cache` +* :c:data:`mo_integrals_erf_cache_max` +* :c:data:`mo_integrals_erf_cache_min` +* :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_map` * :c:data:`mo_integrals_threshold` * :c:data:`mo_kinetic_integral` @@ -351,6 +378,7 @@ Index of Providers * :c:data:`mrcc_col_shortcut` * :c:data:`mrcc_n_col` * :c:data:`mrmode` +* :c:data:`mu_erf` * :c:data:`n_act_orb` * :c:data:`n_aos_max` * :c:data:`n_cas_bitmask` @@ -409,6 +437,7 @@ Index of Providers * :c:data:`nucl_coord_transp` * :c:data:`nucl_dist` * :c:data:`nucl_dist_2` +* :c:data:`nucl_dist_inv` * :c:data:`nucl_dist_vec_x` * :c:data:`nucl_dist_vec_y` * :c:data:`nucl_dist_vec_z` @@ -431,10 +460,8 @@ Index of Providers * :c:data:`one_body_dm_mo` * :c:data:`one_body_dm_mo_alpha` * :c:data:`one_body_dm_mo_alpha_average` -* :c:data:`one_body_dm_mo_alpha_old` * :c:data:`one_body_dm_mo_beta` * :c:data:`one_body_dm_mo_beta_average` -* :c:data:`one_body_dm_mo_beta_old` * :c:data:`one_body_dm_mo_diff` * :c:data:`one_body_dm_mo_spin_index` * :c:data:`one_body_single_double_dm_mo_alpha` @@ -451,7 +478,6 @@ Index of Providers * :c:data:`perturbative_triples` * :c:data:`phases_` * :c:data:`phi_angular_integration_lebedev` -* :c:data:`positive_charge_barycentre` * :c:data:`pp_exists` * :c:data:`pseudo_dz_k` * :c:data:`pseudo_dz_k_transp` @@ -514,6 +540,8 @@ Index of Providers * :c:data:`psi_det_sorted_gen_order` * :c:data:`psi_det_sorted_order` * :c:data:`psi_energy` +* :c:data:`psi_energy_bielec` +* :c:data:`psi_energy_h_core` * :c:data:`psi_energy_with_nucl_rep` * :c:data:`psi_from_sorted_gen` * :c:data:`psi_non_cas` @@ -576,8 +604,10 @@ Index of Providers * :c:data:`qp_max_mem` * :c:data:`qp_run_address` * :c:data:`read_ao_integrals` +* :c:data:`read_ao_integrals_erf` * :c:data:`read_ao_one_integrals` * :c:data:`read_mo_integrals` +* :c:data:`read_mo_integrals_erf` * :c:data:`read_mo_one_integrals` * :c:data:`read_wf` * :c:data:`rec__quicksort` @@ -656,8 +686,10 @@ Index of Providers * :c:data:`weight_occ_pattern` * :c:data:`weights_angular_integration_lebedev` * :c:data:`write_ao_integrals` +* :c:data:`write_ao_integrals_erf` * :c:data:`write_ao_one_integrals` * :c:data:`write_mo_integrals` +* :c:data:`write_mo_integrals_erf` * :c:data:`write_mo_one_integrals` * :c:data:`zmq_context` * :c:data:`zmq_lock` @@ -677,6 +709,7 @@ Index of Subroutines/Functions * :c:func:`a_operator` * :c:func:`ac_operator` * :c:func:`add_integrals_to_map` +* :c:func:`add_integrals_to_map_erf` * :c:func:`add_integrals_to_map_no_exit_34` * :c:func:`add_integrals_to_map_three_indices` * :c:func:`add_poly` @@ -686,7 +719,13 @@ Index of Subroutines/Functions * :c:func:`alpha_callback` * :c:func:`alpha_callback_mask` * :c:func:`ao_bielec_integral` +* :c:func:`ao_bielec_integral_erf` * :c:func:`ao_bielec_integral_schwartz_accel` +* :c:func:`ao_bielec_integral_schwartz_accel_erf` +* :c:func:`ao_bielec_integrals_erf_in_map_collector` +* :c:func:`ao_bielec_integrals_erf_in_map_slave` +* :c:func:`ao_bielec_integrals_erf_in_map_slave_inproc` +* :c:func:`ao_bielec_integrals_erf_in_map_slave_tcp` * :c:func:`ao_bielec_integrals_in_map_collector` * :c:func:`ao_bielec_integrals_in_map_slave` * :c:func:`ao_bielec_integrals_in_map_slave_inproc` @@ -700,7 +739,6 @@ Index of Subroutines/Functions * :c:func:`apply_hole` * :c:func:`apply_hole_local` * :c:func:`apply_holes` -* :c:func:`apply_mono` * :c:func:`apply_particle` * :c:func:`apply_particle_local` * :c:func:`apply_particles` @@ -723,10 +761,15 @@ Index of Subroutines/Functions * :c:func:`build_fock_tmp` * :c:func:`check_mem` * :c:func:`cis` +* :c:func:`cisd` +* :c:func:`clear_ao_erf_map` * :c:func:`clear_ao_map` * :c:func:`clear_bit_to_integer` +* :c:func:`clear_mo_erf_map` * :c:func:`clear_mo_map` * :c:func:`compute_ao_bielec_integrals` +* :c:func:`compute_ao_bielec_integrals_erf` +* :c:func:`compute_ao_integrals_erf_jl` * :c:func:`compute_ao_integrals_jl` * :c:func:`connect_to_taskserver` * :c:func:`connected_to_ref` @@ -794,6 +837,7 @@ Index of Subroutines/Functions * :c:func:`dset_order_big` * :c:func:`dsort` * :c:func:`dump_ao_integrals` +* :c:func:`dump_ao_integrals_erf` * :c:func:`dump_mo_integrals` * :c:func:`end_parallel_job` * :c:func:`end_zmq_pair_socket` @@ -803,6 +847,10 @@ Index of Subroutines/Functions * :c:func:`end_zmq_to_qp_run_socket` * :c:func:`erf0` * :c:func:`eri` +* :c:func:`eri_erf` +* :c:func:`example_bitmask` +* :c:func:`example_determinants` +* :c:func:`example_determinants_psi_det` * :c:func:`exc_inf` * :c:func:`exccmp` * :c:func:`exceq` @@ -810,7 +858,7 @@ Index of Subroutines/Functions * :c:func:`extrapolate_data` * :c:func:`f_integral` * :c:func:`fact` -* :c:func:`fci_zmq` +* :c:func:`fci` * :c:func:`fcidump` * :c:func:`fill_buffer_double` * :c:func:`fill_h_apply_buffer_no_selection` @@ -821,7 +869,7 @@ Index of Subroutines/Functions * :c:func:`find_rotation` * :c:func:`find_triples_and_quadruples` * :c:func:`find_triples_and_quadruples_micro` -* :c:func:`four_idx` +* :c:func:`four_idx_transform` * :c:func:`gammln` * :c:func:`gammp` * :c:func:`gauleg` @@ -850,8 +898,12 @@ Index of Subroutines/Functions * :c:func:`get_all_spin_singles_and_doubles_n_int` * :c:func:`get_all_spin_singles_n_int` * :c:func:`get_ao_bielec_integral` +* :c:func:`get_ao_bielec_integral_erf` * :c:func:`get_ao_bielec_integrals` +* :c:func:`get_ao_bielec_integrals_erf` +* :c:func:`get_ao_bielec_integrals_erf_non_zero` * :c:func:`get_ao_bielec_integrals_non_zero` +* :c:func:`get_ao_erf_map_size` * :c:func:`get_ao_map_size` * :c:func:`get_d0` * :c:func:`get_d1` @@ -881,10 +933,17 @@ Index of Subroutines/Functions * :c:func:`get_m2` * :c:func:`get_mask_phase` * :c:func:`get_mo_bielec_integral` +* :c:func:`get_mo_bielec_integral_erf` * :c:func:`get_mo_bielec_integrals` * :c:func:`get_mo_bielec_integrals_coulomb_ii` +* :c:func:`get_mo_bielec_integrals_erf` +* :c:func:`get_mo_bielec_integrals_erf_coulomb_ii` +* :c:func:`get_mo_bielec_integrals_erf_exch_ii` +* :c:func:`get_mo_bielec_integrals_erf_i1j1` +* :c:func:`get_mo_bielec_integrals_erf_ij` * :c:func:`get_mo_bielec_integrals_exch_ii` * :c:func:`get_mo_bielec_integrals_ij` +* :c:func:`get_mo_erf_map_size` * :c:func:`get_mo_map_size` * :c:func:`get_mono_excitation` * :c:func:`get_mono_excitation_from_fock` @@ -913,6 +972,10 @@ Index of Subroutines/Functions * :c:func:`give_2p_new` * :c:func:`give_active_part_determinant` * :c:func:`give_all_aos_at_r` +* :c:func:`give_all_erf_kl_ao` +* :c:func:`give_all_mos_and_grad_and_lapl_at_r` +* :c:func:`give_all_mos_and_grad_at_r` +* :c:func:`give_all_mos_at_r` * :c:func:`give_core_inactive_part_determinant` * :c:func:`give_explicit_poly_and_gaussian` * :c:func:`give_explicit_poly_and_gaussian_double` @@ -920,6 +983,8 @@ Index of Subroutines/Functions * :c:func:`give_holes_in_inactive_space` * :c:func:`give_particles_in_virt_space` * :c:func:`give_polynom_mult_center_mono_elec` +* :c:func:`give_polynom_mult_center_mono_elec_erf` +* :c:func:`give_polynom_mult_center_mono_elec_erf_opt` * :c:func:`give_polynom_mult_center_x` * :c:func:`give_singles_and_partial_doubles_1h1p_contrib` * :c:func:`give_virt_part_determinant` @@ -994,6 +1059,13 @@ Index of Subroutines/Functions * :c:func:`h_apply_mrpt_diexcorg` * :c:func:`h_apply_mrpt_diexcp` * :c:func:`h_apply_mrpt_monoexc` +* :c:func:`h_s2_u_0_bielec_nstates_openmp` +* :c:func:`h_s2_u_0_bielec_nstates_openmp_work` +* :c:func:`h_s2_u_0_bielec_nstates_openmp_work_1` +* :c:func:`h_s2_u_0_bielec_nstates_openmp_work_2` +* :c:func:`h_s2_u_0_bielec_nstates_openmp_work_3` +* :c:func:`h_s2_u_0_bielec_nstates_openmp_work_4` +* :c:func:`h_s2_u_0_bielec_nstates_openmp_work_n_int` * :c:func:`h_s2_u_0_nstates_openmp` * :c:func:`h_s2_u_0_nstates_openmp_work` * :c:func:`h_s2_u_0_nstates_openmp_work_1` @@ -1035,6 +1107,7 @@ Index of Subroutines/Functions * :c:func:`i_s2_psi_minilist` * :c:func:`i_x1_pol_mult` * :c:func:`initialize_bitmask_to_restart_ones` +* :c:func:`insert_into_ao_integrals_erf_map` * :c:func:`insert_into_ao_integrals_map` * :c:func:`insertion_dsort` * :c:func:`insertion_dsort_big` @@ -1048,6 +1121,7 @@ Index of Subroutines/Functions * :c:func:`insertion_sort_big` * :c:func:`int_gaus_pol` * :c:func:`integrale_new` +* :c:func:`integrale_new_erf` * :c:func:`is_a_1h` * :c:func:`is_a_1h1p` * :c:func:`is_a_1h2p` @@ -1073,7 +1147,9 @@ Index of Subroutines/Functions * :c:func:`lapack_diagd` * :c:func:`list_to_bitstring` * :c:func:`load_ao_integrals` +* :c:func:`load_ao_integrals_erf` * :c:func:`load_mo_integrals` +* :c:func:`load_mo_integrals_erf` * :c:func:`logfact` * :c:func:`lowercase` * :c:func:`make_s2_eigenfunction` @@ -1088,17 +1164,23 @@ Index of Subroutines/Functions * :c:func:`mo_as_svd_vectors_of_mo_matrix` * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` * :c:func:`mo_bielec_integral` +* :c:func:`mo_bielec_integral_erf` +* :c:func:`mo_bielec_integrals_erf_index` * :c:func:`mo_bielec_integrals_index` * :c:func:`mo_to_ao` * :c:func:`modify_bitmasks_for_hole` * :c:func:`modify_bitmasks_for_hole_in_out` * :c:func:`modify_bitmasks_for_particl` +* :c:func:`molden` * :c:func:`mpi_print` +* :c:func:`mrcc` * :c:func:`mrcc_dress` * :c:func:`mrpt_dress` * :c:func:`multiply_poly` * :c:func:`n_pt_sup` * :c:func:`nai_pol_mult` +* :c:func:`nai_pol_mult_erf` +* :c:func:`nai_pol_mult_erf_ao` * :c:func:`new_parallel_job` * :c:func:`new_zmq_pair_socket` * :c:func:`new_zmq_pull_socket` @@ -1152,11 +1234,12 @@ Index of Subroutines/Functions * :c:func:`print_generators_bitmasks_particles` * :c:func:`print_generators_bitmasks_particles_for_one_generator` * :c:func:`print_memory_usage` -* :c:func:`print_mos` * :c:func:`print_spindet` * :c:func:`print_summary` * :c:func:`provide_all` +* :c:func:`provide_all_mo_integrals_erf` * :c:func:`provide_everything` +* :c:func:`pt2` * :c:func:`pt2_collector` * :c:func:`pt2_decontracted` * :c:func:`pt2_dummy` @@ -1170,7 +1253,6 @@ Index of Subroutines/Functions * :c:func:`pt2_moller_plesset_general` * :c:func:`pt2_qdpt` * :c:func:`pt2_slave_inproc` -* :c:func:`pt2_stoch` * :c:func:`pull_dress_results` * :c:func:`pull_pt2` * :c:func:`pull_pt2_results` @@ -1201,6 +1283,8 @@ Index of Subroutines/Functions * :c:func:`rinteg` * :c:func:`rintgauss` * :c:func:`roothaan_hall_scf` +* :c:func:`routine` +* :c:func:`routine_example_psi_det` * :c:func:`run` * :c:func:`run_dress_slave` * :c:func:`run_dressing` @@ -1212,11 +1296,16 @@ Index of Subroutines/Functions * :c:func:`s2_u_0` * :c:func:`s2_u_0_nstates` * :c:func:`sabpartial` +* :c:func:`save_erf_bi_elec_integrals_ao` +* :c:func:`save_erf_bi_elec_integrals_mo` +* :c:func:`save_erf_bielec_ints_ao_into_ints_ao` +* :c:func:`save_erf_bielec_ints_mo_into_ints_mo` * :c:func:`save_iterations` * :c:func:`save_mos` * :c:func:`save_mos_truncated` * :c:func:`save_natorb` * :c:func:`save_natural_mos` +* :c:func:`save_one_body_dm` * :c:func:`save_ortho_mos` * :c:func:`save_ref_determinant` * :c:func:`save_wavefunction` @@ -1238,7 +1327,6 @@ Index of Subroutines/Functions * :c:func:`set_natural_mos` * :c:func:`set_order` * :c:func:`set_order_big` -* :c:func:`shifted_bk` * :c:func:`shifted_bk_slave` * :c:func:`slave` * :c:func:`sort` @@ -1268,6 +1356,7 @@ Index of Subroutines/Functions * :c:func:`u0_h_dyall_u0` * :c:func:`u0_h_dyall_u0_no_exchange` * :c:func:`u_0_h_u_0` +* :c:func:`u_0_h_u_0_bielec` * :c:func:`u_0_s2_u_0` * :c:func:`u_dot_u` * :c:func:`u_dot_v` @@ -1288,6 +1377,7 @@ Index of Subroutines/Functions * :c:func:`write_geometry` * :c:func:`write_git_log` * :c:func:`write_int` +* :c:func:`write_integrals` * :c:func:`write_intro_gamess` * :c:func:`write_mo_basis` * :c:func:`write_spindeterminants` diff --git a/ocaml/Makefile b/ocaml/Makefile index 2e7c7c9d..f88939e4 100644 --- a/ocaml/Makefile +++ b/ocaml/Makefile @@ -27,7 +27,7 @@ default: $(ALL_EXE) .gitignore tests: $(ALL_TESTS) .gitignore: $(MLFILES) $(MLIFILES) - @for i in .gitignore ezfio.ml Qptypes.ml Git.ml qptypes_generator.byte _build $(ALL_EXE) $(ALL_TESTS) \ + @for i in .gitignore ezfio.ml element_create_db Qptypes.ml Git.ml *.byte *.native _build $(ALL_EXE) $(ALL_TESTS) \ $(patsubst %.ml,%,$(wildcard test_*.ml)) $(patsubst %.ml,%,$(wildcard qp_*.ml)) \ $(shell grep Input Input_auto_generated.ml | awk '{print $$2 ".ml"}') \ qp_edit.ml qp_edit qp_edit.native Input_auto_generated.ml;\ diff --git a/src/ao_basis/aos_transp.irp.f b/src/ao_basis/aos_transp.irp.f index f88938a2..ae6193bf 100644 --- a/src/ao_basis/aos_transp.irp.f +++ b/src/ao_basis/aos_transp.irp.f @@ -30,7 +30,7 @@ BEGIN_PROVIDER [double precision, ao_expo_ordered_transp_per_nucl, (ao_prim_num_ END_PROVIDER -BEGIN_PROVIDER [ double precision, ao_power_ordered_transp_per_nucl, (3,N_AOs_max,nucl_num) ] +BEGIN_PROVIDER [ integer, ao_power_ordered_transp_per_nucl, (3,N_AOs_max,nucl_num) ] implicit none integer :: i,j,k,l do i = 1, nucl_num diff --git a/src/ao_two_e_integrals/routines_save_integrals_erf.irp.f b/src/ao_two_e_integrals/routines_save_integrals_erf.irp.f index b813b1f4..ea6f9db8 100644 --- a/src/ao_two_e_integrals/routines_save_integrals_erf.irp.f +++ b/src/ao_two_e_integrals/routines_save_integrals_erf.irp.f @@ -4,7 +4,7 @@ subroutine save_erf_bi_elec_integrals_ao PROVIDE ao_bielec_integrals_erf_in_map call ezfio_set_work_empty(.False.) call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_erf',ao_integrals_erf_map) - call ezfio_set_integrals_bielec_disk_access_ao_integrals("Read") + call ezfio_set_ao_two_e_integrals_disk_access_ao_integrals('Read') end subroutine save_erf_bielec_ints_ao_into_ints_ao @@ -13,6 +13,6 @@ subroutine save_erf_bielec_ints_ao_into_ints_ao PROVIDE ao_bielec_integrals_erf_in_map call ezfio_set_work_empty(.False.) call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints',ao_integrals_erf_map) - call ezfio_set_integrals_bielec_disk_access_ao_integrals("Read") + call ezfio_set_ao_two_e_integrals_disk_access_ao_integrals('Read') end diff --git a/src/ao_two_e_integrals/two_e_integrals.irp.f b/src/ao_two_e_integrals/two_e_integrals.irp.f index 0374d607..72c96f7f 100644 --- a/src/ao_two_e_integrals/two_e_integrals.irp.f +++ b/src/ao_two_e_integrals/two_e_integrals.irp.f @@ -416,7 +416,7 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ] if (write_ao_integrals.and.mpi_master) then call ezfio_set_work_empty(.False.) call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints',ao_integrals_map) - call ezfio_set_integrals_bielec_disk_access_ao_integrals("Read") + call ezfio_set_ao_two_e_integrals_disk_access_ao_integrals('Read') endif END_PROVIDER @@ -585,7 +585,7 @@ end double precision function ERI(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) implicit none BEGIN_DOC - ! ATOMIC PRIMTIVE bielectronic integral between the 4 primitives :: + ! ATOMIC PRIMTIVE two-electron 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) ! primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) @@ -712,7 +712,7 @@ end recursive subroutine I_x1_new(a,c,B_10,B_01,B_00,res,n_pt) BEGIN_DOC - ! recursive function involved in the bielectronic integral + ! recursive function involved in the two-electron integral END_DOC implicit none include 'utils/constants.include.F' @@ -746,7 +746,7 @@ end recursive subroutine I_x2_new(c,B_10,B_01,B_00,res,n_pt) implicit none BEGIN_DOC - ! recursive function involved in the bielectronic integral + ! recursive function involved in the two-electron integral END_DOC include 'utils/constants.include.F' integer, intent(in) :: c, n_pt @@ -851,7 +851,7 @@ end subroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) implicit none BEGIN_DOC - ! recursive function involved in the bielectronic integral + ! recursive function involved in the two-electron integral END_DOC integer , intent(in) :: n_pt_in include 'utils/constants.include.F' @@ -885,7 +885,7 @@ end recursive subroutine I_x1_pol_mult_recurs(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) implicit none BEGIN_DOC - ! recursive function involved in the bielectronic integral + ! recursive function involved in the two-electron integral END_DOC integer , intent(in) :: n_pt_in include 'utils/constants.include.F' @@ -966,7 +966,7 @@ end recursive subroutine I_x1_pol_mult_a1(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) implicit none BEGIN_DOC - ! recursive function involved in the bielectronic integral + ! recursive function involved in the two-electron integral END_DOC integer , intent(in) :: n_pt_in include 'utils/constants.include.F' @@ -1017,7 +1017,7 @@ end recursive subroutine I_x1_pol_mult_a2(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) implicit none BEGIN_DOC - ! recursive function involved in the bielectronic integral + ! recursive function involved in the two-electron integral END_DOC integer , intent(in) :: n_pt_in include 'utils/constants.include.F' @@ -1075,7 +1075,7 @@ end recursive subroutine I_x2_pol_mult(c,B_10,B_01,B_00,C_00,D_00,d,nd,dim) implicit none BEGIN_DOC - ! recursive function involved in the bielectronic integral + ! recursive function involved in the two-electron integral END_DOC integer , intent(in) :: dim include 'utils/constants.include.F' diff --git a/src/dft_utils_on_grid/density_matrices_in_real_space.irp.f b/src/dft_utils_on_grid/density_matrices_in_real_space.irp.f index ed632ca8..888573cd 100644 --- a/src/dft_utils_on_grid/density_matrices_in_real_space.irp.f +++ b/src/dft_utils_on_grid/density_matrices_in_real_space.irp.f @@ -121,10 +121,12 @@ end r(2) = grid_points_per_atom(2,l,k,j) r(3) = grid_points_per_atom(3,l,k,j) - double precision :: dm_a,dm_b + double precision :: dm_a(N_states),dm_b(N_states) call dm_dft_alpha_beta_at_r(r,dm_a,dm_b) - one_body_dm_mo_alpha_at_grid_points(l,k,j,1) = dm_a - one_body_dm_mo_beta_at_grid_points(l,k,j,1) = dm_b + do istate=1,N_states + one_body_dm_mo_alpha_at_grid_points(l,k,j,istate) = dm_a(istate) + one_body_dm_mo_beta_at_grid_points(l,k,j,istate) = dm_b(istate) + enddo enddo enddo diff --git a/src/dft_utils_one_body/exc_sr_lda.irp.f b/src/dft_utils_one_body/exc_sr_lda.irp.f index 36162b93..8dad0e18 100644 --- a/src/dft_utils_one_body/exc_sr_lda.irp.f +++ b/src/dft_utils_one_body/exc_sr_lda.irp.f @@ -339,84 +339,84 @@ end subroutine ecorrlr(rs,z,mu,eclr) -!cc Hartree atomic units used -!cc for given density parameter rs, spin polarization z -!cc and cutoff parameter mu -!cc gives the correlation energy of the LR gas -!cc => eclr - implicit none - double precision rs,z,mu,eclr,ec,ecd,ecz - double precision pi,alpha,cf,phi - double precision g0f,dpol,d2anti,d3anti,Qrpa - double precision coe2,coe3,coe4,coe5 - double precision a1,a2,a3,a4,b0 - double precision q1a,q2a,q3a,t1a,t2a,t3a,adib -!SCD - double precision ecdd,eczd -!SCF - pi=dacos(-1.d0) - alpha=(4.d0/9.d0/pi)**(1.d0/3.d0) - cf=1.d0/alpha - - phi=((1.d0+z)**(2.d0/3.d0)+(1.d0-z)**(2.d0/3.d0))/2.d0 -!c parameters from the fit - adib = 0.784949d0 - q1a = -0.388d0 - q2a = 0.676d0 - q3a = 0.547d0 - t1a = -4.95d0 - t2a = 1.d0 - t3a = 0.31d0 - - b0=adib*rs - - d2anti=(q1a*rs+q2a*rs**2)*exp(-abs(q3a)*rs)/rs**2 - d3anti=(t1a*rs+t2a*rs**2)*exp(-abs(t3a)*rs)/rs**3 - - coe2=-3.d0/8.d0/rs**3*(1.d0-z**2)*(g0f(rs)-0.5d0) - - coe3=-(1.d0-z**2)*g0f(rs)/(sqrt(2.d0*pi)*rs**3) - - if(abs(z).eq.1.d0) then - - coe4=-9.d0/64.d0/rs**3*(dpol(rs) -cf**2*2d0**(5.d0/3.d0)/5.d0/rs**2) - coe5=-9.d0/40.d0/(sqrt(2.d0*pi)*rs**3)*dpol(rs) - - else - - coe4=-9.d0/64.d0/rs**3*(((1.d0+z)/2.d0)**2* & - dpol(rs*(2d0/(1.d0+z))**(1.d0/3.d0))+((1.d0-z)/2.d0)**2 & - *dpol(rs*(2.d0/(1.d0-z))**(1.d0/3.d0))+ & - (1.-z**2)*d2anti-cf**2/10.d0*((1.d0+z)**(8.d0/3.d0) & - +(1.-z)**(8.d0/3.d0))/rs**2) - - coe5=-9.d0/40.d0/(sqrt(2.d0*pi)*rs**3)*(((1.d0+z)/2.d0)**2 & - *dpol(rs*(2.d0/(1.d0+z))**(1.d0/3.d0))+((1.d0-z)/2.d0)**2 & - *dpol(rs*(2.d0/(1.d0-z))**(1.d0/3.d0))+(1.d0-z**2)* & - d3anti) - end if - -! call ecPW(rs,z,ec,ecd,ecz) -!SCD - call ecPW(rs,z,ec,ecd,ecz,ecdd,eczd) -!SCF - - a1=4.d0*b0**6*coe3+b0**8*coe5 - a2=4.d0*b0**6*coe2+b0**8*coe4+6.d0*b0**4*ec - a3=b0**8*coe3 - a4=b0**6*(b0**2*coe2+4.d0*ec) - - if(mu*sqrt(rs)/phi.lt.0.d0)then - print*,'phi',phi - print*,'mu ',mu - print*,'rs ',rs - pause - endif - eclr=(phi**3*Qrpa(mu*sqrt(rs)/phi)+a1*mu**3+a2*mu**4+a3*mu**5+ & - a4*mu**6+b0**8*mu**8*ec)/((1.d0+b0**2*mu**2)**4) - - return - end + !cc Hartree atomic units used + !cc for given density parameter rs, spin polarization z + !cc and cutoff parameter mu + !cc gives the correlation energy of the LR gas + !cc => eclr + implicit none + double precision rs,z,mu,eclr,ec,ecd,ecz + double precision pi,alpha,cf,phi + double precision g0f,dpol,d2anti,d3anti,Qrpa + double precision coe2,coe3,coe4,coe5 + double precision a1,a2,a3,a4,b0 + double precision q1a,q2a,q3a,t1a,t2a,t3a,adib + !SCD + double precision ecdd,eczd + !SCF + pi=dacos(-1.d0) + alpha=(4.d0/9.d0/pi)**(1.d0/3.d0) + cf=1.d0/alpha + + phi=((1.d0+z)**(2.d0/3.d0)+(1.d0-z)**(2.d0/3.d0))/2.d0 + !c parameters from the fit + adib = 0.784949d0 + q1a = -0.388d0 + q2a = 0.676d0 + q3a = 0.547d0 + t1a = -4.95d0 + t2a = 1.d0 + t3a = 0.31d0 + + b0=adib*rs + + d2anti=(q1a*rs+q2a*rs**2)*exp(-abs(q3a)*rs)/rs**2 + d3anti=(t1a*rs+t2a*rs**2)*exp(-abs(t3a)*rs)/rs**3 + + coe2=-3.d0/8.d0/rs**3*(1.d0-z**2)*(g0f(rs)-0.5d0) + + coe3=-(1.d0-z**2)*g0f(rs)/(sqrt(2.d0*pi)*rs**3) + + if(abs(z).eq.1.d0) then + + coe4=-9.d0/64.d0/rs**3*(dpol(rs) -cf**2*2d0**(5.d0/3.d0)/5.d0/rs**2) + coe5=-9.d0/40.d0/(sqrt(2.d0*pi)*rs**3)*dpol(rs) + + else + + coe4=-9.d0/64.d0/rs**3*(((1.d0+z)/2.d0)**2* & + dpol(rs*(2d0/(1.d0+z))**(1.d0/3.d0))+((1.d0-z)/2.d0)**2 & + *dpol(rs*(2.d0/(1.d0-z))**(1.d0/3.d0))+ & + (1.-z**2)*d2anti-cf**2/10.d0*((1.d0+z)**(8.d0/3.d0) & + +(1.-z)**(8.d0/3.d0))/rs**2) + + coe5=-9.d0/40.d0/(sqrt(2.d0*pi)*rs**3)*(((1.d0+z)/2.d0)**2 & + *dpol(rs*(2.d0/(1.d0+z))**(1.d0/3.d0))+((1.d0-z)/2.d0)**2 & + *dpol(rs*(2.d0/(1.d0-z))**(1.d0/3.d0))+(1.d0-z**2)* & + d3anti) + end if + + ! call ecPW(rs,z,ec,ecd,ecz) + !SCD + call ecPW(rs,z,ec,ecd,ecz,ecdd,eczd) + !SCF + + a1=4.d0*b0**6*coe3+b0**8*coe5 + a2=4.d0*b0**6*coe2+b0**8*coe4+6.d0*b0**4*ec + a3=b0**8*coe3 + a4=b0**6*(b0**2*coe2+4.d0*ec) + + if(mu*sqrt(rs)/phi.lt.0.d0)then + print*,'phi',phi + print*,'mu ',mu + print*,'rs ',rs + stop -1 + endif + eclr=(phi**3*Qrpa(mu*sqrt(rs)/phi)+a1*mu**3+a2*mu**4+a3*mu**5+ & + a4*mu**6+b0**8*mu**8*ec)/((1.d0+b0**2*mu**2)**4) + + return +end subroutine vcorrlr(rs,z,mu,vclrup,vclrdown,vclrupd,vclrdownd) !SCF diff --git a/src/mo_two_e_integrals/mo_bi_integrals_erf.irp.f b/src/mo_two_e_integrals/mo_bi_integrals_erf.irp.f index d7a5de2c..f7fed284 100644 --- a/src/mo_two_e_integrals/mo_bi_integrals_erf.irp.f +++ b/src/mo_two_e_integrals/mo_bi_integrals_erf.irp.f @@ -55,7 +55,7 @@ BEGIN_PROVIDER [ logical, mo_bielec_integrals_erf_in_map ] if (write_mo_integrals_erf) then call ezfio_set_work_empty(.False.) call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_erf',mo_integrals_erf_map) - call ezfio_set_integrals_bielec_erf_disk_access_mo_integrals_erf("Read") + call ezfio_set_mo_two_e_integrals_disk_access_mo_integrals_erf("Read") endif END_PROVIDER diff --git a/src/mo_two_e_integrals/routines_save_integrals_erf.irp.f b/src/mo_two_e_integrals/routines_save_integrals_erf.irp.f index acc8652f..f806f938 100644 --- a/src/mo_two_e_integrals/routines_save_integrals_erf.irp.f +++ b/src/mo_two_e_integrals/routines_save_integrals_erf.irp.f @@ -4,7 +4,7 @@ subroutine save_erf_bi_elec_integrals_mo PROVIDE mo_bielec_integrals_erf_in_map call ezfio_set_work_empty(.False.) call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_erf',mo_integrals_erf_map) - call ezfio_set_integrals_bielec_disk_access_mo_integrals("Read") + call ezfio_set_mo_two_e_integrals_disk_access_mo_integrals('Read') end subroutine save_erf_bielec_ints_mo_into_ints_mo @@ -13,6 +13,6 @@ subroutine save_erf_bielec_ints_mo_into_ints_mo PROVIDE mo_bielec_integrals_erf_in_map call ezfio_set_work_empty(.False.) call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints',mo_integrals_erf_map) - call ezfio_set_integrals_bielec_disk_access_mo_integrals("Read") + call ezfio_set_mo_two_e_integrals_disk_access_mo_integrals('Read') end diff --git a/src/nuclei/nuclei.irp.f b/src/nuclei/nuclei.irp.f index 27abab28..f97c9415 100644 --- a/src/nuclei/nuclei.irp.f +++ b/src/nuclei/nuclei.irp.f @@ -206,10 +206,11 @@ END_PROVIDER BEGIN_PROVIDER [ character*(4), element_name, (0:127)] &BEGIN_PROVIDER [ double precision, element_mass, (0:127) ] + implicit none BEGIN_DOC ! Array of the name of element, sorted by nuclear charge (integer) END_DOC - integer :: iunit + integer :: iunit, i integer, external :: getUnitAndOpen character*(128) :: filename if (mpi_master) then diff --git a/src/scf_utils/roothaan_hall_scf.irp.f b/src/scf_utils/roothaan_hall_scf.irp.f index 76c0b1fe..5a9799bf 100644 --- a/src/scf_utils/roothaan_hall_scf.irp.f +++ b/src/scf_utils/roothaan_hall_scf.irp.f @@ -108,7 +108,7 @@ END_DOC TOUCH mo_coef level_shift Delta_Energy_SCF = SCF_energy - energy_SCF_previous energy_SCF = SCF_energy - if (level_shift-level_shift_save > 50.d0) then + if (level_shift-level_shift_save > 40.d0) then level_shift = level_shift_save SOFT_TOUCH level_shift exit diff --git a/src/tools/save_natorb.irp.f b/src/tools/save_natorb.irp.f index 7d508eca..df02dc9f 100644 --- a/src/tools/save_natorb.irp.f +++ b/src/tools/save_natorb.irp.f @@ -7,7 +7,7 @@ program save_natorb touch read_wf call save_natural_mos call save_ref_determinant - call ezfio_set_integrals_bielec_disk_access_mo_integrals('None') + call ezfio_set_mo_two_e_integrals_disk_access_mo_integrals('None') call ezfio_set_mo_one_e_integrals_disk_access_mo_one_integrals('None') end diff --git a/src/utils/need.irp.f b/src/utils/need.irp.f index b8afe6b3..6a42d228 100644 --- a/src/utils/need.irp.f +++ b/src/utils/need.irp.f @@ -46,7 +46,6 @@ double precision function rinteg(n,u) implicit double precision(a-h,o-z) include 'constants.include.F' -! pi=dacos(-1.d0) ichange=1 factor=1.d0 if(u.lt.0.d0)then @@ -92,15 +91,6 @@ end -! -! -! -! -! -! -! -! double precision function erf0(x) implicit double precision (a-h,o-z) if(x.lt.0.d0)then @@ -111,24 +101,6 @@ end -! -! -! -! -! -! -! -! -! -! -! -! gcf -! gser -! -! -! double precision function gammp(a,x) implicit double precision (a-h,o-z) if(x.lt.0..or.a.le.0.)stop 'error in gammp' @@ -140,29 +112,8 @@ endif return end -! -! -! -! -! -! -! -! -! -! -! -! -! -! gammp -! -! -! subroutine gser(gamser,a,x,gln) implicit double precision (a-h,o-z) parameter (itmax=100,eps=3.e-7) @@ -185,28 +136,7 @@ 1 gamser=sum*exp(-x+a*log(x)-gln) return end -! -! -! -! -! -! -! -! -! -! -! -! -! -! gammp -! -! -! subroutine gcf(gammcf,a,x,gln) implicit double precision (a-h,o-z) parameter (itmax=100,eps=3.e-7) @@ -237,8 +167,6 @@ return end -! -! double precision function ddfact2(n) implicit double precision(a-h,o-z) if(iand(n,1).eq.0)stop 'error in ddfact2' @@ -258,15 +186,6 @@ b_coef=-0.5d0*u**(n+1)*dexp(-u**2) end -! -! -! -! -! -! -! -! double precision function gammln(xx) implicit double precision (a-h,o-z) real*8 cof(6),stp,half,one,fpf,x,tmp,ser @@ -284,5 +203,3 @@ gammln=tmp+log(stp*ser) return end -! -!