* fixed laplacian of aos

* corrected the laplacians of aos

* added dft_one_e

* added new feature for new dft functionals

* changed the configure to add new functionals

* changed the configure

* added dft_one_e/README.rst

* added README.rst in new_functionals

* added source/programmers_guide/new_ks.rst

* Thesis Yann

* Added gmp installation in configure

* improved qp_e_conv_fci

* Doc

* Typos

* Added variance_max

* Fixed completion in qp_create

* modif TODO

* fixed DFT potential for n_states gt 1

* improved pot pbe

* trying to improve sr PBE

* fixed potential pbe

* fixed the vxc smashed for pbe sr and normal

* Comments in selection

* bug fixed by peter

* Fixed bug with zero beta electrons

* Update README.rst

* Update e_xc_new_func.irp.f

* Update links.rst

* Update quickstart.rst

* Update quickstart.rst

* updated cipsi

* Fixed energies of non-expected s2 (#9)

* Moved diag_algorithm in Davdison

* Add print_ci_vector in tools (#11)

* Fixed energies of non-expected s2

* Moved diag_algorithm in Davdison

* Fixed travis

* Added print_ci_vector

* Documentation

* Cleaned qp_set_mo_class.ml

* Removed Core in taskserver

* Merge develop-toto and manus (#12)

* Fixed energies of non-expected s2

* Moved diag_algorithm in Davdison

* Fixed travis

* Added print_ci_vector

* Documentation

* Cleaned qp_set_mo_class.ml

* Removed Core in taskserver

* Frozen core for heavy atoms

* Improved molden module

* In sync with manus

* Fixed some of the documentation errors

* Develop toto (#13)

* Fixed energies of non-expected s2

* Moved diag_algorithm in Davdison

* Fixed travis

* Added print_ci_vector

* Documentation

* Cleaned qp_set_mo_class.ml

* Removed Core in taskserver

* Frozen core for heavy atoms

* Improved molden module

* In sync with manus

* Fixed some of the documentation errors

* Develop manus (#14)

* modified printing for rpt2

* Comment

* Fixed plugins

* Scripting for functionals

* Documentation

* Develop (#10)

* fixed laplacian of aos

* corrected the laplacians of aos

* added dft_one_e

* added new feature for new dft functionals

* changed the configure to add new functionals

* changed the configure

* added dft_one_e/README.rst

* added README.rst in new_functionals

* added source/programmers_guide/new_ks.rst

* Thesis Yann

* Added gmp installation in configure

* improved qp_e_conv_fci

* Doc

* Typos

* Added variance_max

* Fixed completion in qp_create

* modif TODO

* fixed DFT potential for n_states gt 1

* improved pot pbe

* trying to improve sr PBE

* fixed potential pbe

* fixed the vxc smashed for pbe sr and normal

* Comments in selection

* bug fixed by peter

* Fixed bug with zero beta electrons

* Update README.rst

* Update e_xc_new_func.irp.f

* Update links.rst

* Update quickstart.rst

* Update quickstart.rst

* updated cipsi

* Fixed energies of non-expected s2 (#9)

* Moved diag_algorithm in Davdison

* some modifs

* modified gfortran_debug.cfg

* fixed automatization of functionals

* modified e_xc_general.irp.f

* minor modifs in ref_bitmask.irp.f

* modifying functionals

* rs_ks_scf and ks_scf compiles with the automatic handling of functionals

* removed prints

* fixed configure

* fixed the new functionals

* Merge toto

* modified automatic functionals

* Changed python into python2

* from_xyz suppressed

* Cleaning repo

* Update README.md

* Update README.md

* Contributors

* Update GITHUB.md

* bibtex
This commit is contained in:
Anthony Scemama 2019-03-07 16:29:06 +01:00 committed by GitHub
parent 49e9488f62
commit 8b22e38c9c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
154 changed files with 43999 additions and 2076 deletions

View File

@ -1,15 +1,22 @@
GitHub Branches
===============
master
master:
The current up-to-date working branch, that users download It should
only contain the latest release and bug fixes.
develop
It is a fork of the *master* branch with new developments that will be
merged in the *master* branch for the next release.
develop-lcpq:
Toulouse development branch
gh-pages
develop-lct:
Paris development branch
develop:
It is a fork of the *master* branch with new developments that will be
merged in the *master* branch for the next release. Other development
branches should be merged on this one.
gh-pages:
This is an independent branch, containing only the web site of QP2.

View File

@ -1,6 +1,10 @@
# Quantum Package
# Quantum Package 2.0
*Quantum package 2.0: an open-source determinant-driven suite of programs*\
Y. Garniron, K. Gasperich, T. Applencourt, A. Benali, A. Ferté, J. Paquier, B. Pradines, R. Assaraf, P. Reinhardt, J. Toulouse, P. Barbaresco, N. Renon, G. David, J. P. Malrieu, M. Véril, M. Caffarel, P. F. Loos, E. Giner and A. Scemama\
https://arxiv.org/abs/1902.08154
A programming environment for wave function methods
![QP](https://raw.githubusercontent.com/QuantumPackage/qp2/master/data/qp2.png)
@ -12,9 +16,10 @@ A programming environment for wave function methods
# Build status
* Master: [![master build status](https://travis-ci.org/QuantumPackage/qp2.svg?branch=master)](https://travis-ci.org/QuantumPackage/qp2)
* Development branch : [![dev build status](https://travis-ci.org/QuantumPackage/qp2.svg?branch=develop)](https://travis-ci.org/QuantumPackage/qp2)
* Documentation [![Doc Status](https://quantum-package.readthedocs.io/en/latest/?badge=master)
* Master [![master build status](https://travis-ci.org/QuantumPackage/qp2.svg?branch=master)](https://travis-ci.org/QuantumPackage/qp2)
* Development [![dev build status](https://travis-ci.org/QuantumPackage/qp2.svg?branch=develop)](https://travis-ci.org/QuantumPackage/qp2)
* Documentation [![Documentation Status](https://readthedocs.org/projects/quantum-package/badge/?version=master)](https://quantum-package.readthedocs.io/en/master/?badge=master)
# Credits

637
REPLACE Normal file → Executable file
View File

@ -197,3 +197,640 @@ qp_name get_excitation_degree_vector_single_or_exchange_or_exchange -r get_excit
qp_name get_excitation_degree_vector_mono_or_exchange_verbose -r get_excitation_degree_vector_single_or_exchange_verbose
qp_name i_h_j_mono_spin -r i_h_j_single_spin
qp_name i_Wee_j_mono -r i_Wee_j_single
qp_name potential_sr_x_alpha_ao_lda --rename=potential_x_alpha_ao_sr_lda
qp_name potential_sr_x_beta_ao_lda --rename=potential_x_beta_ao_sr_lda
qp_name potential_sr_c_alpha_ao_lda --rename=potential_c_alpha_ao_sr_lda
qp_name potential_sr_c_beta_ao_lda --rename=potential_c_beta_ao_sr_lda
qp_name potential_sr_xc_alpha_ao_lda --rename=potential_xc_alpha_ao_sr_lda
qp_name potential_sr_xc_beta_ao_lda --rename=potential_xc_beta_ao_sr_lda
qp_name potential_sr_x_alpha_ao_pbe --rename=potential_x_alpha_ao_sr_pbe
qp_name potential_sr_x_beta_ao_pbe --rename=potential_x_beta_ao_sr_pbe
qp_name potential_sr_c_alpha_ao_pbe --rename=potential_c_alpha_ao_sr_pbe
qp_name potential_sr_c_beta_ao_pbe --rename=potential_c_beta_ao_sr_pbe
qp_name potential_sr_xc_alpha_ao_pbe --rename=potential_xc_alpha_ao_sr_pbe
qp_name potential_sr_xc_beta_ao_pbe --rename=potential_xc_beta_ao_sr_pbe
qp_name mo_mono_elec_integral --rename=mo_mono_elec_integrals
qp_name mo_mono_elec_integral --rename=mo_mono_elec_integrals
qp_name mo_nucl_elec_integral --rename=mo_nucl_elec_integrals
qp_name mo_kinetic_integral --rename=mo_kinetic_integrals
qp_name disk_access_mo_one_integrals --rename=io_mo_one_e_integrals
qp_name disk_access_ao_one_integrals --rename=io_ao_one_e_integrals
qp_name ao_mono_elec_integral --rename=ao_one_e_integrals
qp_name disk_access_ao_integrals --rename=io_ao_two_e_integrals
qp_name disk_access_mo_integrals --rename=io_mo_two_e_integrals
qp_name io_mo_integrals --rename=io_mo_two_e_integrals
qp_name io_ao_integrals --rename=io_ao_two_e_integrals
qp_name read_ao_integrals --rename=read_ao_two_e_integrals
qp_name read_mo_integrals --rename=read_mo_two_e_integrals
qp_name write_mo_integrals --rename=write_mo_two_e_integrals
qp_name write_ao_integrals --rename=write_ao_two_e_integrals
qp_name ao_two_e_integrals --rename=ao_two_e_ints
qp_name mo_two_e_integrals --rename=mo_two_e_ints
qp_name mo_two_e_erf_integrals --rename=mo_two_e_erf_ints
qp_name ao_two_e_erf_integrals --rename=ao_two_e_erf_ints
qp_name ezfio_set_mo_two_e_ints_io_mo_integrals -r ezfio_set_mo_two_e_ints_io_mo_two_e_integrals
qp_name ezfio_set_ao_two_e_ints_io_ao_integrals -r ezfio_set_ao_two_e_ints_io_ao_two_e_integrals
qp_name mo_tot_num -r mo_num
qp_name ezfio_set_mo_basis_mo_tot_num -r ezfio_set_mo_basis_mo_num
qp_name ezfio_get_mo_basis_mo_tot_num -r ezfio_get_mo_basis_mo_num
qp_name ezfio_set_ao_two_e_integrals_disk_access_ao_integrals -r ezfio_set_ao_two_e_integrals_io_ao_two_e_integrals
qp_name ezfio_set_mo_two_e_integrals_disk_access_mo_integrals -r ezfio_set_mo_two_e_integrals_io_mo_two_e_integrals
qp_name ezfio_set_mo_two_e_integrals_io_mo_two_e_integrals -r ezfio_set_mo_two_e_ints_io_mo_two_e_integrals
qp_name ezfio_get_mo_two_e_integrals_io_mo_two_e_integrals -r ezfio_get_mo_two_e_ints_io_mo_two_e_integrals
qp_name ezfio_set_ao_two_e_integrals_io_ao_two_e_integrals -r ezfio_set_ao_two_e_ints_io_ao_two_e_integrals
qp_name ezfio_get_ao_two_e_integrals_io_ao_two_e_integrals -r ezfio_get_ao_two_e_ints_io_ao_two_e_integrals
qp_name ezfio_set_ao_two_e_erf_integrals_disk_access_ao_integrals_erf -r ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf
qp_name ezfio_set_mo_two_e_erf_integrals_disk_access_mo_integrals_erf -r ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf
qp_name disk_access_ao_integrals_erf -r io_ao_integrals_erf
qp_name disk_access_mo_integrals_erf -r io_mo_integrals_erf
qp_name write_mo_integrals_erf -r write_mo_two_e_integrals_erf
qp_name read_mo_integrals_erf -r read_mo_two_e_integrals_erf
qp_name ao_integrals_n_e
qp_name ao_nucl_elec_interals -r ao_integrals_n_e
qp_name ao_nucl_elec_integrals -r ao_integrals_n_e
qp_name ao_nucl_elec_integrals_per_atom -r ao_integrals_n_e_per_atom
qp_name bi_elec_ref_bitmask_energy -r ref_bitmask_two_e_energy
qp_name mono_elec_ref_bitmask_energy -r ref_bitmask_one_e_energy
qp_name kinetic_ref_bitmask_energy -r ref_bitmask_kinetic_energy
qp_name nucl_elec_ref_bitmask_energy -r ref_bitmask_e_n_energy
qp_name disk_access_ao_integrals_erf
qp_name mo_bielec_integral_jj
qp_name mo_bielec_integral_jj -r mo_two_e_integrals_jj
qp_name mo_bielec_integral_jj_anti -r mo_two_e_integrals_jj_anti
qp_name mo_bielec_integral_jj_anti_from_ao -r mo_two_e_integrals_jj_anti_from_ao
qp_name mo_bielec_integral_jj_anti_exchange -r mo_two_e_integrals_jj_exchange
qp_name mo_bielec_integral_jj_exchange -r mo_two_e_integrals_jj_exchange
qp_name mo_bielec_integral_jj_exchange_from_ao -r mo_two_e_integrals_jj_exchange_from_ao
qp_name mo_bielec_integral_vv_anti_from_ao -r mo_two_e_integrals_vv_anti_from_ao
qp_name mo_bielec_integral_vv_exchange_from_ao -r mo_two_e_integrals_vv_exchange_from_ao
qp_name mo_bielec_integral_vv_from_ao -r mo_two_e_integrals_vv_from_ao
qp_name mo_bielec_integrals_erf_in_map -r mo_two_e_integrals_erf_in_map
qp_name mo_bielec_integrals_in_map -r mo_two_e_integrals_in_map
qp_name ao_bielec_integrals_in_map -r ao_two_e_integrals_in_map
qp_name ao_bielec_integrals_erf_in_map -r ao_two_e_integrals_erf_in_map
qp_name mo_mono_elec_integrals -r mo_one_e_integrals
qp_name mo_nucl_elec_integrals -r mo_integrals_n_e
qp_name mo_nucl_elec_integrals_per_atom -r mo_integrals_n_e_per_atom
qp_name I_x1_pol_mult_mono_elec -r I_x1_pol_mult_one_e
qp_name I_x2_pol_mult_mono_elec -r I_x2_pol_mult_one_e
qp_name give_polynom_mult_center_mono_elec -r give_polynomial_mult_center_one_e
qp_name give_polynom_mult_center_mono_elec_erf -r give_polynomial_mult_center_one_e_erf
qp_name give_polynom_mult_center_mono_elec_erf_opt -r give_polynomial_mult_center_one_e_erf_opt
qp_name i_H_j_mono_spin_monoelec -r i_H_j_mono_spin_one_e
qp_name diag_H_mat_elem_monoelec -r diag_H_mat_elem_one_e
qp_name i_H_j_monoelec -r i_H_j_one_e
qp_name get_mo_bielec_integral -r get_two_e_integral
qp_name ao_bielec_integrals_in_map_slave_tcp -r ao_two_e_integrals_in_map_slave_tcp
qp_name get_ao_bielec_integrals_non_zero -r get_ao_two_e_integrals_non_zero
qp_name bielec
qp_name bielec -r two-electron
qp_name ao_bielec_integral -r ao_two_e_integral
qp_name compute_ao_bielec_integrals -r compute_ao_two_e_integrals
qp_name mo_bielec_integral_jj_from_ao -r mo_two_e_integral_jj_from_ao
qp_name bielec_tmp_1 -r two_e_tmp_1
qp_name bielec_tmp_2 -r two_e_tmp_2
qp_name bielec_tmp_3 -r two_e_tmp_3
qp_name mo_bielec_integrals_index -r mo_two_e_integrals_index
qp_name bielec_tmp_0_idx -r two_e_tmp_0_idx
qp_name bielec_tmp_0 -r two_e_tmp_0
qp_name get_ao_bielec_integrals -r get_ao_two_e_integrals
qp_name bielectronic -r two-electron
qp_name bielec_integrals_index -r two_e_integrals_index
qp_name mo_bielec_integral -r mo_two_e_integral
qp_name mo_bielec_integrals_ij -r mo_two_e_integrals_ij
qp_name get_mo_bielec_integrals_ij -r get_mo_two_e_integrals_ij
qp_name get_mo_bielec_integrals_i1j1 -r get_mo_two_e_integrals_i1j1
qp_name get_mo_bielec_integrals_coulomb -r get_mo_two_e_integrals_coulomb
qp_name get_mo_bielec_integrals_coulomb_ii -r get_mo_two_e_integrals_coulomb_ii
qp_name get_mo_bielec_integrals_exch_ii -r get_mo_two_e_integrals_exch_ii
qp_name get_mo_bielec_integrals -r get_mo_two_e_integrals
qp_name get_ao_bielec_integrals_erf -r get_ao_two_e_integrals_erf
qp_name save_erf_bielec_ints_mo_into_ints_mo -r save_erf_two_e_ints_mo_into_ints_mo
qp_name get_mo_bielec_integral_erf -r get_mo_two_e_integral_erf
qp_name get_ao_bielec_integral_erf -r get_ao_two_e_integral_erf
qp_name bielec_integrals_index_reverse -r two_e_integrals_index_reverse
qp_name get_mo_bielec_integrals_erf -r get_mo_two_e_integrals_erf
qp_name ao_bielec_integral_schwartz -r ao_two_e_integral_schwartz
qp_name get_mo_bielec_integrals_erf_ij -r get_mo_two_e_integrals_erf_ij
qp_name get_mo_bielec_integrals_erf_i1j1 -r get_mo_two_e_integrals_erf_i1j1
qp_name get_mo_bielec_integral_schwartz -r get_mo_two_e_integral_schwartz
qp_name get_ao_bielec_integrals_erf_non_zero -r get_ao_two_e_integrals_erf_non_zero
qp_name compute_ao_bielec_integrals_erf -r compute_ao_two_e_integrals_erf
qp_name mo_bielec_integrals_erf_index -r mo_two_e_integrals_erf_index
qp_name get_mo_bielec_integrals_erf_exch_ii -r get_mo_two_e_integrals_erf_exch_ii
qp_name get_mo_bielec_integrals_erf_coulomb_ii -r get_mo_two_e_integrals_erf_coulomb_ii
qp_name mo_bielec_integral_erf -r mo_two_e_integral_erf
qp_name i_H_j_bielec -r i_H_j_two_e
qp_name H_S2_u_0_bielec_nstates_openmp_work -r H_S2_u_0_two_e_nstates_openmp_work
qp_name H_S2_u_0_bielec_nstates_openmp_work_1 -r H_S2_u_0_two_e_nstates_openmp_work_1
qp_name H_S2_u_0_bielec_nstates_openmp_work_2 -r H_S2_u_0_two_e_nstates_openmp_work_2
qp_name H_S2_u_0_bielec_nstates_openmp_work_3 -r H_S2_u_0_two_e_nstates_openmp_work_3
qp_name H_S2_u_0_bielec_nstates_openmp_work_4 -r H_S2_u_0_two_e_nstates_openmp_work_4
qp_name H_S2_u_0_bielec_nstates_openmp -r H_S2_u_0_two_e_nstates_openmp
qp_name ac_operator_bielec -r ac_operator_two_e
qp_name aa_operator_bielec -r aa_operator_two_e
qp_name a_operator_bielec -r a_operator_two_e
qp_name u_0_H_u_0_bielec -r u_0_H_u_0_two_e
qp_name H_S2_u_0_bielec_nstates_openmp_work_
qp_name H_S2_u_0_bielec_nstates_openmp_work_
qp_name H_S2_u_0_bielec_nstates_openmp_work_ -r H_S2_u_0_two_e_nstates_openmp_work_
qp_name ao_bielec_integral_erf -r ao_two_e_integral_erf
qp_name psi_energy_bielec -r psi_energy_two_e
qp_name ao_bielec_integrals_in_map_slave_inproc -r ao_two_e_integrals_in_map_slave_inproc
qp_name ao_bielec_integrals_in_map_collector -r ao_two_e_integrals_in_map_collector
qp_name ao_bielec_integral_schwartz_accel -r ao_two_e_integral_schwartz_accel
qp_name get_ao_bielec_integral -r get_ao_two_e_integral
qp_name ao_bielec_integrals_in_map_slave -r ao_two_e_integrals_in_map_slave
qp_name ao_bielec_integral_erf_schwartz -r ao_two_e_integral_erf_schwartz
qp_name ao_bielec_integral_schwartz_accel_erf -r ao_two_e_integral_schwartz_accel_erf
qp_name ao_bielec_integrals_erf_in_map_slave_tcp -r ao_two_e_integrals_erf_in_map_slave_tcp
qp_name ao_bielec_integrals_erf_in_map_slave -r ao_two_e_integrals_erf_in_map_slave
qp_name ao_bielec_integrals_erf_in_map_slave_inproc -r ao_two_e_integrals_erf_in_map_slave_inproc
qp_name ao_bielec_integrals_erf_in_map_collector -r ao_two_e_integrals_erf_in_map_collector
qp_name save_erf_bielec_ints_ao_into_ints_ao -r save_erf_two_e_ints_ao_into_ints_ao
qp_name save_erf_bi_elec_integrals_mo -r save_erf_two_e_integrals_mo
qp_name ao_bi_elec_integral_beta -r ao_two_e_integral_beta
qp_name ao_bi_elec_integral_alpha -r ao_two_e_integral_alpha
qp_name ao_bi_elec_integral_alpha_tmp -r ao_two_e_integral_alpha_tmp
qp_name ao_bi_elec_integral_beta_tmp -r ao_two_e_integral_beta_tmp
qp_name data_one_body_alpha_dm_mo -r data_one_body_dm_alpha_mo
qp_name data_one_body_beta_dm_mo -r data_one_body_dm_beta_mo
qp_name one_body_dm_alpha_ao_for_dft -r one_e_dm_alpha_ao_for_dft
qp_name one_body_dm_alpha_at_r -r one_e_dm_alpha_at_r
qp_name one_body_dm_ao_alpha -r one_e_dm_ao_alpha
qp_name one_body_dm_ao_beta -r one_e_dm_ao_beta
qp_name one_body_dm_average_mo_for_dft -r one_e_dm_average_mo_for_dft
qp_name one_body_dm_beta_ao_for_dft -r one_e_dm_beta_ao_for_dft
qp_name one_body_dm_beta_at_r -r one_e_dm_beta_at_r
qp_name one_body_dm_dagger_mo_spin_index -r one_e_dm_dagger_mo_spin_index
qp_name one_body_dm_mo -r one_e_dm_mo
qp_name one_body_dm_mo_alpha -r one_e_dm_mo_alpha
qp_name one_body_dm_mo_alpha_average -r one_e_dm_mo_alpha_average
qp_name one_body_dm_mo_alpha_for_dft -r one_e_dm_mo_alpha_for_dft
qp_name one_body_dm_mo_beta -r one_e_dm_mo_beta
qp_name one_body_dm_mo_beta_average -r one_e_dm_mo_beta_average
qp_name one_body_dm_mo_beta_for_dft -r one_e_dm_mo_beta_for_dft
qp_name one_body_dm_mo_diff -r one_e_dm_mo_diff
qp_name one_body_dm_mo_for_dft -r one_e_dm_mo_for_dft
qp_name one_body_dm_mo_spin_index -r one_e_dm_mo_spin_index
qp_name one_body_grad_2_dm_alpha_at_r -r one_e_grad_2_dm_alpha_at_r
qp_name one_body_grad_2_dm_beta_at_r -r one_e_grad_2_dm_beta_at_r
qp_name one_body_spin_density_ao -r one_e_spin_density_ao
qp_name one_body_spin_density_mo -r one_e_spin_density_mo
qp_name one_electron_energy -r one_e_energy
qp_name one_dm_alpha_in_r -r one_e_dm_alpha_in_r
qp_name one_dm_and_grad_alpha_in_r -r one_e_dm_and_grad_alpha_in_r
qp_name one_dm_and_grad_beta_in_r -r one_e_dm_and_grad_beta_in_r
qp_name one_dm_beta_in_r -r one_e_dm_beta_in_r
qp_name ezfio_set_aux_quantities_data_one_body_alpha_dm_mo -r ezfio_set_aux_quantities_data_one_e_alpha_dm_mo
qp_name ezfio_set_aux_quantities_data_one_body_beta_dm_mo -r ezfio_set_aux_quantities_data_one_e_beta_dm_mo
qp_name data_one_body_dm_alpha_mo -r data_one_e_dm_alpha_mo
qp_name data_one_body_dm_beta_mo -r data_one_e_dm_beta_mo
qp_name save_one_body_dm -r save_one_e_dm
qp_name ezfio_set_aux_quantities_data_one_e_alpha_dm_mo -r ezfio_set_aux_quantities_data_one_e_dm_alpha_mo
qp_name ezfio_set_aux_quantities_data_one_e_beta_dm_mo -r ezfio_set_aux_quantities_data_one_e_dm_beta_mo
qp_name two_electron_energy -r two_e_energy
qp_name do_mono_excitation -r do_single_excitation
qp_name get_mono_excitation -r get_single_excitation
qp_name get_mono_excitation_from_fock -r get_single_excitation_from_fock
qp_name is_connected_to_by_mono -r is_connected_to_by_single
qp_name connected_to_ref_by_mono -r connected_to_ref_by_single
qp_name mono_excitation_wee -r single_excitation_wee
qp_name get_mono_excitation_spin
qp_name get_mono_excitation_spin -r get_single_excitation_spin
qp_name get_excitation_degree_vector_mono -r get_excitation_degree_vector_single
qp_name get_excitation_degree_vector_mono_or_exchange -r get_excitation_degree_vector_single_or_exchange_or_exchange
qp_name get_excitation_degree_vector_single_or_exchange_or_exchange -r get_excitation_degree_vector_single_or_exchange
qp_name get_excitation_degree_vector_mono_or_exchange_verbose -r get_excitation_degree_vector_single_or_exchange_verbose
qp_name i_h_j_mono_spin -r i_h_j_single_spin
qp_name i_Wee_j_mono -r i_Wee_j_single
qp_name potential_sr_x_alpha_ao_lda --rename=potential_x_alpha_ao_sr_lda
qp_name potential_sr_x_beta_ao_lda --rename=potential_x_beta_ao_sr_lda
qp_name potential_sr_c_alpha_ao_lda --rename=potential_c_alpha_ao_sr_lda
qp_name potential_sr_c_beta_ao_lda --rename=potential_c_beta_ao_sr_lda
qp_name potential_sr_xc_alpha_ao_lda --rename=potential_xc_alpha_ao_sr_lda
qp_name potential_sr_xc_beta_ao_lda --rename=potential_xc_beta_ao_sr_lda
qp_name potential_sr_x_alpha_ao_pbe --rename=potential_x_alpha_ao_sr_pbe
qp_name potential_sr_x_beta_ao_pbe --rename=potential_x_beta_ao_sr_pbe
qp_name potential_sr_c_alpha_ao_pbe --rename=potential_c_alpha_ao_sr_pbe
qp_name potential_sr_c_beta_ao_pbe --rename=potential_c_beta_ao_sr_pbe
qp_name potential_sr_xc_alpha_ao_pbe --rename=potential_xc_alpha_ao_sr_pbe
qp_name potential_sr_xc_beta_ao_pbe --rename=potential_xc_beta_ao_sr_pbe
qp_name mo_mono_elec_integral --rename=mo_mono_elec_integrals
qp_name mo_mono_elec_integral --rename=mo_mono_elec_integrals
qp_name mo_nucl_elec_integral --rename=mo_nucl_elec_integrals
qp_name mo_kinetic_integral --rename=mo_kinetic_integrals
qp_name disk_access_mo_one_integrals --rename=io_mo_one_e_integrals
qp_name disk_access_ao_one_integrals --rename=io_ao_one_e_integrals
qp_name ao_mono_elec_integral --rename=ao_one_e_integrals
qp_name disk_access_ao_integrals --rename=io_ao_two_e_integrals
qp_name disk_access_mo_integrals --rename=io_mo_two_e_integrals
qp_name io_mo_integrals --rename=io_mo_two_e_integrals
qp_name io_ao_integrals --rename=io_ao_two_e_integrals
qp_name read_ao_integrals --rename=read_ao_two_e_integrals
qp_name read_mo_integrals --rename=read_mo_two_e_integrals
qp_name write_mo_integrals --rename=write_mo_two_e_integrals
qp_name write_ao_integrals --rename=write_ao_two_e_integrals
qp_name ao_two_e_integrals --rename=ao_two_e_ints
qp_name mo_two_e_integrals --rename=mo_two_e_ints
qp_name mo_two_e_erf_integrals --rename=mo_two_e_erf_ints
qp_name ao_two_e_erf_integrals --rename=ao_two_e_erf_ints
qp_name ezfio_set_mo_two_e_ints_io_mo_integrals -r ezfio_set_mo_two_e_ints_io_mo_two_e_integrals
qp_name ezfio_set_ao_two_e_ints_io_ao_integrals -r ezfio_set_ao_two_e_ints_io_ao_two_e_integrals
qp_name mo_tot_num -r mo_num
qp_name ezfio_set_mo_basis_mo_tot_num -r ezfio_set_mo_basis_mo_num
qp_name ezfio_get_mo_basis_mo_tot_num -r ezfio_get_mo_basis_mo_num
qp_name ezfio_set_ao_two_e_integrals_disk_access_ao_integrals -r ezfio_set_ao_two_e_integrals_io_ao_two_e_integrals
qp_name ezfio_set_mo_two_e_integrals_disk_access_mo_integrals -r ezfio_set_mo_two_e_integrals_io_mo_two_e_integrals
qp_name ezfio_set_mo_two_e_integrals_io_mo_two_e_integrals -r ezfio_set_mo_two_e_ints_io_mo_two_e_integrals
qp_name ezfio_get_mo_two_e_integrals_io_mo_two_e_integrals -r ezfio_get_mo_two_e_ints_io_mo_two_e_integrals
qp_name ezfio_set_ao_two_e_integrals_io_ao_two_e_integrals -r ezfio_set_ao_two_e_ints_io_ao_two_e_integrals
qp_name ezfio_get_ao_two_e_integrals_io_ao_two_e_integrals -r ezfio_get_ao_two_e_ints_io_ao_two_e_integrals
qp_name ezfio_set_ao_two_e_erf_integrals_disk_access_ao_integrals_erf -r ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf
qp_name ezfio_set_mo_two_e_erf_integrals_disk_access_mo_integrals_erf -r ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf
qp_name disk_access_ao_integrals_erf -r io_ao_integrals_erf
qp_name disk_access_mo_integrals_erf -r io_mo_integrals_erf
qp_name write_mo_integrals_erf -r write_mo_two_e_integrals_erf
qp_name read_mo_integrals_erf -r read_mo_two_e_integrals_erf
qp_name ao_integrals_n_e
qp_name ao_nucl_elec_interals -r ao_integrals_n_e
qp_name ao_nucl_elec_integrals -r ao_integrals_n_e
qp_name ao_nucl_elec_integrals_per_atom -r ao_integrals_n_e_per_atom
qp_name bi_elec_ref_bitmask_energy -r ref_bitmask_two_e_energy
qp_name mono_elec_ref_bitmask_energy -r ref_bitmask_one_e_energy
qp_name kinetic_ref_bitmask_energy -r ref_bitmask_kinetic_energy
qp_name nucl_elec_ref_bitmask_energy -r ref_bitmask_e_n_energy
qp_name disk_access_ao_integrals_erf
qp_name mo_bielec_integral_jj
qp_name mo_bielec_integral_jj -r mo_two_e_integrals_jj
qp_name mo_bielec_integral_jj_anti -r mo_two_e_integrals_jj_anti
qp_name mo_bielec_integral_jj_anti_from_ao -r mo_two_e_integrals_jj_anti_from_ao
qp_name mo_bielec_integral_jj_anti_exchange -r mo_two_e_integrals_jj_exchange
qp_name mo_bielec_integral_jj_exchange -r mo_two_e_integrals_jj_exchange
qp_name mo_bielec_integral_jj_exchange_from_ao -r mo_two_e_integrals_jj_exchange_from_ao
qp_name mo_bielec_integral_vv_anti_from_ao -r mo_two_e_integrals_vv_anti_from_ao
qp_name mo_bielec_integral_vv_exchange_from_ao -r mo_two_e_integrals_vv_exchange_from_ao
qp_name mo_bielec_integral_vv_from_ao -r mo_two_e_integrals_vv_from_ao
qp_name mo_bielec_integrals_erf_in_map -r mo_two_e_integrals_erf_in_map
qp_name mo_bielec_integrals_in_map -r mo_two_e_integrals_in_map
qp_name ao_bielec_integrals_in_map -r ao_two_e_integrals_in_map
qp_name ao_bielec_integrals_erf_in_map -r ao_two_e_integrals_erf_in_map
qp_name mo_mono_elec_integrals -r mo_one_e_integrals
qp_name mo_nucl_elec_integrals -r mo_integrals_n_e
qp_name mo_nucl_elec_integrals_per_atom -r mo_integrals_n_e_per_atom
qp_name I_x1_pol_mult_mono_elec -r I_x1_pol_mult_one_e
qp_name I_x2_pol_mult_mono_elec -r I_x2_pol_mult_one_e
qp_name give_polynom_mult_center_mono_elec -r give_polynomial_mult_center_one_e
qp_name give_polynom_mult_center_mono_elec_erf -r give_polynomial_mult_center_one_e_erf
qp_name give_polynom_mult_center_mono_elec_erf_opt -r give_polynomial_mult_center_one_e_erf_opt
qp_name i_H_j_mono_spin_monoelec -r i_H_j_mono_spin_one_e
qp_name diag_H_mat_elem_monoelec -r diag_H_mat_elem_one_e
qp_name i_H_j_monoelec -r i_H_j_one_e
qp_name get_mo_bielec_integral -r get_two_e_integral
qp_name ao_bielec_integrals_in_map_slave_tcp -r ao_two_e_integrals_in_map_slave_tcp
qp_name get_ao_bielec_integrals_non_zero -r get_ao_two_e_integrals_non_zero
qp_name bielec
qp_name bielec -r two-electron
qp_name ao_bielec_integral -r ao_two_e_integral
qp_name compute_ao_bielec_integrals -r compute_ao_two_e_integrals
qp_name mo_bielec_integral_jj_from_ao -r mo_two_e_integral_jj_from_ao
qp_name bielec_tmp_1 -r two_e_tmp_1
qp_name bielec_tmp_2 -r two_e_tmp_2
qp_name bielec_tmp_3 -r two_e_tmp_3
qp_name mo_bielec_integrals_index -r mo_two_e_integrals_index
qp_name bielec_tmp_0_idx -r two_e_tmp_0_idx
qp_name bielec_tmp_0 -r two_e_tmp_0
qp_name get_ao_bielec_integrals -r get_ao_two_e_integrals
qp_name bielectronic -r two-electron
qp_name bielec_integrals_index -r two_e_integrals_index
qp_name mo_bielec_integral -r mo_two_e_integral
qp_name mo_bielec_integrals_ij -r mo_two_e_integrals_ij
qp_name get_mo_bielec_integrals_ij -r get_mo_two_e_integrals_ij
qp_name get_mo_bielec_integrals_i1j1 -r get_mo_two_e_integrals_i1j1
qp_name get_mo_bielec_integrals_coulomb -r get_mo_two_e_integrals_coulomb
qp_name get_mo_bielec_integrals_coulomb_ii -r get_mo_two_e_integrals_coulomb_ii
qp_name get_mo_bielec_integrals_exch_ii -r get_mo_two_e_integrals_exch_ii
qp_name get_mo_bielec_integrals -r get_mo_two_e_integrals
qp_name get_ao_bielec_integrals_erf -r get_ao_two_e_integrals_erf
qp_name save_erf_bielec_ints_mo_into_ints_mo -r save_erf_two_e_ints_mo_into_ints_mo
qp_name get_mo_bielec_integral_erf -r get_mo_two_e_integral_erf
qp_name get_ao_bielec_integral_erf -r get_ao_two_e_integral_erf
qp_name bielec_integrals_index_reverse -r two_e_integrals_index_reverse
qp_name get_mo_bielec_integrals_erf -r get_mo_two_e_integrals_erf
qp_name ao_bielec_integral_schwartz -r ao_two_e_integral_schwartz
qp_name get_mo_bielec_integrals_erf_ij -r get_mo_two_e_integrals_erf_ij
qp_name get_mo_bielec_integrals_erf_i1j1 -r get_mo_two_e_integrals_erf_i1j1
qp_name get_mo_bielec_integral_schwartz -r get_mo_two_e_integral_schwartz
qp_name get_ao_bielec_integrals_erf_non_zero -r get_ao_two_e_integrals_erf_non_zero
qp_name compute_ao_bielec_integrals_erf -r compute_ao_two_e_integrals_erf
qp_name mo_bielec_integrals_erf_index -r mo_two_e_integrals_erf_index
qp_name get_mo_bielec_integrals_erf_exch_ii -r get_mo_two_e_integrals_erf_exch_ii
qp_name get_mo_bielec_integrals_erf_coulomb_ii -r get_mo_two_e_integrals_erf_coulomb_ii
qp_name mo_bielec_integral_erf -r mo_two_e_integral_erf
qp_name i_H_j_bielec -r i_H_j_two_e
qp_name H_S2_u_0_bielec_nstates_openmp_work -r H_S2_u_0_two_e_nstates_openmp_work
qp_name H_S2_u_0_bielec_nstates_openmp_work_1 -r H_S2_u_0_two_e_nstates_openmp_work_1
qp_name H_S2_u_0_bielec_nstates_openmp_work_2 -r H_S2_u_0_two_e_nstates_openmp_work_2
qp_name H_S2_u_0_bielec_nstates_openmp_work_3 -r H_S2_u_0_two_e_nstates_openmp_work_3
qp_name H_S2_u_0_bielec_nstates_openmp_work_4 -r H_S2_u_0_two_e_nstates_openmp_work_4
qp_name H_S2_u_0_bielec_nstates_openmp -r H_S2_u_0_two_e_nstates_openmp
qp_name ac_operator_bielec -r ac_operator_two_e
qp_name aa_operator_bielec -r aa_operator_two_e
qp_name a_operator_bielec -r a_operator_two_e
qp_name u_0_H_u_0_bielec -r u_0_H_u_0_two_e
qp_name H_S2_u_0_bielec_nstates_openmp_work_
qp_name H_S2_u_0_bielec_nstates_openmp_work_
qp_name H_S2_u_0_bielec_nstates_openmp_work_ -r H_S2_u_0_two_e_nstates_openmp_work_
qp_name ao_bielec_integral_erf -r ao_two_e_integral_erf
qp_name psi_energy_bielec -r psi_energy_two_e
qp_name ao_bielec_integrals_in_map_slave_inproc -r ao_two_e_integrals_in_map_slave_inproc
qp_name ao_bielec_integrals_in_map_collector -r ao_two_e_integrals_in_map_collector
qp_name ao_bielec_integral_schwartz_accel -r ao_two_e_integral_schwartz_accel
qp_name get_ao_bielec_integral -r get_ao_two_e_integral
qp_name ao_bielec_integrals_in_map_slave -r ao_two_e_integrals_in_map_slave
qp_name ao_bielec_integral_erf_schwartz -r ao_two_e_integral_erf_schwartz
qp_name ao_bielec_integral_schwartz_accel_erf -r ao_two_e_integral_schwartz_accel_erf
qp_name ao_bielec_integrals_erf_in_map_slave_tcp -r ao_two_e_integrals_erf_in_map_slave_tcp
qp_name ao_bielec_integrals_erf_in_map_slave -r ao_two_e_integrals_erf_in_map_slave
qp_name ao_bielec_integrals_erf_in_map_slave_inproc -r ao_two_e_integrals_erf_in_map_slave_inproc
qp_name ao_bielec_integrals_erf_in_map_collector -r ao_two_e_integrals_erf_in_map_collector
qp_name save_erf_bielec_ints_ao_into_ints_ao -r save_erf_two_e_ints_ao_into_ints_ao
qp_name save_erf_bi_elec_integrals_mo -r save_erf_two_e_integrals_mo
qp_name ao_bi_elec_integral_beta -r ao_two_e_integral_beta
qp_name ao_bi_elec_integral_alpha -r ao_two_e_integral_alpha
qp_name ao_bi_elec_integral_alpha_tmp -r ao_two_e_integral_alpha_tmp
qp_name ao_bi_elec_integral_beta_tmp -r ao_two_e_integral_beta_tmp
qp_name data_one_body_alpha_dm_mo -r data_one_body_dm_alpha_mo
qp_name data_one_body_beta_dm_mo -r data_one_body_dm_beta_mo
qp_name one_body_dm_alpha_ao_for_dft -r one_e_dm_alpha_ao_for_dft
qp_name one_body_dm_alpha_at_r -r one_e_dm_alpha_at_r
qp_name one_body_dm_ao_alpha -r one_e_dm_ao_alpha
qp_name one_body_dm_ao_beta -r one_e_dm_ao_beta
qp_name one_body_dm_average_mo_for_dft -r one_e_dm_average_mo_for_dft
qp_name one_body_dm_beta_ao_for_dft -r one_e_dm_beta_ao_for_dft
qp_name one_body_dm_beta_at_r -r one_e_dm_beta_at_r
qp_name one_body_dm_dagger_mo_spin_index -r one_e_dm_dagger_mo_spin_index
qp_name one_body_dm_mo -r one_e_dm_mo
qp_name one_body_dm_mo_alpha -r one_e_dm_mo_alpha
qp_name one_body_dm_mo_alpha_average -r one_e_dm_mo_alpha_average
qp_name one_body_dm_mo_alpha_for_dft -r one_e_dm_mo_alpha_for_dft
qp_name one_body_dm_mo_beta -r one_e_dm_mo_beta
qp_name one_body_dm_mo_beta_average -r one_e_dm_mo_beta_average
qp_name one_body_dm_mo_beta_for_dft -r one_e_dm_mo_beta_for_dft
qp_name one_body_dm_mo_diff -r one_e_dm_mo_diff
qp_name one_body_dm_mo_for_dft -r one_e_dm_mo_for_dft
qp_name one_body_dm_mo_spin_index -r one_e_dm_mo_spin_index
qp_name one_body_grad_2_dm_alpha_at_r -r one_e_grad_2_dm_alpha_at_r
qp_name one_body_grad_2_dm_beta_at_r -r one_e_grad_2_dm_beta_at_r
qp_name one_body_spin_density_ao -r one_e_spin_density_ao
qp_name one_body_spin_density_mo -r one_e_spin_density_mo
qp_name one_electron_energy -r one_e_energy
qp_name one_dm_alpha_in_r -r one_e_dm_alpha_in_r
qp_name one_dm_and_grad_alpha_in_r -r one_e_dm_and_grad_alpha_in_r
qp_name one_dm_and_grad_beta_in_r -r one_e_dm_and_grad_beta_in_r
qp_name one_dm_beta_in_r -r one_e_dm_beta_in_r
qp_name ezfio_set_aux_quantities_data_one_body_alpha_dm_mo -r ezfio_set_aux_quantities_data_one_e_alpha_dm_mo
qp_name ezfio_set_aux_quantities_data_one_body_beta_dm_mo -r ezfio_set_aux_quantities_data_one_e_beta_dm_mo
qp_name data_one_body_dm_alpha_mo -r data_one_e_dm_alpha_mo
qp_name data_one_body_dm_beta_mo -r data_one_e_dm_beta_mo
qp_name save_one_body_dm -r save_one_e_dm
qp_name ezfio_set_aux_quantities_data_one_e_alpha_dm_mo -r ezfio_set_aux_quantities_data_one_e_dm_alpha_mo
qp_name ezfio_set_aux_quantities_data_one_e_beta_dm_mo -r ezfio_set_aux_quantities_data_one_e_dm_beta_mo
qp_name two_electron_energy -r two_e_energy
qp_name do_mono_excitation -r do_single_excitation
qp_name get_mono_excitation -r get_single_excitation
qp_name get_mono_excitation_from_fock -r get_single_excitation_from_fock
qp_name is_connected_to_by_mono -r is_connected_to_by_single
qp_name connected_to_ref_by_mono -r connected_to_ref_by_single
qp_name mono_excitation_wee -r single_excitation_wee
qp_name get_mono_excitation_spin
qp_name get_mono_excitation_spin -r get_single_excitation_spin
qp_name get_excitation_degree_vector_mono -r get_excitation_degree_vector_single
qp_name get_excitation_degree_vector_mono_or_exchange -r get_excitation_degree_vector_single_or_exchange_or_exchange
qp_name get_excitation_degree_vector_single_or_exchange_or_exchange -r get_excitation_degree_vector_single_or_exchange
qp_name get_excitation_degree_vector_mono_or_exchange_verbose -r get_excitation_degree_vector_single_or_exchange_verbose
qp_name i_h_j_mono_spin -r i_h_j_single_spin
qp_name i_Wee_j_mono -r i_Wee_j_single
qp_name potential_sr_x_alpha_ao_lda --rename=potential_x_alpha_ao_sr_lda
qp_name potential_sr_x_beta_ao_lda --rename=potential_x_beta_ao_sr_lda
qp_name potential_sr_c_alpha_ao_lda --rename=potential_c_alpha_ao_sr_lda
qp_name potential_sr_c_beta_ao_lda --rename=potential_c_beta_ao_sr_lda
qp_name potential_sr_xc_alpha_ao_lda --rename=potential_xc_alpha_ao_sr_lda
qp_name potential_sr_xc_beta_ao_lda --rename=potential_xc_beta_ao_sr_lda
qp_name potential_sr_x_alpha_ao_pbe --rename=potential_x_alpha_ao_sr_pbe
qp_name potential_sr_x_beta_ao_pbe --rename=potential_x_beta_ao_sr_pbe
qp_name potential_sr_c_alpha_ao_pbe --rename=potential_c_alpha_ao_sr_pbe
qp_name potential_sr_c_beta_ao_pbe --rename=potential_c_beta_ao_sr_pbe
qp_name potential_sr_xc_alpha_ao_pbe --rename=potential_xc_alpha_ao_sr_pbe
qp_name potential_sr_xc_beta_ao_pbe --rename=potential_xc_beta_ao_sr_pbe
qp_name mo_mono_elec_integral --rename=mo_mono_elec_integrals
qp_name mo_mono_elec_integral --rename=mo_mono_elec_integrals
qp_name mo_nucl_elec_integral --rename=mo_nucl_elec_integrals
qp_name mo_kinetic_integral --rename=mo_kinetic_integrals
qp_name disk_access_mo_one_integrals --rename=io_mo_one_e_integrals
qp_name disk_access_ao_one_integrals --rename=io_ao_one_e_integrals
qp_name ao_mono_elec_integral --rename=ao_one_e_integrals
qp_name disk_access_ao_integrals --rename=io_ao_two_e_integrals
qp_name disk_access_mo_integrals --rename=io_mo_two_e_integrals
qp_name io_mo_integrals --rename=io_mo_two_e_integrals
qp_name io_ao_integrals --rename=io_ao_two_e_integrals
qp_name read_ao_integrals --rename=read_ao_two_e_integrals
qp_name read_mo_integrals --rename=read_mo_two_e_integrals
qp_name write_mo_integrals --rename=write_mo_two_e_integrals
qp_name write_ao_integrals --rename=write_ao_two_e_integrals
qp_name ao_two_e_integrals --rename=ao_two_e_ints
qp_name mo_two_e_integrals --rename=mo_two_e_ints
qp_name mo_two_e_erf_integrals --rename=mo_two_e_erf_ints
qp_name ao_two_e_erf_integrals --rename=ao_two_e_erf_ints
qp_name ezfio_set_mo_two_e_ints_io_mo_integrals -r ezfio_set_mo_two_e_ints_io_mo_two_e_integrals
qp_name ezfio_set_ao_two_e_ints_io_ao_integrals -r ezfio_set_ao_two_e_ints_io_ao_two_e_integrals
qp_name mo_tot_num -r mo_num
qp_name ezfio_set_mo_basis_mo_tot_num -r ezfio_set_mo_basis_mo_num
qp_name ezfio_get_mo_basis_mo_tot_num -r ezfio_get_mo_basis_mo_num
qp_name ezfio_set_ao_two_e_integrals_disk_access_ao_integrals -r ezfio_set_ao_two_e_integrals_io_ao_two_e_integrals
qp_name ezfio_set_mo_two_e_integrals_disk_access_mo_integrals -r ezfio_set_mo_two_e_integrals_io_mo_two_e_integrals
qp_name ezfio_set_mo_two_e_integrals_io_mo_two_e_integrals -r ezfio_set_mo_two_e_ints_io_mo_two_e_integrals
qp_name ezfio_get_mo_two_e_integrals_io_mo_two_e_integrals -r ezfio_get_mo_two_e_ints_io_mo_two_e_integrals
qp_name ezfio_set_ao_two_e_integrals_io_ao_two_e_integrals -r ezfio_set_ao_two_e_ints_io_ao_two_e_integrals
qp_name ezfio_get_ao_two_e_integrals_io_ao_two_e_integrals -r ezfio_get_ao_two_e_ints_io_ao_two_e_integrals
qp_name ezfio_set_ao_two_e_erf_integrals_disk_access_ao_integrals_erf -r ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf
qp_name ezfio_set_mo_two_e_erf_integrals_disk_access_mo_integrals_erf -r ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf
qp_name disk_access_ao_integrals_erf -r io_ao_integrals_erf
qp_name disk_access_mo_integrals_erf -r io_mo_integrals_erf
qp_name write_mo_integrals_erf -r write_mo_two_e_integrals_erf
qp_name read_mo_integrals_erf -r read_mo_two_e_integrals_erf
qp_name ao_integrals_n_e
qp_name ao_nucl_elec_interals -r ao_integrals_n_e
qp_name ao_nucl_elec_integrals -r ao_integrals_n_e
qp_name ao_nucl_elec_integrals_per_atom -r ao_integrals_n_e_per_atom
qp_name bi_elec_ref_bitmask_energy -r ref_bitmask_two_e_energy
qp_name mono_elec_ref_bitmask_energy -r ref_bitmask_one_e_energy
qp_name kinetic_ref_bitmask_energy -r ref_bitmask_kinetic_energy
qp_name nucl_elec_ref_bitmask_energy -r ref_bitmask_e_n_energy
qp_name disk_access_ao_integrals_erf
qp_name mo_bielec_integral_jj
qp_name mo_bielec_integral_jj -r mo_two_e_integrals_jj
qp_name mo_bielec_integral_jj_anti -r mo_two_e_integrals_jj_anti
qp_name mo_bielec_integral_jj_anti_from_ao -r mo_two_e_integrals_jj_anti_from_ao
qp_name mo_bielec_integral_jj_anti_exchange -r mo_two_e_integrals_jj_exchange
qp_name mo_bielec_integral_jj_exchange -r mo_two_e_integrals_jj_exchange
qp_name mo_bielec_integral_jj_exchange_from_ao -r mo_two_e_integrals_jj_exchange_from_ao
qp_name mo_bielec_integral_vv_anti_from_ao -r mo_two_e_integrals_vv_anti_from_ao
qp_name mo_bielec_integral_vv_exchange_from_ao -r mo_two_e_integrals_vv_exchange_from_ao
qp_name mo_bielec_integral_vv_from_ao -r mo_two_e_integrals_vv_from_ao
qp_name mo_bielec_integrals_erf_in_map -r mo_two_e_integrals_erf_in_map
qp_name mo_bielec_integrals_in_map -r mo_two_e_integrals_in_map
qp_name ao_bielec_integrals_in_map -r ao_two_e_integrals_in_map
qp_name ao_bielec_integrals_erf_in_map -r ao_two_e_integrals_erf_in_map
qp_name mo_mono_elec_integrals -r mo_one_e_integrals
qp_name mo_nucl_elec_integrals -r mo_integrals_n_e
qp_name mo_nucl_elec_integrals_per_atom -r mo_integrals_n_e_per_atom
qp_name I_x1_pol_mult_mono_elec -r I_x1_pol_mult_one_e
qp_name I_x2_pol_mult_mono_elec -r I_x2_pol_mult_one_e
qp_name give_polynom_mult_center_mono_elec -r give_polynomial_mult_center_one_e
qp_name give_polynom_mult_center_mono_elec_erf -r give_polynomial_mult_center_one_e_erf
qp_name give_polynom_mult_center_mono_elec_erf_opt -r give_polynomial_mult_center_one_e_erf_opt
qp_name i_H_j_mono_spin_monoelec -r i_H_j_mono_spin_one_e
qp_name diag_H_mat_elem_monoelec -r diag_H_mat_elem_one_e
qp_name i_H_j_monoelec -r i_H_j_one_e
qp_name get_mo_bielec_integral -r get_two_e_integral
qp_name ao_bielec_integrals_in_map_slave_tcp -r ao_two_e_integrals_in_map_slave_tcp
qp_name get_ao_bielec_integrals_non_zero -r get_ao_two_e_integrals_non_zero
qp_name bielec
qp_name bielec -r two-electron
qp_name ao_bielec_integral -r ao_two_e_integral
qp_name compute_ao_bielec_integrals -r compute_ao_two_e_integrals
qp_name mo_bielec_integral_jj_from_ao -r mo_two_e_integral_jj_from_ao
qp_name bielec_tmp_1 -r two_e_tmp_1
qp_name bielec_tmp_2 -r two_e_tmp_2
qp_name bielec_tmp_3 -r two_e_tmp_3
qp_name mo_bielec_integrals_index -r mo_two_e_integrals_index
qp_name bielec_tmp_0_idx -r two_e_tmp_0_idx
qp_name bielec_tmp_0 -r two_e_tmp_0
qp_name get_ao_bielec_integrals -r get_ao_two_e_integrals
qp_name bielectronic -r two-electron
qp_name bielec_integrals_index -r two_e_integrals_index
qp_name mo_bielec_integral -r mo_two_e_integral
qp_name mo_bielec_integrals_ij -r mo_two_e_integrals_ij
qp_name get_mo_bielec_integrals_ij -r get_mo_two_e_integrals_ij
qp_name get_mo_bielec_integrals_i1j1 -r get_mo_two_e_integrals_i1j1
qp_name get_mo_bielec_integrals_coulomb -r get_mo_two_e_integrals_coulomb
qp_name get_mo_bielec_integrals_coulomb_ii -r get_mo_two_e_integrals_coulomb_ii
qp_name get_mo_bielec_integrals_exch_ii -r get_mo_two_e_integrals_exch_ii
qp_name get_mo_bielec_integrals -r get_mo_two_e_integrals
qp_name get_ao_bielec_integrals_erf -r get_ao_two_e_integrals_erf
qp_name save_erf_bielec_ints_mo_into_ints_mo -r save_erf_two_e_ints_mo_into_ints_mo
qp_name get_mo_bielec_integral_erf -r get_mo_two_e_integral_erf
qp_name get_ao_bielec_integral_erf -r get_ao_two_e_integral_erf
qp_name bielec_integrals_index_reverse -r two_e_integrals_index_reverse
qp_name get_mo_bielec_integrals_erf -r get_mo_two_e_integrals_erf
qp_name ao_bielec_integral_schwartz -r ao_two_e_integral_schwartz
qp_name get_mo_bielec_integrals_erf_ij -r get_mo_two_e_integrals_erf_ij
qp_name get_mo_bielec_integrals_erf_i1j1 -r get_mo_two_e_integrals_erf_i1j1
qp_name get_mo_bielec_integral_schwartz -r get_mo_two_e_integral_schwartz
qp_name get_ao_bielec_integrals_erf_non_zero -r get_ao_two_e_integrals_erf_non_zero
qp_name compute_ao_bielec_integrals_erf -r compute_ao_two_e_integrals_erf
qp_name mo_bielec_integrals_erf_index -r mo_two_e_integrals_erf_index
qp_name get_mo_bielec_integrals_erf_exch_ii -r get_mo_two_e_integrals_erf_exch_ii
qp_name get_mo_bielec_integrals_erf_coulomb_ii -r get_mo_two_e_integrals_erf_coulomb_ii
qp_name mo_bielec_integral_erf -r mo_two_e_integral_erf
qp_name i_H_j_bielec -r i_H_j_two_e
qp_name H_S2_u_0_bielec_nstates_openmp_work -r H_S2_u_0_two_e_nstates_openmp_work
qp_name H_S2_u_0_bielec_nstates_openmp_work_1 -r H_S2_u_0_two_e_nstates_openmp_work_1
qp_name H_S2_u_0_bielec_nstates_openmp_work_2 -r H_S2_u_0_two_e_nstates_openmp_work_2
qp_name H_S2_u_0_bielec_nstates_openmp_work_3 -r H_S2_u_0_two_e_nstates_openmp_work_3
qp_name H_S2_u_0_bielec_nstates_openmp_work_4 -r H_S2_u_0_two_e_nstates_openmp_work_4
qp_name H_S2_u_0_bielec_nstates_openmp -r H_S2_u_0_two_e_nstates_openmp
qp_name ac_operator_bielec -r ac_operator_two_e
qp_name aa_operator_bielec -r aa_operator_two_e
qp_name a_operator_bielec -r a_operator_two_e
qp_name u_0_H_u_0_bielec -r u_0_H_u_0_two_e
qp_name H_S2_u_0_bielec_nstates_openmp_work_
qp_name H_S2_u_0_bielec_nstates_openmp_work_
qp_name H_S2_u_0_bielec_nstates_openmp_work_ -r H_S2_u_0_two_e_nstates_openmp_work_
qp_name ao_bielec_integral_erf -r ao_two_e_integral_erf
qp_name psi_energy_bielec -r psi_energy_two_e
qp_name ao_bielec_integrals_in_map_slave_inproc -r ao_two_e_integrals_in_map_slave_inproc
qp_name ao_bielec_integrals_in_map_collector -r ao_two_e_integrals_in_map_collector
qp_name ao_bielec_integral_schwartz_accel -r ao_two_e_integral_schwartz_accel
qp_name get_ao_bielec_integral -r get_ao_two_e_integral
qp_name ao_bielec_integrals_in_map_slave -r ao_two_e_integrals_in_map_slave
qp_name ao_bielec_integral_erf_schwartz -r ao_two_e_integral_erf_schwartz
qp_name ao_bielec_integral_schwartz_accel_erf -r ao_two_e_integral_schwartz_accel_erf
qp_name ao_bielec_integrals_erf_in_map_slave_tcp -r ao_two_e_integrals_erf_in_map_slave_tcp
qp_name ao_bielec_integrals_erf_in_map_slave -r ao_two_e_integrals_erf_in_map_slave
qp_name ao_bielec_integrals_erf_in_map_slave_inproc -r ao_two_e_integrals_erf_in_map_slave_inproc
qp_name ao_bielec_integrals_erf_in_map_collector -r ao_two_e_integrals_erf_in_map_collector
qp_name save_erf_bielec_ints_ao_into_ints_ao -r save_erf_two_e_ints_ao_into_ints_ao
qp_name save_erf_bi_elec_integrals_mo -r save_erf_two_e_integrals_mo
qp_name ao_bi_elec_integral_beta -r ao_two_e_integral_beta
qp_name ao_bi_elec_integral_alpha -r ao_two_e_integral_alpha
qp_name ao_bi_elec_integral_alpha_tmp -r ao_two_e_integral_alpha_tmp
qp_name ao_bi_elec_integral_beta_tmp -r ao_two_e_integral_beta_tmp
qp_name data_one_body_alpha_dm_mo -r data_one_body_dm_alpha_mo
qp_name data_one_body_beta_dm_mo -r data_one_body_dm_beta_mo
qp_name one_body_dm_alpha_ao_for_dft -r one_e_dm_alpha_ao_for_dft
qp_name one_body_dm_alpha_at_r -r one_e_dm_alpha_at_r
qp_name one_body_dm_ao_alpha -r one_e_dm_ao_alpha
qp_name one_body_dm_ao_beta -r one_e_dm_ao_beta
qp_name one_body_dm_average_mo_for_dft -r one_e_dm_average_mo_for_dft
qp_name one_body_dm_beta_ao_for_dft -r one_e_dm_beta_ao_for_dft
qp_name one_body_dm_beta_at_r -r one_e_dm_beta_at_r
qp_name one_body_dm_dagger_mo_spin_index -r one_e_dm_dagger_mo_spin_index
qp_name one_body_dm_mo -r one_e_dm_mo
qp_name one_body_dm_mo_alpha -r one_e_dm_mo_alpha
qp_name one_body_dm_mo_alpha_average -r one_e_dm_mo_alpha_average
qp_name one_body_dm_mo_alpha_for_dft -r one_e_dm_mo_alpha_for_dft
qp_name one_body_dm_mo_beta -r one_e_dm_mo_beta
qp_name one_body_dm_mo_beta_average -r one_e_dm_mo_beta_average
qp_name one_body_dm_mo_beta_for_dft -r one_e_dm_mo_beta_for_dft
qp_name one_body_dm_mo_diff -r one_e_dm_mo_diff
qp_name one_body_dm_mo_for_dft -r one_e_dm_mo_for_dft
qp_name one_body_dm_mo_spin_index -r one_e_dm_mo_spin_index
qp_name one_body_grad_2_dm_alpha_at_r -r one_e_grad_2_dm_alpha_at_r
qp_name one_body_grad_2_dm_beta_at_r -r one_e_grad_2_dm_beta_at_r
qp_name one_body_spin_density_ao -r one_e_spin_density_ao
qp_name one_body_spin_density_mo -r one_e_spin_density_mo
qp_name one_electron_energy -r one_e_energy
qp_name one_dm_alpha_in_r -r one_e_dm_alpha_in_r
qp_name one_dm_and_grad_alpha_in_r -r one_e_dm_and_grad_alpha_in_r
qp_name one_dm_and_grad_beta_in_r -r one_e_dm_and_grad_beta_in_r
qp_name one_dm_beta_in_r -r one_e_dm_beta_in_r
qp_name ezfio_set_aux_quantities_data_one_body_alpha_dm_mo -r ezfio_set_aux_quantities_data_one_e_alpha_dm_mo
qp_name ezfio_set_aux_quantities_data_one_body_beta_dm_mo -r ezfio_set_aux_quantities_data_one_e_beta_dm_mo
qp_name data_one_body_dm_alpha_mo -r data_one_e_dm_alpha_mo
qp_name data_one_body_dm_beta_mo -r data_one_e_dm_beta_mo
qp_name save_one_body_dm -r save_one_e_dm
qp_name ezfio_set_aux_quantities_data_one_e_alpha_dm_mo -r ezfio_set_aux_quantities_data_one_e_dm_alpha_mo
qp_name ezfio_set_aux_quantities_data_one_e_beta_dm_mo -r ezfio_set_aux_quantities_data_one_e_dm_beta_mo
qp_name two_electron_energy -r two_e_energy
qp_name do_mono_excitation -r do_single_excitation
qp_name get_mono_excitation -r get_single_excitation
qp_name get_mono_excitation_from_fock -r get_single_excitation_from_fock
qp_name is_connected_to_by_mono -r is_connected_to_by_single
qp_name connected_to_ref_by_mono -r connected_to_ref_by_single
qp_name mono_excitation_wee -r single_excitation_wee
qp_name get_mono_excitation_spin
qp_name get_mono_excitation_spin -r get_single_excitation_spin
qp_name get_excitation_degree_vector_mono -r get_excitation_degree_vector_single
qp_name get_excitation_degree_vector_mono_or_exchange -r get_excitation_degree_vector_single_or_exchange_or_exchange
qp_name get_excitation_degree_vector_single_or_exchange_or_exchange -r get_excitation_degree_vector_single_or_exchange
qp_name get_excitation_degree_vector_mono_or_exchange_verbose -r get_excitation_degree_vector_single_or_exchange_verbose
qp_name i_h_j_mono_spin -r i_h_j_single_spin
qp_name i_Wee_j_mono -r i_Wee_j_single
qp_name potential_sr_x_alpha_ao_lda --rename=potential_x_alpha_ao_sr_lda
qp_name potential_sr_x_beta_ao_lda --rename=potential_x_beta_ao_sr_lda
qp_name potential_sr_c_alpha_ao_lda --rename=potential_c_alpha_ao_sr_lda
qp_name potential_sr_c_beta_ao_lda --rename=potential_c_beta_ao_sr_lda
qp_name potential_sr_xc_alpha_ao_lda --rename=potential_xc_alpha_ao_sr_lda
qp_name potential_sr_xc_beta_ao_lda --rename=potential_xc_beta_ao_sr_lda
qp_name potential_sr_x_alpha_ao_pbe --rename=potential_x_alpha_ao_sr_pbe
qp_name potential_sr_x_beta_ao_pbe --rename=potential_x_beta_ao_sr_pbe
qp_name potential_sr_c_alpha_ao_pbe --rename=potential_c_alpha_ao_sr_pbe
qp_name potential_sr_c_beta_ao_pbe --rename=potential_c_beta_ao_sr_pbe
qp_name potential_sr_xc_alpha_ao_pbe --rename=potential_xc_alpha_ao_sr_pbe
qp_name potential_sr_xc_beta_ao_pbe --rename=potential_xc_beta_ao_sr_pbe

9
TODO
View File

@ -57,13 +57,22 @@ Doc: plugins et qp_plugins
Ajouter les symetries dans devel
<<<<<<< HEAD
Compiler ezfio avec openmp
# Parallelize i_H_psi
=======
# Parallelize i_H_psi
<<<<<<< HEAD
=======
>>>>>>> minor_modifs
IMPORTANT:
Davidson Diagonalization
------------------------
Not enough memory: aborting in davidson_diag_hjj_sjj
>>>>>>> 94bacff2d093aa9b32c653ab59bcdb79d13f3264

View File

@ -116,9 +116,12 @@ def main(arguments):
d_tmp[x] = y
repo_of_plugin[y] = x.replace(QP_PLUGINS+'/','')
l_repository = d_tmp.keys()
m_instance = ModuleHandler(l_repository)
l_plugins = [module for module in m_instance.l_module]
l_result = l_plugins
if l_repository == []:
l_result = []
else:
m_instance = ModuleHandler(l_repository)
l_plugins = [module for module in m_instance.l_module]
l_result = l_plugins
if arguments["--installed"] or arguments["--uninstalled"]:
# Search in src all symbolic links that are modules

View File

@ -52,8 +52,10 @@ def main(arguments):
pass
elif charge < 13:
n_frozen += 1
else:
elif charge < 31:
n_frozen += 5
else:
n_frozen += 9
mo_num = ezfio.mo_basis_mo_num

View File

@ -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 -Wuninitialized
# OpenMP flags
#################

6
configure vendored
View File

@ -9,12 +9,6 @@ eval set -- "$TEMP"
export QP_ROOT="$( cd "$(dirname "$0")" ; pwd -P )"
echo "QP_ROOT="$QP_ROOT
# Check if the module to create new DFT functionals exists or not
if [[ ! -d ${QP_ROOT}/src/new_functionals ]] ; then
cp -r ${QP_ROOT}/scripts/functionals/do_not_touch_func ${QP_ROOT}/src/new_functionals
fi
function help()
{

View File

@ -18,9 +18,7 @@ auto:
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
clone:
git clone git@github.com:QuantumPackage/qp2.git --branch=documentation build

View File

@ -38,7 +38,7 @@
.. |OPAM| replace:: `OPAM`_
.. |Python| replace:: `Python`_
.. |qp| replace:: *Quantum Package*
.. |QP| replace:: |qp|
.. |QP| replace:: *Quantum Package*
.. |qpsh| replace:: *Quantum Package Shell*
.. |QPSH| replace:: |qpsh|
.. |resultsFile| replace:: `resultsFile`_

View File

@ -25,19 +25,25 @@ Thomas Applencourt
The following people have contributed (by alphabetical order):
The following people have contributed to this project (by alphabetical order):
* Roland Assaraf
* Pierrette Barbaresco
* Anouar Benali
* Chandler Bennet
* Michel Caffarel
* Grégoire David
* Anthony Ferté
* Madeline Galbraith
* Yann Garniron
* Kevin Gasperich
* Pierre-François Loos
* Jean-Paul Malrieu
* Barry Moore
* Julien Paquier
* Barthélémy Pradines
* Peter Reinhardt
* Nicolas Renon
* Lorenzo Tenti
* Julien Toulouse
* Mikaël Véril

View File

@ -0,0 +1 @@

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,905 @@
.. _module_ao_two_e_erf_ints:
.. program:: ao_two_e_erf_ints
.. default-role:: option
======================
ao_two_e_erf_ints
======================
Here, all two-electron integrals (:math:`erf(\mu r_{12})/r_{12}`) are computed.
As they have 4 indices and many are zero, they are stored in a map, as defined
in :file:`utils/map_module.f90`.
The main parameter of this module is :option:`ao_two_e_erf_ints mu_erf` which is the range-separation parameter.
To fetch an |AO| integral, use the
`get_ao_two_e_integral_erf(i,j,k,l,ao_integrals_erf_map)` function.
The conventions are:
* For |AO| integrals : (ij|kl) = (11|22) = <ik|jl> = <12|12>
EZFIO parameters
----------------
.. option:: io_ao_two_e_integrals_erf
Read/Write |AO| integrals with the long range interaction from/to disk [ Write | Read | None ]
Default: None
.. option:: mu_erf
cutting of the interaction in the range separated model
Default: 0.5
Providers
---------
.. c:var:: ao_integrals_erf_cache
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_integrals_erf_cache (0:64*64*64*64)
Cache of |AO| integrals for fast access
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache_min`
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_two_e_integrals_erf_in_map`
.. c:var:: ao_integrals_erf_cache_max
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
integer :: ao_integrals_erf_cache_min
integer :: ao_integrals_erf_cache_max
Min and max values of the AOs for which the integrals are in the cache
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache`
.. c:var:: ao_integrals_erf_cache_min
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
integer :: ao_integrals_erf_cache_min
integer :: ao_integrals_erf_cache_max
Min and max values of the AOs for which the integrals are in the cache
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache`
.. c:var:: ao_integrals_erf_map
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
type(map_type) :: ao_integrals_erf_map
|AO| integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
.. c:var:: ao_two_e_integral_erf_schwartz
File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_two_e_integral_erf_schwartz (ao_num,ao_num)
Needed to compute Schwartz inequalities
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
.. c:var:: ao_two_e_integrals_erf_in_map
File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f`
.. code:: fortran
logical :: ao_two_e_integrals_erf_in_map
Map of Atomic integrals
i(r1) j(r2) 1/r12 k(r1) l(r2)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ezfio_filename`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`n_pt_max_integrals`
* :c:data:`nproc`
* :c:data:`nucl_coord`
* :c:data:`read_ao_two_e_integrals_erf`
* :c:data:`zmq_context`
* :c:data:`zmq_socket_pull_tcp_address`
* :c:data:`zmq_state`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
.. c:function:: general_primitive_integral_erf:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
double precision function general_primitive_integral_erf(dim, &
P_new,P_center,fact_p,p,p_inv,iorder_p, &
Q_new,Q_center,fact_q,q,q_inv,iorder_q)
Computes the integral <pq|rs> where p,q,r,s are Gaussian primitives
Needs:
.. hlist::
:columns: 3
* :c:data:`mu_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`add_poly_multiply`
* :c:func:`give_polynom_mult_center_x`
* :c:func:`multiply_poly`
Subroutines / functions
-----------------------
.. c:function:: ao_two_e_integral_erf:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
double precision function ao_two_e_integral_erf(i,j,k,l)
integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
.. hlist::
:columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl`
* :c:data:`nucl_coord`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_explicit_poly_and_gaussian`
.. c:function:: ao_two_e_integral_schwartz_accel_erf:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
double precision function ao_two_e_integral_schwartz_accel_erf(i,j,k,l)
integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
.. hlist::
:columns: 3
* :c:data:`n_pt_max_integrals`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_power`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_prim_num`
* :c:data:`ao_nucl`
* :c:data:`nucl_coord`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_explicit_poly_and_gaussian`
.. c:function:: ao_two_e_integrals_erf_in_map_collector:
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_collector(zmq_socket_pull)
Collects results from the AO integral calculation
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_num`
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`end_zmq_to_qp_run_socket`
* :c:func:`insert_into_ao_integrals_erf_map`
.. c:function:: ao_two_e_integrals_erf_in_map_slave:
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_slave(thread,iproc)
Computes a buffer of integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave_inproc`
* :c:func:`ao_two_e_integrals_erf_in_map_slave_tcp`
Calls:
.. hlist::
:columns: 3
* :c:func:`compute_ao_integrals_erf_jl`
* :c:func:`end_zmq_push_socket`
* :c:func:`end_zmq_to_qp_run_socket`
* :c:func:`push_integrals`
.. c:function:: ao_two_e_integrals_erf_in_map_slave_inproc:
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_slave_inproc(i)
Computes a buffer of integrals. i is the ID of the current thread.
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
.. c:function:: ao_two_e_integrals_erf_in_map_slave_tcp:
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
.. code:: fortran
subroutine ao_two_e_integrals_erf_in_map_slave_tcp(i)
Computes a buffer of integrals. i is the ID of the current thread.
Calls:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
.. c:function:: clear_ao_erf_map:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine clear_ao_erf_map
Frees the memory of the |AO| map
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_deinit`
.. c:function:: compute_ao_integrals_erf_jl:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
subroutine compute_ao_integrals_erf_jl(j,l,n_integrals,buffer_i,buffer_value)
Parallel client for AO integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_erf_schwartz`
Called by:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
Calls:
.. hlist::
:columns: 3
* :c:func:`two_e_integrals_index`
.. c:function:: compute_ao_two_e_integrals_erf:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
subroutine compute_ao_two_e_integrals_erf(j,k,l,sze,buffer_value)
Compute AO 1/r12 integrals for all i and fixed j,k,l
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_overlap_abs`
* :c:data:`ao_num`
* :c:data:`ao_two_e_integral_erf_schwartz`
Called by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
.. c:function:: dump_ao_integrals_erf:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine dump_ao_integrals_erf(filename)
Save to disk the |AO| erf integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_work_empty`
.. c:function:: eri_erf:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
double precision function ERI_erf(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)
Atomic primtive two-electron integral between the 4 primitives :
* primitive 1 : $x_1^{a_x} y_1^{a_y} z_1^{a_z} \exp(-\alpha * r1^2)$
* primitive 2 : $x_1^{b_x} y_1^{b_y} z_1^{b_z} \exp(- \beta * r1^2)$
* primitive 3 : $x_2^{c_x} y_2^{c_y} z_2^{c_z} \exp(-\delta * r2^2)$
* primitive 4 : $x_2^{d_x} y_2^{d_y} z_2^{d_z} \exp(-\gamma * r2^2)$
Needs:
.. hlist::
:columns: 3
* :c:data:`mu_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`integrale_new_erf`
.. c:function:: get_ao_erf_map_size:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
function get_ao_erf_map_size()
Returns the number of elements in the |AO| map
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
.. c:function:: get_ao_two_e_integral_erf:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
double precision function get_ao_two_e_integral_erf(i,j,k,l,map) result(result)
Gets one |AO| two-electron integral from the |AO| map
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_cache_min`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_integrals_erf_cache`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_get`
* :c:func:`two_e_integrals_index`
.. c:function:: get_ao_two_e_integrals_erf:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine get_ao_two_e_integrals_erf(j,k,l,sze,out_val)
Gets multiple |AO| two-electron integral from the |AO| map .
All i are retrieved for j,k,l fixed.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integrals_erf_in_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`add_integrals_to_map_erf`
.. c:function:: get_ao_two_e_integrals_erf_non_zero:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine get_ao_two_e_integrals_erf_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int)
Gets multiple |AO| two-electron integrals from the |AO| map .
All non-zero i are retrieved for j,k,l fixed.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
Called by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_get`
* :c:func:`two_e_integrals_index`
.. c:function:: insert_into_ao_integrals_erf_map:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
subroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values)
Create new entry into |AO| map
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_collector`
Calls:
.. hlist::
:columns: 3
* :c:func:`map_append`
.. c:function:: integrale_new_erf:
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
.. code:: fortran
subroutine integrale_new_erf(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)
Calculate the integral of the polynomial :
$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)$
Needs:
.. hlist::
:columns: 3
* :c:data:`mu_erf`
* :c:data:`n_pt_max_integrals`
* :c:data:`gauleg_t2`
Called by:
.. hlist::
:columns: 3
* :c:func:`eri_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_x1_new`
.. c:function:: load_ao_integrals_erf:
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
.. code:: fortran
integer function load_ao_integrals_erf(filename)
Read from disk the |AO| erf integrals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`cache_map_reallocate`
* :c:func:`map_deinit`
* :c:func:`map_sort`
.. c:function:: save_erf_two_e_integrals_ao:
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
.. code:: fortran
subroutine save_erf_two_e_integrals_ao
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ezfio_filename`
* :c:data:`ao_two_e_integrals_erf_in_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`routine`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf`
* :c:func:`ezfio_set_work_empty`
* :c:func:`map_save_to_disk`
.. c:function:: save_erf_two_e_ints_ao_into_ints_ao:
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
.. code:: fortran
subroutine save_erf_two_e_ints_ao_into_ints_ao
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_erf_map`
* :c:data:`ezfio_filename`
* :c:data:`ao_two_e_integrals_erf_in_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_ao_two_e_ints_io_ao_two_e_integrals`
* :c:func:`ezfio_set_work_empty`
* :c:func:`map_save_to_disk`

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,53 @@
.. _module_aux_quantities:
.. program:: aux_quantities
.. default-role:: option
==============
aux_quantities
==============
This module contains some global variables (such as densities and energies)
which are stored in the |EZFIO| directory in a different place than determinants.
This is used in practice to store density matrices which can be obtained from
any method, as long as they are stored in the same |MO| basis which is used for
the calculations. In |RSDFT| calculations, this can be done to perform damping
on the density in order to speed up the convergence.
The main providers of that module are:
* :c:data:`data_one_e_dm_alpha_mo` and :c:data:`data_one_e_dm_beta_mo` which
are the one-body alpha and beta densities which are necessary read from the
|EZFIO| directory.
Thanks to these providers you can use any density matrix that does not
necessarily corresponds to that of the current wave function.
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_e_dm_alpha_mo
Alpha one body density matrix on the |MO| basis computed with the wave function
.. option:: data_one_e_dm_beta_mo
Beta one body density matrix on the |MO| basis computed with the wave function

View File

@ -0,0 +1,900 @@
.. _module_becke_numerical_grid:
.. program:: becke_numerical_grid
.. default-role:: option
====================
becke_numerical_grid
====================
This module contains all quantities needed to build 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. No pruning is done on the angular part of the grid.
The main keyword for that module is:
* :option:`becke_numerical_grid grid_type_sgn` which controls the precision of the grid according the standard **SG-n** grids. This keyword controls the two providers `n_points_integration_angular` `n_points_radial_grid`.
The main providers of that module are:
* `n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 170 | 194 | 266 | 302 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details.
* `n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary.
* `final_grid_points` which are the (x,y,z) coordinates of the grid points.
* `final_weight_at_r_vector` which are the weights at each grid point
For a simple example of how to use the grid, see :file:`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:: grid_type_sgn
Type of grid used for the Becke's numerical grid. Can be, by increasing accuracy: [ 0 | 1 | 2 | 3 ]
Default: 2
.. option:: n_points_final_grid
Total number of grid points
Providers
---------
.. c:var:: alpha_knowles
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision, allocatable :: alpha_knowles (100)
Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996)
as a function of the nuclear charge
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: angular_quadrature_points
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3)
double precision, allocatable :: weights_angular_points (n_points_integration_angular)
weights and grid points for the integration on the angular variables on
the unit sphere centered on (0,0,0)
According to the LEBEDEV scheme
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: dr_radial_integral
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
double precision :: dr_radial_integral
points in [0,1] to map the radial integral [0,\infty]
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: final_grid_points
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: final_weight_at_r
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights.
Needs:
.. hlist::
:columns: 3
* :c:data:`alpha_knowles`
* :c:data:`angular_quadrature_points`
* :c:data:`grid_points_radial`
* :c:data:`m_knowles`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_charge`
* :c:data:`nucl_num`
* :c:data:`weight_at_r`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_grid_points`
.. c:var:: final_weight_at_r_vector
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: grid_points_per_atom
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: grid_points_per_atom (3,n_points_integration_angular,n_points_radial_grid,nucl_num)
x,y,z coordinates of grid points used for integration in 3d space
Needs:
.. hlist::
:columns: 3
* :c:data:`alpha_knowles`
* :c:data:`angular_quadrature_points`
* :c:data:`grid_points_radial`
* :c:data:`m_knowles`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_grid_points`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: grid_points_radial
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
double precision :: dr_radial_integral
points in [0,1] to map the radial integral [0,\infty]
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: index_final_points
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: index_final_points_reverse
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
integer, allocatable :: index_final_points (3,n_points_final_grid)
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
Needs:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :c:data:`mos_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: m_knowles
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: m_knowles
value of the "m" parameter in the equation (7) of the paper of Knowles (JCP, 104, 1996)
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
.. c:var:: n_points_final_grid
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
.. code:: fortran
integer :: n_points_final_grid
Number of points which are non zero
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
* :c:data:`aos_in_r_array`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :c:data:`final_grid_points`
* :c:data:`mos_grad_in_r_array`
* :c:data:`mos_in_r_array`
* :c:data:`mos_lapl_in_r_array`
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
* :c:data:`pot_grad_x_alpha_ao_pbe`
* :c:data:`pot_grad_xc_alpha_ao_pbe`
* :c:data:`pot_scal_x_alpha_ao_pbe`
* :c:data:`pot_scal_xc_alpha_ao_pbe`
* :c:data:`pot_sr_grad_x_alpha_ao_pbe`
* :c:data:`pot_sr_grad_xc_alpha_ao_pbe`
* :c:data:`pot_sr_scal_x_alpha_ao_pbe`
* :c:data:`pot_sr_scal_xc_alpha_ao_pbe`
* :c:data:`potential_c_alpha_ao_lda`
* :c:data:`potential_c_alpha_ao_sr_lda`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_sr_lda`
* :c:data:`potential_xc_alpha_ao_lda`
* :c:data:`potential_xc_alpha_ao_sr_lda`
.. c:var:: n_points_grid_per_atom
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_grid_per_atom
Number of grid points per atom
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
.. c:var:: n_points_integration_angular
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_radial_grid
integer :: n_points_integration_angular
n_points_radial_grid = number of radial grid points per atom
n_points_integration_angular = number of angular grid points per atom
These numbers are automatically set by setting the grid_type_sgn parameter
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_type_sgn`
Needed by:
.. hlist::
:columns: 3
* :c:data:`angular_quadrature_points`
* :c:data:`final_grid_points`
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`grid_points_radial`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: n_points_radial_grid
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
integer :: n_points_radial_grid
integer :: n_points_integration_angular
n_points_radial_grid = number of radial grid points per atom
n_points_integration_angular = number of angular grid points per atom
These numbers are automatically set by setting the grid_type_sgn parameter
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_type_sgn`
Needed by:
.. hlist::
:columns: 3
* :c:data:`angular_quadrature_points`
* :c:data:`final_grid_points`
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
* :c:data:`grid_points_radial`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`weight_at_r`
.. c:var:: weight_at_r
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
Weight function at grid points : w_n(r) according to the equation (22)
of Becke original paper (JCP, 88, 1988)
The "n" discrete variable represents the nucleis which in this array is
represented by the last dimension and the points are labelled by the
other dimensions.
Needs:
.. hlist::
:columns: 3
* :c:data:`grid_points_per_atom`
* :c:data:`n_points_radial_grid`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_dist_inv`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_type_inter_distance_ua`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
.. c:var:: weights_angular_points
File : :file:`becke_numerical_grid/grid_becke.irp.f`
.. code:: fortran
double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3)
double precision, allocatable :: weights_angular_points (n_points_integration_angular)
weights and grid points for the integration on the angular variables on
the unit sphere centered on (0,0,0)
According to the LEBEDEV scheme
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_radial_grid`
Needed by:
.. hlist::
:columns: 3
* :c:data:`final_weight_at_r`
* :c:data:`grid_points_per_atom`
Subroutines / functions
-----------------------
.. c:function:: cell_function_becke:
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: fortran
double precision function cell_function_becke(r,atom_number)
atom_number :: atom on which the cell function of Becke (1988, JCP,88(4))
r(1:3) :: x,y,z coordinantes of the current point
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
* :c:data:`slater_bragg_type_inter_distance_ua`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_num`
.. c:function:: derivative_knowles_function:
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision function derivative_knowles_function(alpha,m,x)
Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points
.. c:function:: example_becke_numerical_grid:
File : :file:`becke_numerical_grid/example.irp.f`
.. code:: fortran
subroutine example_becke_numerical_grid
subroutine that illustrates the main features available in becke_numerical_grid
Needs:
.. hlist::
:columns: 3
* :c:data:`n_points_final_grid`
* :c:data:`final_weight_at_r`
* :c:data:`n_points_radial_grid`
* :c:data:`grid_points_per_atom`
* :c:data:`final_grid_points`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
.. c:function:: f_function_becke:
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: fortran
double precision function f_function_becke(x)
.. c:function:: knowles_function:
File : :file:`becke_numerical_grid/integration_radial.irp.f`
.. code:: fortran
double precision function knowles_function(alpha,m,x)
Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points :
the Log "m" function ( equation (7) in the paper )
.. c:function:: step_function_becke:
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
.. code:: fortran
double precision function step_function_becke(x)
Step function of the Becke paper (1988, JCP,88(4))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

280
docs/source/modules/cis.rst Normal file
View File

@ -0,0 +1,280 @@
.. _module_cis:
.. program:: cis
.. default-role:: option
===
cis
===
This module contains a |CIS| program.
The user point of view
----------------------
The :ref:`cis` program performs the CI to obtain the ROHF reference + all
single excitations on top of it. This program can be very useful to:
* **Ground state calculations**: generate a guess for the ground state wave
function if one is not sure that the :ref:`scf` program gave the lowest |SCF|
solution. In combination with :ref:`save_natorb` it can produce new |MOs| in
order to reperform an :ref:`scf` optimization.
* **Excited states calculations**: generate guesses for all the
:option:`determinants n_states` wave functions, that will be used by the
:ref:`fci` program.
The main keywords/options to be used are:
* :option:`determinants n_states`: number of states to consider for the |CIS| calculation
* :option:`determinants s2_eig`: force all states to have the desired value of |S^2|
* :option:`determinants expected_s2`: desired value of |S^2|
The programmer's point of view
------------------------------
This module was built by setting the following rules:
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated singly excited determinants are included in the wave function (no perturbative
selection)
These rules are set in the ``H_apply.irp.f`` file.
EZFIO parameters
----------------
.. option:: energy
Variational |CIS| energy
Programs
--------
* :ref:`cis`
Subroutines / functions
-----------------------
.. c:function:: h_apply_cis:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cis()
Calls H_apply on the |HF| determinant and selects all connected single and double
excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script.
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask`
* :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`build_fock_tmp`
* :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`dsort`
* :c:func:`h_apply_cis_diexc`
* :c:func:`h_apply_cis_monoexc`
* :c:func:`make_s2_eigenfunction`
* :c:func:`wall_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_occ_pattern`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_occ_pattern`
.. c:function:: h_apply_cis_diexc:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cis_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis_diexcp`
.. c:function:: h_apply_cis_diexcorg:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cis_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
Generate all double excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis_diexcp`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`
.. c:function:: h_apply_cis_diexcp:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cis_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis_diexc`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis_diexcorg`
.. c:function:: h_apply_cis_monoexc:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cis_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
Generate all single excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cis`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`

View File

@ -0,0 +1,273 @@
.. _module_cisd:
.. program:: cisd
.. default-role:: option
====
cisd
====
This module contains a CI of single and double excitations.
The user point of view
----------------------
The :command:`cisd` program performs the CI of the ROHF-like + all single and double excitations on top of it.
This program can be very useful to :
* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization.
* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program.
The main keywords/options to be used are:
* :option:`determinants n_states` : number of states to consider for the |cisd| calculation
* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2`
* :option:`determinants expected_s2` : desired value of :math:`S^2`
The programmer point of view
----------------------------
This module have been built by setting the following rules:
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated determinants are included in the wave function (no perturbative
selection)
These rules are set in the ``H_apply.irp.f`` file.
EZFIO parameters
----------------
.. option:: energy
Variational |CISD| energy
Programs
--------
* :ref:`cisd`
Subroutines / functions
-----------------------
.. c:function:: h_apply_cisd:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd()
Calls H_apply on the |HF| determinant and selects all connected single and double
excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script.
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`generators_bitmask`
* :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`s2_eig`
* :c:data:`n_det_generators`
* :c:data:`i_bitmask_gen`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`build_fock_tmp`
* :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`dsort`
* :c:func:`h_apply_cisd_diexc`
* :c:func:`h_apply_cisd_monoexc`
* :c:func:`make_s2_eigenfunction`
* :c:func:`wall_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_occ_pattern`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_occ_pattern`
.. c:function:: h_apply_cisd_diexc:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexcp`
.. c:function:: h_apply_cisd_diexcorg:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
Generate all double excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexcp`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`
.. c:function:: h_apply_cisd_diexcp:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexc`
Calls:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd_diexcorg`
.. c:function:: h_apply_cisd_monoexc:
File : :file:`h_apply.irp.f_shell_8`
.. code:: fortran
subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
Generate all single excitations of key_in using the bit masks of holes and
particles.
Assume N_int is already provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_apply_cisd`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`fill_h_apply_buffer_no_selection`

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
.. _module_davidson_dressed:
.. program:: davidson_dressed
.. default-role:: option
================
davidson_dressed
================
Davidson with single-column dressing.

View File

@ -0,0 +1,75 @@
.. _module_davidson_undressed:
.. program:: davidson_undressed
.. default-role:: option
==================
davidson_undressed
==================
Module for main files Davidson's algorithm with no dressing.
Providers
---------
.. c:var:: dressing_column_h
File : :file:`davidson_undressed/null_dressing_vector.irp.f`
.. code:: fortran
double precision, allocatable :: dressing_column_h (N_det,N_states)
double precision, allocatable :: dressing_column_s (N_det,N_states)
Null dressing vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
.. c:var:: dressing_column_s
File : :file:`davidson_undressed/null_dressing_vector.irp.f`
.. code:: fortran
double precision, allocatable :: dressing_column_h (N_det,N_states)
double precision, allocatable :: dressing_column_s (N_det,N_states)
Null dressing vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`

View File

@ -0,0 +1,324 @@
.. _module_density_for_dft:
.. program:: density_for_dft
.. default-role:: option
===============
density_for_dft
===============
This module defines the *provider* of the density used for the |DFT| related
calculations. This definition is done through the keyword
:option:`density_for_dft density_for_dft`. The density can be:
* `WFT`: the density is computed with a potentially multi determinant wave
function (see variables `psi_det` and `psi_det`)# input_density: the density
is set to a density previously stored in the |EZFIO| directory (see
``aux_quantities``)
* `damping_rs_dft`: the density is damped between the input_density and the WFT
density, with a damping factor of :option:`density_for_dft damping_for_rs_dft`
EZFIO parameters
----------------
.. option:: density_for_dft
Type of density used for DFT calculation. If set to WFT , it uses the density of the wave function stored in (psi_det,psi_coef). If set to input_density it uses the one-body dm stored in aux_quantities/ . If set to damping_rs_dft it uses the damped density between WFT and input_density. In the ks_scf and rs_ks_scf programs, it is set to WFT.
Default: WFT
.. option:: damping_for_rs_dft
damping factor for the density used in RSFT.
Default: 0.5
.. option:: no_core_density
if [no_core_dm] then all elements of the density matrix involving at least one orbital set as core are set to zero
Default: full_density
Providers
---------
.. c:var:: one_body_dm_mo_alpha_one_det
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states)
double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states)
One body density matrix on the |MO| basis for a single determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
.. c:var:: one_body_dm_mo_beta_one_det
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states)
double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states)
One body density matrix on the |MO| basis for a single determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
.. c:var:: one_e_dm_alpha_ao_for_dft
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states)
double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states)
one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: one_e_dm_average_mo_for_dft
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_average_mo_for_dft (mo_num,mo_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_for_dft`
* :c:data:`state_average_weight`
Needed by:
.. hlist::
:columns: 3
* :c:data:`short_range_hartree_operator`
.. c:var:: one_e_dm_beta_ao_for_dft
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states)
double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states)
one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_alpha_in_r`
* :c:data:`one_e_dm_and_grad_alpha_in_r`
.. c:var:: one_e_dm_mo_alpha_for_dft
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_alpha_for_dft (mo_num,mo_num,N_states)
density matrix for alpha electrons in the MO basis used for all DFT calculations based on the density
Needs:
.. hlist::
:columns: 3
* :c:data:`damping_for_rs_dft`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`density_for_dft`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
* :c:data:`n_states`
* :c:data:`no_core_density`
* :c:data:`one_body_dm_mo_alpha_one_det`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`one_e_dm_mo_alpha_average`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_e_dm_mo_for_dft`
* :c:data:`psi_dft_energy_kinetic`
* :c:data:`trace_v_xc`
* :c:data:`trace_v_xc_new`
.. c:var:: one_e_dm_mo_beta_for_dft
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_beta_for_dft (mo_num,mo_num,N_states)
density matrix for beta electrons in the MO basis used for all DFT calculations based on the density
Needs:
.. hlist::
:columns: 3
* :c:data:`damping_for_rs_dft`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`density_for_dft`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
* :c:data:`n_states`
* :c:data:`no_core_density`
* :c:data:`one_body_dm_mo_alpha_one_det`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`one_e_dm_mo_alpha_average`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_e_dm_mo_for_dft`
* :c:data:`psi_dft_energy_kinetic`
* :c:data:`trace_v_xc`
* :c:data:`trace_v_xc_new`
.. c:var:: one_e_dm_mo_for_dft
File : :file:`density_for_dft/density_for_dft.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_for_dft (mo_num,mo_num,N_states)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_average_mo_for_dft`
* :c:data:`short_range_hartree_operator`

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,116 @@
.. _module_dft_keywords:
.. program:: dft_keywords
.. default-role:: option
============
dft_keywords
============
This module contains the main keywords related to a DFT calculation or RS-DFT calculation.
These keywords are related to the following programs of the |QP| core modules:
* :ref:`ks_scf` : Kohn-Sham |DFT|
* :ref:`rs_ks_scf` : Range separated Hybrids |DFT|
Modifying the exchange/correlation functionals
----------------------------------------------
To modify the exchange/correlation functionals, see the following keywords:
* :option:`dft_keywords exchange_functional`: type of exchange functionals
* :option:`dft_keywords correlation_functional`: type of correlation functionals
Each of these keywords can have the following value:
* "LDA" or "short_range_LDA" for, respectively the |LDA| and its short-range version
* "PBE" or "short_range_PBE" for, respectively the |PBE| and its short-range version
Modifying the amount of |HF| exchange
-------------------------------------
* :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program
Other related keywords not defined in :ref:`module_dft_keywords`
----------------------------------------------------------------
The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_ints mu_erf` keyword.
The keyword for the **type of density used in RS-DFT** calculation with a **multi-configurational wave function** is the :option:`density_for_dft density_for_dft` keyword.
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.
Providers
---------
.. c:var:: dft_type
File : :file:`dft_keywords/keywords.irp.f`
.. code:: fortran
character*(32) :: dft_type
defines the type of DFT applied: LDA, GGA etc ...
Needs:
.. hlist::
:columns: 3
* :c:data:`correlation_functional`
* :c:data:`exchange_functional`
.. c:var:: same_xc_func
File : :file:`dft_keywords/keywords.irp.f`
.. code:: fortran
logical :: same_xc_func
true if the exchange and correlation functionals are the same
Needs:
.. hlist::
:columns: 3
* :c:data:`correlation_functional`
* :c:data:`exchange_functional`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_potential_alpha_xc`

View File

@ -0,0 +1,640 @@
.. _module_dft_one_e:
.. program:: dft_one_e
.. default-role:: option
dft_one_e
=========
This module defines the most important providers needed for the |DFT| and |RSDFT| calculations:
* :c:data:`energy_x` and :c:data:`energy_c` : the *exchange* and *correlation* energy functionals (see :file:`e_xc_general.irp.f`)
* :c:data:`potential_x_alpha_ao` and :c:data:`potential_x_beta_ao` : the exchange potential for alpha/beta electrons (see :file:`pot_general.irp.f`)
* :c:data:`potential_c_alpha_ao` and :c:data:`potential_c_beta_ao` : the correlation potential for alpha/beta electrons (see :file:`pot_general.irp.f`)
These providers are then used in the :ref:`ks_scf` and :ref:`rs_ks_scf` programs, together within some |RSDFT| external
plugins (see `<https://gitlab.com/eginer/qp_plugins_eginer>`_).
The flexibility of the functionals is handle by the two following keywords (see :ref:`module_dft_keywords`):
* :option:`dft_keywords exchange_functional` : defines which *exchange* functionals will be set
* :option:`dft_keywords correlation_functional` : defines which *correlation* functionals will be set
In the core modules of the |QP|, two functionals are implemented:
* "LDA" or "short_range_LDA" for, respectively the |LDA| and its short-range version
* "PBE" or "short_range_PBE" for, respectively the |PBE| and its short-range version
Providers
---------
.. c:var:: energy_c
File : :file:`dft_one_e/e_xc_general.irp.f`
.. code:: fortran
double precision, allocatable :: energy_c (N_states)
correlation and exchange energies general providers.
Needs:
.. hlist::
:columns: 3
* :c:data:`correlation_functional`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_none`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`e_correlation_dft`
.. c:var:: energy_x
File : :file:`dft_one_e/e_xc_general.irp.f`
.. code:: fortran
double precision, allocatable :: energy_x (N_states)
correlation energies general providers.
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_x_lda`
* :c:data:`energy_x_none`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :c:data:`exchange_functional`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`e_exchange_dft`
.. c:var:: potential_c_alpha_ao
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states)
general providers for the alpha/beta correlation potentials on the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`correlation_functional`
* :c:data:`n_states`
* :c:data:`potential_c_alpha_ao_lda`
* :c:data:`potential_c_alpha_ao_none`
* :c:data:`potential_c_alpha_ao_sr_lda`
* :c:data:`potential_c_beta_ao_none`
* :c:data:`potential_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_sr_pbe`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_potential_alpha_xc`
* :c:data:`potential_c_alpha_mo`
.. c:var:: potential_c_alpha_mo
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states)
general providers for the alpha/beta correlation potentials on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`potential_c_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`effective_one_e_potential`
* :c:data:`trace_v_xc`
.. c:var:: potential_c_beta_ao
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states)
general providers for the alpha/beta correlation potentials on the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`correlation_functional`
* :c:data:`n_states`
* :c:data:`potential_c_alpha_ao_lda`
* :c:data:`potential_c_alpha_ao_none`
* :c:data:`potential_c_alpha_ao_sr_lda`
* :c:data:`potential_c_beta_ao_none`
* :c:data:`potential_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_sr_pbe`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_potential_alpha_xc`
* :c:data:`potential_c_alpha_mo`
.. c:var:: potential_c_beta_mo
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states)
general providers for the alpha/beta correlation potentials on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`potential_c_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`effective_one_e_potential`
* :c:data:`trace_v_xc`
.. c:var:: potential_x_alpha_ao
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states)
general providers for the alpha/beta exchange potentials on the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`exchange_functional`
* :c:data:`n_states`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_none`
* :c:data:`potential_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_sr_lda`
* :c:data:`potential_x_alpha_ao_sr_pbe`
* :c:data:`potential_x_beta_ao_none`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_potential_alpha_xc`
* :c:data:`potential_x_alpha_mo`
.. c:var:: potential_x_alpha_mo
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states)
general providers for the alpha/beta exchange potentials on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`potential_x_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`effective_one_e_potential`
* :c:data:`trace_v_xc`
.. c:var:: potential_x_beta_ao
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states)
general providers for the alpha/beta exchange potentials on the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`exchange_functional`
* :c:data:`n_states`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_none`
* :c:data:`potential_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_sr_lda`
* :c:data:`potential_x_alpha_ao_sr_pbe`
* :c:data:`potential_x_beta_ao_none`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_potential_alpha_xc`
* :c:data:`potential_x_alpha_mo`
.. c:var:: potential_x_beta_mo
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states)
general providers for the alpha/beta exchange potentials on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`potential_x_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`effective_one_e_potential`
* :c:data:`trace_v_xc`
.. c:var:: potential_xc_alpha_ao
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_xc_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable :: potential_xc_beta_ao (ao_num,ao_num,N_states)
general providers for the alpha/beta exchange/correlation potentials on the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`exchange_functional`
* :c:data:`n_states`
* :c:data:`potential_xc_alpha_ao_lda`
* :c:data:`potential_xc_alpha_ao_none`
* :c:data:`potential_xc_alpha_ao_pbe`
* :c:data:`potential_xc_alpha_ao_sr_lda`
* :c:data:`potential_xc_alpha_ao_sr_pbe`
* :c:data:`potential_xc_beta_ao_none`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_potential_alpha_xc`
* :c:data:`potential_xc_alpha_mo`
.. c:var:: potential_xc_alpha_mo
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_xc_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable :: potential_xc_beta_mo (mo_num,mo_num,N_states)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`potential_xc_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`trace_v_xc_new`
.. c:var:: potential_xc_beta_ao
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_xc_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable :: potential_xc_beta_ao (ao_num,ao_num,N_states)
general providers for the alpha/beta exchange/correlation potentials on the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`exchange_functional`
* :c:data:`n_states`
* :c:data:`potential_xc_alpha_ao_lda`
* :c:data:`potential_xc_alpha_ao_none`
* :c:data:`potential_xc_alpha_ao_pbe`
* :c:data:`potential_xc_alpha_ao_sr_lda`
* :c:data:`potential_xc_alpha_ao_sr_pbe`
* :c:data:`potential_xc_beta_ao_none`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_potential_alpha_xc`
* :c:data:`potential_xc_alpha_mo`
.. c:var:: potential_xc_beta_mo
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: potential_xc_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable :: potential_xc_beta_mo (mo_num,mo_num,N_states)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`potential_xc_alpha_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`trace_v_xc_new`
.. c:var:: trace_v_h
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: trace_v_xc (N_states)
double precision, allocatable :: trace_v_h (N_states)
double precision, allocatable :: trace_v_hxc (N_states)
Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta)
Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta)
Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij}
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
* :c:data:`potential_c_alpha_mo`
* :c:data:`potential_x_alpha_mo`
* :c:data:`short_range_hartree_operator`
.. c:var:: trace_v_hxc
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: trace_v_xc (N_states)
double precision, allocatable :: trace_v_h (N_states)
double precision, allocatable :: trace_v_hxc (N_states)
Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta)
Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta)
Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij}
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
* :c:data:`potential_c_alpha_mo`
* :c:data:`potential_x_alpha_mo`
* :c:data:`short_range_hartree_operator`
.. c:var:: trace_v_xc
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: trace_v_xc (N_states)
double precision, allocatable :: trace_v_h (N_states)
double precision, allocatable :: trace_v_hxc (N_states)
Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta)
Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta)
Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij}
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
* :c:data:`potential_c_alpha_mo`
* :c:data:`potential_x_alpha_mo`
* :c:data:`short_range_hartree_operator`
.. c:var:: trace_v_xc_new
File : :file:`dft_one_e/pot_general.irp.f`
.. code:: fortran
double precision, allocatable :: trace_v_xc_new (N_states)
Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_e_dm_mo_beta_for_dft`
* :c:data:`potential_xc_alpha_mo`

View File

@ -0,0 +1,907 @@
.. _module_dft_utils_in_r:
.. program:: dft_utils_in_r
.. default-role:: option
==============
dft_utils_in_r
==============
This module contains most of the fundamental quantities (AOs, MOs or density derivatives) evaluated in real-space representation that are needed for the various DFT modules.
As these quantities might be used and re-used, the values at each point of the grid are stored (see ``becke_numerical_grid`` for more information on the grid).
The main providers for this module are:
* `aos_in_r_array`: values of the |AO| basis on the grid point.
* `mos_in_r_array`: values of the |MO| basis on the grid point.
* `one_e_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points.
Providers
---------
.. c:var:: aos_grad_in_r_array
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3)
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mos_grad_in_r_array`
.. c:var:: aos_grad_in_r_array_transp
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3)
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
.. c:var:: aos_grad_in_r_array_transp_xyz
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,ao_num,n_points_final_grid)
aos_grad_in_r_array_transp_xyz(k,i,j) = value of the kth component of the gradient of jth ao on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_pbe_w`
.. c:var:: aos_in_r_array
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid)
double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num)
aos_in_r_array(i,j) = value of the ith ao on the jth grid point
aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`pot_grad_x_alpha_ao_pbe`
* :c:data:`pot_grad_xc_alpha_ao_pbe`
* :c:data:`pot_scal_x_alpha_ao_pbe`
* :c:data:`pot_scal_xc_alpha_ao_pbe`
* :c:data:`pot_sr_grad_x_alpha_ao_pbe`
* :c:data:`pot_sr_grad_xc_alpha_ao_pbe`
* :c:data:`pot_sr_scal_x_alpha_ao_pbe`
* :c:data:`pot_sr_scal_xc_alpha_ao_pbe`
* :c:data:`potential_c_alpha_ao_lda`
* :c:data:`potential_c_alpha_ao_sr_lda`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_sr_lda`
* :c:data:`potential_xc_alpha_ao_lda`
* :c:data:`potential_xc_alpha_ao_sr_lda`
.. c:var:: aos_in_r_array_transp
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid)
double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num)
aos_in_r_array(i,j) = value of the ith ao on the jth grid point
aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`pot_grad_x_alpha_ao_pbe`
* :c:data:`pot_grad_xc_alpha_ao_pbe`
* :c:data:`pot_scal_x_alpha_ao_pbe`
* :c:data:`pot_scal_xc_alpha_ao_pbe`
* :c:data:`pot_sr_grad_x_alpha_ao_pbe`
* :c:data:`pot_sr_grad_xc_alpha_ao_pbe`
* :c:data:`pot_sr_scal_x_alpha_ao_pbe`
* :c:data:`pot_sr_scal_xc_alpha_ao_pbe`
* :c:data:`potential_c_alpha_ao_lda`
* :c:data:`potential_c_alpha_ao_sr_lda`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_sr_lda`
* :c:data:`potential_xc_alpha_ao_lda`
* :c:data:`potential_xc_alpha_ao_sr_lda`
.. c:var:: aos_lapl_in_r_array
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3)
double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3)
aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point
aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mos_lapl_in_r_array`
.. c:var:: aos_lapl_in_r_array_transp
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3)
double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3)
aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point
aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
* :c:data:`ao_expo_ordered_transp_per_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power_ordered_transp_per_nucl`
* :c:data:`ao_prim_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`nucl_aos_transposed`
* :c:data:`nucl_coord`
* :c:data:`nucl_n_aos`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mos_lapl_in_r_array`
.. c:var:: mos_grad_in_r_array
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: mos_grad_in_r_array (mo_num,n_points_final_grid,3)
mos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith mo on the jth grid point
mos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth mo on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`aos_grad_in_r_array`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
* :c:data:`n_points_final_grid`
.. c:var:: mos_in_r_array
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid)
double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num)
mos_in_r_array(i,j) = value of the ith mo on the jth grid point
mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
* :c:data:`n_points_final_grid`
.. c:var:: mos_in_r_array_transp
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid)
double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num)
mos_in_r_array(i,j) = value of the ith mo on the jth grid point
mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
* :c:data:`n_points_final_grid`
.. c:var:: mos_lapl_in_r_array
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: mos_lapl_in_r_array (mo_num,n_points_final_grid,3)
mos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith mo on the jth grid point
mos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth mo on the ith grid point
k = 1 : x, k= 2, y, k 3, z
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`aos_lapl_in_r_array`
* :c:data:`mo_coef_transp`
* :c:data:`mo_num`
* :c:data:`n_points_final_grid`
.. c:var:: one_e_dm_alpha_at_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states)
one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate)
one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate)
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_sr_lda`
.. c:var:: one_e_dm_alpha_in_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`grid_points_per_atom`
* :c:data:`mo_num`
* :c:data:`n_points_radial_grid`
* :c:data:`n_states`
* :c:data:`nucl_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
.. c:var:: one_e_dm_and_grad_alpha_in_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`energy_c_pbe`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_pbe`
.. c:var:: one_e_dm_and_grad_beta_in_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`energy_c_pbe`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_pbe`
.. c:var:: one_e_dm_beta_at_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states)
one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate)
one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate)
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_lda_w`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_sr_lda`
* :c:data:`energy_sr_x_lda`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_sr_lda`
.. c:var:: one_e_dm_beta_in_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`grid_points_per_atom`
* :c:data:`mo_num`
* :c:data:`n_points_radial_grid`
* :c:data:`n_states`
* :c:data:`nucl_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
.. c:var:: one_e_grad_2_dm_alpha_at_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`energy_c_pbe`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_pbe`
.. c:var:: one_e_grad_2_dm_beta_at_r
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
where r_i is the ith point of the grid and istate is the state number
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`final_grid_points`
* :c:data:`n_points_final_grid`
* :c:data:`n_states`
* :c:data:`one_e_dm_alpha_ao_for_dft`
Needed by:
.. hlist::
:columns: 3
* :c:data:`aos_sr_vc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`energy_c_pbe`
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_pbe`
Subroutines / functions
-----------------------
.. c:function:: density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r:
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
subroutine density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, grad_dm_a, grad_dm_b, aos_array, grad_aos_array)
input:
* r(1) ==> r(1) = x, r(2) = y, r(3) = z
output:
* dm_a = alpha density evaluated at r
* dm_b = beta density evaluated at r
* aos_array(i) = ao(i) evaluated at r
* grad_dm_a(1) = X gradient of the alpha density evaluated in r
* grad_dm_a(1) = X gradient of the beta density evaluated in r
* grad_aos_array(1) = X gradient of the aos(i) evaluated at r
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`n_states`
Called by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_and_grad_alpha_in_r`
Calls:
.. hlist::
:columns: 3
* :c:func:`dsymv`
* :c:func:`give_all_aos_and_grad_at_r`
.. c:function:: dm_dft_alpha_beta_and_all_aos_at_r:
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
subroutine dm_dft_alpha_beta_and_all_aos_at_r(r,dm_a,dm_b,aos_array)
input: r(1) ==> r(1) = x, r(2) = y, r(3) = z
output : dm_a = alpha density evaluated at r
output : dm_b = beta density evaluated at r
output : aos_array(i) = ao(i) evaluated at r
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`n_states`
Calls:
.. hlist::
:columns: 3
* :c:func:`dsymv`
* :c:func:`give_all_aos_at_r`
.. c:function:: dm_dft_alpha_beta_at_r:
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
.. code:: fortran
subroutine dm_dft_alpha_beta_at_r(r,dm_a,dm_b)
input: r(1) ==> r(1) = x, r(2) = y, r(3) = z
output : dm_a = alpha density evaluated at r(3)
output : dm_b = beta density evaluated at r(3)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`n_states`
Called by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_e_dm_alpha_in_r`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemv`
* :c:func:`give_all_aos_at_r`

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
.. _module_dressing:
.. program:: dressing
.. default-role:: option
=========
dress_zmq
=========
Module to facilitate the construction of modules using dressed
Hamiltonians, parallelized with |ZeroMQ|.
EZFIO parameters
----------------
.. option:: thresh_dressed_ci
Threshold on the convergence of the dressed |CI| energy
Default: 1.e-5
.. option:: n_it_max_dressed_ci
Maximum number of dressed |CI| iterations
Default: 10
.. option:: dress_relative_error
Stop stochastic dressing when the relative error is smaller than :option:`perturbation PT2_relative_error`
Default: 0.001

View File

@ -0,0 +1,112 @@
.. _module_electrons:
.. program:: electrons
.. default-role:: option
=========
electrons
=========
Describes the electrons. For the moment, only the number of alpha
and beta electrons are provided by this module.
Assumptions
===========
* `elec_num` >= 0
* `elec_alpha_num` >= 0
* `elec_beta_num` >= 0
* `elec_alpha_num` >= `elec_beta_num`
EZFIO parameters
----------------
.. option:: elec_alpha_num
Numbers of electrons alpha ("up")
.. option:: elec_beta_num
Numbers of electrons beta ("down")
.. option:: elec_num
Numbers total of electrons (alpha + beta)
Default: = electrons.elec_alpha_num + electrons.elec_beta_num
Providers
---------
.. c:var:: elec_num
File : :file:`electrons/electrons.irp.f`
.. code:: fortran
integer :: elec_num
integer, allocatable :: elec_num_tab (2)
Numbers of alpha ("up") , beta ("down") and total electrons
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
Needed by:
.. hlist::
:columns: 3
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: elec_num_tab
File : :file:`electrons/electrons.irp.f`
.. code:: fortran
integer :: elec_num
integer, allocatable :: elec_num_tab (2)
Numbers of alpha ("up") , beta ("down") and total electrons
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
Needed by:
.. hlist::
:columns: 3
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`

View File

@ -0,0 +1,769 @@
.. _module_ezfio_files:
.. program:: ezfio_files
.. default-role:: option
===========
ezfio_files
===========
This modules essentially contains the name of the |EZFIO| directory in the
:c:data:`ezfio_filename` variable. This is read as the first argument of the
command-line, or as the :envvar:`QP_INPUT` environment variable.
Providers
---------
.. c:var:: ezfio_filename
File : :file:`ezfio_files/ezfio.irp.f`
.. code:: fortran
character*(128) :: ezfio_filename
Name of EZFIO file. It is obtained from the QPACKAGE_INPUT environment
variable if it is set, or as the 1st argument of the command line.
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_initialized`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`cas_bitmask`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`elec_num`
* :c:data:`energy_iterations`
* :c:data:`ezfio_work_dir`
* :c:data:`frozen_orb_scf`
* :c:data:`generators_bitmask`
* :c:data:`generators_bitmask_restart`
* :c:data:`h0_type`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_occ`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mu_erf`
* :c:data:`n_cas_bitmask`
* :c:data:`n_det`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_generators_bitmask`
* :c:data:`n_generators_bitmask_restart`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`qp_stop_filename`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
* :c:data:`variance_max`
.. c:var:: ezfio_work_dir
File : :file:`ezfio_files/ezfio.irp.f`
.. code:: fortran
character*(128) :: ezfio_work_dir
EZFIO/work/
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: file_lock
File : :file:`ezfio_files/lock.irp.f`
.. code:: fortran
integer(omp_lock_kind) :: file_lock
OpenMP Lock for I/O
.. c:var:: output_cpu_time_0
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
double precision :: output_wall_time_0
double precision :: output_cpu_time_0
Initial CPU and wall times when printing in the output files
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`h0_type`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mu_erf`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
* :c:data:`variance_max`
.. c:var:: output_wall_time_0
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
double precision :: output_wall_time_0
double precision :: output_cpu_time_0
Initial CPU and wall times when printing in the output files
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`h0_type`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mu_erf`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
* :c:data:`variance_max`
.. c:var:: qp_kill_filename
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
character*(128) :: qp_stop_filename
character*(128) :: qp_kill_filename
integer :: qp_stop_variable
Name of the file to check for qp stop
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: qp_stop_filename
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
character*(128) :: qp_stop_filename
character*(128) :: qp_kill_filename
integer :: qp_stop_variable
Name of the file to check for qp stop
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: qp_stop_variable
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
character*(128) :: qp_stop_filename
character*(128) :: qp_kill_filename
integer :: qp_stop_variable
Name of the file to check for qp stop
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
Subroutines / functions
-----------------------
.. c:function:: getunitandopen:
File : :file:`ezfio_files/get_unit_and_open.irp.f`
.. code:: fortran
integer function getUnitAndOpen(f,mode)
:f:
file name
:mode:
'R' : READ, UNFORMATTED
'W' : WRITE, UNFORMATTED
'r' : READ, FORMATTED
'w' : WRITE, FORMATTED
'a' : APPEND, FORMATTED
'x' : READ/WRITE, FORMATTED
.. c:function:: qp_stop:
File : :file:`ezfio_files/qp_stop.irp.f`
.. code:: fortran
logical function qp_stop()
Checks if the qp_stop command was invoked for the clean termination of the program
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_stop_filename`
.. c:function:: write_bool:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_bool(iunit,value,label)
Write an logical value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
.. c:function:: write_double:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_double(iunit,value,label)
Write a double precision value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:data:`ci_energy`
* :c:func:`damping_scf`
* :c:func:`davidson_diag_hjj_sjj`
* :c:data:`nuclear_repulsion`
* :c:data:`psi_coef_max`
* :c:data:`pt2_e0_denominator`
* :c:func:`roothaan_hall_scf`
* :c:func:`run_cipsi`
* :c:func:`run_slave_main`
* :c:func:`run_stochastic_cipsi`
* :c:func:`zmq_pt2`
* :c:func:`zmq_selection`
.. c:function:: write_int:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_int(iunit,value,label)
Write an integer value in output
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:func:`davidson_diag_hjj_sjj`
* :c:func:`make_s2_eigenfunction`
* :c:data:`mo_num`
* :c:data:`n_cas_bitmask`
* :c:data:`n_core_orb`
* :c:data:`n_det`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`n_generators_bitmask`
* :c:data:`n_generators_bitmask_restart`
* :c:data:`n_int`
* :c:data:`nthreads_davidson`
* :c:data:`nthreads_pt2`
* :c:data:`psi_cas`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_size`
* :c:data:`pt2_f`
* :c:data:`pt2_n_teeth`
* :c:data:`qp_max_mem`
* :c:func:`remove_small_contributions`
* :c:func:`save_wavefunction_general`
* :c:func:`save_wavefunction_specified`
* :c:func:`zmq_pt2`
.. c:function:: write_time:
File : :file:`ezfio_files/output.irp.f`
.. code:: fortran
subroutine write_time(iunit)
Write a time stamp in the output for chronological reconstruction
Needs:
.. hlist::
:columns: 3
* :c:data:`output_wall_time_0`
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:func:`damping_scf`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:func:`davidson_diag_hjj_sjj`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`h0_type`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:func:`make_s2_eigenfunction`
* :c:data:`max_dim_diis`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`mo_as_svd_vectors_of_mo_matrix`
* :c:func:`mo_as_svd_vectors_of_mo_matrix_eig`
* :c:data:`mo_class`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mu_erf`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_relative_error`
* :c:data:`read_wf`
* :c:func:`roothaan_hall_scf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
* :c:data:`variance_max`
Calls:
.. hlist::
:columns: 3
* :c:func:`cpu_time`
* :c:func:`print_memory_usage`
* :c:func:`wall_time`

160
docs/source/modules/fci.rst Normal file
View File

@ -0,0 +1,160 @@
.. _module_fci:
.. program:: fci
.. default-role:: option
===
fci
===
|CIPSI| algorithm in the full configuration interaction space.
The user point of view
----------------------
* :ref:`fci` performs |CIPSI| calculations using a stochastic scheme for both
the selection and the |PT2| contribution,
* :ref:`pt2` computes the |PT2| contribution using the wave function stored in
the |EZFIO| database.
The main keywords/options for this module are:
* :option:`determinants n_det_max` : maximum number of Slater determinants in
the |CIPSI| wave function. The :ref:`fci` program will stop when the size of
the |CIPSI| wave function will exceed :option:`determinants n_det_max`.
* :option:`perturbation pt2_max` : absolute value of the |PT2| to stop the
|CIPSI| calculation. Once the abs(|PT2|) :math:`<` :option:`perturbation pt2_max`,
the |CIPSI| calculation stops.
* :option:`determinants n_states` : number of states to consider in the |CIPSI|
calculation.
* :option:`determinants read_wf` : if |false|, starts with a |ROHF|-like
determinant, if |true|, starts with the current wave function(s) stored in
the |EZFIO| directory.
.. note::
For a multi-state calculation, it is recommended to start with :ref:`cis`
or :ref:`cisd` wave functions as a guess.
* :option:`determinants expected_s2` : expected value of |S^2| for the
desired spin multiplicity.
* :option:`determinants s2_eig` : if |true|, systematically add all the
determinants needed to have a pure value of |S^2|. Also, if |true|, it
tracks only the states having the good :option:`determinants expected_s2`.
The programmer's point of view
------------------------------
This module was created with the :ref:`module_cipsi` module.
.. seealso::
The documentation of the :ref:`module_cipsi` module.
EZFIO parameters
----------------
.. option:: energy
Calculated Selected |FCI| energy
.. option:: energy_pt2
Calculated |FCI| energy + |PT2|
Programs
--------
* :ref:`fci`
* :ref:`pt2`
Providers
---------
.. c:var:: do_ddci
File : :file:`fci/class.irp.f`
.. code:: fortran
logical :: do_only_1h1p
logical :: do_ddci
In the FCI case, all those are always false
.. c:var:: do_only_1h1p
File : :file:`fci/class.irp.f`
.. code:: fortran
logical :: do_only_1h1p
logical :: do_ddci
In the FCI case, all those are always false
Subroutines / functions
-----------------------
.. c:function:: save_energy:
File : :file:`fci/save_energy.irp.f`
.. code:: fortran
subroutine save_energy(E,pt2)
Saves the energy in |EZFIO|.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_fci_energy`
* :c:func:`ezfio_set_fci_energy_pt2`

View File

@ -0,0 +1,19 @@
.. _module_generators_cas:
.. program:: generators_cas
.. default-role:: option
==============
generators_cas
==============
Module defining the generator determinants as those belonging to a |CAS|.
The |MOs| belonging to the |CAS| are those which were set as active with
the :ref:`qp_set_mo_class` command.
This module is intended to be included in the :file:`NEED` file to define
the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance).

View File

@ -0,0 +1,293 @@
.. _module_generators_full:
.. program:: generators_full
.. default-role:: option
===============
generators_full
===============
Module defining the generator determinants as all the determinants of the
variational space.
This module is intended to be included in the :file:`NEED` file to define
a full set of generators.
Providers
---------
.. c:var:: degree_max_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: degree_max_generators
Max degree of excitation (respect to HF) of the generators
Needs:
.. hlist::
:columns: 3
* :c:data:`hf_bitmask`
* :c:data:`n_det_generators`
* :c:data:`n_int`
* :c:data:`psi_det_generators`
.. c:var:: n_det_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: n_det_generators
For Single reference wave functions, the number of generators is 1 : the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`output_wall_time_0`
* :c:data:`psi_det_sorted`
* :c:data:`threshold_generators`
Needed by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
* :c:data:`global_selection_buffer`
* :c:data:`n_det_selectors`
* :c:data:`pt2_f`
* :c:data:`pt2_j`
* :c:data:`pt2_n_tasks`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_u`
* :c:data:`pt2_w`
.. c:var:: psi_coef_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_generators (psi_det_size,N_states)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
.. c:var:: psi_coef_sorted_gen
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_w`
.. c:var:: psi_det_generators
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_generators (psi_det_size,N_states)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
.. c:var:: psi_det_sorted_gen
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_w`
.. c:var:: psi_det_sorted_gen_order
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
For Single reference wave functions, the generator is the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_w`
.. c:var:: select_max
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
double precision, allocatable :: select_max (size_select_max)
Memo to skip useless selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`size_select_max`
.. c:var:: size_select_max
File : :file:`generators_full/generators.irp.f`
.. code:: fortran
integer :: size_select_max
Size of the select_max array
Needed by:
.. hlist::
:columns: 3
* :c:data:`select_max`

View File

@ -0,0 +1,421 @@
.. _module_hartree_fock:
.. program:: hartree_fock
.. default-role:: option
============
hartree_fock
============
Quick description
-----------------
The :ref:`scf` program performs *Restricted* Hartree-Fock
calculations (the spatial part of the |MOs| is common for alpha and beta
spinorbitals).
.. seealso::
To see the keywords/options associated to the |SCF| algorithm itself,
see the documentation of the :ref:`module_scf_utils` module.
More advanced description
-------------------------
The Hartree-Fock algorithm is a |SCF| and therefore is based on the
:ref:`module_scf_utils` module.
The Fock matrix is defined in :file:`fock_matrix_hf.irp.f`.
.. seealso::
For a more detailed description of the |SCF| structure,
see the documentation of the :ref:`module_scf_utils` module.
EZFIO parameters
----------------
.. option:: energy
Energy HF
Programs
--------
* :ref:`scf`
Providers
---------
.. c:var:: ao_two_e_integral_alpha
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
Alpha and Beta Fock matrices in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`hf_energy`
.. c:var:: ao_two_e_integral_beta
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
Alpha and Beta Fock matrices in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_coef_normalized_ordered_transp`
* :c:data:`ao_expo_ordered_transp`
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`do_direct_integrals`
* :c:data:`n_pt_max_integrals`
* :c:data:`nucl_coord`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`hf_energy`
.. c:var:: extra_e_contrib_density
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: extra_e_contrib_density
Extra contribution to the SCF energy coming from the density.
For a Hartree-Fock calculation: extra_e_contrib_density = 0
For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - trace of the V_xc potential
Needed by:
.. hlist::
:columns: 3
* :c:data:`scf_energy`
.. c:var:: fock_matrix_ao_alpha
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`scf_energy`
.. c:var:: fock_matrix_ao_beta
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
Alpha Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`scf_energy`
.. c:var:: hf_energy
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: hf_one_electron_energy
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: hf_two_electron_energy
File : :file:`hartree_fock/hf_energy.irp.f`
.. code:: fortran
double precision :: hf_energy
double precision :: hf_two_electron_energy
double precision :: hf_one_electron_energy
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Subroutines / functions
-----------------------
.. c:function:: create_guess:
File : :file:`hartree_fock/scf.irp.f`
.. code:: fortran
subroutine create_guess
Create a MO guess if no MOs are present in the EZFIO directory
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`mo_guess_type`
* :c:data:`mo_one_e_integrals`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_has_mo_basis_mo_coef`
* :c:func:`huckel_guess`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_label`
.. c:function:: run:
File : :file:`hartree_fock/scf.irp.f`
.. code:: fortran
subroutine run
Run SCF calculation
Needs:
.. hlist::
:columns: 3
* :c:data:`scf_energy`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`pt2`
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_hartree_fock_energy`
* :c:func:`roothaan_hall_scf`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`

View File

@ -0,0 +1,211 @@
.. _module_iterations:
.. program:: iterations
.. default-role:: option
==========
iterations
==========
Module which saves the computed energies for an extrapolation to
the |FCI| limit.
EZFIO parameters
----------------
.. option:: n_iter
Number of saved iterations
Default: 1
.. option:: n_det_iterations
Number of determinants at each iteration
.. option:: energy_iterations
The variational energy at each iteration
.. option:: pt2_iterations
The |PT2| correction at each iteration
Providers
---------
.. c:var:: extrapolated_energy
File : :file:`iterations/iterations.irp.f`
.. code:: fortran
double precision, allocatable :: extrapolated_energy (N_iter,N_states)
Extrapolated energy, using E_var = f(PT2) where PT2=0
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_iterations`
* :c:data:`n_det`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
.. c:var:: n_iter
File : :file:`iterations/io.irp.f`
.. code:: fortran
integer :: n_iter
number of iterations
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
* :c:data:`n_states`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extrapolated_energy`
Subroutines / functions
-----------------------
.. c:function:: print_extrapolated_energy:
File : :file:`iterations/print_extrapolation.irp.f`
.. code:: fortran
subroutine print_extrapolated_energy
Print the extrapolated energy in the output
Needs:
.. hlist::
:columns: 3
* :c:data:`extrapolated_energy`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`pt2_iterations`
* :c:data:`n_iter`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
.. c:function:: print_summary:
File : :file:`iterations/print_summary.irp.f`
.. code:: fortran
subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st,s2_)
Print the extrapolated energy in the output
Needs:
.. hlist::
:columns: 3
* :c:data:`do_pt2`
* :c:data:`s2_eig`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
.. c:function:: save_iterations:
File : :file:`iterations/iterations.irp.f`
.. code:: fortran
subroutine save_iterations(e_, pt2_,n_)
Update the energy in the EZFIO file.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_iter`
* :c:data:`energy_iterations`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
* :c:data:`n_det_iterations`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_iterations_energy_iterations`
* :c:func:`ezfio_set_iterations_n_det_iterations`
* :c:func:`ezfio_set_iterations_n_iter`
* :c:func:`ezfio_set_iterations_pt2_iterations`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_iter`

View File

@ -0,0 +1,95 @@
.. _module_kohn_sham:
.. program:: kohn_sham
.. default-role:: option
=========
kohn_sham
=========
Quick description
-----------------
The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
spatial part of the |MOs| is common for alpha and beta spinorbitals).
The program associated to it is the :ref:`ks_scf` executable.
.. seealso::
The documentation of the :ref:`module_dft_keywords` module for the various keywords
such as the exchange/correlation functionals or the amount of |HF| exchange.
.. seealso::
To see the keywords/options associated to the |SCF| algorithm itself,
see the documentation of the :ref:`module_scf_utils` module.
More advanced description
-------------------------
The Kohn-Sham in an SCF and therefore is based on the :ref:`module_scf_utils` structure.
The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f`
.. seealso::
For a more detailed description of the |SCF| structure,
see the documentation of the :ref:`module_scf_utils` module.
Programs
--------
* :ref:`ks_scf`
Providers
---------
.. c:var:: ks_energy
File : :file:`ks_enery.irp.f`
.. code:: fortran
double precision :: ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
Subroutines / functions
-----------------------

View File

@ -0,0 +1,473 @@
.. _module_kohn_sham_rs:
.. program:: kohn_sham_rs
.. default-role:: option
============
kohn_sham_rs
============
Quick description
-----------------
The Range-separated Kohn-Sham module performs *Restricted* range-separated Hybrid calculation,
which means that only the long-range part of the *exact* exchange is taken into account.
The program associated to it is the :ref:`rs_ks_scf` executable.
.. seealso::
The documentation of the :ref:`module_dft_keywords` module for the various keywords
such as the exchange/correlation functionals or the range-separation parameter.
.. seealso::
To see the keywords/options associated to the |SCF| algorithm itself,
see the documentation of the :ref:`module_scf_utils` module.
More advanced description
-------------------------
The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_ints mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals.
The Range-separated Kohn-Sham in an SCF and therefore is based on the :ref:`module_scf_utils` structure.
The definition of the Fock matrix is in :file:`kohn_sham_rs fock_matrix_rs_ks.irp.f`
.. seealso::
For a more detailed description of the |SCF| structure,
see the documentation of the :ref:`module_scf_utils` module.
EZFIO parameters
----------------
.. option:: energy
Energy range separated hybrid
Programs
--------
* :ref:`rs_ks_scf`
Providers
---------
.. c:var:: ao_potential_alpha_xc
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`potential_c_alpha_ao`
* :c:data:`potential_x_alpha_ao`
* :c:data:`potential_xc_alpha_ao`
* :c:data:`same_xc_func`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`rs_ks_energy`
.. c:var:: ao_potential_beta_xc
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`potential_c_alpha_ao`
* :c:data:`potential_x_alpha_ao`
* :c:data:`potential_xc_alpha_ao`
* :c:data:`same_xc_func`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`rs_ks_energy`
.. c:var:: e_correlation_dft
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision :: e_correlation_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_c`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
* :c:data:`rs_ks_energy`
.. c:var:: e_exchange_dft
File : :file:`pot_functionals.irp.f`
.. code:: fortran
double precision :: e_exchange_dft
Needs:
.. hlist::
:columns: 3
* :c:data:`energy_x`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
* :c:data:`rs_ks_energy`
.. c:var:: fock_matrix_alpha_no_xc_ao
File : :file:`fock_matrix_rs_ks.irp.f`
.. code:: fortran
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)
Mono electronic an Coulomb matrix in ao basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
.. c:var:: fock_matrix_beta_no_xc_ao
File : :file:`fock_matrix_rs_ks.irp.f`
.. code:: fortran
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)
Mono electronic an Coulomb matrix in ao basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_two_e_integral_alpha`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
.. c:var:: fock_matrix_energy
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: one_e_energy
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: rs_ks_energy
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: trace_potential_xc
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
.. c:var:: two_e_energy
File : :file:`rs_ks_energy.irp.f`
.. code:: fortran
double precision :: rs_ks_energy
double precision :: two_e_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`ao_potential_alpha_xc`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`e_correlation_dft`
* :c:data:`e_exchange_dft`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`extra_e_contrib_density`
Subroutines / functions
-----------------------
.. c:function:: check_coherence_functional:
File : :file:`rs_ks_scf.irp.f`
.. code:: fortran
subroutine check_coherence_functional
Needs:
.. hlist::
:columns: 3
* :c:data:`exchange_functional`
* :c:data:`correlation_functional`
Called by:
.. hlist::
:columns: 3
* :c:func:`rs_ks_scf`

View File

@ -0,0 +1,815 @@
.. _module_mo_basis:
.. program:: mo_basis
.. default-role:: option
========
mo_basis
========
Molecular orbitals are expressed as
.. math::
\phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r})
where :math:`\chi_k` are *normalized* atomic basis functions.
The current set of |MOs| has a label `mo_label`.
When the orbitals are modified, the label should also be updated to keep
everything consistent.
When saving the |MOs|, the :file:`mo_basis` directory of the |EZFIO| database
is copied in the :file:`save` directory, named by the current `mo_label`. All
this is done with the script named :file:`save_current_mos.sh` in the
:file:`$QP_ROOT/scripts` directory.
EZFIO parameters
----------------
.. option:: mo_num
Total number of |MOs|
.. option:: mo_coef
Coefficient of the i-th |AO| on the j-th |MO|
.. option:: mo_label
Label characterizing the MOS (Local, Canonical, Natural, *etc*)
.. option:: mo_occ
|MO| occupation numbers
.. option:: mo_class
[ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class`
.. option:: ao_md5
MD5 checksum characterizing the |AO| basis set.
Providers
---------
.. c:var:: mo_coef
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef (ao_num,mo_num)
Molecular orbital coefficients on |AO| basis set
mo_coef(i,j) = coefficient of the i-th |AO| on the jth mo
mo_label : Label characterizing the MOS (local, canonical, natural, etc)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`mo_coef_in_ao_ortho_basis`
* :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_spin_density_ao`
* :c:data:`psi_det`
* :c:data:`s_mo_coef`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: mo_coef_begin_iteration
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_num)
Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration
Usefull to track some orbitals
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
.. c:var:: mo_coef_in_ao_ortho_basis
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_num)
|MO| coefficients in orthogonalized |AO| basis
:math:`C^{-1}.C_{mo}`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef_inv`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_coef_transp
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_coef_transp (mo_num,ao_num)
|MO| coefficients on |AO| basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_vv_from_ao`
.. c:var:: mo_label
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
character*(64) :: mo_label
|MO| coefficients on |AO| basis set
mo_coef(i,j) = coefficient of the i-th |AO| on the j-th |MO|
mo_label : Label characterizing the |MOs| (local, canonical, natural, etc)
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_coef`
* :c:data:`psi_det`
.. c:var:: mo_num
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
integer :: mo_num
Number of MOs
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`core_fock_operator`
* :c:data:`core_fock_operator_erf`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
* :c:data:`fock_matrix_mo`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`full_ijkl_bitmask`
* :c:data:`int_erf_3_index`
* :c:data:`list_core_inact_act`
* :c:data:`list_inact`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef_in_ao_ortho_basis`
* :c:data:`mo_coef_transp`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_cache_min`
* :c:data:`mo_integrals_erf_cache_min`
* :c:data:`mo_integrals_erf_map`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_occ`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_overlap`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
* :c:data:`mo_two_e_int_erf_jj`
* :c:data:`mo_two_e_int_erf_jj_from_ao`
* :c:data:`mo_two_e_integral_jj_from_ao`
* :c:data:`mo_two_e_integrals_erf_in_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`mo_two_e_integrals_vv_from_ao`
* :c:data:`n_core_orb`
* :c:data:`n_int`
* :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_dm_dagger_mo_spin_index`
* :c:data:`one_e_dm_mo`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`one_e_dm_mo_alpha_average`
* :c:data:`one_e_dm_mo_diff`
* :c:data:`one_e_dm_mo_spin_index`
* :c:data:`one_e_spin_density_ao`
* :c:data:`one_e_spin_density_mo`
* :c:data:`psi_energy_h_core`
* :c:data:`s_mo_coef`
* :c:data:`singles_alpha_csc_idx`
* :c:data:`singles_beta_csc_idx`
.. c:var:: mo_occ
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
double precision, allocatable :: mo_occ (mo_num)
|MO| occupation numbers
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mpi_master`
Subroutines / functions
-----------------------
.. c:function:: ao_ortho_cano_to_ao:
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
subroutine ao_ortho_cano_to_ao(A_ao,LDA_ao,A,LDA)
Transform A from the |AO| basis to the orthogonal |AO| basis
$C^{-1}.A_{ao}.C^{\dagger-1}$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef_inv`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: ao_to_mo:
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
subroutine ao_to_mo(A_ao,LDA_ao,A_mo,LDA_mo)
Transform A from the |AO| basis to the |MO| basis
$C^\dagger.A_{ao}.C$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`mo_dipole_x`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_integrals_n_e_per_atom`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_pseudo_integrals`
* :c:data:`mo_spread_x`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: give_all_mos_and_grad_and_lapl_at_r:
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: fortran
subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_all_aos_and_grad_and_lapl_at_r`
.. c:function:: give_all_mos_and_grad_at_r:
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: fortran
subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`give_all_aos_and_grad_at_r`
.. c:function:: give_all_mos_at_r:
File : :file:`mo_basis/mos_in_r.irp.f`
.. code:: fortran
subroutine give_all_mos_at_r(r,mos_array)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef_transp`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemv`
* :c:func:`give_all_aos_at_r`
.. c:function:: initialize_mo_coef_begin_iteration:
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
subroutine initialize_mo_coef_begin_iteration
Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`roothaan_hall_scf`
.. c:function:: mix_mo_jk:
File : :file:`mo_basis/mos.irp.f`
.. code:: fortran
subroutine mix_mo_jk(j,k)
Rotates the j-th |MO| with the k-th |MO| to give two new |MOs| that are
* $+ = \frac{1}{\sqrt{2}} ( | j\rangle + | k\rangle)$
* $- = \frac{1}{\sqrt{2}} ( | j\rangle - | k\rangle)$
by convention, the '+' |MO| is in the lowest index (min(j,k))
by convention, the '-' |MO| is in the highest index (max(j,k))
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
.. c:function:: mo_as_eigvectors_of_mo_matrix:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`create_guess`
* :c:func:`damping_scf`
* :c:func:`hcore_guess`
* :c:func:`roothaan_hall_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`lapack_diag`
* :c:func:`write_time`
.. c:function:: mo_as_svd_vectors_of_mo_matrix:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`svd`
* :c:func:`write_time`
.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`set_natural_mos`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`svd`
* :c:func:`write_time`
.. c:function:: reorder_core_orb:
File : :file:`mo_basis/track_orb.irp.f`
.. code:: fortran
subroutine reorder_core_orb
routines that takes the current :c:data:`mo_coef` and reorder the core orbitals (see :c:data:`list_core` and :c:data:`n_core_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`mo_coef_begin_iteration`
* :c:data:`mo_coef`
* :c:data:`ao_overlap`
* :c:data:`n_core_orb`
* :c:data:`ao_num`
* :c:data:`list_inact`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`roothaan_hall_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`dsort`
.. c:function:: save_mos:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine save_mos
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_num`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`damping_scf`
* :c:func:`hcore_guess`
* :c:func:`huckel_guess`
* :c:func:`roothaan_hall_scf`
* :c:func:`save_natural_mos`
* :c:func:`save_ortho_mos`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_mo_basis_ao_md5`
* :c:func:`ezfio_set_mo_basis_mo_coef`
* :c:func:`ezfio_set_mo_basis_mo_label`
* :c:func:`ezfio_set_mo_basis_mo_num`
* :c:func:`ezfio_set_mo_basis_mo_occ`
* :c:func:`system`
.. c:function:: save_mos_truncated:
File : :file:`mo_basis/utils.irp.f`
.. code:: fortran
subroutine save_mos_truncated(n)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`ao_num`
* :c:data:`mo_label`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_mo_basis_ao_md5`
* :c:func:`ezfio_set_mo_basis_mo_coef`
* :c:func:`ezfio_set_mo_basis_mo_label`
* :c:func:`ezfio_set_mo_basis_mo_num`
* :c:func:`ezfio_set_mo_basis_mo_occ`
* :c:func:`system`

View File

@ -0,0 +1,160 @@
.. _module_mo_guess:
.. program:: mo_guess
.. default-role:: option
========
mo_guess
========
Guess for |MOs|.
Providers
---------
.. c:var:: ao_ortho_canonical_nucl_elec_integrals
File : :file:`mo_guess/pot_mo_ortho_canonical_ints.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_canonical_nucl_elec_integrals (mo_num,mo_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_num`
* :c:data:`ao_ortho_canonical_coef`
* :c:data:`mo_num`
.. c:var:: ao_ortho_lowdin_coef
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_lowdin_coef (ao_num,ao_num)
matrix of the coefficients of the mos generated by the
orthonormalization by the S^{-1/2} canonical transformation of the aos
ao_ortho_lowdin_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_lowdin orbital
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
* :c:data:`ao_ortho_lowdin_overlap`
.. c:var:: ao_ortho_lowdin_nucl_elec_integrals
File : :file:`mo_guess/pot_mo_ortho_lowdin_ints.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_lowdin_nucl_elec_integrals (mo_num,mo_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_num`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`mo_num`
.. c:var:: ao_ortho_lowdin_overlap
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
.. code:: fortran
double precision, allocatable :: ao_ortho_lowdin_overlap (ao_num,ao_num)
overlap matrix of the ao_ortho_lowdin
supposed to be the Identity
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_ortho_lowdin_coef`
* :c:data:`ao_overlap`
Subroutines / functions
-----------------------
.. c:function:: hcore_guess:
File : :file:`mo_guess/h_core_guess_routine.irp.f`
.. code:: fortran
subroutine hcore_guess
Produce `H_core` MO orbital
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`save_mos`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_label`

View File

@ -0,0 +1,571 @@
.. _module_mo_one_e_ints:
.. program:: mo_one_e_ints
.. default-role:: option
==================
mo_one_e_integrals
==================
All the one-electron integrals in |MO| basis are defined here.
The most important providers for usual quantum-chemistry calculation are:
* `mo_kinetic_integrals` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`)
* `mo_integrals_n_e` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`)
* `mo_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`)
Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`.
EZFIO parameters
----------------
.. option:: mo_integrals_e_n
Nucleus-electron integrals in |MO| basis set
.. option:: io_mo_integrals_e_n
Read/Write |MO| electron-nucleus attraction integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: mo_integrals_kinetic
Kinetic energy integrals in |MO| basis set
.. option:: io_mo_integrals_kinetic
Read/Write |MO| one-electron kinetic integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: mo_integrals_pseudo
Pseudopotential integrals in |MO| basis set
.. option:: io_mo_integrals_pseudo
Read/Write |MO| pseudopotential integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: mo_one_e_integrals
One-electron integrals in |MO| basis set
.. option:: io_mo_one_e_integrals
Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ]
Default: None
Providers
---------
.. c:var:: mo_dipole_x
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
double precision, allocatable :: mo_dipole_z (mo_num,mo_num)
array of the integrals of MO_i * x MO_j
array of the integrals of MO_i * y MO_j
array of the integrals of MO_i * z MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_dipole_x`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_dipole_y
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
double precision, allocatable :: mo_dipole_z (mo_num,mo_num)
array of the integrals of MO_i * x MO_j
array of the integrals of MO_i * y MO_j
array of the integrals of MO_i * z MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_dipole_x`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_dipole_z
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
double precision, allocatable :: mo_dipole_z (mo_num,mo_num)
array of the integrals of MO_i * x MO_j
array of the integrals of MO_i * y MO_j
array of the integrals of MO_i * z MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_dipole_x`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_integrals_n_e
File : :file:`mo_one_e_ints/pot_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_integrals_n_e (mo_num,mo_num)
Nucleus-electron interaction on the |MO| basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`read_mo_integrals_e_n`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
* :c:data:`ref_bitmask_energy`
.. c:var:: mo_integrals_n_e_per_atom
File : :file:`mo_one_e_ints/pot_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_integrals_n_e_per_atom (mo_num,mo_num,nucl_num)
mo_integrals_n_e_per_atom(i,j,k) =
:math:`\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle` .
where R_k is the coordinate of the k-th nucleus.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_integrals_n_e_per_atom`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`nucl_num`
.. c:var:: mo_kinetic_integrals
File : :file:`mo_one_e_ints/kin_mo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_kinetic_integrals (mo_num,mo_num)
Kinetic energy integrals in the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_kinetic_integrals`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`read_mo_integrals_kinetic`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
* :c:data:`ref_bitmask_energy`
.. c:var:: mo_one_e_integrals
File : :file:`mo_one_e_ints/mo_one_e_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_one_e_integrals (mo_num,mo_num)
array of the one-electron Hamiltonian on the |MO| basis :
sum of the kinetic and nuclear electronic potentials (and pseudo potential if needed)
Needs:
.. hlist::
:columns: 3
* :c:data:`do_pseudo`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_num`
* :c:data:`mo_pseudo_integrals`
* :c:data:`read_mo_one_e_integrals`
Needed by:
.. hlist::
:columns: 3
* :c:data:`core_energy`
* :c:data:`core_energy_erf`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`psi_energy_h_core`
* :c:data:`ref_bitmask_energy`
.. c:var:: mo_overlap
File : :file:`mo_one_e_ints/mo_overlap.irp.f`
.. code:: fortran
double precision, allocatable :: mo_overlap (mo_num,mo_num)
Provider to check that the MOs are indeed orthonormal.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_pseudo_integrals
File : :file:`mo_one_e_ints/pot_mo_pseudo_ints.irp.f`
.. code:: fortran
double precision, allocatable :: mo_pseudo_integrals (mo_num,mo_num)
Pseudopotential integrals in |MO| basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_pseudo_integrals`
* :c:data:`do_pseudo`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`read_mo_integrals_pseudo`
Needed by:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
.. c:var:: mo_spread_x
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
double precision, allocatable :: mo_spread_z (mo_num,mo_num)
array of the integrals of MO_i * x^2 MO_j
array of the integrals of MO_i * y^2 MO_j
array of the integrals of MO_i * z^2 MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_spread_x`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_spread_y
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
double precision, allocatable :: mo_spread_z (mo_num,mo_num)
array of the integrals of MO_i * x^2 MO_j
array of the integrals of MO_i * y^2 MO_j
array of the integrals of MO_i * z^2 MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_spread_x`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: mo_spread_z
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
.. code:: fortran
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
double precision, allocatable :: mo_spread_z (mo_num,mo_num)
array of the integrals of MO_i * x^2 MO_j
array of the integrals of MO_i * y^2 MO_j
array of the integrals of MO_i * z^2 MO_j
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_spread_x`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: s_mo_coef
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
double precision, allocatable :: s_mo_coef (ao_num,mo_num)
Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
Subroutines / functions
-----------------------
.. c:function:: mo_to_ao:
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao)
Transform A from the MO basis to the AO basis
$(S.C).A_{mo}.(S.C)^\dagger$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`s_mo_coef`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: mo_to_ao_no_overlap:
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
.. code:: fortran
subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)
$C.A_{mo}.C^\dagger$
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
.. c:function:: orthonormalize_mos:
File : :file:`mo_one_e_ints/orthonormalize.irp.f`
.. code:: fortran
subroutine orthonormalize_mos
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_label`
* :c:data:`ao_num`
* :c:data:`mo_overlap`
* :c:data:`mo_num`
* :c:data:`mo_coef`
Called by:
.. hlist::
:columns: 3
* :c:func:`save_ortho_mos`
* :c:func:`scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ortho_lowdin`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`mo_label`

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

294
docs/source/modules/mpi.rst Normal file
View File

@ -0,0 +1,294 @@
.. _module_mpi:
.. program:: mpi
.. default-role:: option
===
mpi
===
Contains all the functions and providers for parallelization with |MPI|.
Providers
---------
.. c:var:: mpi_initialized
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
logical :: mpi_initialized
Always true. Initialized MPI
Needed by:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
.. c:var:: mpi_master
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
logical :: mpi_master
If true, rank is zero
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_rank`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_cartesian`
* :c:data:`ao_coef`
* :c:data:`ao_expo`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_md5`
* :c:data:`ao_nucl`
* :c:data:`ao_num`
* :c:data:`ao_power`
* :c:data:`ao_prim_num`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`cas_bitmask`
* :c:data:`ci_energy`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`data_energy_proj`
* :c:data:`data_energy_var`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_sze_max`
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`disk_based_davidson`
* :c:data:`distributed_davidson`
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`element_name`
* :c:data:`energy_iterations`
* :c:data:`frozen_orb_scf`
* :c:data:`generators_bitmask`
* :c:data:`generators_bitmask_restart`
* :c:data:`h0_type`
* :c:data:`io_ao_integrals_e_n`
* :c:data:`io_ao_integrals_kinetic`
* :c:data:`io_ao_integrals_overlap`
* :c:data:`io_ao_integrals_pseudo`
* :c:data:`io_ao_one_e_integrals`
* :c:data:`io_ao_two_e_integrals`
* :c:data:`io_ao_two_e_integrals_erf`
* :c:data:`io_mo_integrals_e_n`
* :c:data:`io_mo_integrals_kinetic`
* :c:data:`io_mo_integrals_pseudo`
* :c:data:`io_mo_one_e_integrals`
* :c:data:`io_mo_two_e_integrals`
* :c:data:`io_mo_two_e_integrals_erf`
* :c:data:`level_shift`
* :c:data:`max_dim_diis`
* :c:data:`mo_class`
* :c:data:`mo_coef`
* :c:data:`mo_guess_type`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_occ`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mu_erf`
* :c:data:`n_cas_bitmask`
* :c:data:`n_core_orb`
* :c:data:`n_det`
* :c:data:`n_det_generators`
* :c:data:`n_det_iterations`
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_print_wf`
* :c:data:`n_det_selectors`
* :c:data:`n_generators_bitmask`
* :c:data:`n_generators_bitmask_restart`
* :c:data:`n_int`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`n_states_diag`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`nthreads_davidson`
* :c:data:`nthreads_pt2`
* :c:data:`nucl_charge`
* :c:data:`nucl_charge_remove`
* :c:data:`nucl_coord`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`nuclear_repulsion`
* :c:data:`only_expected_s2`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_kl`
* :c:data:`pseudo_grid_rmax`
* :c:data:`pseudo_grid_size`
* :c:data:`pseudo_klocmax`
* :c:data:`pseudo_kmax`
* :c:data:`pseudo_lmax`
* :c:data:`pseudo_n_k`
* :c:data:`pseudo_n_kl`
* :c:data:`pseudo_v_k`
* :c:data:`pseudo_v_kl`
* :c:data:`psi_cas`
* :c:data:`psi_coef`
* :c:data:`psi_coef_max`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_size`
* :c:data:`pt2_e0_denominator`
* :c:data:`pt2_f`
* :c:data:`pt2_iterations`
* :c:data:`pt2_max`
* :c:data:`pt2_n_teeth`
* :c:data:`pt2_relative_error`
* :c:data:`qp_max_mem`
* :c:data:`read_wf`
* :c:data:`s2_eig`
* :c:data:`scf_algorithm`
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
* :c:data:`threshold_generators`
* :c:data:`used_weight`
* :c:data:`variance_max`
.. c:var:: mpi_rank
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
integer :: mpi_rank
integer :: mpi_size
Rank of MPI process and number of MPI processes
Needed by:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
.. c:var:: mpi_size
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
integer :: mpi_rank
integer :: mpi_size
Rank of MPI process and number of MPI processes
Needed by:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Subroutines / functions
-----------------------
.. c:function:: broadcast_chunks_double:
File : :file:`mpi/mpi.irp.f_template_97`
.. code:: fortran
subroutine broadcast_chunks_double(A, LDA)
Broadcast with chunks of ~2GB
.. c:function:: broadcast_chunks_integer:
File : :file:`mpi/mpi.irp.f_template_97`
.. code:: fortran
subroutine broadcast_chunks_integer(A, LDA)
Broadcast with chunks of ~2GB
.. c:function:: broadcast_chunks_integer8:
File : :file:`mpi/mpi.irp.f_template_97`
.. code:: fortran
subroutine broadcast_chunks_integer8(A, LDA)
Broadcast with chunks of ~2GB
.. c:function:: mpi_print:
File : :file:`mpi/mpi.irp.f`
.. code:: fortran
subroutine mpi_print(string)
Print string to stdout if the MPI rank is zero.
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_slave_main`

View File

@ -0,0 +1,666 @@
.. _module_nuclei:
.. program:: nuclei
.. default-role:: option
======
nuclei
======
This module contains data relative to the nuclei (coordinates, charge,
nuclear repulsion energy, etc).
The coordinates are expressed in atomic units.
EZFIO parameters
----------------
.. option:: nucl_num
Number of nuclei
.. option:: nucl_label
Nuclear labels
.. option:: nucl_charge
Nuclear charges
.. option:: nucl_coord
Nuclear coordinates in the format (:, {x,y,z})
.. option:: disk_access_nuclear_repulsion
Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ]
Default: None
.. option:: nuclear_repulsion
Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|)
Providers
---------
.. c:var:: center_of_mass
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: center_of_mass (3)
Center of mass of the molecule
Needs:
.. hlist::
:columns: 3
* :c:data:`element_name`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: element_mass
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
character*(4), allocatable :: element_name (0:127)
double precision, allocatable :: element_mass (0:127)
Array of the name of element, sorted by nuclear charge (integer)
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
.. c:var:: element_name
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
character*(4), allocatable :: element_name (0:127)
double precision, allocatable :: element_mass (0:127)
Array of the name of element, sorted by nuclear charge (integer)
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
.. c:var:: inertia_tensor
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor (3,3)
Inertia tensor
Needs:
.. hlist::
:columns: 3
* :c:data:`center_of_mass`
* :c:data:`element_name`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor_eigenvectors`
.. c:var:: inertia_tensor_eigenvalues
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
double precision, allocatable :: inertia_tensor_eigenvalues (3)
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
Needs:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: inertia_tensor_eigenvectors
File : :file:`nuclei/inertia.irp.f`
.. code:: fortran
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
double precision, allocatable :: inertia_tensor_eigenvalues (3)
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
Needs:
.. hlist::
:columns: 3
* :c:data:`inertia_tensor`
.. c:var:: nucl_coord
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_coord (nucl_num,3)
Nuclear coordinates in the format (:, {x,y,z})
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
* :c:data:`nucl_charge`
* :c:data:`nucl_label`
* :c:data:`nucl_num`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_deriv2_x`
* :c:data:`ao_deriv_1_x`
* :c:data:`ao_dipole_x`
* :c:data:`ao_integrals_n_e`
* :c:data:`ao_integrals_n_e_per_atom`
* :c:data:`ao_overlap`
* :c:data:`ao_overlap_abs`
* :c:data:`ao_pseudo_integrals_local`
* :c:data:`ao_pseudo_integrals_non_local`
* :c:data:`ao_spread_x`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`ao_two_e_integral_erf_schwartz`
* :c:data:`ao_two_e_integral_schwartz`
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:data:`center_of_mass`
* :c:data:`inertia_tensor`
* :c:data:`nucl_coord_transp`
* :c:data:`nucl_dist_2`
* :c:data:`nuclear_repulsion`
.. c:var:: nucl_coord_transp
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_coord_transp (3,nucl_num)
Transposed array of nucl_coord
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
.. c:var:: nucl_dist
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_2
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_inv
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num)
Inverse of the distance between nucleus I and nucleus J
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_2`
* :c:data:`nucl_num`
.. c:var:: nucl_dist_vec_x
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_vec_y
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nucl_dist_vec_z
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
nucl_dist : Nucleus-nucleus distances
nucl_dist_2 : Nucleus-nucleus distances squared
nucl_dist_vec : Nucleus-nucleus distances vectors
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`nucl_dist_inv`
.. c:var:: nuclear_repulsion
File : :file:`nuclei/nuclei.irp.f`
.. code:: fortran
double precision :: nuclear_repulsion
Nuclear repulsion energy
Needs:
.. hlist::
:columns: 3
* :c:data:`disk_access_nuclear_repulsion`
* :c:data:`mpi_master`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_num`
* :c:data:`output_wall_time_0`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_energy`
* :c:data:`core_energy`
* :c:data:`core_energy_erf`
* :c:data:`hf_energy`
* :c:data:`psi_energy_with_nucl_rep`
* :c:data:`pt2_e0_denominator`
* :c:data:`scf_energy`
.. c:var:: slater_bragg_radii
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii (100)
atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater
execpt for the Hydrogen atom where we took the value of Becke (1988, JCP)
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_radii_per_atom`
* :c:data:`slater_bragg_radii_ua`
.. c:var:: slater_bragg_radii_per_atom
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_charge`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii`
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_type_inter_distance`
.. c:var:: slater_bragg_radii_per_atom_ua
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_charge`
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_ua`
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_type_inter_distance_ua`
.. c:var:: slater_bragg_radii_ua
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_radii_ua (100)
Needs:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_radii`
Needed by:
.. hlist::
:columns: 3
* :c:data:`slater_bragg_radii_per_atom_ua`
.. c:var:: slater_bragg_type_inter_distance
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_per_atom`
.. c:var:: slater_bragg_type_inter_distance_ua
File : :file:`nuclei/atomic_radii.irp.f`
.. code:: fortran
double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`nucl_num`
* :c:data:`slater_bragg_radii_per_atom_ua`

View File

@ -0,0 +1,981 @@
.. _module_perturbation:
.. program:: perturbation
.. default-role:: option
============
perturbation
============
All subroutines in ``*.irp.f`` starting with `pt2_` in the current directory are
perturbation computed using the routine `i_H_psi`. Other cases are not allowed.
The arguments of the `pt2_` are always:
.. code-block:: fortran
subroutine pt2_...( &
psi_ref, &
psi_ref_coefs, &
E_refs, &
det_pert, &
c_pert, &
e_2_pert, &
H_pert_diag, &
Nint, &
Ndet, &
N_st )
integer , intent(in) :: Nint,Ndet,N_st
integer(bit_kind), intent(in) :: psi_ref(Nint,2,Ndet)
double precision , intent(in) :: psi_ref_coefs(Ndet,N_st)
double precision , intent(in) :: E_refs(N_st)
integer(bit_kind), intent(in) :: det_pert(Nint,2)
double precision , intent(out) :: c_pert(N_st),e_2_pert(N_st),H_pert_diag
`psi_ref`
bitstring of the determinants present in the various `N_st` states
`psi_ref_coefs`
coefficients of the determinants on the various `N_st` states
`E_refs`
Energy of the various `N_st` states
`det_pert`
Perturber determinant
`c_pert`
Perturbative coefficients for the various states
`e_2_pert`
Perturbative energetic contribution for the various states
`H_pert_diag`
Diagonal |H| matrix element of the perturber
`Nint`
Should be equal to `N_int`
`Ndet`
Number of determinants `i` in |Psi| on which we apply <det_pert | |H| | `i`>
`N_st`
Number of states
EZFIO parameters
----------------
.. option:: do_pt2
If `True`, compute the |PT2| contribution
Default: True
.. option:: pt2_max
The selection process stops when the largest |PT2| (for all the state) is lower than `pt2_max` in absolute value
Default: 0.0001
.. option:: variance_max
The selection process stops when the largest variance (for all the state) is lower than `variance_max` in absolute value
Default: 0.0
.. option:: pt2_relative_error
Stop stochastic |PT2| when the relative error is smaller than `pT2_relative_error`
Default: 0.002
.. option:: correlation_energy_ratio_max
The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules). Defined as :math:`(E_{CI}-E_{HF})/(E_{CI}+E_{PT2} - E_{HF})`.
Default: 1.00
.. option:: h0_type
Type of denominator in PT2. [EN | SOP | HF]
Default: EN
Providers
---------
.. c:var:: max_exc_pert
File : :file:`perturbation/exc_max.irp.f`
.. code:: fortran
integer :: max_exc_pert
.. c:var:: selection_criterion
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
double precision :: selection_criterion
double precision :: selection_criterion_min
double precision :: selection_criterion_factor
Threshold to select determinants. Set by selection routines.
.. c:var:: selection_criterion_factor
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
double precision :: selection_criterion
double precision :: selection_criterion_min
double precision :: selection_criterion_factor
Threshold to select determinants. Set by selection routines.
.. c:var:: selection_criterion_min
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
double precision :: selection_criterion
double precision :: selection_criterion_min
double precision :: selection_criterion_factor
Threshold to select determinants. Set by selection routines.
.. c:var:: var_pt2_ratio
File : :file:`perturbation/var_pt2_ratio_provider.irp.f`
.. code:: fortran
double precision :: var_pt2_ratio
The selection process stops when the energy ratio variational/(variational+PT2)
is equal to var_pt2_ratio
Needs:
.. hlist::
:columns: 3
* :c:data:`correlation_energy_ratio_max`
Subroutines / functions
-----------------------
.. c:function:: fill_h_apply_buffer_selection:
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, N_st,Nint,iproc,select_max_out)
Fill the H_apply buffer with determiants for the selection
Needs:
.. hlist::
:columns: 3
* :c:data:`selection_criterion`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
* :c:func:`resize_h_apply_buffer`
.. c:function:: perturb_buffer_by_mono_dummy:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``dummy`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_dummy`
.. c:function:: perturb_buffer_by_mono_epstein_nesbet:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_epstein_nesbet`
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_epstein_nesbet_2x2`
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag`
.. c:function:: perturb_buffer_by_mono_moller_plesset:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_moller_plesset`
.. c:function:: perturb_buffer_by_mono_qdpt:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_by_mono_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``qdpt`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`psi_selectors`
* :c:data:`n_det`
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_det_generators`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`pt2_qdpt`
.. c:function:: perturb_buffer_dummy:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``dummy`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_dummy`
.. c:function:: perturb_buffer_epstein_nesbet:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_epstein_nesbet`
.. c:function:: perturb_buffer_epstein_nesbet_2x2:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_epstein_nesbet_2x2`
.. c:function:: perturb_buffer_epstein_nesbet_2x2_no_ci_diag:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag`
.. c:function:: perturb_buffer_moller_plesset:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_moller_plesset`
.. c:function:: perturb_buffer_qdpt:
File : :file:`perturbation/perturbation.irp.f_shell_13`
.. code:: fortran
subroutine perturb_buffer_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
Apply pertubration ``qdpt`` to the buffer of determinants generated in the H_apply
routine.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_det_generators`
* :c:data:`psi_selectors`
* :c:data:`psi_det_generators`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`create_microlist`
* :c:func:`create_minilist`
* :c:func:`create_minilist_find_previous`
* :c:func:`getmobiles`
* :c:func:`pt2_qdpt`
.. c:function:: pt2_dummy:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
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)
Dummy perturbation to add all connected determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`selection_criterion`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_dummy`
* :c:func:`perturb_buffer_dummy`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_h_psi_minilist`
.. c:function:: pt2_epstein_nesbet:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
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)
Compute the standard Epstein-Nesbet perturbative first order coefficient and
second order energetic contribution for the various N_st states.
`c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{ E_n - \langle \alpha|H|\alpha \rangle }$.
`e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{ E_n - \langle \alpha|H|\alpha \rangle }$.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`selection_criterion`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_epstein_nesbet`
* :c:func:`perturb_buffer_epstein_nesbet`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_h_psi_minilist`
.. c:function:: pt2_epstein_nesbet_2x2:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
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)
Computes the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
for the various N_st states.
`e_2_pert(i)` = $\frac{1}{2} ( \langle \alpha|H|\alpha \rangle - E_n) - \sqrt{ (\langle \alpha|H|\alpha \rangle - E_n)^2 + 4 \langle i|H|\alpha \rangle^2 }$.
`c_pert(i)` = `e_2_pert(i)` $\times \frac{1}{ \langle i|H|\alpha \rangle}$.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2`
* :c:func:`perturb_buffer_epstein_nesbet_2x2`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_h_psi`
.. c:function:: pt2_epstein_nesbet_2x2_no_ci_diag:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
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)
compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
for the various N_st states.
e_2_pert(i) = 0.5 * (( <det_pert|H|det_pert> - E(i) ) - sqrt( ( <det_pert|H|det_pert> - E(i)) ^2 + 4 <psi(i)|H|det_pert>^2 )
c_pert(i) = e_2_pert(i)/ <psi(i)|H|det_pert>
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`psi_energy`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag`
* :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag`
Calls:
.. hlist::
:columns: 3
* :c:func:`i_h_psi`
.. c:function:: pt2_moller_plesset:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
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)
Computes the standard Moller-Plesset perturbative first order coefficient and second
order energetic contribution for the various N_st states.
`c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\text{difference of orbital energies}}$.
`e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{\text{difference of orbital energies}}$.
Needs:
.. hlist::
:columns: 3
* :c:data:`ref_bitmask`
* :c:data:`psi_selectors_size`
* :c:data:`psi_selectors`
* :c:data:`mo_num`
* :c:data:`n_det_selectors`
* :c:data:`fock_matrix_mo`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_moller_plesset`
* :c:func:`perturb_buffer_moller_plesset`
Calls:
.. hlist::
:columns: 3
* :c:func:`decode_exc`
* :c:func:`get_excitation`
* :c:func:`i_h_psi_minilist`
.. c:function:: pt2_qdpt:
File : :file:`perturbation/pt2_equations.irp.f_template_305`
.. code:: fortran
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)
Computes the QDPT first order coefficient and second order energetic contribution
for the various N_st states.
`c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\langle i|H|i \rangle - \langle \alpha|H|\alpha \rangle}$.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`selection_criterion`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_qdpt`
* :c:func:`perturb_buffer_qdpt`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_excitation_degree`
* :c:func:`i_h_j`
* :c:func:`i_h_psi_minilist`
.. c:function:: remove_small_contributions:
File : :file:`perturbation/selection.irp.f`
.. code:: fortran
subroutine remove_small_contributions
Remove determinants with small contributions. N_states is assumed to be
provided.
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`selection_criterion`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`psi_det_size`
* :c:data:`n_det_generators`
* :c:data:`n_int`
* :c:data:`psi_det_sorted`
* :c:data:`psi_det`
* :c:data:`psi_det_sorted`
Calls:
.. hlist::
:columns: 3
* :c:func:`diagonalize_ci`
* :c:func:`i_h_psi`
* :c:func:`write_int`
Touches:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
* :c:data:`ci_electronic_energy`
* :c:data:`ci_energy`
* :c:data:`ci_electronic_energy`
* :c:data:`n_det`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_energy`
* :c:data:`psi_energy`

View File

@ -0,0 +1,94 @@
.. _module_pseudo:
.. program:: pseudo
.. default-role:: option
======
pseudo
======
This module defines the |EZFIO| parameters of the effective core potentials.
EZFIO parameters
----------------
.. option:: nucl_charge_remove
Nuclear charges removed per atom
.. option:: pseudo_klocmax
Maximum value of k for the local component
.. option:: pseudo_n_k
Number of gaussians in the local component
.. option:: pseudo_v_k
Coefficients in the local component
.. option:: pseudo_dz_k
Exponents in the local component
.. option:: pseudo_lmax
Maximum angular momentum
.. option:: pseudo_kmax
Maximum number of functions in the non-local component
.. option:: pseudo_n_kl
Number of functions in the non-local component
.. option:: pseudo_v_kl
Coefficients in the non-local component
.. option:: pseudo_dz_kl
Exponents in the non-local component
.. option:: do_pseudo
If `True`, pseudo-potentials are used.
Default: False
.. option:: pseudo_grid_size
Nb of points of the grid for the QMC interfaces
Default: 1000
.. option:: pseudo_grid_rmax
R_max of the QMC grid
Default: 10.0
.. option:: ao_pseudo_grid
Grid for the QMC interface
.. option:: mo_pseudo_grid
Grid for the QMC interface

View File

@ -0,0 +1,14 @@
.. _module_psiref_cas:
.. program:: psiref_cas
.. default-role:: option
==========
psiref_cas
==========
Reference wave function is defined as a |CAS| wave function.
This module is required for |CAS-SD|, |MRPT| or |MRCC|.

View File

@ -0,0 +1,16 @@
.. _module_psiref_utils:
.. program:: psiref_utils
.. default-role:: option
============
psiref_utils
============
Utilities related to the use of a reference wave function. This module
needs to be loaded with any `psi_ref_*` module.

View File

@ -0,0 +1,795 @@
.. _module_scf_utils:
.. program:: scf_utils
.. default-role:: option
=========
scf_utils
=========
The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the
spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function.
This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix.
The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example).
All SCF programs perform the following actions:
#. Compute/Read all the one- and two-electron integrals, and store them in memory
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
will read them as initial guess. Otherwise, it will create a guess.
#. Perform the |SCF| iterations based on the definition of the Fock matrix
The main keywords/options are:
* :option:`scf_utils thresh_scf`
* :option:`scf_utils level_shift`
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
crashes for any unexpected reason, the calculation can be restarted by running again
the |SCF| with the same |EZFIO| database.
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
To start a calculation from scratch, the simplest way is to remove the
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
.. _level-shifting: https://doi.org/10.1002/qua.560070407
EZFIO parameters
----------------
.. option:: max_dim_diis
Maximum size of the DIIS extrapolation procedure
Default: 15
.. option:: threshold_diis
Threshold on the convergence of the DIIS error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used.
Default: 0.
.. option:: thresh_scf
Threshold on the convergence of the Hartree Fock energy.
Default: 1.e-10
.. option:: n_it_scf_max
Maximum number of SCF iterations
Default: 500
.. option:: level_shift
Energy shift on the virtual MOs to improve SCF convergence
Default: 0.
.. option:: scf_algorithm
Type of SCF algorithm used. Possible choices are [ Simple | DIIS]
Default: DIIS
.. option:: mo_guess_type
Initial MO guess. Can be [ Huckel | HCore ]
Default: Huckel
.. option:: energy
Calculated HF energy
.. option:: frozen_orb_scf
If true, leave untouched all the orbitals defined as core and optimize all the orbitals defined as active with qp_set_mo_class
Default: False
Providers
---------
.. c:var:: eigenvalues_fock_matrix_ao
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao`
* :c:data:`s_half_inv`
.. c:var:: eigenvectors_fock_matrix_ao
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao`
* :c:data:`s_half_inv`
.. c:var:: eigenvectors_fock_matrix_mo
File : :file:`scf_utils/diagonalize_fock.irp.f`
.. code:: fortran
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_num)
Eigenvectors of the Fock matrix in the MO basis obtained with level shift.
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_mo`
* :c:data:`frozen_orb_scf`
* :c:data:`level_shift`
* :c:data:`list_inact`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
.. c:function:: extrapolate_fock_matrix:
File : :file:`scf_utils/roothaan_hall_scf.irp.f`
.. code:: fortran
subroutine extrapolate_Fock_matrix( &
error_matrix_DIIS,Fock_matrix_DIIS, &
Fock_matrix_AO_,size_Fock_matrix_AO, &
iteration_SCF,dim_DIIS &
)
Compute the extrapolated Fock matrix using the DIIS procedure
Needs:
.. hlist::
:columns: 3
* :c:data:`max_dim_diis`
* :c:data:`ao_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`roothaan_hall_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`dgemm`
* :c:func:`dsysvx`
.. c:var:: fock_matrix_ao
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_ao (ao_num,ao_num)
Fock matrix in AO basis set
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_mo`
* :c:data:`frozen_orb_scf`
* :c:data:`level_shift`
* :c:data:`mo_num`
* :c:data:`s_mo_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvalues_fock_matrix_ao`
* :c:data:`fps_spf_matrix_ao`
.. c:var:: fock_matrix_diag_mo
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo (mo_num,mo_num)
double precision, allocatable :: fock_matrix_diag_mo (mo_num)
Fock matrix on the MO basis.
For open shells, the ROHF Fock Matrix is ::
| F-K | F + K/2 | F |
|---------------------------------|
| F + K/2 | F | F - K/2 |
|---------------------------------|
| F | F - K/2 | F + K |
F = 1/2 (Fa + Fb)
K = Fb - Fa
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`frozen_orb_scf`
* :c:data:`list_inact`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
.. c:var:: fock_matrix_mo
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo (mo_num,mo_num)
double precision, allocatable :: fock_matrix_diag_mo (mo_num)
Fock matrix on the MO basis.
For open shells, the ROHF Fock Matrix is ::
| F-K | F + K/2 | F |
|---------------------------------|
| F + K/2 | F | F - K/2 |
|---------------------------------|
| F | F - K/2 | F + K |
F = 1/2 (Fa + Fb)
K = Fb - Fa
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`frozen_orb_scf`
* :c:data:`list_inact`
* :c:data:`mo_num`
* :c:data:`n_core_orb`
Needed by:
.. hlist::
:columns: 3
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`fock_matrix_ao`
.. c:var:: fock_matrix_mo_alpha
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo_alpha (mo_num,mo_num)
Fock matrix on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo`
.. c:var:: fock_matrix_mo_beta
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: fock_matrix_mo_beta (mo_num,mo_num)
Fock matrix on the MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`mo_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_mo`
.. c:var:: fps_spf_matrix_ao
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num)
Commutator FPS - SPF
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_overlap`
* :c:data:`fock_matrix_ao`
* :c:data:`scf_density_matrix_ao`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fps_spf_matrix_mo`
.. c:var:: fps_spf_matrix_mo
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision, allocatable :: fps_spf_matrix_mo (mo_num,mo_num)
Commutator FPS - SPF in MO basis
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`mo_coef`
* :c:data:`mo_num`
.. c:var:: scf_density_matrix_ao
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao (ao_num,ao_num)
Sum of :math:`\alpha` and :math:`\beta` density matrices
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fps_spf_matrix_ao`
.. c:var:: scf_density_matrix_ao_alpha
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao_alpha (ao_num,ao_num)
:math:`C.C^t` over :math:`\alpha` MOs
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_alpha_num`
* :c:data:`mo_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`hf_energy`
* :c:data:`scf_density_matrix_ao`
* :c:data:`scf_energy`
.. c:var:: scf_density_matrix_ao_beta
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
.. code:: fortran
double precision, allocatable :: scf_density_matrix_ao_beta (ao_num,ao_num)
:math:`C.C^t` over :math:`\beta` MOs
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`hf_energy`
* :c:data:`scf_density_matrix_ao`
* :c:data:`scf_energy`
.. c:var:: scf_energy
File : :file:`scf_utils/fock_matrix.irp.f`
.. code:: fortran
double precision :: scf_energy
Hartree-Fock energy
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`ao_one_e_integrals`
* :c:data:`extra_e_contrib_density`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`nuclear_repulsion`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
.. c:var:: threshold_diis_nonzero
File : :file:`scf_utils/diis.irp.f`
.. code:: fortran
double precision :: threshold_diis_nonzero
If threshold_DIIS is zero, choose sqrt(thresh_scf)
Needs:
.. hlist::
:columns: 3
* :c:data:`thresh_scf`
* :c:data:`threshold_diis`
Subroutines / functions
-----------------------
.. c:function:: damping_scf:
File : :file:`scf_utils/damping_scf.irp.f`
.. code:: fortran
subroutine damping_SCF
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_coef`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`scf_energy`
* :c:data:`scf_density_matrix_ao_beta`
* :c:data:`fock_matrix_mo`
* :c:data:`ao_num`
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`fock_matrix_ao`
* :c:data:`mo_label`
* :c:data:`n_it_scf_max`
* :c:data:`thresh_scf`
* :c:data:`frozen_orb_scf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_hartree_fock_energy`
* :c:func:`initialize_mo_coef_begin_iteration`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`reorder_core_orb`
* :c:func:`save_mos`
* :c:func:`write_double`
* :c:func:`write_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
* :c:data:`mo_coef`
.. c:function:: huckel_guess:
File : :file:`scf_utils/huckel.irp.f`
.. code:: fortran
subroutine huckel_guess
Build the MOs using the extended Huckel model
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_one_e_integrals`
* :c:data:`mo_coef`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`ao_overlap`
* :c:data:`ao_num`
* :c:data:`ao_two_e_integral_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
Called by:
.. hlist::
:columns: 3
* :c:func:`create_guess`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_mos`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
.. c:function:: roothaan_hall_scf:
File : :file:`scf_utils/roothaan_hall_scf.irp.f`
.. code:: fortran
subroutine Roothaan_Hall_SCF
Roothaan-Hall algorithm for SCF Hartree-Fock calculation
Needs:
.. hlist::
:columns: 3
* :c:data:`max_dim_diis`
* :c:data:`mo_occ`
* :c:data:`ao_md5`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`fps_spf_matrix_mo`
* :c:data:`eigenvectors_fock_matrix_mo`
* :c:data:`scf_energy`
* :c:data:`mo_num`
* :c:data:`thresh_scf`
* :c:data:`scf_algorithm`
* :c:data:`fock_matrix_mo`
* :c:data:`ao_num`
* :c:data:`fock_matrix_ao`
* :c:data:`mo_label`
* :c:data:`n_it_scf_max`
* :c:data:`threshold_diis_nonzero`
* :c:data:`frozen_orb_scf`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fps_spf_matrix_ao`
Called by:
.. hlist::
:columns: 3
* :c:func:`run`
Calls:
.. hlist::
:columns: 3
* :c:func:`extrapolate_fock_matrix`
* :c:func:`initialize_mo_coef_begin_iteration`
* :c:func:`mo_as_eigvectors_of_mo_matrix`
* :c:func:`reorder_core_orb`
* :c:func:`save_mos`
* :c:func:`write_double`
* :c:func:`write_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`fock_matrix_ao_alpha`
* :c:data:`mo_coef`
* :c:data:`level_shift`
* :c:data:`mo_coef`

View File

@ -0,0 +1,13 @@
.. _module_selectors_cassd:
.. program:: selectors_cassd
.. default-role:: option
===============
selectors_cassd
===============
Selectors for |CAS-SD| calculations. The selectors are defined as first the
generators from :ref:`module_generators_cas`, and then the rest of the wave function.

View File

@ -0,0 +1,152 @@
.. _module_selectors_full:
.. program:: selectors_full
.. default-role:: option
==============
selectors_full
==============
All the determinants are possible selectors. Only the largest contributions are kept, where
a threshold is applied to the squared norm of the wave function, with the :option:`determinants
threshold_selectors` flag.
Providers
---------
.. c:var:: n_det_selectors
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
integer :: n_det_selectors
For Single reference wave functions, the number of selectors is 1 : the
Hartree-Fock determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`n_det_generators`
* :c:data:`output_wall_time_0`
* :c:data:`psi_det_sorted`
* :c:data:`threshold_selectors`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`exc_degree_per_selectors`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: psi_selectors
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size)
double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states)
Determinants on which we apply <i|H|psi> for perturbation.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_sorted`
* :c:data:`psi_selectors_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`exc_degree_per_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: psi_selectors_coef
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size)
double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states)
Determinants on which we apply <i|H|psi> for perturbation.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_det_sorted`
* :c:data:`psi_selectors_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`exc_degree_per_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: threshold_selectors
File : :file:`selectors_full/selectors.irp.f`
.. code:: fortran
double precision :: threshold_selectors
Thresholds on selectors (fraction of the square of the norm)
Needs:
.. hlist::
:columns: 3
* :c:data:`threshold_generators`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`

View File

@ -0,0 +1,649 @@
.. _module_selectors_utils:
.. program:: selectors_utils
.. default-role:: option
===============
selectors_utils
===============
Helper functions for selectors.
Providers
---------
.. c:var:: coef_hf_selector
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: delta_e_per_selector
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: double_index_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_selectors
Degree of excitation respect to Hartree Fock for the wave function
for the all the selectors determinants.
double_index_selectors = list of the index of the double excitations
n_double_selectors = number of double excitations in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: e_corr_double_only
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: e_corr_per_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: e_corr_second_order
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: exc_degree_per_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_selectors
Degree of excitation respect to Hartree Fock for the wave function
for the all the selectors determinants.
double_index_selectors = list of the index of the double excitations
n_double_selectors = number of double excitations in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: i_h_hf_per_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: inv_selectors_coef_hf
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: inv_selectors_coef_hf_squared
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: n_double_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_selectors
Degree of excitation respect to Hartree Fock for the wave function
for the all the selectors determinants.
double_index_selectors = list of the index of the double excitations
n_double_selectors = number of double excitations in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: psi_selectors_coef_transp
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size)
Transposed psi_selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_states`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
.. c:var:: psi_selectors_diag_h_mat
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size)
Diagonal elements of the H matrix for each selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_num`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: psi_selectors_size
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
integer :: psi_selectors_size
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
Subroutines / functions
-----------------------
.. c:function:: zmq_get_n_det_generators:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id)
Get N_det_generators from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_get_n_det_selectors:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id)
Get N_det_selectors from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_put_n_det_generators:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id)
Put N_det_generators on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`zmq_state`
.. c:function:: zmq_put_n_det_selectors:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id)
Put N_det_selectors on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`zmq_state`

View File

@ -0,0 +1,14 @@
.. _module_single_ref_method:
.. program:: single_ref_method
.. default-role:: option
=================
single_ref_method
=================
Include this module for single reference methods.
Using this module, the only generator determinant is the Hartree-Fock determinant.

View File

@ -0,0 +1,134 @@
.. _module_tools:
.. program:: tools
.. default-role:: option
=====
tools
=====
Useful tools are grouped in this module.
Programs
--------
* :ref:`diagonalize_h`
* :ref:`fcidump`
* :ref:`four_idx_transform`
* :ref:`molden`
* :ref:`print_ci_vectors`
* :ref:`print_e_conv`
* :ref:`print_wf`
* :ref:`save_natorb`
* :ref:`save_one_e_dm`
* :ref:`save_ortho_mos`
* :ref:`write_integrals_erf`
Subroutines / functions
-----------------------
.. c:function:: routine:
File : :file:`write_integrals_erf.irp.f`
.. code:: fortran
subroutine routine
Called by:
.. hlist::
:columns: 3
* :c:func:`diagonalize_h`
* :c:func:`print_ci_vectors`
* :c:func:`print_wf`
* :c:func:`write_integrals_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_erf_two_e_integrals_ao`
* :c:func:`save_erf_two_e_integrals_mo`
.. c:function:: routine_e_conv:
File : :file:`print_e_conv.irp.f`
.. code:: fortran
subroutine routine_e_conv
routine called by :c:func:`print_e_conv`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`ezfio_filename`
Called by:
.. hlist::
:columns: 3
* :c:func:`print_e_conv`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_get_iterations_energy_iterations`
* :c:func:`ezfio_get_iterations_n_det_iterations`
* :c:func:`ezfio_get_iterations_n_iter`
* :c:func:`ezfio_get_iterations_pt2_iterations`
.. c:function:: routine_save_one_e_dm:
File : :file:`save_one_e_dm.irp.f`
.. code:: fortran
subroutine routine_save_one_e_dm
routine called by :c:func:`save_one_e_dm`
Needs:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha`
Called by:
.. hlist::
:columns: 3
* :c:func:`save_one_e_dm`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_alpha_mo`
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo`

File diff suppressed because it is too large Load Diff

1550
docs/source/modules/zmq.rst Normal file

File diff suppressed because it is too large Load Diff

View File

@ -89,10 +89,14 @@ Index of Providers
* :c:data:`aos_dsr_vc_beta_pbe_w`
* :c:data:`aos_dsr_vx_alpha_pbe_w`
* :c:data:`aos_dsr_vx_beta_pbe_w`
* :c:data:`aos_dsr_vxc_alpha_pbe_w`
* :c:data:`aos_dsr_vxc_beta_pbe_w`
* :c:data:`aos_dvc_alpha_pbe_w`
* :c:data:`aos_dvc_beta_pbe_w`
* :c:data:`aos_dvx_alpha_pbe_w`
* :c:data:`aos_dvx_beta_pbe_w`
* :c:data:`aos_dvxc_alpha_pbe_w`
* :c:data:`aos_dvxc_beta_pbe_w`
* :c:data:`aos_grad_in_r_array`
* :c:data:`aos_grad_in_r_array_transp`
* :c:data:`aos_grad_in_r_array_transp_xyz`
@ -108,6 +112,10 @@ Index of Providers
* :c:data:`aos_sr_vx_alpha_pbe_w`
* :c:data:`aos_sr_vx_beta_lda_w`
* :c:data:`aos_sr_vx_beta_pbe_w`
* :c:data:`aos_sr_vxc_alpha_lda_w`
* :c:data:`aos_sr_vxc_alpha_pbe_w`
* :c:data:`aos_sr_vxc_beta_lda_w`
* :c:data:`aos_sr_vxc_beta_pbe_w`
* :c:data:`aos_vc_alpha_lda_w`
* :c:data:`aos_vc_alpha_pbe_w`
* :c:data:`aos_vc_beta_lda_w`
@ -116,6 +124,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:`aos_vxc_alpha_lda_w`
* :c:data:`aos_vxc_alpha_pbe_w`
* :c:data:`aos_vxc_beta_lda_w`
* :c:data:`aos_vxc_beta_pbe_w`
* :c:data:`barycentric_electronic_energy`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_exchange_integrals`
@ -207,8 +219,10 @@ Index of Providers
* :c:data:`element_name`
* :c:data:`energy_c`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_new_functional`
* :c:data:`energy_c_none`
* :c:data:`energy_c_pbe`
* :c:data:`energy_c_sr_lda`
* :c:data:`energy_c_sr_pbe`
* :c:data:`energy_iterations`
* :c:data:`energy_sr_c_lda`
* :c:data:`energy_sr_c_pbe`
@ -216,8 +230,10 @@ Index of Providers
* :c:data:`energy_sr_x_pbe`
* :c:data:`energy_x`
* :c:data:`energy_x_lda`
* :c:data:`energy_x_new_functional`
* :c:data:`energy_x_none`
* :c:data:`energy_x_pbe`
* :c:data:`energy_x_sr_lda`
* :c:data:`energy_x_sr_pbe`
* :c:data:`exc_degree_per_selectors`
* :c:data:`exchange_functional`
* :c:data:`expected_s2`
@ -260,14 +276,6 @@ Index of Providers
* :c:data:`give_polynomial_mult_center_one_e_erf_opt`
* :c:data:`global_selection_buffer`
* :c:data:`global_selection_buffer_lock`
* :c:data:`grad_aos_dsr_vc_alpha_pbe_w`
* :c:data:`grad_aos_dsr_vc_beta_pbe_w`
* :c:data:`grad_aos_dsr_vx_alpha_pbe_w`
* :c:data:`grad_aos_dsr_vx_beta_pbe_w`
* :c:data:`grad_aos_dvc_alpha_pbe_w`
* :c:data:`grad_aos_dvc_beta_pbe_w`
* :c:data:`grad_aos_dvx_alpha_pbe_w`
* :c:data:`grad_aos_dvx_beta_pbe_w`
* :c:data:`grid_points_per_atom`
* :c:data:`grid_points_radial`
* :c:data:`grid_type_sgn`
@ -330,7 +338,7 @@ Index of Providers
* :c:data:`iradix_sort_big`
* :c:data:`is_zmq_slave`
* :c:data:`ks_energy`
* :c:data:`l_to_charater`
* :c:data:`l_to_character`
* :c:data:`level_shift`
* :c:data:`list_act`
* :c:data:`list_act_reverse`
@ -449,6 +457,7 @@ Index of Providers
* :c:data:`n_states_diag`
* :c:data:`n_virt_orb`
* :c:data:`n_virt_orb_allocate`
* :c:data:`no_core_density`
* :c:data:`no_ivvv_integrals`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
@ -507,34 +516,72 @@ Index of Providers
* :c:data:`output_wall_time_0`
* :c:data:`overlap_gaussian_xyz`
* :c:data:`phi_angular_integration_lebedev`
* :c:data:`pot_grad_c_alpha_ao_pbe`
* :c:data:`pot_grad_c_beta_ao_pbe`
* :c:data:`pot_grad_x_alpha_ao_pbe`
* :c:data:`pot_grad_x_beta_ao_pbe`
* :c:data:`pot_grad_xc_alpha_ao_pbe`
* :c:data:`pot_grad_xc_beta_ao_pbe`
* :c:data:`pot_scal_c_alpha_ao_pbe`
* :c:data:`pot_scal_c_beta_ao_pbe`
* :c:data:`pot_scal_x_alpha_ao_pbe`
* :c:data:`pot_scal_x_beta_ao_pbe`
* :c:data:`pot_scal_xc_alpha_ao_pbe`
* :c:data:`pot_scal_xc_beta_ao_pbe`
* :c:data:`pot_sr_grad_c_alpha_ao_pbe`
* :c:data:`pot_sr_grad_c_beta_ao_pbe`
* :c:data:`pot_sr_grad_x_alpha_ao_pbe`
* :c:data:`pot_sr_grad_x_beta_ao_pbe`
* :c:data:`pot_sr_grad_xc_alpha_ao_pbe`
* :c:data:`pot_sr_grad_xc_beta_ao_pbe`
* :c:data:`pot_sr_scal_c_alpha_ao_pbe`
* :c:data:`pot_sr_scal_c_beta_ao_pbe`
* :c:data:`pot_sr_scal_x_alpha_ao_pbe`
* :c:data:`pot_sr_scal_x_beta_ao_pbe`
* :c:data:`pot_sr_scal_xc_alpha_ao_pbe`
* :c:data:`pot_sr_scal_xc_beta_ao_pbe`
* :c:data:`potential_c_alpha_ao`
* :c:data:`potential_c_alpha_ao_lda`
* :c:data:`potential_c_alpha_ao_none`
* :c:data:`potential_c_alpha_ao_pbe`
* :c:data:`potential_c_alpha_ao_sr_lda`
* :c:data:`potential_c_alpha_ao_sr_pbe`
* :c:data:`potential_c_alpha_mo`
* :c:data:`potential_c_beta_ao`
* :c:data:`potential_c_beta_ao_lda`
* :c:data:`potential_c_beta_ao_none`
* :c:data:`potential_c_beta_ao_pbe`
* :c:data:`potential_c_beta_ao_sr_lda`
* :c:data:`potential_c_beta_ao_sr_pbe`
* :c:data:`potential_c_beta_mo`
* :c:data:`potential_new_functional_c_alpha_ao`
* :c:data:`potential_new_functional_c_beta_ao`
* :c:data:`potential_new_functional_x_alpha_ao`
* :c:data:`potential_new_functional_x_beta_ao`
* :c:data:`potential_sr_c_alpha_ao_lda`
* :c:data:`potential_sr_c_alpha_ao_pbe`
* :c:data:`potential_sr_c_beta_ao_lda`
* :c:data:`potential_sr_c_beta_ao_pbe`
* :c:data:`potential_sr_x_alpha_ao_lda`
* :c:data:`potential_sr_x_alpha_ao_pbe`
* :c:data:`potential_sr_x_beta_ao_lda`
* :c:data:`potential_sr_x_beta_ao_pbe`
* :c:data:`potential_x_alpha_ao`
* :c:data:`potential_x_alpha_ao_lda`
* :c:data:`potential_x_alpha_ao_none`
* :c:data:`potential_x_alpha_ao_pbe`
* :c:data:`potential_x_alpha_ao_sr_lda`
* :c:data:`potential_x_alpha_ao_sr_pbe`
* :c:data:`potential_x_alpha_mo`
* :c:data:`potential_x_beta_ao`
* :c:data:`potential_x_beta_ao_lda`
* :c:data:`potential_x_beta_ao_none`
* :c:data:`potential_x_beta_ao_pbe`
* :c:data:`potential_x_beta_ao_sr_lda`
* :c:data:`potential_x_beta_ao_sr_pbe`
* :c:data:`potential_x_beta_mo`
* :c:data:`potential_xc_alpha_ao`
* :c:data:`potential_xc_alpha_ao_lda`
* :c:data:`potential_xc_alpha_ao_none`
* :c:data:`potential_xc_alpha_ao_pbe`
* :c:data:`potential_xc_alpha_ao_sr_lda`
* :c:data:`potential_xc_alpha_ao_sr_pbe`
* :c:data:`potential_xc_alpha_mo`
* :c:data:`potential_xc_beta_ao`
* :c:data:`potential_xc_beta_ao_lda`
* :c:data:`potential_xc_beta_ao_none`
* :c:data:`potential_xc_beta_ao_pbe`
* :c:data:`potential_xc_beta_ao_sr_lda`
* :c:data:`potential_xc_beta_ao_sr_pbe`
* :c:data:`potential_xc_beta_mo`
* :c:data:`pseudo_dz_k`
* :c:data:`pseudo_dz_k_transp`
* :c:data:`pseudo_dz_kl`
@ -659,6 +706,9 @@ Index of Providers
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_e_n_energy`
* :c:data:`ref_bitmask_energy`
* :c:data:`ref_bitmask_energy_aa`
* :c:data:`ref_bitmask_energy_ab`
* :c:data:`ref_bitmask_energy_bb`
* :c:data:`ref_bitmask_kinetic_energy`
* :c:data:`ref_bitmask_one_e_energy`
* :c:data:`ref_bitmask_two_e_energy`
@ -677,6 +727,7 @@ Index of Providers
* :c:data:`s_mo_coef`
* :c:data:`s_z`
* :c:data:`s_z2_sz`
* :c:data:`same_xc_func`
* :c:data:`scf_algorithm`
* :c:data:`scf_density_matrix_ao`
* :c:data:`scf_density_matrix_ao_alpha`
@ -687,7 +738,6 @@ Index of Providers
* :c:data:`selection_criterion_factor`
* :c:data:`selection_criterion_min`
* :c:data:`selection_weight`
* :c:data:`shifting_constant`
* :c:data:`short_range_hartree`
* :c:data:`short_range_hartree_operator`
* :c:data:`single_exc_bitmask`
@ -718,11 +768,13 @@ Index of Providers
* :c:data:`trace_v_h`
* :c:data:`trace_v_hxc`
* :c:data:`trace_v_xc`
* :c:data:`trace_v_xc_new`
* :c:data:`transpose`
* :c:data:`two_e_energy`
* :c:data:`unpaired_alpha_electrons`
* :c:data:`used_weight`
* :c:data:`var_pt2_ratio`
* :c:data:`variance_max`
* :c:data:`virt_bitmask`
* :c:data:`virt_bitmask_4`
* :c:data:`weight_at_r`
@ -1191,6 +1243,7 @@ Index of Subroutines/Functions
* :c:func:`perturb_buffer_moller_plesset`
* :c:func:`perturb_buffer_qdpt`
* :c:func:`primitive_value`
* :c:func:`print_ci_vectors`
* :c:func:`print_det`
* :c:func:`print_e_conv`
* :c:func:`print_extrapolated_energy`
@ -1341,15 +1394,11 @@ Index of Subroutines/Functions
* :c:func:`wall_time`
* :c:func:`wallis`
* :c:func:`wf_of_psi_bilinear_matrix`
* :c:func:`write_ao_basis`
* :c:func:`write_bool`
* :c:func:`write_double`
* :c:func:`write_geometry`
* :c:func:`write_git_log`
* :c:func:`write_int`
* :c:func:`write_integrals_erf`
* :c:func:`write_intro_gamess`
* :c:func:`write_mo_basis`
* :c:func:`write_spindeterminants`
* :c:func:`write_time`
* :c:func:`zmq_abort`

View File

@ -28,72 +28,27 @@ So, at the end of the day, adding a new functional consists only in **setting a
The general philosphy
---------------------
We have created a quite easy way to develop new functionals that is based on
The directory **functionals** contains only files ending with .irp.f whose name being the name of a specific functional.
All files in *a_functional*.irp.f **must** contain **at least** the following providers
* the used of **your own external plugins**
* :c:data:`energy_x_a_functional` and :c:data:`energy_c_a_functional` which are of course the exchange and correlation energies
* the module :ref:`module_new_functionals` acting as **hub**
* :c:data:`potential_x_alpha_ao_a_functional` and :c:data:`potential_x_beta_ao_a_functional` which are the exchange alpha/beta potentials
A pictorial representation of the main dependencies can be seen here:
* :c:data:`potential_c_alpha_ao_a_functional` and :c:data:`potential_c_beta_ao_a_functional` which are the correlation alpha/beta potentials
.. image:: /_static/dependencies_func.pdf
:align: center
:width: 200px
:alt: Summary of dependencies
For instance, the file :file:`sr_lda.irp.f` contains the following providers
* :c:data:`energy_x_sr_lda` and :c:data:`energy_c_sr_lda` which are of course the exchange and correlation energies
* :c:data:`potential_x_alpha_ao_sr_lda` and :c:data:`potential_x_beta_ao_sr_lda` which are the exchange alpha/beta potentials
* :c:data:`potential_c_alpha_ao_sr_lda` and :c:data:`potential_c_beta_ao_sr_lda` which are the correlation alpha/beta potentials
The main idea is the following:
1. Develop *new providers* for the new functionals (energy and potential for exchange and correlation) in some **external plugin**.
* Example:
* In an **external plugin** named **fancy_functionals**, you create *e_c_new_fancy_func* for the energy and *pot_ao_alpha_new_func* for the alpha potential
* If you want to be able to use the |DFT| programs already available in the |QP|, these *providers* must use the providers for the density defined in :ref:`module_density_for_dft` and :ref:`module_dft_utils_in_r` (see below).
2. Add the name of your **external plugin** to the :file:`NEED` in order to link your new providers to **new_functionals**
* Example:
* add **fancy_functionals** to the NEED file of **new_functionals**
3. Change the file :file:`e_xc_new_func.irp.f` and :file:`pot_xc_new_func.irp.f` to set the value of your new providers to the providers defined in **new_functionals**
* Example:
* for the exchange/correlation energy
.. code:: fortran
BEGIN_PROVIDER[double precision, energy_x_new_functional, (N_states) ]
&BEGIN_PROVIDER[double precision, energy_c_new_functional, (N_states) ]
implicit none
BEGIN_DOC
! energy_x_new_functional = define here your functional
! energy_c_new_functional = define here your functional
END_DOC
energy_c_new_functional = e_c_new_fancy_func
energy_x_new_functional = e_x_new_fancy_func
END_PROVIDER
4. Compile at the root of the |QP|
* Example:
.. code:: bash
cd ${QP_ROOT}
ninja
5. When you want to execute a program with your new functional, just set the options :option:`dft_keywords exchange_functional` and :option:`dft_keywords correlation_functional` to "my_functional".
Therefore, if you want to develop a new functional, just design a provider
To use a functional
Using the density for DFT calculations in the |QP|
==================================================

View File

@ -72,11 +72,40 @@ file by hand. Running :command:`ninja` inside a module will compile only the
module, and running :command:`ninja` at the root of the |qp| will build all the
modules, as well as the tools.
.. cache compile
.. interface AOs / MOs => resultsFile
.. interface integrals => AO / MO
.. interface integrals MO => FCIDUMP
.. TODO : molden module in resultsFile
.. include:: /work.rst
Algorithms
==========
The `PhD thesis of Yann Garniron <https://doi.org/10.5281/zenodo.2558127>`_
gives all the details about the implementation of:
* The data structure for the two-electron integrals (:file:`utils/map_module.f`)
* The Davdison diagonalization (module :ref:`module_davidson`)
* The CIPSI selection (module :ref:`module_cipsi`)
* The hybrid stochastic/deterministic PT2 correction (module :ref:`module_cipsi`)
* The hybrid stochastic/deterministic matrix dressing (module :ref:`module_dressing`)
Extracting results for use with other codes
===========================================
The |AOs| and |MOs| can be seen with :ref:`qp_edit`. We also provide a utility
to create a file which can be read by `molden` for visualizing the |MOs| (see
:ref:`molden`). For using external |CI| solvers, we provide a utility that
generates a file containing the two-electron integrals in the |MO| basis set
in the `FCIDUMP` format (see :ref:`fcidump`).
All the results are stored in the |EZFIO| directory, so users willing to fetch
data such as the |MOs| or the |CI| coefficients should use the |EZFIO| API.
There multiple major ways to do this:
* Write a script in Python or OCaml and use the Python |EZFIO| API. The script
:file:`$QP_ROOT/bin/qp_convert_output_to_ezfio` is a good example to understand
how to use the |EZFIO| API in Python,
* Write an independent program in Fortran or C, link it with the |EZFIO| library
located at :file:`$QP_ROOT/external/ezfio/lib/libezfio.a` and call directly
the |EZFIO| routines,
* Write a new module for the |qp| printing the desired quantities in a suitable
text format. The program :ref:`fcidump` is an example of such a program.

View File

@ -0,0 +1 @@

View File

@ -60,7 +60,6 @@ fci
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_slave_cipsi`
* :c:func:`run_stochastic_cipsi`
Touches:
@ -73,9 +72,9 @@ fci
* :c:data:`ci_energy`
* :c:data:`ci_electronic_energy`
* :c:data:`n_det`
* :c:data:`n_iter`
* :c:data:`psi_occ_pattern`
* :c:data:`c0_weight`
* :c:data:`distributed_davidson`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
@ -84,8 +83,6 @@ fci
* :c:data:`psi_energy`
* :c:data:`psi_occ_pattern`
* :c:data:`psi_energy`
* :c:data:`pt2_e0_denominator`
* :c:data:`pt2_stoch_istate`
* :c:data:`read_wf`
* :c:data:`state_average_weight`
* :c:data:`threshold_generators`

View File

@ -16,14 +16,26 @@ molden
.. hlist::
:columns: 3
* :c:data:`nucl_list_shell_aos`
* :c:data:`mo_occ`
* :c:data:`ezfio_filename`
* :c:data:`mo_coef`
* :c:data:`ao_coef`
* :c:data:`ao_power`
* :c:data:`fock_matrix_mo`
* :c:data:`ao_num`
* :c:data:`ao_prim_num`
* :c:data:`mo_num`
* :c:data:`nucl_coord`
* :c:data:`ao_l`
* :c:data:`nucl_charge`
* :c:data:`ao_expo`
* :c:data:`element_name`
* :c:data:`nucl_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`write_ao_basis`
* :c:func:`write_geometry`
* :c:func:`write_intro_gamess`
* :c:func:`write_mo_basis`
* :c:func:`isort`

View File

@ -0,0 +1,41 @@
.. _print_ci_vectors:
.. program:: print_ci_vectors
================
print_ci_vectors
================
Print the ground state wave function stored in the |EZFIO| directory
in the intermediate normalization.
It also prints a lot of information regarding the excitation
operators from the reference determinant ! and a first-order
perturbative analysis of the wave function.
If the wave function strongly deviates from the first-order analysis,
something funny is going on :)
Needs:
.. hlist::
:columns: 3
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`routine`
Touches:
.. hlist::
:columns: 3
* :c:data:`read_wf`

View File

@ -1,4 +1,14 @@
%%% ARXIV TO BE UPDATED %%%
@misc{BibEntry2019Feb,
title = {{Quantum Package 2.0: An Open-Source Determinant-Driven Suite of
Programs}},
journal = {arXiv},
year = {2019},
month = {Feb},
note = {[Online; accessed 7. Mar. 2019]},
url = {https://arxiv.org/abs/1902.08154.pdf}
}
@article{Applencourt2018Dec,
author = {Applencourt, Thomas and Gasperich, Kevin and Scemama, Anthony},
title = {{Spin adaptation with determinant-based selected configuration interaction}},
@ -9,32 +19,35 @@
url = {https://arxiv.org/abs/1812.06902}
}
@article{Loos2018Nov,
author = {Loos, Pierre-Fran{\c{c}}ois and Boggio-Pasqua, Martial and Scemama, Anthony and Caffarel, Michel and Jacquemin, Denis},
@article{Loos2019Jan,
author = {Loos, Pierre-Fran\c{c}ois and Boggio-Pasqua, Martial and Scemama, Anthony and Caffarel, Michel and Jacquemin, Denis},
title = {{Reference Energies for Double Excitations}},
journal = {arXiv},
year = {2018},
month = {Nov},
pages = {1811.12861},
url = {https://arxiv.org/abs/1811.12861}
journal = {J. Chem. Theory Comput.},
year = {2019},
month = {Jan},
issn = {1549-9618},
publisher = {American Chemical Society},
doi = {10.1021/acs.jctc.8b01205}
}
@article{Flores2018Nov,
author = { {Pineda Flores}, Sergio D. and Neuscamman, Eric},
title = {{Excited State Specific Multi-Slater Jastrow Wave Functions}},
journal = {arXiv},
year = {2018},
month = {Nov},
pages = {1811.00583},
url = {https://arxiv.org/abs/1811.00583}
}
%%%% PUBLISHED PAPERS
@article{PinedaFlores2019Feb,
author = {Pineda Flores, Sergio and Neuscamman, Eric},
title = {{Excited State Specific Multi-Slater Jastrow Wave Functions}},
journal = {J. Phys. Chem. A},
volume = {123},
number = {8},
pages = {1487--1497},
year = {2019},
month = {Feb},
issn = {1089-5639},
publisher = {American Chemical Society},
doi = {10.1021/acs.jpca.8b10671}
}
@phdthesis{yann_garniron_2019_2558127,
author = {Yann Garniron},
title = {{Development and parallel implementation of

View File

@ -1,3 +0,0 @@
.. image:: http://craniointernational.com/wp-content/uploads/2018/01/work-in-progress.jpg

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "CIS" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "CIS" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
cis \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "CISD" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "CISD" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
cisd \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "CONFIGURE" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "CONFIGURE" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
configure \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "DIAGONALIZE_H" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "DIAGONALIZE_H" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
diagonalize_h \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "EXCITED_STATES" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "EXCITED_STATES" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
excited_states \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "FCI" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "FCI" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
fci \- | Quantum Package >
.
@ -98,11 +98,9 @@ Calls:
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBrun_slave_cipsi()\fP
\fBrun_stochastic_cipsi()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBrun_stochastic_cipsi()\fP
.UNINDENT
.UNINDENT
.sp
@ -120,13 +118,13 @@ Touches:
.IP \(bu 2
\fBn_det\fP
.IP \(bu 2
\fBpsi_occ_pattern\fP
\fBn_iter\fP
.IP \(bu 2
\fBc0_weight\fP
\fBpsi_occ_pattern\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBdistributed_davidson\fP
\fBc0_weight\fP
.IP \(bu 2
\fBpsi_coef\fP
.IP \(bu 2
@ -137,21 +135,17 @@ Touches:
\fBpsi_det_size\fP
.IP \(bu 2
\fBpsi_det_sorted_bit\fP
.IP \(bu 2
\fBpsi_energy\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBpsi_energy\fP
.IP \(bu 2
\fBpsi_occ_pattern\fP
.IP \(bu 2
\fBpsi_energy\fP
.IP \(bu 2
\fBpt2_e0_denominator\fP
.IP \(bu 2
\fBpt2_stoch_istate\fP
.IP \(bu 2
\fBread_wf\fP
.IP \(bu 2
\fBstate_average_weight\fP
.IP \(bu 2
\fBthreshold_generators\fP

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "FCIDUMP" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "FCIDUMP" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
fcidump \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "FOUR_IDX_TRANSFORM" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "FOUR_IDX_TRANSFORM" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
four_idx_transform \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "INTERFACES" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "INTERFACES" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
interfaces \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "KS_SCF" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "KS_SCF" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
ks_scf \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "MOLDEN" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "MOLDEN" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
molden \- | Quantum Package >
.
@ -38,11 +38,41 @@ Needs:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBnucl_list_shell_aos\fP
.IP \(bu 2
\fBmo_occ\fP
.IP \(bu 2
\fBezfio_filename\fP
.IP \(bu 2
\fBmo_coef\fP
.IP \(bu 2
\fBao_coef\fP
.IP \(bu 2
\fBao_power\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBfock_matrix_mo\fP
.IP \(bu 2
\fBao_num\fP
.IP \(bu 2
\fBao_prim_num\fP
.IP \(bu 2
\fBmo_num\fP
.IP \(bu 2
\fBnucl_coord\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBao_l\fP
.IP \(bu 2
\fBnucl_charge\fP
.IP \(bu 2
\fBao_expo\fP
.IP \(bu 2
\fBelement_name\fP
.IP \(bu 2
\fBnucl_num\fP
.UNINDENT
.UNINDENT
.sp
@ -50,17 +80,11 @@ Calls:
.INDENT 0.0
.INDENT 2.0
.IP \(bu 2
\fBwrite_ao_basis()\fP
.IP \(bu 2
\fBwrite_geometry()\fP
\fBisort()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBwrite_intro_gamess()\fP
.UNINDENT
.INDENT 2.0
.IP \(bu 2
\fBwrite_mo_basis()\fP
.UNINDENT
.UNINDENT
.UNINDENT

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "NATURAL_ORBITALS" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "NATURAL_ORBITALS" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
natural_orbitals \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PLUGINS" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "PLUGINS" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
plugins \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PRINT_E_CONV" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "PRINT_E_CONV" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
print_e_conv \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PRINT_WF" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "PRINT_WF" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
print_wf \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PRINTING" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "PRINTING" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
printing \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "PT2" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "PT2" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
pt2 \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_CONVERT_OUTPUT_TO_EZFIO" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_CONVERT_OUTPUT_TO_EZFIO" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_convert_output_to_ezfio \- | Quantum Package >
.

View File

@ -1,235 +0,0 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_CREATE_EZFIO_FROM_XYZ" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.SH NAME
qp_create_ezfio_from_xyz \- | Quantum Package >
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
This command creates an \fI\%EZFIO\fP directory from a standard \fIxyz\fP file or
from a \fIz\-matrix\fP file in Gaussian format.
.SH USAGE
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
qp_create_ezfio [\-a] \-b <string> [\-c <int>] [\-d <float>]
[\-h] [\-m <int>] [\-o EZFIO_DIR] [\-p <string>] [\-x] [\-\-] FILE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
.TP
.B \-a, \-\-au
If present, input geometry is in atomic units.
.UNINDENT
.INDENT 0.0
.TP
.B \-b, \-\-basis=<string>
Name of basis set. The basis set is defined as a single string if
all the atoms are taken from the same basis set, otherwise specific
elements can be defined as follows:
.INDENT 7.0
.INDENT 3.5
.sp
.nf
.ft C
\-b "cc\-pcvdz | H:cc\-pvdz | C:6\-31g"
\-b "cc\-pvtz | 1,H:sto\-3g | 3,H:6\-31g"
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
By default, the basis set is obtained from the local database of the.
\fIQuantum Package\fP This option is mandatory .
.sp
If \fB<string>\fP is set to \fBshow\fP, the list of all available basis
sets is displayed.
.UNINDENT
.INDENT 0.0
.TP
.B \-c, \-\-charge=<int>
Total charge of the molecule. Default is 0.
.UNINDENT
.INDENT 0.0
.TP
.B \-d, \-\-dummy=<float>
Add dummy atoms (X) between atoms when the distance between two atoms
is less than x \etimes \esum R_\emathrm{cov}, the covalent radii
of the atoms. The default is x=0, so no dummy atom is added.
.UNINDENT
.INDENT 0.0
.TP
.B \-h, \-\-help
Print the help text and exit
.UNINDENT
.INDENT 0.0
.TP
.B \-m, \-\-multiplicity=<int>
Spin multiplicity 2S+1 of the molecule. Default is 1.
.UNINDENT
.INDENT 0.0
.TP
.B \-o, \-\-output=EZFIO_DIR
Name of the created \fI\%EZFIO\fP directory.
.UNINDENT
.INDENT 0.0
.TP
.B \-p <string>, \-\-pseudo=<string>
Name of the pseudo\-potential. Follows the same conventions as the basis set.
.UNINDENT
.INDENT 0.0
.TP
.B \-x, \-\-cart
Compute AOs in the Cartesian basis set (6d, 10f, …)
.UNINDENT
.SH USING CUSTOM ATOMIC BASIS SETS
.sp
If a file with the same name as the basis set exists, this file will
be read. For example, if the file containing the basis set is named
\fBcustom.basis\fP, and the \fIxyz\fP geometry is in \fBmolecule.xyz\fP, the
following should be used:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
qp_create_ezfio \-b custom.basis molecule.xyz
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Basis set files should be given in \fI\%GAMESS\fP format, where the full
names of the atoms are given, and the basis sets for each element are
separated by a blank line. Here is an example
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
HYDROGEN
S 3
1 13.0100000 0.0196850
2 1.9620000 0.1379770
3 0.4446000 0.4781480
S 1
1 0.1220000 1.0000000
P 1
1 0.7270000 1.0000000
BORON
S 8
1 4570.0000000 0.0006960
2 685.9000000 0.0053530
3 156.5000000 0.0271340
4 44.4700000 0.1013800
5 14.4800000 0.2720550
6 5.1310000 0.4484030
7 1.8980000 0.2901230
8 0.3329000 0.0143220
S 8
1 4570.0000000 \-0.0001390
2 685.9000000 \-0.0010970
3 156.5000000 \-0.0054440
4 44.4700000 \-0.0219160
5 14.4800000 \-0.0597510
6 5.1310000 \-0.1387320
7 1.8980000 \-0.1314820
8 0.3329000 0.5395260
S 1
1 0.1043000 1.0000000
P 3
1 6.0010000 0.0354810
2 1.2410000 0.1980720
3 0.3364000 0.5052300
P 1
1 0.0953800 1.0000000
D 1
1 0.3430000 1.0000000
.ft P
.fi
.UNINDENT
.UNINDENT
.SH USING CUSTOM PSEUDO-POTENTIALS
.sp
As for the basis set, if a file with the same name as the
pseudo\-potential exists, this file will be read. For example, if the
file containing the custom pseudo\-potential is named \fBcustom.pseudo\fP,
the basis set is named \fBcustom.basis\fP, and the \fIxyz\fP geometry is in
\fBmolecule.xyz\fP, the following command should be used
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
qp_create_ezfio \-b custom.basis \-p custom.pseudo molecule.xyz
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Pseudo\-potential files should be given in a format very close to
\fI\%GAMESS\fP format. The first line should be formatted as \fB%s GEN %d %d\fP
where the first string is the chemical symbol, the first integer is
the number of core electrons to be removed and the second integer is
LMAX+1 as in \fI\%GAMESS\fP format. The pseudo\-potential for each element are
separated by a blank line. Here is an example
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
Ne GEN 2 1
3
8.00000000 1 10.74945199
85.99561593 3 10.19801460
\-56.79004456 2 10.18694048
1
55.11144535 2 12.85042963
F GEN 2 1
3
7.00000000 1 11.39210685
79.74474797 3 10.74911370
\-49.45159098 2 10.45120693
1
50.25646328 2 11.30345826
.ft P
.fi
.UNINDENT
.UNINDENT
.SH AUTHOR
A. Scemama, E. Giner
.SH COPYRIGHT
2019, A. Scemama, E. Giner
.\" Generated by docutils manpage writer.
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_EDIT" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_EDIT" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_edit \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_EXPORT_AS_TGZ" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_EXPORT_AS_TGZ" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_export_as_tgz \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_PLUGINS" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_PLUGINS" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_plugins \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_RESET" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_RESET" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_reset \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_RUN" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_RUN" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_run \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_SET_FROZEN_CORE" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_SET_FROZEN_CORE" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_set_frozen_core \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_SET_MO_CLASS" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_SET_MO_CLASS" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_set_mo_class \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_STOP" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_STOP" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_stop \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QP_UPDATE" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QP_UPDATE" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qp_update \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "QPSH" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "QPSH" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
qpsh \- | Quantum Package >
.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH "RS_KS_SCF" "1" "Feb 06, 2019" "2.0" "Quantum Package"
.TH "RS_KS_SCF" "1" "Mar 07, 2019" "2.0" "Quantum Package"
.SH NAME
rs_ks_scf \- | Quantum Package >
.

Some files were not shown because too many files have changed in this diff Show More