# kohn_sham_rs

The Range-separated Kohn-Sham module performs Restricted Kohn-Sham calculations (the spatial part of the MOs is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange. The splitting of the interaction between long- and short-range is determined by the range-separation parameter `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 `scf_utils` structure. It performs the following actions:

1. Compute/Read all the one- and two-electron integrals, and store them in memory
2. 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.
3. Perform the SCF iterations

The definition of the Fock matrix is in `kohn_sham_rs fock_matrix_rs_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: # `scf_utils thresh_scf` # `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 `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.

## EZFIO parameters

`energy```

  Energy range separated hybrid

## Programs

> - rs_ks_scf

## Providers

`ao_potential_alpha_xc`

  File : `pot_functionals.irp.f`

      double precision, allocatable   :: ao_potential_alpha_xc        (ao_num,ao_num)
      double precision, allocatable   :: ao_potential_beta_xc (ao_num,ao_num)

  Needs:

  `ao_num` | `potential_x_alpha_ao` |

  Needed by:

  `fock_matrix_ao_alpha` | `rs_ks_energy` |

`ao_potential_beta_xc`

  File : `pot_functionals.irp.f`

      double precision, allocatable   :: ao_potential_alpha_xc        (ao_num,ao_num)
      double precision, allocatable   :: ao_potential_beta_xc (ao_num,ao_num)

  Needs:

  `ao_num` | `potential_x_alpha_ao` |

  Needed by:

  `fock_matrix_ao_alpha` | `rs_ks_energy` |

`e_correlation_dft`

  File : `pot_functionals.irp.f`

      double precision        :: e_correlation_dft

  Needs:

  `energy_x` |  |

  Needed by:

  `extra_e_contrib_density` | `rs_ks_energy` |

`e_exchange_dft`

  File : `pot_functionals.irp.f`

      double precision        :: e_exchange_dft

  Needs:

  `energy_x` |  |

  Needed by:

  `extra_e_contrib_density` | `rs_ks_energy` |

`fock_matrix_alpha_no_xc_ao`

  File : `fock_matrix_rs_ks.irp.f`

      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:

  `ao_num` | `ao_one_e_integrals` | `ao_two_e_integral_alpha`

  Needed by:

  `fock_matrix_ao_alpha` |  |

`fock_matrix_beta_no_xc_ao`

  File : `fock_matrix_rs_ks.irp.f`

      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:

  `ao_num` | `ao_one_e_integrals` | `ao_two_e_integral_alpha`

  Needed by:

  `fock_matrix_ao_alpha` |  |

`fock_matrix_energy`

  File : `rs_ks_energy.irp.f`

      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:

  `ao_num` `ao_one_e_integrals` `ao_potential_alpha_xc` `ao_two_e_integral_alpha` | `e_correlation_dft` `e_exchange_dft` `fock_matrix_ao_alpha` | `nuclear_repulsion` `scf_density_matrix_ao_alpha` `scf_density_matrix_ao_beta`

  Needed by:

  `extra_e_contrib_density` |  |

`one_e_energy`

  File : `rs_ks_energy.irp.f`

      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:

  `ao_num` `ao_one_e_integrals` `ao_potential_alpha_xc` `ao_two_e_integral_alpha` | `e_correlation_dft` `e_exchange_dft` `fock_matrix_ao_alpha` | `nuclear_repulsion` `scf_density_matrix_ao_alpha` `scf_density_matrix_ao_beta`

  Needed by:

  `extra_e_contrib_density` |  |

`rs_ks_energy`

  File : `rs_ks_energy.irp.f`

      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:

  `ao_num` `ao_one_e_integrals` `ao_potential_alpha_xc` `ao_two_e_integral_alpha` | `e_correlation_dft` `e_exchange_dft` `fock_matrix_ao_alpha` | `nuclear_repulsion` `scf_density_matrix_ao_alpha` `scf_density_matrix_ao_beta`

  Needed by:

  `extra_e_contrib_density` |  |

`trace_potential_xc`

  File : `rs_ks_energy.irp.f`

      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:

  `ao_num` `ao_one_e_integrals` `ao_potential_alpha_xc` `ao_two_e_integral_alpha` | `e_correlation_dft` `e_exchange_dft` `fock_matrix_ao_alpha` | `nuclear_repulsion` `scf_density_matrix_ao_alpha` `scf_density_matrix_ao_beta`

  Needed by:

  `extra_e_contrib_density` |  |

`two_e_energy`

  File : `rs_ks_energy.irp.f`

      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:

  `ao_num` `ao_one_e_integrals` `ao_potential_alpha_xc` `ao_two_e_integral_alpha` | `e_correlation_dft` `e_exchange_dft` `fock_matrix_ao_alpha` | `nuclear_repulsion` `scf_density_matrix_ao_alpha` `scf_density_matrix_ao_beta`

  Needed by:

  `extra_e_contrib_density` |  |

## Subroutines / functions

`check_coherence_functional:`()

  File : `rs_ks_scf.irp.f`

      subroutine check_coherence_functional

  Needs:

  `exchange_functional` | `correlation_functional` |

  Called by:

  `rs_ks_scf()` |  |