10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-09-27 03:51:01 +02:00
This commit is contained in:
Emmanuel Giner 2018-12-29 16:07:39 +01:00
commit 4ba780b15b
17 changed files with 472 additions and 503 deletions

View File

@ -68,9 +68,11 @@
.. |QMC| replace:: :abbr:`QMC (Quantum Monte Carlo)`
.. |rst| replace:: :abbr:`RST (ReStructured Text)`
.. |SCF| replace:: :abbr:`SCF (Self Consistent Field)`
.. |RSH| replace:: :abbr:`RSH (Range-Separated-Hybrids)`
.. |RSH| replace:: :abbr:`RSH (Range Separated Hybrids)`
.. |RSDFT| replace:: :abbr:`RSDFT (Range Separated Density Functional Theory)`
.. |KS-DFT| replace:: :abbr:`KS-DFT (Kohn-Sham Density Functional Theory)`
.. |sCI| replace:: :abbr:`sCI (Selected-CI)`
.. |WFT| replace:: :abbr:`WFT (Wave Function Theory)`
.. |CASSCF| replace:: |CAS| - |SCF|
.. |FCIQMC| replace:: |FCI| - |QMC|

View File

@ -12,15 +12,16 @@ What it is
==========
The |qp| is an open-source programming environment for quantum chemistry,
especially for `wave function theory <https://en.wikipedia.org/wiki/Ab_initio_quantum_chemistry_methods>`_ (WFT).
especially for `wave function theory <https://en.wikipedia.org/wiki/Ab_initio_quantum_chemistry_methods>`_ (|WFT|).
The main goal is the development of selected configuration interaction |sCI|
methods and multi-reference perturbation theory |MRPT| in the
determinant-driven paradigm. It also contains the very basics of Kohn-Sham `density functional theory <https://en.wikipedia.org/wiki/Density_functional_theory>`_ |KS-DFT| and `range-separated hybrids <https://aip.scitation.org/doi/10.1063/1.1383587>`_ |RSH|.
Regarding the The determinant-driven framework allows the programmer to include any arbitrary set of
The determinant-driven framework allows the programmer to include any arbitrary set of
determinants in the variational space, and thus gives a complete freedom in the methodological
development. The basics of RSH together with the WFT framework also allow a simple coupling between DFT and WFT calculations (see the plugins of `<https://gitlab.com/eginer/qp_plugins_eginer>`_)
All the programs are developed with the `IRPF90`_ code generator, which simplifies
development. The basic ingredients of |RSH| together with those of the |WFT| framework available in the |qp| library allows one to easily develop range-separated DFT (|RSDFT|) approaches (see for instance the plugins at `<https://gitlab.com/eginer/qp_plugins_eginer>`_).
All the programs are developed with the `IRPF90`_ code generator, which considerably simplifies
the collaborative development, and the development of new features.
@ -29,13 +30,13 @@ What it is not
==============
The |qp| is *not* a general purpose quantum chemistry program.
First of all, it is a library. The users of the |qp| should develop
their own programs.
First of all, it is a *library* to develop new theories and algorithms in quantum chemistry.
Therefore, beside the use of the programs of the core modules, the users of the |qp| should develop their own programs.
The |qp| has been designed specifically for sCI, so all the
The |qp| has been designed specifically for |sCI|, so all the
algorithms which are programmed are not adapted to run SCF or DFT calculations
on thousands of atoms. Currently, the systems targeted have less than 600
molecular orbitals.
molecular orbitals. This limit is due to the memory bottleneck induced by the storring of the two-electron integrals (see ``mo_two_e_integrals`` and ``ao_two_e_integrals``).
The |qp| is *not* a massive production code. For conventional
methods such as Hartree-Fock, CISD or MP2, the users are recommended to use the

View File

@ -102,6 +102,8 @@ The determinants in |SetDI| will be characterized as **internal**.
the wave function, low |EPT|, ...).
Of course, such a procedure can be applied on any state and therefore can allow to treat both ground and excited states.
Approximations to accelerate the selection
------------------------------------------

View File

@ -37,6 +37,12 @@ EZFIO parameters
Default: 1000000
.. option:: n_det_print_wf
Maximum number of determinants to be printed with the program print_wf
Default: 10000
.. option:: n_det_max_full
Maximum number of determinants where |H| is fully diagonalized
@ -3149,20 +3155,6 @@ Subroutines / functions
.. c:function:: pouet
.. code:: text
subroutine pouet
File: :file:`test.irp.f`
.. c:function:: pull_pt2
.. code:: text

View File

@ -754,20 +754,6 @@ Subroutines / functions
.. c:function:: run
.. code:: text
subroutine run
File: :file:`pt2.irp.f`
.. c:function:: run_pt2_slave
.. code:: text

View File

@ -33,33 +33,6 @@ 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_coef_sorted_gen
.. code:: text
@ -75,20 +48,6 @@ Providers
.. 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:: psi_det_sorted_gen
.. code:: text
@ -117,29 +76,3 @@ Providers
For Single reference wave functions, the generator is the Hartree-Fock determinant
.. c:var:: select_max
.. code:: text
double precision, allocatable :: select_max (size_select_max)
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 the select_max array

View File

@ -197,6 +197,20 @@ Subroutines / functions
.. c:function:: run
.. code:: text
subroutine run
File: :file:`scf_old.irp.f`
Run SCF calculation
.. c:function:: scf
.. code:: text

View File

@ -51,6 +51,105 @@ Providers
---------
.. c:var:: ao_potential_alpha_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: ao_potential_beta_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: e_correlation_dft
.. code:: text
double precision :: e_correlation_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: e_exchange_dft
.. code:: text
double precision :: e_exchange_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: fock_matrix_alpha_no_xc_ao
.. code:: text
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Mono electronic an Coulomb matrix in ao basis set
.. c:var:: fock_matrix_beta_no_xc_ao
.. code:: text
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Mono electronic an Coulomb matrix in ao basis set
.. c:var:: fock_matrix_energy
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: ks_energy
.. code:: text
@ -66,3 +165,86 @@ Providers
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: one_electron_energy
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: trace_potential_xc
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: two_electron_energy
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Subroutines / functions
-----------------------
.. c:function:: check_coherence_functional
.. code:: text
subroutine check_coherence_functional
File: :file:`ks_scf.irp.f`
.. c:function:: srs_ks_cf
.. code:: text
subroutine srs_ks_cf
File: :file:`ks_scf.irp.f`
Produce `Kohn_Sham` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef

View File

@ -51,122 +51,6 @@ Providers
---------
.. c:var:: ao_potential_alpha_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: ao_potential_beta_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: e_correlation_dft
.. code:: text
double precision :: e_correlation_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: e_exchange_dft
.. code:: text
double precision :: e_exchange_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: fock_matrix_alpha_no_xc_ao
.. code:: text
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
File: :file:`fock_matrix_rs_ks.irp.f`
Mono electronic an Coulomb matrix in AO basis set
.. c:var:: fock_matrix_beta_no_xc_ao
.. code:: text
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
File: :file:`fock_matrix_rs_ks.irp.f`
Mono electronic an Coulomb matrix in AO basis set
.. c:var:: fock_matrix_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: one_electron_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: rs_ks_energy
.. code:: text
@ -182,69 +66,3 @@ Providers
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: trace_potential_xc
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: two_electron_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Subroutines / functions
-----------------------
.. c:function:: check_coherence_functional
.. code:: text
subroutine check_coherence_functional
File: :file:`rs_ks_scf.irp.f`
.. c:function:: srs_ks_cf
.. code:: text
subroutine srs_ks_cf
File: :file:`rs_ks_scf.irp.f`
Produce `Range_separated_Kohn_Sham` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef

View File

@ -12,3 +12,74 @@ 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

View File

@ -32,6 +32,20 @@ Subroutines / functions
.. c:function:: qp_ao_ints
.. code:: text
subroutine qp_ao_ints
File: :file:`slave_eri.irp.f`
Slave for electron repulsion integrals
.. c:function:: run_wf
.. code:: text

View File

@ -8,10 +8,8 @@ Index of Providers
* :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_ijkl_r3_schwartz`
* :c:data:`ao_bielec_integral_schwartz`
* :c:data:`ao_bielec_integrals_erf_in_map`
* :c:data:`ao_bielec_integrals_ijkl_r3_in_map`
* :c:data:`ao_bielec_integrals_in_map`
* :c:data:`ao_cart_to_sphe_coef`
* :c:data:`ao_cart_to_sphe_inv`
@ -45,10 +43,6 @@ Index of Providers
* :c:data:`ao_integrals_erf_cache_max`
* :c:data:`ao_integrals_erf_cache_min`
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_integrals_ijkl_r3_cache`
* :c:data:`ao_integrals_ijkl_r3_cache_max`
* :c:data:`ao_integrals_ijkl_r3_cache_min`
* :c:data:`ao_integrals_ijkl_r3_map`
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_kinetic_integral`
@ -118,17 +112,10 @@ Index of Providers
* :c:data:`aos_vx_alpha_pbe_w`
* :c:data:`aos_vx_beta_lda_w`
* :c:data:`aos_vx_beta_pbe_w`
* :c:data:`approx_svd_two_dm`
* :c:data:`approx_svd_two_dm_correl`
* :c:data:`approx_two_dm_map`
* :c:data:`approx_two_dm_map_rev`
* :c:data:`barycentric_electronic_energy`
* :c:data:`bi_elec_ref_bitmask_energy`
* :c:data:`bi_elec_ref_bitmask_energy_erf`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals_ijkl_r3`
* :c:data:`big_array_exchange_integrals`
* :c:data:`big_array_exchange_integrals_ijkl_r3`
* :c:data:`binom`
* :c:data:`binom_int`
* :c:data:`binom_int_transp`
@ -178,11 +165,9 @@ Index of Providers
* :c:data:`dft_type`
* :c:data:`diag_algorithm`
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`disk_access_ao_ijkl_r3`
* :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_ijkl_r3`
* :c:data:`disk_access_mo_integrals`
* :c:data:`disk_access_mo_integrals_erf`
* :c:data:`disk_access_mo_one_integrals`
@ -213,15 +198,10 @@ Index of Providers
* :c:data:`elec_beta_num`
* :c:data:`elec_num`
* :c:data:`elec_num_tab`
* :c:data:`electronic_energy_mr_dft`
* :c:data:`element_mass`
* :c:data:`element_name`
* :c:data:`energy_c`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_md_lda`
* :c:data:`energy_c_md_on_top`
* :c:data:`energy_c_md_on_top_pbe_mu_ueg_vector`
* :c:data:`energy_c_md_on_top_pbe_mu_vector`
* :c:data:`energy_c_pbe`
* :c:data:`energy_iterations`
* :c:data:`energy_sr_c_lda`
@ -314,13 +294,9 @@ Index of Providers
* :c:data:`inertia_tensor_eigenvectors`
* :c:data:`initialize_pt2_e0_denominator`
* :c:data:`insert_into_mo_integrals_erf_map`
* :c:data:`insert_into_mo_integrals_ijkl_r3_map`
* :c:data:`insert_into_mo_integrals_map`
* :c:data:`int_erf_3_index`
* :c:data:`int_erf_3_index_exc`
* :c:data:`int_on_top_of_r_approx_svd`
* :c:data:`int_on_top_of_r_approx_svd_correl`
* :c:data:`integral_on_top`
* :c:data:`inv_int`
* :c:data:`inv_selectors_coef_hf`
* :c:data:`inv_selectors_coef_hf_squared`
@ -330,10 +306,6 @@ Index of Providers
* :c:data:`ks_energy`
* :c:data:`l3_weight`
* :c:data:`l_to_charater`
* :c:data:`l_vec_approx_svd_two_dm`
* :c:data:`l_vec_approx_svd_two_dm_at_r`
* :c:data:`l_vec_approx_svd_two_dm_at_r_correl`
* :c:data:`l_vec_approx_svd_two_dm_correl`
* :c:data:`level_shift`
* :c:data:`list_act`
* :c:data:`list_act_reverse`
@ -351,12 +323,6 @@ Index of Providers
* :c:data:`max_degree_exc`
* :c:data:`max_dim_diis`
* :c:data:`max_exc_pert`
* :c:data:`mo_bielec_integral_ijkl_r3_jj`
* :c:data:`mo_bielec_integral_ijkl_r3_jj_anti`
* :c:data:`mo_bielec_integral_ijkl_r3_jj_anti_from_ao`
* :c:data:`mo_bielec_integral_ijkl_r3_jj_exchange`
* :c:data:`mo_bielec_integral_ijkl_r3_jj_exchange_from_ao`
* :c:data:`mo_bielec_integral_ijkl_r3_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`
@ -367,7 +333,6 @@ Index of Providers
* :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_ijkl_r3_in_map`
* :c:data:`mo_bielec_integrals_in_map`
* :c:data:`mo_class`
* :c:data:`mo_coef`
@ -388,10 +353,6 @@ Index of Providers
* :c:data:`mo_integrals_erf_cache_max`
* :c:data:`mo_integrals_erf_cache_min`
* :c:data:`mo_integrals_erf_map`
* :c:data:`mo_integrals_ijkl_r3_cache`
* :c:data:`mo_integrals_ijkl_r3_cache_max`
* :c:data:`mo_integrals_ijkl_r3_cache_min`
* :c:data:`mo_integrals_ijkl_r3_map`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_kinetic_integral`
@ -427,8 +388,6 @@ Index of Providers
* :c:data:`mu_erf_dft`
* :c:data:`n_act_orb`
* :c:data:`n_aos_max`
* :c:data:`n_approx_svd_two_dm`
* :c:data:`n_approx_svd_two_dm_correl`
* :c:data:`n_cas_bitmask`
* :c:data:`n_core_inact_act_orb`
* :c:data:`n_core_inact_orb`
@ -443,6 +402,7 @@ Index of Providers
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_non_cas`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_double_exc_bitmasks`
* :c:data:`n_double_selectors`
@ -453,8 +413,6 @@ Index of Providers
* :c:data:`n_int`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_max_approx_svd_two_dm`
* :c:data:`n_max_approx_svd_two_dm_correl`
* :c:data:`n_occ_pattern`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
@ -493,11 +451,6 @@ Index of Providers
* :c:data:`nucl_num`
* :c:data:`nucl_num_shell_aos`
* :c:data:`nuclear_repulsion`
* :c:data:`on_top_of_r`
* :c:data:`on_top_of_r_approx_svd`
* :c:data:`on_top_of_r_approx_svd_correl`
* :c:data:`on_top_of_r_exact`
* :c:data:`on_top_of_r_vector`
* :c:data:`one_body_dm_alpha_ao_for_dft`
* :c:data:`one_body_dm_alpha_at_r`
* :c:data:`one_body_dm_ao_alpha`
@ -528,7 +481,6 @@ Index of Providers
* :c:data:`one_dm_beta_in_r`
* :c:data:`one_electron_energy`
* :c:data:`only_expected_s2`
* :c:data:`ontop_approx`
* :c:data:`output_cpu_time_0`
* :c:data:`output_wall_time_0`
* :c:data:`overlap_gaussian_xyz`
@ -621,9 +573,7 @@ Index of Providers
* :c:data:`psi_dft_energy_nuclear_elec`
* :c:data:`psi_energy`
* :c:data:`psi_energy_bielec`
* :c:data:`psi_energy_erf`
* :c:data:`psi_energy_h_core`
* :c:data:`psi_energy_h_core_and_sr_hartree`
* :c:data:`psi_energy_with_nucl_rep`
* :c:data:`psi_non_cas`
* :c:data:`psi_non_cas_coef`
@ -656,17 +606,11 @@ Index of Providers
* :c:data:`pt2_w_t`
* :c:data:`qp_max_mem`
* :c:data:`qp_run_address`
* :c:data:`r_vec_approx_svd_two_dm`
* :c:data:`r_vec_approx_svd_two_dm_at_r`
* :c:data:`r_vec_approx_svd_two_dm_at_r_correl`
* :c:data:`r_vec_approx_svd_two_dm_correl`
* :c:data:`read_ao_integrals`
* :c:data:`read_ao_integrals_erf`
* :c:data:`read_ao_integrals_ijkl_r3`
* :c:data:`read_ao_one_integrals`
* :c:data:`read_mo_integrals`
* :c:data:`read_mo_integrals_erf`
* :c:data:`read_mo_integrals_ijkl_r3`
* :c:data:`read_mo_one_integrals`
* :c:data:`read_wf`
* :c:data:`rec__quicksort`
@ -676,7 +620,6 @@ Index of Providers
* :c:data:`rec_i_quicksort`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
* :c:data:`ref_bitmask_energy_erf`
* :c:data:`ref_closed_shell_bitmask`
* :c:data:`reunion_of_bitmask`
* :c:data:`reunion_of_cas_inact_bitmask`
@ -719,7 +662,6 @@ Index of Providers
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`theta_angular_integration_lebedev`
* :c:data:`thr_ontop_approx`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
@ -731,14 +673,10 @@ Index of Providers
* :c:data:`trace_v_hxc`
* :c:data:`trace_v_xc`
* :c:data:`transpose`
* :c:data:`two_bod_alpha_beta_mo`
* :c:data:`two_bod_alpha_beta_mo_physicist`
* :c:data:`two_elec_energy_dft`
* :c:data:`two_electron_energy`
* :c:data:`unpaired_alpha_electrons`
* :c:data:`used_weight`
* :c:data:`var_pt2_ratio`
* :c:data:`var_rsdft_energy`
* :c:data:`virt_bitmask`
* :c:data:`virt_bitmask_4`
* :c:data:`weight_at_r`
@ -747,11 +685,9 @@ Index of Providers
* :c:data:`weights_angular_points`
* :c:data:`write_ao_integrals`
* :c:data:`write_ao_integrals_erf`
* :c:data:`write_ao_integrals_ijkl_r3`
* :c:data:`write_ao_one_integrals`
* :c:data:`write_mo_integrals`
* :c:data:`write_mo_integrals_erf`
* :c:data:`write_mo_integrals_ijkl_r3`
* :c:data:`write_mo_one_integrals`
* :c:data:`zmq_context`
* :c:data:`zmq_lock`
@ -774,7 +710,6 @@ Index of Subroutines/Functions
* :c:func:`ac_operator_bielec`
* :c:func:`add_integrals_to_map`
* :c:func:`add_integrals_to_map_erf`
* :c:func:`add_integrals_to_map_ijkl_r3`
* :c:func:`add_integrals_to_map_no_exit_34`
* :c:func:`add_integrals_to_map_three_indices`
* :c:func:`add_poly`
@ -783,17 +718,12 @@ Index of Subroutines/Functions
* :c:func:`add_to_selection_buffer`
* :c:func:`ao_bielec_integral`
* :c:func:`ao_bielec_integral_erf`
* :c:func:`ao_bielec_integral_ijkl_r3`
* :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_ijkl_r3_in_map_collector`
* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave`
* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave_inproc`
* :c:func:`ao_bielec_integrals_ijkl_r3_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`
@ -826,90 +756,31 @@ Index of Subroutines/Functions
* :c:func:`broadcast_chunks_integer`
* :c:func:`broadcast_chunks_integer8`
* :c:func:`build_fock_tmp`
* :c:func:`c2_delta`
* :c:func:`c3t_delta`
* :c:func:`c4_delta`
* :c:func:`c5_delta`
* :c:func:`c5t_delta`
* :c:func:`capital_c4_delta`
* :c:func:`cell_function_becke`
* :c:func:`check_coherence_functional`
* :c:func:`check_mem`
* :c:func:`cis`
* :c:func:`cisd`
* :c:func:`clear_ao_erf_map`
* :c:func:`clear_ao_ijkl_r3_map`
* :c:func:`clear_ao_map`
* :c:func:`clear_bit_to_integer`
* :c:func:`clear_mo_erf_map`
* :c:func:`clear_mo_ijkl_r3_map`
* :c:func:`clear_mo_map`
* :c:func:`compute_ao_bielec_integrals`
* :c:func:`compute_ao_bielec_integrals_erf`
* :c:func:`compute_ao_bielec_integrals_ijkl_r3`
* :c:func:`compute_ao_integrals_erf_jl`
* :c:func:`compute_ao_integrals_ijkl_r3_jl`
* :c:func:`compute_ao_integrals_jl`
* :c:func:`connect_to_taskserver`
* :c:func:`connected_to_ref`
* :c:func:`connected_to_ref_by_mono`
* :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`copy_psi_bilinear_to_psi`
* :c:func:`correction_to_on_top_from_ueg`
* :c:func:`create_guess`
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`create_selection_buffer`
* :c:func:`create_wf_of_psi_bilinear_matrix`
* :c:func:`d0delta`
* :c:func:`d2_delta`
* :c:func:`d3_delta`
* :c:func:`d_1st_deltaterm`
* :c:func:`d_2nd_deltaterm`
* :c:func:`d_3rd_deltaterm`
* :c:func:`d_4th_deltaterm`
* :c:func:`d_5th_deltaterm`
* :c:func:`d_c2_delta`
* :c:func:`d_c3t_delta`
* :c:func:`d_c4_delta`
* :c:func:`d_c5_delta`
* :c:func:`d_c5t_delta`
* :c:func:`d_capital_c4_delta`
* :c:func:`d_d0delta`
* :c:func:`d_d2_delta`
* :c:func:`d_d3_delta`
* :c:func:`d_delta_2`
* :c:func:`d_delta_3`
* :c:func:`d_delta_4`
* :c:func:`d_delta_5`
* :c:func:`d_delta_6`
* :c:func:`d_delta_barth`
* :c:func:`d_denominator_delta`
* :c:func:`d_total_deltarho_rhoa`
* :c:func:`d_total_deltarho_rhob`
* :c:func:`d_wignerseitz_radius`
* :c:func:`d_xi_1st_deltaterm`
* :c:func:`d_xi_2nd_deltaterm`
* :c:func:`d_xi_3rd_deltaterm`
* :c:func:`d_xi_4th_deltaterm`
* :c:func:`d_xi_5th_deltaterm`
* :c:func:`d_xi_c2_delta`
* :c:func:`d_xi_c3t_delta`
* :c:func:`d_xi_c4_delta`
* :c:func:`d_xi_c5_delta`
* :c:func:`d_xi_c5t_delta`
* :c:func:`d_xi_capital_c4_delta`
* :c:func:`d_xi_d0delta`
* :c:func:`d_xi_delta_3`
* :c:func:`d_xi_delta_4`
* :c:func:`d_xi_delta_5`
* :c:func:`d_xi_delta_6`
* :c:func:`d_xi_delta_barth`
* :c:func:`d_xi_denominator_delta`
* :c:func:`d_xi_phi_8_delta`
* :c:func:`d_xi_rhoa`
* :c:func:`d_xi_rhob`
* :c:func:`damping_scf`
* :c:func:`davidson_collector`
* :c:func:`davidson_converged`
@ -932,31 +803,18 @@ Index of Subroutines/Functions
* :c:func:`decode_exc`
* :c:func:`decode_exc_spin`
* :c:func:`delete_selection_buffer`
* :c:func:`delta_2`
* :c:func:`delta_3`
* :c:func:`delta_4`
* :c:func:`delta_5`
* :c:func:`delta_6`
* :c:func:`delta_barth`
* :c:func:`delta_lrsr_ldaerf`
* :c:func:`denominator_delta`
* :c:func:`density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r`
* :c:func:`derivative_knowles_function`
* :c:func:`det_inf`
* :c:func:`det_search_key`
* :c:func:`detcmp`
* :c:func:`deteq`
* :c:func:`dft_utils_ecmd`
* :c:func:`dft_utils_two_body_main`
* :c:func:`diag_h_mat_elem`
* :c:func:`diag_h_mat_elem_au0_h_au0`
* :c:func:`diag_h_mat_elem_erf`
* :c:func:`diag_h_mat_elem_fock`
* :c:func:`diag_h_mat_elem_monoelec`
* :c:func:`diag_s_mat_elem`
* :c:func:`diag_wee_mat_elem`
* :c:func:`diagonal_contrib_to_all_two_body_dm`
* :c:func:`diagonal_contrib_to_two_body_ab_dm`
* :c:func:`diagonalize_ci`
* :c:func:`diagonalize_h`
* :c:func:`disconnect_from_taskserver`
@ -972,9 +830,7 @@ Index of Subroutines/Functions
* :c:func:`dsort`
* :c:func:`dump_ao_integrals`
* :c:func:`dump_ao_integrals_erf`
* :c:func:`dump_ao_integrals_ijkl_r3`
* :c:func:`dump_mo_integrals`
* :c:func:`dump_mo_integrals_ijkl_r3`
* :c:func:`ec_lda`
* :c:func:`ec_lda_sr`
* :c:func:`ec_only_lda_sr`
@ -991,8 +847,6 @@ Index of Subroutines/Functions
* :c:func:`erf0`
* :c:func:`eri`
* :c:func:`eri_erf`
* :c:func:`esrc_md_ldaerf`
* :c:func:`esrc_md_ldaerf_barth`
* :c:func:`ex_lda`
* :c:func:`ex_lda_sr`
* :c:func:`ex_pbe_sr`
@ -1014,12 +868,9 @@ Index of Subroutines/Functions
* :c:func:`filter_not_connected`
* :c:func:`find_rotation`
* :c:func:`four_idx_transform`
* :c:func:`g0_ueg_mu`
* :c:func:`g0_ueg_mu_inf`
* :c:func:`g0d`
* :c:func:`g0dd`
* :c:func:`g0f`
* :c:func:`g0s`
* :c:func:`gammln`
* :c:func:`gammp`
* :c:func:`gauleg`
@ -1047,15 +898,11 @@ Index of Subroutines/Functions
* :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_integral_ijkl_r3`
* :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_ijkl_r3`
* :c:func:`get_ao_bielec_integrals_ijkl_r3_non_zero`
* :c:func:`get_ao_bielec_integrals_non_zero`
* :c:func:`get_ao_erf_map_size`
* :c:func:`get_ao_ijkl_r3_map_size`
* :c:func:`get_ao_map_size`
* :c:func:`get_d0`
* :c:func:`get_d1`
@ -1081,7 +928,6 @@ Index of Subroutines/Functions
* :c:func:`get_mask_phase`
* :c:func:`get_mo_bielec_integral`
* :c:func:`get_mo_bielec_integral_erf`
* :c:func:`get_mo_bielec_integral_ijkl_r3`
* :c:func:`get_mo_bielec_integrals`
* :c:func:`get_mo_bielec_integrals_coulomb_ii`
* :c:func:`get_mo_bielec_integrals_erf`
@ -1092,12 +938,7 @@ Index of Subroutines/Functions
* :c:func:`get_mo_bielec_integrals_exch_ii`
* :c:func:`get_mo_bielec_integrals_i1j1`
* :c:func:`get_mo_bielec_integrals_ij`
* :c:func:`get_mo_bielec_integrals_ijkl_r3`
* :c:func:`get_mo_bielec_integrals_ijkl_r3_coulomb_ii`
* :c:func:`get_mo_bielec_integrals_ijkl_r3_exch_ii`
* :c:func:`get_mo_bielec_integrals_ijkl_r3_ij`
* :c:func:`get_mo_erf_map_size`
* :c:func:`get_mo_ijkl_r3_map_size`
* :c:func:`get_mo_map_size`
* :c:func:`get_mono_excitation`
* :c:func:`get_mono_excitation_from_fock`
@ -1120,8 +961,6 @@ Index of Subroutines/Functions
* :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_epsilon_c_md_on_top_pbe_mu_corrected_from_two_dm`
* :c:func:`give_epsilon_c_md_on_top_pbe_mu_corrected_ueg_from_two_dm`
* :c:func:`give_explicit_poly_and_gaussian`
* :c:func:`give_explicit_poly_and_gaussian_double`
* :c:func:`give_explicit_poly_and_gaussian_x`
@ -1132,7 +971,6 @@ Index of Subroutines/Functions
* :c:func:`gpw`
* :c:func:`grad_rho_ab_to_grad_rho_oc`
* :c:func:`gser`
* :c:func:`h`
* :c:func:`h_apply_cis`
* :c:func:`h_apply_cis_diexc`
* :c:func:`h_apply_cis_diexcorg`
@ -1150,13 +988,6 @@ Index of Subroutines/Functions
* :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_erf_nstates_openmp`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_erf_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`
@ -1177,8 +1008,6 @@ Index of Subroutines/Functions
* :c:func:`heap_sort`
* :c:func:`heap_sort_big`
* :c:func:`hermite`
* :c:func:`hf_two_body_dm_aa`
* :c:func:`hf_two_body_dm_aa_spherical_laplacian`
* :c:func:`huckel_guess`
* :c:func:`i2set_order`
* :c:func:`i2set_order_big`
@ -1189,12 +1018,8 @@ Index of Subroutines/Functions
* :c:func:`i_h_j`
* :c:func:`i_h_j_bielec`
* :c:func:`i_h_j_double_alpha_beta`
* :c:func:`i_h_j_double_alpha_beta_erf`
* :c:func:`i_h_j_double_spin`
* :c:func:`i_h_j_double_spin_erf`
* :c:func:`i_h_j_erf`
* :c:func:`i_h_j_mono_spin`
* :c:func:`i_h_j_mono_spin_erf`
* :c:func:`i_h_j_mono_spin_monoelec`
* :c:func:`i_h_j_monoelec`
* :c:func:`i_h_j_s2`
@ -1207,7 +1032,6 @@ Index of Subroutines/Functions
* :c:func:`initialize_bitmask_to_restart_ones`
* :c:func:`initialize_mo_coef_begin_iteration`
* :c:func:`insert_into_ao_integrals_erf_map`
* :c:func:`insert_into_ao_integrals_ijkl_r3_map`
* :c:func:`insert_into_ao_integrals_map`
* :c:func:`insertion_dsort`
* :c:func:`insertion_dsort_big`
@ -1220,7 +1044,6 @@ Index of Subroutines/Functions
* :c:func:`insertion_sort`
* :c:func:`insertion_sort_big`
* :c:func:`int_gaus_pol`
* :c:func:`integral_bourrin_mo`
* :c:func:`integrale_new`
* :c:func:`integrale_new_erf`
* :c:func:`is_a_1h`
@ -1248,10 +1071,8 @@ Index of Subroutines/Functions
* :c:func:`list_to_bitstring`
* :c:func:`load_ao_integrals`
* :c:func:`load_ao_integrals_erf`
* :c:func:`load_ao_integrals_ijkl_r3`
* :c:func:`load_mo_integrals`
* :c:func:`load_mo_integrals_erf`
* :c:func:`load_mo_integrals_ijkl_r3`
* :c:func:`logfact`
* :c:func:`lowercase`
* :c:func:`make_s2_eigenfunction`
@ -1267,9 +1088,7 @@ Index of Subroutines/Functions
* :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_integral_ijkl_r3`
* :c:func:`mo_bielec_integrals_erf_index`
* :c:func:`mo_bielec_integrals_ijkl_r3_index`
* :c:func:`mo_bielec_integrals_index`
* :c:func:`mo_to_ao`
* :c:func:`modify_bitmasks_for_hole`
@ -1298,13 +1117,6 @@ Index of Subroutines/Functions
* :c:func:`occ_pattern_search_key`
* :c:func:`occ_pattern_to_dets`
* :c:func:`occ_pattern_to_dets_size`
* :c:func:`off_diagonal_double_to_two_body_ab_dm`
* :c:func:`off_diagonal_single_to_two_body_ab_dm`
* :c:func:`on_top_of_r_approx_svd_correl_function`
* :c:func:`on_top_of_r_approx_svd_function`
* :c:func:`on_top_of_r_from_provider`
* :c:func:`on_top_two_dm_in_r_mu_corrected_from_two_dm`
* :c:func:`on_top_two_dm_in_r_mu_corrected_ueg_from_two_dm`
* :c:func:`ortho_canonical`
* :c:func:`ortho_lowdin`
* :c:func:`ortho_qr`
@ -1336,11 +1148,8 @@ Index of Subroutines/Functions
* :c:func:`perturb_buffer_moller_plesset`
* :c:func:`perturb_buffer_moller_plesset_general`
* :c:func:`perturb_buffer_qdpt`
* :c:func:`phi_8_delta`
* :c:func:`pouet`
* :c:func:`primitive_value`
* :c:func:`print_det`
* :c:func:`print_ecmd_var_energy`
* :c:func:`print_extrapolated_energy`
* :c:func:`print_generators_bitmasks_holes`
* :c:func:`print_generators_bitmasks_holes_for_one_generator`
@ -1349,10 +1158,8 @@ Index of Subroutines/Functions
* :c:func:`print_memory_usage`
* :c:func:`print_spindet`
* :c:func:`print_summary`
* :c:func:`print_variational_energy_dft`
* :c:func:`print_wf`
* :c:func:`provide_all_mo_integrals_erf`
* :c:func:`provide_all_mo_integrals_ijkl_r3`
* :c:func:`provide_everything`
* :c:func:`pt2`
* :c:func:`pt2_collector`
@ -1404,9 +1211,6 @@ Index of Subroutines/Functions
* :c:func:`roothaan_hall_scf`
* :c:func:`routine`
* :c:func:`routine_example_psi_det`
* :c:func:`routine_print`
* :c:func:`routines_compute_energy`
* :c:func:`routines_write_int`
* :c:func:`run`
* :c:func:`run_pt2_slave`
* :c:func:`run_selection_slave`
@ -1424,7 +1228,6 @@ Index of Subroutines/Functions
* :c:func:`save_natorb`
* :c:func:`save_natural_mos`
* :c:func:`save_one_body_dm`
* :c:func:`save_one_e_effective_potential`
* :c:func:`save_ortho_mos`
* :c:func:`save_ref_determinant`
* :c:func:`save_wavefunction`
@ -1455,8 +1258,6 @@ Index of Subroutines/Functions
* :c:func:`sorted_i8number`
* :c:func:`sorted_inumber`
* :c:func:`sorted_number`
* :c:func:`spherical_averaged_two_dm_at_second_order`
* :c:func:`spherical_averaged_two_dm_hf_at_second_order`
* :c:func:`spin_det_search_key`
* :c:func:`splash_pq`
* :c:func:`spot_isinwf`
@ -1469,17 +1270,8 @@ Index of Subroutines/Functions
* :c:func:`tasks_done_to_taskserver`
* :c:func:`testteethbuilding`
* :c:func:`total_memory`
* :c:func:`two_body_dm_nstates_openmp`
* :c:func:`two_body_dm_nstates_openmp_work`
* :c:func:`two_body_dm_nstates_openmp_work_1`
* :c:func:`two_body_dm_nstates_openmp_work_2`
* :c:func:`two_body_dm_nstates_openmp_work_3`
* :c:func:`two_body_dm_nstates_openmp_work_4`
* :c:func:`two_body_dm_nstates_openmp_work_n_int`
* :c:func:`two_dm_in_r`
* :c:func:`u_0_h_u_0`
* :c:func:`u_0_h_u_0_bielec`
* :c:func:`u_0_h_u_0_erf`
* :c:func:`u_0_s2_u_0`
* :c:func:`u_dot_u`
* :c:func:`u_dot_v`
@ -1497,13 +1289,9 @@ Index of Subroutines/Functions
* :c:func:`wall_time`
* :c:func:`wallis`
* :c:func:`wf_of_psi_bilinear_matrix`
* :c:func:`wignerseitz_radius`
* :c:func:`write_2_body_dm_fci_dump`
* :c:func:`write_all_integrals_for_mrdft`
* :c:func:`write_ao_basis`
* :c:func:`write_bool`
* :c:func:`write_double`
* :c:func:`write_effective_rsdft_hamiltonian`
* :c:func:`write_geometry`
* :c:func:`write_git_log`
* :c:func:`write_int`

View File

@ -75,19 +75,29 @@ The expected energy is ``-92.827856698`` au.
The documentation of the :ref:`hartree_fock` module.
This creates the |MOs| in the |EZFIO| database that will be used to perform any other post-SCF method.
The |qp| does not handle symmetry and the |MOs| are stored by increasing order of Fock energies.
Choose the target |MO| space
----------------------------
Now, modify to |EZFIO| database to make |CIPSI| calculation in the
full set of valence |MOs|, keeping the core |MOs| frozen. The simple
command :command:`qp_set_frozen_core` does this automatically:
command :ref:`qp_set_frozen_core` does this automatically:
.. code:: bash
qp_set_frozen_core hcn
The general command to specify core and active orbitals is :ref:`qp_set_frozen_core`. In the case of HCN molecule in the 631G basis, one has 20 |MOs| in total and the two first orbitals to freeze:
.. code::
qp_set_mo_class -core "[1-2]" -act "[3-20]" hcn
Run the |CIPSI| calculation
----------------------------
@ -95,7 +105,7 @@ We will now use the |CIPSI| algorithm to estimate the |FCI| energy.
.. code::
qp_run fci hcn
qp_run fci hcn | tee hcn.fci.out
The program will start with a single determinant and will iteratively:
@ -112,18 +122,101 @@ The program will start with a single determinant and will iteratively:
By default, the program will stop when more than one million determinants have
entered in the internal space, or when the |PT2| energy is below :math:`10^{-4}`.
To have a pictural illustration of the convergence of the |CIPSI| algorithm, just run
.. code::
qp_e_conv_fci hcn.fci.out
This will create the files "hcn.fci.out.conv" containing the data of the convergence of the energy, together with "hcn.fci.out.conv.eps" which is obtained from the gnuplot plot file "hcn.fci.out.conv.plt".
The estimated |FCI| energy of HCN is ``-93.0501`` au.
.. seealso::
The documentation of the :ref:`fci` module.
Extracting natural orbitals
---------------------------
Once obtained the near |FCI| wave function, one can obtain many quantities related to it. One of these quantities are the natural orbitals which have the properties of making diagonal the one-body density matrix:
.. math::
\rho_{ij} = \delta_{ij}
where the element of the one-body density matrix :math:`\rho_{ij}` is define as:
.. math::
\rho_{ij} = \langle \Psi | \left( a^{\dagger}_{j,\alpha} a_{i,\alpha} + a^{\dagger}_{j,\beta} a_{i,\beta} \right) | \Psi \rangle
These orbitals are in general known to be better than the usual |RHF| |MOs| as they are obtained from a correlated wave function. To use these orbitals for future calculations, one has to replace the current |MOs| by the natural orbitals. To do so, just run:
.. code::
qp_run save_natorb hcn
Hands on
========
.. important::
As the |MOs| are changed, for the sake of coherence of future calculations, the save_natorb program
automatically removes the current wave function stored in the |EZFIO| database and replace
it by a single Slater determinant.
Then, you can run another |CIPSI| calculation to see how the use of natural orbital affect the convergence of the algorithm. For instance:
.. code::
qp_run fci hcn | tee hcn.fci_natorb.out
and then
.. code::
qp_e_conv_fci hcn.fci_natorb.out
Printing the near |FCI| wave function
-------------------------------------
Once obtained the near |FCI| energy, one can also take a closer look at the wave function stored in the |EZFIO| database.
If the wave function contains less than :math:`10^4` determinants, you can directly read it with the
:ref:`qp_edit` command. Just run
.. code::
qp_edit hcn
and then look for "hand" when you are in the :ref:`qp_edit` mode. If the research is negative,
then it means that the wave function stored in the |EZFIO| database is too large to be edited in :ref:`qp_edit` mode.
An alternative is to use the :command:`print_wf` command:
.. code::
qp_run print_wf hcn | tee hcn.fci_natorb.wf
This program will, by default, print out the first :math:`10^4` determinants whatever the size of the wave function stored in the |EZFIO| folder. If you want to change the number of printed Slater determinants, just change the :option:`determinants n_det_print_wf` keyword.
The Range Separated Hybrids
---------------------------
TODO
.. important:: TODO
.. include:: /work.rst
* Natural orbitals
* Parameters for Hartree-Fock
* Parameters for Davidson
* Running in parallel

67
scripts/qp_e_conv_fci Executable file
View File

@ -0,0 +1,67 @@
#!/bin/bash
file=$1
out=${file}.conv
Ndet=`grep "N_det =" $file | cut -d "=" -f 2`
Evar=`grep "E =" $file | cut -d "=" -f 2`
EPT2=`grep "E+rPT2 =" $file | cut -d "=" -f 2 | cut -d "+" -f 1`
err=`grep "E+rPT2 =" $file | cut -d "=" -f 2 | cut -d "+" -f 2 | cut -d "/" -f 2 | cut -d " " -f 5`
Ndetarray=[]
j=0
for i in $Ndet
do
Ndetarray[$j]=$i
let "j=j+1"
done
Nmax=${#Ndetarray[*]}
let "Nmax-=1"
Evararray=[]
j=0
for i in $Evar
do
Evararray[$j]=$i
let "j=j+1"
done
EPT2array=[]
j=0
for i in $EPT2
do
EPT2array[$j]=$i
let "j=j+1"
done
errarray=[]
j=0
for i in $err
do
errarray[$j]=$i
let "j=j+1"
done
echo "#Ndet E_var E+PT2 statistical error " > $out
for i in `seq 0 $Nmax`
do
echo ${Ndetarray[$i]} ${Evararray[$i]} ${EPT2array[$i]} ${errarray[$i]} >> $out
done
cat << EOF > ${out}.plt
set term eps
set output "$out.eps"
set log x
set xlabel "Number of determinants"
set ylabel "Total Energy (a.u.)"
plot "$out" w lp title "E_{var}", "$out" u 1:3:4 w errorlines title "E_{var} + PT2"
EOF
gnuplot ${out}.plt

View File

@ -4,6 +4,12 @@ doc: Maximum number of determinants in the wave function
interface: ezfio,provider,ocaml
default: 1000000
[n_det_print_wf]
type: Det_number_max
doc: Maximum number of determinants to be printed with the program print_wf
interface: ezfio,provider,ocaml
default: 10000
[n_det_max_full]
type: Det_number_max
doc: Maximum number of determinants where |H| is fully diagonalized

View File

@ -39,7 +39,7 @@ subroutine routine
norm_mono_b_pert = 0.d0
norm_mono_a_pert_2 = 0.d0
norm_mono_b_pert_2 = 0.d0
do i = 1, min(10000,N_det)
do i = 1, min(N_det_print_wf,N_det)
print*,''
print*,'i = ',i
call debug_det(psi_det(1,1,i),N_int)