![]()  | 
  
    Octopus
    
   | 
 
Data Types | |
| type | internal_quantities_t | 
| type | xc_t | 
Functions/Subroutines | |
| subroutine, public | xc_write_info (xcs, iunit, namespace) | 
| subroutine, public | xc_init (xcs, namespace, ndim, periodic_dim, nel, x_id, c_id, xk_id, ck_id, hartree_fock, ispin) | 
| subroutine, public | xc_end (xcs) | 
| logical pure function, public | xc_is_orbital_dependent (xcs) | 
| Is the xc family orbital dependent.  More... | |
| pure logical function | family_is_gga (family, only_collinear) | 
| Is the xc function part of the GGA family.  More... | |
| pure logical function | family_is_supported (family) | 
| Is the xc family internally supported by Octopus.  More... | |
| pure logical function, public | family_is_mgga (family, only_collinear) | 
| Is the xc function part of the mGGA family.  More... | |
| logical pure function, public | family_is_mgga_with_exc (xcs) | 
| Is the xc function part of the mGGA family with an energy functional.  More... | |
| logical pure function, public | family_is_hybrid (xcs) | 
| Returns true if the functional is an hybrid functional.  More... | |
| pure logical function, public | in_family (family, xc_families) | 
| subroutine | copy_global_to_local (global, local, n_block, nspin, ip) | 
| make a local copy with the correct memory order for libxc  More... | |
| subroutine | copy_local_to_global (local, global, n_block, spin_channels, ip) | 
| subroutine | set_hybrid_params (xcs, namespace) | 
| Sets external parameters for some hybrid functionals.  More... | |
| subroutine, public | xc_get_vxc (gr, xcs, st, kpoints, psolver, namespace, space, rho, ispin, rcell_volume, vxc, ex, ec, deltaxc, vtau, ex_density, ec_density, stress_xc, force_orbitalfree) | 
| subroutine | xc_update_internal_quantities (gr, xcs, st, kpoints, namespace, space, rho, quantities, ispin, rcell_volume, force_orbitalfree) | 
| Given a functional, we are updating/transfering/computing the needed internal quantities that are later needed to perform an actual call to xc_compute_vxc.  More... | |
| subroutine | xc_release_internal_quantities (quantities) | 
| subroutine | xc_compute_vxc (der, xcs, st, psolver, namespace, space, quantities, ispin, vxc, ex, ec, deltaxc, vtau, ex_density, ec_density, stress_xc) | 
| pure logical function | functional_needs_laplacian (functl) | 
| subroutine | xc_density_correction_calc (xcs, der, psolver, namespace, space, nspin, density, refvx, vxc, deltaxc) | 
| real(real64) function | get_qxc (mesh, nxc, density, ncutoff) | 
| subroutine, public | xc_get_fxc (xcs, mesh, namespace, rho, ispin, fxc, zfxc) | 
| subroutine, public | xc_get_kxc (xcs, mesh, namespace, rho, ispin, kxc) | 
| subroutine, public | xc_get_nc_vxc (gr, xcs, st, kpoints, space, namespace, rho, vxc, ex, ec, vtau, ex_density, ec_density) | 
| This routines is similar to xc_get_vxc but for noncollinear functionals, which are not implemented in libxc.  More... | |
| subroutine | xc_nc_update_internal_quantities (gr, xcs, st, kpoints, space, namespace, rho, quantities) | 
| Given a functional, we are updating/transfering/computing the needed internal quantities that are later needed to perform an actual call to xc_compute_vxc.  More... | |
| subroutine | xc_compute_vxc_nc (gr, xcs, st, namespace, quantities, vxc, ex, ec, vtau, ex_density, ec_density) | 
| This routines is similar to xc_update_internal_quantities but for noncollinear functionals, which are not implemented in libxc.  More... | |
| pure logical function | family_is_nc_mgga (family) | 
| Returns true is the functional is a noncollinear functional.  More... | |
| subroutine | nc_mgga_exc_vxc (functl, namespace, n_block, l_dens, l_sigma, l_ldens, l_tau, l_dedd, l_vsigma, l_deddldens, l_dedtau, l_zk) | 
| Interface between the generic call to get the energy and potential and the calls to each specific functionals.  More... | |
| subroutine | nc_br_vxc_exc (l_dens, l_sigma, l_ldens, l_tau, gamma, l_dedd, l_vsigma, l_dedldens, l_dedtau, l_zk) | 
| Computes the local curvature of the exchange-hole and get the corresponding values of x and b.  More... | |
| real(real64) function | nc_br_get_x (ldens, lcurv) | 
| Computes the coefficient x from the local density and the local curvature of the exchange hole, see Eq. B7 in PRB 107, 165111 (2023)  More... | |
| real(real64) function | nc_br_rtsafe (rhs, tol) | 
| This is inspired by the safe Newton-Raphson method from numerical recipies This function returns the value of x that fulfill the equation \(x exp(-2/3*x)/(x-2) = rhs\).  More... | |
| subroutine | nc_cs_vxc_exc (l_dens, l_sigma, l_ldens, l_tau, l_dedd, l_vsigma, l_dedldens, l_dedtau, l_zk) | 
| Implements the correlation energy functional defined in Tancogne-Dejean et al., PRB 107, 165111 (2023)  More... | |
Variables | |
| real(real64), parameter | tiny = 1.0e-12_real64 | 
| integer, parameter | lr_none = 0 | 
| integer, parameter | lr_x = 1 | 
| subroutine, public xc_oct_m::xc_write_info | ( | type(xc_t), intent(in) | xcs, | 
| integer, intent(in), optional | iunit, | ||
| type(namespace_t), intent(in), optional | namespace | ||
| ) | 
| subroutine, public xc_oct_m::xc_init | ( | type(xc_t), intent(out) | xcs, | 
| type(namespace_t), intent(in) | namespace, | ||
| integer, intent(in) | ndim, | ||
| integer, intent(in) | periodic_dim, | ||
| real(real64), intent(in) | nel, | ||
| integer, intent(in) | x_id, | ||
| integer, intent(in) | c_id, | ||
| integer, intent(in) | xk_id, | ||
| integer, intent(in) | ck_id, | ||
| logical, intent(in) | hartree_fock, | ||
| integer, intent(in) | ispin | ||
| ) | 
| subroutine, public xc_oct_m::xc_end | ( | type(xc_t), intent(inout) | xcs | ) | 
| logical pure function, public xc_oct_m::xc_is_orbital_dependent | ( | type(xc_t), intent(in) | xcs | ) | 
      
  | 
  private | 
      
  | 
  private | 
| pure logical function, public xc_oct_m::family_is_mgga | ( | integer, intent(in), optional | family, | 
| logical, intent(in), optional | only_collinear | ||
| ) | 
| logical pure function, public xc_oct_m::family_is_mgga_with_exc | ( | type(xc_t), intent(in) | xcs | ) | 
| logical pure function, public xc_oct_m::family_is_hybrid | ( | type(xc_t), intent(in) | xcs | ) | 
| pure logical function, public xc_oct_m::in_family | ( | integer, intent(in) | family, | 
| integer, dimension(:), intent(in) | xc_families | ||
| ) | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
| subroutine, public xc_oct_m::xc_get_vxc | ( | type(grid_t), intent(in) | gr, | 
| type(xc_t), intent(inout), target | xcs, | ||
| type(states_elec_t), intent(in) | st, | ||
| type(kpoints_t), intent(in) | kpoints, | ||
| type(poisson_t), intent(in) | psolver, | ||
| type(namespace_t), intent(in) | namespace, | ||
| class(space_t), intent(in) | space, | ||
| real(real64), dimension(:,:), intent(in), target | rho, | ||
| integer, intent(in) | ispin, | ||
| real(real64), intent(in) | rcell_volume, | ||
| real(real64), dimension(:,:), intent(inout), optional, contiguous | vxc, | ||
| real(real64), intent(inout), optional | ex, | ||
| real(real64), intent(inout), optional | ec, | ||
| real(real64), intent(inout), optional | deltaxc, | ||
| real(real64), dimension(:,:), intent(inout), optional, contiguous | vtau, | ||
| real(real64), dimension(:), intent(out), optional, target | ex_density, | ||
| real(real64), dimension(:), intent(out), optional, target | ec_density, | ||
| real(real64), dimension(:,:), intent(out), optional | stress_xc, | ||
| logical, intent(in), optional | force_orbitalfree | ||
| ) | 
| [in] | gr | Discretization and the derivative operators and details | 
| [in,out] | xcs | Details about the xc functional used | 
| [in] | st | State of the system (wavefunction,eigenvalues...) | 
| [in] | ispin | Number of spin channels | 
| [in] | rcell_volume | Lattice unit cell volume. | 
| [in,out] | vxc | XC potential | 
| [in,out] | ex | Exchange energy. | 
| [in,out] | ec | Correlation energy. | 
| [in,out] | deltaxc | The XC derivative discontinuity | 
| [in,out] | vtau | Derivative wrt (two times kinetic energy density) | 
| [out] | ex_density | The exchange energy density | 
| [out] | ec_density | The correlation energy density | 
| [out] | stress_xc | GGA and beyond contribution to the stress tensor | 
| [in] | force_orbitalfree | Force doing a calculation without orbitals | 
      
  | 
  private | 
Given a functional, we are updating/transfering/computing the needed internal quantities that are later needed to perform an actual call to xc_compute_vxc.
| [in] | gr | Discretization and the derivative operators and details | 
| [in,out] | xcs | Details about the xc functional used | 
| [in] | st | State of the system (wavefunction,eigenvalues...) | 
| [in,out] | quantities | Internal quantities | 
| [in] | ispin | Number of spin channels | 
| [in] | rcell_volume | Lattice unit cell volume. | 
| [in] | force_orbitalfree | Force doing a calculation without orbitals | 
      
  | 
  private | 
      
  | 
  private | 
| [in] | der | Discretization and the derivative operators and details | 
| [in,out] | xcs | Details about the xc functional used | 
| [in] | st | State of the system (wavefunction,eigenvalues...) | 
| [in,out] | quantities | Internal quantities | 
| [in] | ispin | Number of spin channels | 
| [in,out] | vxc | XC potential | 
| [in,out] | ex | Exchange energy. | 
| [in,out] | ec | Correlation energy. | 
| [in,out] | deltaxc | The XC derivative discontinuity | 
| [in,out] | vtau | Derivative wrt (two times kinetic energy density) | 
| [out] | ex_density | The exchange energy density | 
| [out] | ec_density | The correlation energy density | 
| [out] | stress_xc | GGA and beyond contribution to the stress tensor | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
| subroutine, public xc_oct_m::xc_get_fxc | ( | type(xc_t), intent(in), target | xcs, | 
| class(mesh_t), intent(in) | mesh, | ||
| type(namespace_t), intent(in) | namespace, | ||
| real(real64), dimension(:, :), intent(in) | rho, | ||
| integer, intent(in) | ispin, | ||
| real(real64), dimension(:,:,:), intent(inout) | fxc, | ||
| complex(real64), dimension(:, :, :, :, :), intent(inout), optional | zfxc | ||
| ) | 
| subroutine, public xc_oct_m::xc_get_kxc | ( | type(xc_t), intent(in), target | xcs, | 
| class(mesh_t), intent(in) | mesh, | ||
| type(namespace_t), intent(in) | namespace, | ||
| real(real64), dimension(:, :), intent(in) | rho, | ||
| integer, intent(in) | ispin, | ||
| real(real64), dimension(:,:,:,:), intent(inout) | kxc | ||
| ) | 
| subroutine, public xc_oct_m::xc_get_nc_vxc | ( | type(grid_t), intent(in) | gr, | 
| type(xc_t), intent(inout), target | xcs, | ||
| type(states_elec_t), intent(in) | st, | ||
| type(kpoints_t), intent(in) | kpoints, | ||
| type(space_t), intent(in) | space, | ||
| type(namespace_t), intent(in) | namespace, | ||
| real(real64), dimension(:, :), intent(in) | rho, | ||
| real(real64), dimension(:,:), intent(inout) | vxc, | ||
| real(real64), intent(inout), optional | ex, | ||
| real(real64), intent(inout), optional | ec, | ||
| real(real64), dimension(:,:), intent(inout), optional | vtau, | ||
| real(real64), dimension(:), intent(out), optional, target | ex_density, | ||
| real(real64), dimension(:), intent(out), optional, target | ec_density | ||
| ) | 
This routines is similar to xc_get_vxc but for noncollinear functionals, which are not implemented in libxc.
| [in,out] | xcs | Details about the xc functional used | 
| [in] | st | State of the system (wavefunction,eigenvalues...) | 
| [in] | rho | Electronic density | 
| [in,out] | vxc | XC potential | 
| [in,out] | ex | Exchange energy. | 
| [in,out] | ec | Correlation energy. | 
| [in,out] | vtau | Derivative wrt (two times kinetic energy density) | 
| [out] | ex_density | The exchange energy density | 
| [out] | ec_density | The correlation energy density | 
      
  | 
  private | 
Given a functional, we are updating/transfering/computing the needed internal quantities that are later needed to perform an actual call to xc_compute_vxc.
| [in] | gr | Discretization and the derivative operators and details | 
| [in,out] | xcs | Details about the xc functional used | 
| [in] | st | State of the system (wavefunction,eigenvalues...) | 
| [in,out] | quantities | Internal quantities | 
      
  | 
  private | 
This routines is similar to xc_update_internal_quantities but for noncollinear functionals, which are not implemented in libxc.
| [in,out] | xcs | Details about the xc functional used | 
| [in] | st | State of the system (wavefunction,eigenvalues...) | 
| [in,out] | quantities | Internal quantities | 
| [in,out] | vxc | XC potential | 
| [in,out] | ex | Exchange energy. | 
| [in,out] | ec | Correlation energy. | 
| [in,out] | vtau | Derivative wrt (two times kinetic energy density) | 
| [out] | ex_density | The exchange energy density | 
| [out] | ec_density | The correlation energy density | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private |