From 599a91d5aad8c98d4ae5fa590c8f9007e427e8da Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Mon, 31 Dec 2018 13:10:17 +0100 Subject: [PATCH] introduced the sgn grids --- TODO | 4 +- docs/source/modules/ao_one_e_integrals.rst | 7 ++-- docs/source/modules/aux_quantities.rst | 2 +- docs/source/modules/becke_numerical_grid.rst | 10 +++-- docs/source/modules/density_for_dft.rst | 4 +- docs/source/modules/determinants.rst | 14 +++---- docs/source/modules/dft_keywords.rst | 8 ++-- docs/source/modules/dft_utils_one_e.rst | 17 +++++---- docs/source/modules/kohn_sham.rst | 5 ++- docs/source/modules/mo_one_e_integrals.rst | 6 +-- docs/source/modules/scf_utils.rst | 5 +-- src/ao_one_e_integrals/README.rst | 7 ++-- src/ao_two_e_erf_integrals/README.rst | 4 +- src/ao_two_e_integrals/README.rst | 4 +- src/aux_quantities/README.rst | 2 +- src/becke_numerical_grid/EZFIO.cfg | 17 ++------- src/becke_numerical_grid/README.rst | 16 +++++--- src/becke_numerical_grid/grid_becke.irp.f | 40 +++++++++++++++++++- src/density_for_dft/README.rst | 4 +- src/determinants/README.rst | 14 +++---- src/dft_keywords/README.rst | 8 ++-- src/dft_utils_in_r/README.rst | 6 +-- src/dft_utils_one_e/README.rst | 17 +++++---- src/hartree_fock/scf.irp.f | 4 ++ src/hartree_fock/scf_old.irp.f | 5 +++ src/kohn_sham/README.rst | 5 ++- src/kohn_sham/ks_scf.irp.f | 5 +++ src/kohn_sham_rs/rs_ks_scf.irp.f | 6 +++ src/mo_one_e_integrals/README.rst | 6 +-- src/scf_utils/README.rst | 5 +-- 30 files changed, 162 insertions(+), 95 deletions(-) diff --git a/TODO b/TODO index f81453e9..e629a12e 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,4 @@ +!!!!!!!!!! ENLEVER CETTE SALOPERIE DE TRUC DANS VI !!!!!!!!!!!!!!!!!!!!!!!!!!!!! # qp_module * Mettre le fichier LIB @@ -5,8 +6,7 @@ # Web/doc * Creer une page web pas trop degueu et la mettre ici : http://lcpq.github.io/quantum_package -* Manu : README - * dm_for_dft +* Pour les README.rst des modules, mettre un deuxième saut à la ligne pour la doc en ligne. * prendre des bouts du src/README.rst et en mettre partout diff --git a/docs/source/modules/ao_one_e_integrals.rst b/docs/source/modules/ao_one_e_integrals.rst index 02420d50..92d34d1a 100644 --- a/docs/source/modules/ao_one_e_integrals.rst +++ b/docs/source/modules/ao_one_e_integrals.rst @@ -12,9 +12,10 @@ All the one-electron integrals in the |AO| basis are here. The most important providers for usual quantum-chemistry calculation are: -# `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) -# `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) -# `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) +* `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) +* `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) +* `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) + Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. diff --git a/docs/source/modules/aux_quantities.rst b/docs/source/modules/aux_quantities.rst index 4e6fde73..e87fa4ce 100644 --- a/docs/source/modules/aux_quantities.rst +++ b/docs/source/modules/aux_quantities.rst @@ -13,7 +13,7 @@ This module contains some global variables (such as densities and energies) whic The main providers of that module are: -# `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the one-body alpha and beta densities which are necessary read from the EZFIO folder. +* `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the one-body alpha and beta densities which are necessary read from the EZFIO folder. Thanks to these providers you can use any density matrix that does not necessary corresponds to that of the current wave function. diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst index c1c102a7..d83dee68 100644 --- a/docs/source/modules/becke_numerical_grid.rst +++ b/docs/source/modules/becke_numerical_grid.rst @@ -12,12 +12,14 @@ This module contains all quantities needed to build the Becke's grid used in gen 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. + The main providers of that module are: -# :option:`becke_numerical_grid 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 | 266 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. -# :option:`becke_numerical_grid 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 +* :option:`becke_numerical_grid 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 | 266 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. +* :option:`becke_numerical_grid 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`. diff --git a/docs/source/modules/density_for_dft.rst b/docs/source/modules/density_for_dft.rst index d8d3e1fe..a6791b77 100644 --- a/docs/source/modules/density_for_dft.rst +++ b/docs/source/modules/density_for_dft.rst @@ -13,8 +13,8 @@ This module defines the *provider* of the density used for the DFT related calcu 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| folder (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` +* 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| folder (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` diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst index d0cf0bc1..78587531 100644 --- a/docs/source/modules/determinants.rst +++ b/docs/source/modules/determinants.rst @@ -12,16 +12,16 @@ Contains everything for the computation of the Hamiltonian matrix elements in th The main providers for this module are: -# :option:`determinants n_states`: number of states to be computed -# `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. -# `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. +* :option:`determinants n_states`: number of states to be computed +* `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. +* `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. The main routines for this module are: -# `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. -# `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. -# `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. -# `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. +* `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. +* `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. +* `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. +* `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. For an example of how to use these routines and providers, take a look at :file:`example.irp.f`. diff --git a/docs/source/modules/dft_keywords.rst b/docs/source/modules/dft_keywords.rst index ed7f87d2..d4614cad 100644 --- a/docs/source/modules/dft_keywords.rst +++ b/docs/source/modules/dft_keywords.rst @@ -10,11 +10,11 @@ dft_keywords This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as: -# :option:`dft_keywords exchange_functional` -# :option:`dft_keywords correlation_functional` -# :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program +* :option:`dft_keywords exchange_functional` +* :option:`dft_keywords correlation_functional` +* :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program -The keyword for the range separation parameter :math:`\mu` is the :option:`ao_two_e_erf_integrals mu_erf` keyword. +The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_integrals 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. diff --git a/docs/source/modules/dft_utils_one_e.rst b/docs/source/modules/dft_utils_one_e.rst index dadd433e..bb3def97 100644 --- a/docs/source/modules/dft_utils_one_e.rst +++ b/docs/source/modules/dft_utils_one_e.rst @@ -12,17 +12,20 @@ This module contains all the one-body related quantities needed to perform DFT o Therefore, it contains most of the properties which depends on the one-body density and density matrix. The most important files and variables are: -# The general *providers* for the x/c energies in :file:`e_xc_general.irp.f` -# The general *providers* for the x/c potentials in :file:`pot_general.irp.f` -# The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f` + +* The general *providers* for the x/c energies in :file:`e_xc_general.irp.f` +* The general *providers* for the x/c potentials in :file:`pot_general.irp.f` +* The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f` + These *providers* will be used in many DFT-related programs, such as :file:`ks_scf.irp.f` or :file:`rs_ks_scf.irp.f`. It is also needed to compute the effective one-body operator needed in multi-determinant RS-DFT (see plugins by eginer). Some other interesting quantities: -# The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f` -# The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f` -# The :math:`h_{core}` energy computed directly with the one-body density matrix in :file:`one_e_energy_dft.irp.f` -# LDA and PBE short-range functionals *subroutines* in :file:`exc_sr_lda.irp.f` and :file:`exc_sr_pbe.irp.f` + +* The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f` +* The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f` +* The :math:`h_{core}` energy computed directly with the one-body density matrix in :file:`one_e_energy_dft.irp.f` +* LDA and PBE short-range functionals *subroutines* in :file:`exc_sr_lda.irp.f` and :file:`exc_sr_pbe.irp.f` diff --git a/docs/source/modules/kohn_sham.rst b/docs/source/modules/kohn_sham.rst index 7498b062..822f2291 100644 --- a/docs/source/modules/kohn_sham.rst +++ b/docs/source/modules/kohn_sham.rst @@ -23,8 +23,9 @@ It performs the following actions: The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f` For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. The main are: -# :option:`scf_utils thresh_scf` -# :option:`scf_utils level_shift` + +#. :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 diff --git a/docs/source/modules/mo_one_e_integrals.rst b/docs/source/modules/mo_one_e_integrals.rst index d4e14b41..37f2cea4 100644 --- a/docs/source/modules/mo_one_e_integrals.rst +++ b/docs/source/modules/mo_one_e_integrals.rst @@ -12,9 +12,9 @@ All the one-electron integrals in |MO| basis are defined here. The most important providers for usual quantum-chemistry calculation are: -# `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) -# `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) -# `mo_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`) +* `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) +* `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) +* `mo_mono_elec_integral` 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`. diff --git a/docs/source/modules/scf_utils.rst b/docs/source/modules/scf_utils.rst index cc24a1aa..2180c249 100644 --- a/docs/source/modules/scf_utils.rst +++ b/docs/source/modules/scf_utils.rst @@ -28,9 +28,8 @@ All SCF programs perform the following actions: The main keywords/options are: -# :option:`scf_utils thresh_scf` - -# :option:`scf_utils level_shift` +* :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 diff --git a/src/ao_one_e_integrals/README.rst b/src/ao_one_e_integrals/README.rst index 2d4c9660..8f9f5497 100644 --- a/src/ao_one_e_integrals/README.rst +++ b/src/ao_one_e_integrals/README.rst @@ -6,8 +6,9 @@ All the one-electron integrals in the |AO| basis are here. The most important providers for usual quantum-chemistry calculation are: -# `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) -# `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) -# `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) +* `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) +* `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) +* `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) + Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. diff --git a/src/ao_two_e_erf_integrals/README.rst b/src/ao_two_e_erf_integrals/README.rst index df48c560..cf50e17b 100644 --- a/src/ao_two_e_erf_integrals/README.rst +++ b/src/ao_two_e_erf_integrals/README.rst @@ -9,7 +9,9 @@ in :file:`utils/map_module.f90`. The main parameter of this module is :option:`ao_two_e_erf_integrals mu_erf` which is the range-separation parameter. To fetch an |AO| integral, use the -`get_ao_bielec_integral_erf(i,j,k,l,ao_integrals_erf_map)` function, and +`get_ao_bielec_integral_erf(i,j,k,l,ao_integrals_erf_map)` function. + + The conventions are: * For |AO| integrals : (ij|kl) = (11|22) = = <12|12> diff --git a/src/ao_two_e_integrals/README.rst b/src/ao_two_e_integrals/README.rst index bb57c4a2..7c870e2b 100644 --- a/src/ao_two_e_integrals/README.rst +++ b/src/ao_two_e_integrals/README.rst @@ -7,7 +7,9 @@ As they have 4 indices and many are zero, they are stored in a map, as defined in :file:`utils/map_module.f90`. To fetch an |AO| integral, use the -`get_ao_bielec_integral(i,j,k,l,ao_integrals_map)` function, and +`get_ao_bielec_integral(i,j,k,l,ao_integrals_map)` function. + + The conventions are: * For |AO| integrals : (ij|kl) = (11|22) = = <12|12> diff --git a/src/aux_quantities/README.rst b/src/aux_quantities/README.rst index 7b7154fe..4ff4d296 100644 --- a/src/aux_quantities/README.rst +++ b/src/aux_quantities/README.rst @@ -7,7 +7,7 @@ This module contains some global variables (such as densities and energies) whic The main providers of that module are: -# `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the one-body alpha and beta densities which are necessary read from the EZFIO folder. +* `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the one-body alpha and beta densities which are necessary read from the EZFIO folder. Thanks to these providers you can use any density matrix that does not necessary corresponds to that of the current wave function. diff --git a/src/becke_numerical_grid/EZFIO.cfg b/src/becke_numerical_grid/EZFIO.cfg index ac76c70f..3b2c2625 100644 --- a/src/becke_numerical_grid/EZFIO.cfg +++ b/src/becke_numerical_grid/EZFIO.cfg @@ -1,16 +1,5 @@ -[n_points_integration_angular] +[grid_type_sgn] type: integer -doc: Number of angular points per atom for 3d numerical integration, needed for DFT for example [ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ] +doc: Type of grid used for the Becke's numerical grid. Can be, by increasing accuracy: [ 0 | 1 | 2 | 3 ] interface: ezfio,provider,ocaml -default: 590 - - -[n_points_radial_grid] -type: integer -doc: Number of radial points per atom for 3d numerical integration, needed for DFT for example -interface: ezfio,provider,ocaml -default: 60 - - - - +default: 2 diff --git a/src/becke_numerical_grid/README.rst b/src/becke_numerical_grid/README.rst index b5019036..f739b059 100644 --- a/src/becke_numerical_grid/README.rst +++ b/src/becke_numerical_grid/README.rst @@ -4,14 +4,20 @@ becke_numerical_grid This module contains all quantities needed to build the Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions. -This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains a certain number of radial and angular points. +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 modue 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: -# :option:`becke_numerical_grid 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 | 266 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. -# :option:`becke_numerical_grid 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 +* `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`. diff --git a/src/becke_numerical_grid/grid_becke.irp.f b/src/becke_numerical_grid/grid_becke.irp.f index b2be30e7..ee66d835 100644 --- a/src/becke_numerical_grid/grid_becke.irp.f +++ b/src/becke_numerical_grid/grid_becke.irp.f @@ -1,3 +1,32 @@ + BEGIN_PROVIDER [integer, n_points_radial_grid] +&BEGIN_PROVIDER [integer, n_points_integration_angular] + implicit none + BEGIN_DOC + ! 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 + END_DOC +select case (grid_type_sgn) + case(0) + n_points_radial_grid = 23 + n_points_integration_angular = 170 + case(1) + n_points_radial_grid = 50 + n_points_integration_angular = 194 + case(2) + n_points_radial_grid = 75 + n_points_integration_angular = 302 + case(3) + n_points_radial_grid = 99 + n_points_integration_angular = 590 + case default + write(*,*) '!!! Quadrature grid not available !!!' + stop + end select +END_PROVIDER + BEGIN_PROVIDER [integer, n_points_grid_per_atom] implicit none BEGIN_DOC @@ -42,9 +71,18 @@ END_PROVIDER case (0590) call LD0590(X,Y,Z,W,n_points_integration_angular) + case (302) + call LD0302(X,Y,Z,W,n_points_integration_angular) + case (266) call LD0266(X,Y,Z,W,n_points_integration_angular) + case (194) + call LD0194(X,Y,Z,W,n_points_integration_angular) + + case (170) + call LD0170(X,Y,Z,W,n_points_integration_angular) + case (74) call LD0074(X,Y,Z,W,n_points_integration_angular) @@ -53,7 +91,7 @@ END_PROVIDER case default print *, irp_here//': wrong n_points_integration_angular. Expected:' - print *, '[ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ]' + print *, '[ 50 | 74 | 170 | 194 | 266 | 302 | 590 | 1202 | 2030 | 5810 ]' stop -1 end select diff --git a/src/density_for_dft/README.rst b/src/density_for_dft/README.rst index 24166855..962863ce 100644 --- a/src/density_for_dft/README.rst +++ b/src/density_for_dft/README.rst @@ -7,6 +7,6 @@ This module defines the *provider* of the density used for the DFT related calcu 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| folder (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` +* 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| folder (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` diff --git a/src/determinants/README.rst b/src/determinants/README.rst index 537464b7..9da056ff 100644 --- a/src/determinants/README.rst +++ b/src/determinants/README.rst @@ -6,16 +6,16 @@ Contains everything for the computation of the Hamiltonian matrix elements in th The main providers for this module are: -# :option:`determinants n_states`: number of states to be computed -# `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. -# `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. +* :option:`determinants n_states`: number of states to be computed +* `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. +* `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. The main routines for this module are: -# `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. -# `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. -# `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. -# `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. +* `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. +* `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. +* `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. +* `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. For an example of how to use these routines and providers, take a look at :file:`example.irp.f`. diff --git a/src/dft_keywords/README.rst b/src/dft_keywords/README.rst index 89980d79..34fa874f 100644 --- a/src/dft_keywords/README.rst +++ b/src/dft_keywords/README.rst @@ -4,10 +4,10 @@ dft_keywords This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as: -# :option:`dft_keywords exchange_functional` -# :option:`dft_keywords correlation_functional` -# :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program +* :option:`dft_keywords exchange_functional` +* :option:`dft_keywords correlation_functional` +* :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program -The keyword for the range separation parameter :math:`\mu` is the :option:`ao_two_e_erf_integrals mu_erf` keyword. +The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_integrals 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. diff --git a/src/dft_utils_in_r/README.rst b/src/dft_utils_in_r/README.rst index 0b082339..d4c4a178 100644 --- a/src/dft_utils_in_r/README.rst +++ b/src/dft_utils_in_r/README.rst @@ -8,7 +8,7 @@ As these quantities might be used and re-used, the values at each point of the g 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_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points. +* `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_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points. diff --git a/src/dft_utils_one_e/README.rst b/src/dft_utils_one_e/README.rst index 96bbd211..723719b9 100644 --- a/src/dft_utils_one_e/README.rst +++ b/src/dft_utils_one_e/README.rst @@ -6,16 +6,19 @@ This module contains all the one-body related quantities needed to perform DFT o Therefore, it contains most of the properties which depends on the one-body density and density matrix. The most important files and variables are: -# The general *providers* for the x/c energies in :file:`e_xc_general.irp.f` -# The general *providers* for the x/c potentials in :file:`pot_general.irp.f` -# The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f` + +* The general *providers* for the x/c energies in :file:`e_xc_general.irp.f` +* The general *providers* for the x/c potentials in :file:`pot_general.irp.f` +* The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f` + These *providers* will be used in many DFT-related programs, such as :file:`ks_scf.irp.f` or :file:`rs_ks_scf.irp.f`. It is also needed to compute the effective one-body operator needed in multi-determinant RS-DFT (see plugins by eginer). Some other interesting quantities: -# The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f` -# The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f` -# The :math:`h_{core}` energy computed directly with the one-body density matrix in :file:`one_e_energy_dft.irp.f` -# LDA and PBE short-range functionals *subroutines* in :file:`exc_sr_lda.irp.f` and :file:`exc_sr_pbe.irp.f` + +* The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f` +* The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f` +* The :math:`h_{core}` energy computed directly with the one-body density matrix in :file:`one_e_energy_dft.irp.f` +* LDA and PBE short-range functionals *subroutines* in :file:`exc_sr_lda.irp.f` and :file:`exc_sr_pbe.irp.f` diff --git a/src/hartree_fock/scf.irp.f b/src/hartree_fock/scf.irp.f index c8e474c0..9cf8abcf 100644 --- a/src/hartree_fock/scf.irp.f +++ b/src/hartree_fock/scf.irp.f @@ -5,6 +5,10 @@ program scf ! output: hartree_fock.energy ! optional: mo_basis.mo_coef END_DOC + disk_access_mo_one_integrals = "None" + touch disk_access_mo_one_integrals + disk_access_ao_one_integrals = "None" + touch disk_access_ao_one_integrals call create_guess call orthonormalize_mos call run diff --git a/src/hartree_fock/scf_old.irp.f b/src/hartree_fock/scf_old.irp.f index c6f69191..1f828154 100644 --- a/src/hartree_fock/scf_old.irp.f +++ b/src/hartree_fock/scf_old.irp.f @@ -5,6 +5,11 @@ program scf ! output: hartree_fock.energy ! optional: mo_basis.mo_coef END_DOC + disk_access_mo_one_integrals = "None" + touch disk_access_mo_one_integrals + disk_access_ao_one_integrals = "None" + touch disk_access_ao_one_integrals + call create_guess call orthonormalize_mos call run diff --git a/src/kohn_sham/README.rst b/src/kohn_sham/README.rst index 2b6bd7bc..83e8d1f8 100644 --- a/src/kohn_sham/README.rst +++ b/src/kohn_sham/README.rst @@ -17,8 +17,9 @@ It performs the following actions: The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f` For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. The main are: -# :option:`scf_utils thresh_scf` -# :option:`scf_utils level_shift` + +#. :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 diff --git a/src/kohn_sham/ks_scf.irp.f b/src/kohn_sham/ks_scf.irp.f index aad5527e..47dc2e73 100644 --- a/src/kohn_sham/ks_scf.irp.f +++ b/src/kohn_sham/ks_scf.irp.f @@ -5,6 +5,11 @@ program srs_ks_cf ! output: kohn_sham.energy ! optional: mo_basis.mo_coef END_DOC + + disk_access_mo_one_integrals = "None" + touch disk_access_mo_one_integrals + disk_access_ao_one_integrals = "None" + touch disk_access_ao_one_integrals read_wf = .False. density_for_dft ="WFT" touch density_for_dft diff --git a/src/kohn_sham_rs/rs_ks_scf.irp.f b/src/kohn_sham_rs/rs_ks_scf.irp.f index afa5d9bc..bb98c22c 100644 --- a/src/kohn_sham_rs/rs_ks_scf.irp.f +++ b/src/kohn_sham_rs/rs_ks_scf.irp.f @@ -5,6 +5,12 @@ program srs_ks_cf ! output: kohn_sham.energy ! optional: mo_basis.mo_coef END_DOC + + disk_access_mo_one_integrals = "None" + touch disk_access_mo_one_integrals + disk_access_ao_one_integrals = "None" + touch disk_access_ao_one_integrals + read_wf = .False. density_for_dft ="WFT" touch density_for_dft diff --git a/src/mo_one_e_integrals/README.rst b/src/mo_one_e_integrals/README.rst index 15faedf7..f947de06 100644 --- a/src/mo_one_e_integrals/README.rst +++ b/src/mo_one_e_integrals/README.rst @@ -6,8 +6,8 @@ All the one-electron integrals in |MO| basis are defined here. The most important providers for usual quantum-chemistry calculation are: -# `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) -# `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) -# `mo_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`) +* `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) +* `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) +* `mo_mono_elec_integral` 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`. diff --git a/src/scf_utils/README.rst b/src/scf_utils/README.rst index 62103f19..6d02021f 100644 --- a/src/scf_utils/README.rst +++ b/src/scf_utils/README.rst @@ -22,9 +22,8 @@ All SCF programs perform the following actions: The main keywords/options are: -# :option:`scf_utils thresh_scf` - -# :option:`scf_utils level_shift` +* :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