Exchange-correlation integrator#

C++ definitions#

template<typename MatrixType>
class GauXC::XCIntegrator#
using matrix_type = MatrixType#

The type of matrix data expected by the integrator kernels.

using value_type = matrix_type::value_type#

The scalar value type corresponding to the matrix type.

value_type integrate_den(const MatrixType &density_matrix) const#

Compute the total density to get the number of electrons.

Parameters:

density_matrix – The input density matrix data.

Returns:

The computed total density.

value_type eval_exc(const MatrixType &density_matrix) const#

Compute the exchange-correlation energy for a given density matrix.

Parameters:

density_matrix – The input density matrix data.

Returns:

The computed exchange-correlation energy.

value_type eval_exc(const MatrixType &density_matrix_s, const MatrixType &density_matrix_z) const#

Compute the exchange-correlation energy for a given density matrix.

Parameters:
  • density_matrix_s – The input density matrix data for the spin-up component.

  • density_matrix_z – The input density matrix data for the spin-down component.

Returns:

The computed exchange-correlation energy.

value_type eval_exc(const MatrixType &density_matrix_s, const MatrixType &density_matrix_z, const MatrixType &density_matrix_y, const MatrixType &density_matrix_x) const#

Compute the exchange-correlation energy for a given density matrix.

Parameters:
  • density_matrix_s – The input density matrix data for the spin-up component.

  • density_matrix_z – The input density matrix data for the spin-down component.

  • density_matrix_y – The input density matrix data for the spin-y component.

  • density_matrix_x – The input density matrix data for the spin-x component.

Returns:

The computed exchange-correlation energy.

std::tuple<value_type, matrix_type> eval_exc_vxc(const MatrixType &density_matrix)#

Compute the exchange-correlation energy and potential for a given density matrix.

Parameters:

density_matrix – The input density matrix data.

Returns:

The computed exchange-correlation energy and the computed exchange-correlation potential matrix.

std::tuple<value_type, matrix_type, matrix_type> eval_exc_vxc(const MatrixType &density_matrix_s, const MatrixType &density_matrix_z)#

Compute the exchange-correlation energy and potential for a given density matrix.

Parameters:
  • density_matrix_s – The input density matrix data for the spin-up component.

  • density_matrix_z – The input density matrix data for the spin-down component.

Returns:

The computed exchange-correlation energy and the computed exchange-correlation potential matrices for the total and spin-polarization components.

std::tuple<value_type, matrix_type, matrix_type> eval_exc_vxc_onedft(const MatrixType &density_matrix_s, const MatrixType &density_matrix_z, const OneDFTSettings settings)#

Compute the exchange-correlation energy and potential for a given density matrix.

Important

This function is available if GAUXC_HAS_ONEDFT is defined or the CMake option GAUXC_ENABLE_ONEDFT is enabled. It requires a compatible checkpoint for the Skala implementation of the functional, which can be specified with the settings parameter.

Parameters:
  • density_matrix_s – The input density matrix data for the spin-up component.

  • density_matrix_z – The input density matrix data for the spin-down component.

  • settings – The OneDFTSettings struct containing parameters for the Skala evaluation.

Returns:

The computed exchange-correlation energy and the computed exchange-correlation potential matrices for the total and spin-polarization components.

std::tuple<value_type, matrix_type, matrix_type, matrix_type, matrix_type> eval_exc_vxc(const MatrixType &density_matrix_s, const MatrixType &density_matrix_z, const MatrixType &density_matrix_y, const MatrixType &density_matrix_x)#

Compute the exchange-correlation energy and potential for a given density matrix.

Parameters:
  • density_matrix_s – The input density matrix data for the spin-up component.

  • density_matrix_z – The input density matrix data for the spin-down component.

  • density_matrix_y – The input density matrix data for the spin-y component.

  • density_matrix_x – The input density matrix data for the spin-x component.

Returns:

The computed exchange-correlation energy and the computed exchange-correlation potential matrices for the total and spin-polarization components.

class GauXC::XCIntegratorFactory#

A factory class for creating instances of the XCIntegrator class based on specified parameters.

XCIntegratorFactory(ExecutionSpace ex, std::string integrator_input_type, std::string integrator_kernel_name, std::string local_work_kernel_name, std::string reduction_kernel_name)#

Create a new XCIntegratorFactory instance with the specified execution space and kernel names.

Parameters:
  • ex – The execution space for which to create integrators.

  • integrator_input_type – The type of input data expected by the integrator kernels.

  • integrator_kernel_name – The name of the kernel to use for the main integration step.

  • local_work_kernel_name – The name of the kernel to use for computing local work sizes.

  • reduction_kernel_name – The name of the kernel to use for reduction operations.

XCIntegrator get_instance(const ExchCXX::Functional &func, const LoadBalancer &lb)#

Get an instance of the XCIntegrator class for the specified functional and load balancer.

Parameters:
  • func – The exchange-correlation functional for which to get the integrator instance.

  • lb – The load balancer to use for the integrator instance.

Returns:

An instance of the XCIntegrator class initialized with the specified parameters.

std::shared_ptr<XCIntegrator> get_shared_instance(const ExchCXX::Functional &func, const LoadBalancer &lb)#

Get a shared pointer to an instance of the XCIntegrator class for the specified functional and load balancer.

Parameters:
  • func – The exchange-correlation functional for which to get the integrator instance.

  • lb – The load balancer to use for the integrator instance.

Returns:

A shared pointer to an instance of the XCIntegrator class initialized with the specified parameters.

struct GauXC::OneDFTSettings#

A struct containing settings for the Skala implementation of the exchange-correlation functional.

model

The model checkpoint to use for evaluating the exchange-correlation energy and potential with the Skala implementation.

class ExchCXX::Functional#

A class representing an exchange-correlation functional in the ExchCXX library, which can be used with GauXC integrators.

C bindings#

struct GauXCIntegrator#

Opaque type representing an exchange-correlation integrator instance.

GauXCIntegrator gauxc_integrator_new(GauXCStatus *status, const GauXCFunctional functional, const GauXCLoadBalancer lb, enum GauXC_ExecutionSpace ex, const char *integrator_input_type, const char *integrator_kernel_name, const char *local_work_kernel_name, const char *reduction_kernel_name)#

Create a new exchange-correlation integrator instance with the specified functional, load balancer, execution space, and kernel names.

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • functional – The exchange-correlation functional for which to create the integrator.

  • lb – The load balancer to use for the integrator.

  • ex – The execution space for which to create the integrator.

  • integrator_input_type – The type of input data expected by the integrator kernels.

  • integrator_kernel_name – The name of the kernel to use for the main integration step.

  • local_work_kernel_name – The name of the kernel to use for computing local work sizes.

  • reduction_kernel_name – The name of the kernel to use for reduction operations.

Returns:

A new GauXCIntegrator instance initialized with the specified parameters.

void gauxc_integrator_integrate_den(GauXCStatus *status, GauXCIntegrator integrator, const int64_t m, const int64_t n, const double *density_matrix, const int64_t ldp, double *den)#

Compute the total density to get the number of electrons

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • integrator – The GauXCIntegrator instance to use for the integration.

  • m – The number of rows in the density matrix.

  • n – The number of columns in the density matrix.

  • density_matrix – Pointer to the input density matrix data.

  • ldp – The leading dimension of the density matrix.

  • den – Pointer to the output variable where the computed total density will be stored.

void gauxc_integrator_eval_exc_rks(GauXCStatus *status, GauXCIntegrator integrator, const int64_t m, const int64_t n, const double *density_matrix, const int64_t ldp, double *exc)#

Compute the exchange-correlation energy for a given density matrix.

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • integrator – The GauXCIntegrator instance to use for the integration.

  • m – The number of rows in the density matrix.

  • n – The number of columns in the density matrix.

  • density_matrix – Pointer to the input density matrix data.

  • ldp – The leading dimension of the density matrix.

  • exc – Pointer to the output variable where the computed exchange-correlation energy will be stored.

void gauxc_integrator_eval_exc_uks(GauXCStatus *status, GauXCIntegrator integrator, const int64_t m, const int64_t n, const double *density_matrix_s, const int64_t ldp_s, const double *density_matrix_z, const int64_t ldp_z, double *exc)#

Compute the exchange-correlation energy for a given density matrix.

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • integrator – The GauXCIntegrator instance to use for the integration.

  • m – The number of rows in the density matrix.

  • n – The number of columns in the density matrix.

  • density_matrix_s – Pointer to the input density matrix data.

  • ldp_s – The leading dimension of the density matrix.

  • density_matrix_z – Pointer to the input density matrix data.

  • ldp_z – The leading dimension of the density matrix.

  • exc – Pointer to the output variable where the computed exchange-correlation energy will be stored.

void gauxc_integrator_eval_exc_gks(GauXCStatus *status, GauXCIntegrator integrator, const int64_t m, const int64_t n, const double *density_matrix_s, const int64_t ldp_s, const double *density_matrix_z, const int64_t ldp_z, const double *density_matrix_y, const int64_t ldp_y, const double *density_matrix_x, const int64_t ldp_x, double *exc)#

Compute the exchange-correlation energy for a given density matrix.

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • integrator – The GauXCIntegrator instance to use for the integration.

  • m – The number of rows in the density matrix.

  • n – The number of columns in the density matrix.

  • density_matrix_s – Pointer to the input density matrix data.

  • ldp_s – The leading dimension of the density matrix.

  • density_matrix_z – Pointer to the input density matrix data.

  • ldp_z – The leading dimension of the density matrix.

  • density_matrix_y – Pointer to the input density matrix data.

  • ldp_y – The leading dimension of the density matrix.

  • density_matrix_x – Pointer to the input density matrix data.

  • ldp_x – The leading dimension of the density matrix.

  • exc – Pointer to the output variable where the computed exchange-correlation energy will be stored.

void gauxc_integrator_eval_exc_vxc_rks(GauXCStatus *status, GauXCIntegrator integrator, const int64_t m, const int64_t n, const double *density_matrix, const int64_t ldp, double *exc, double *vxc_matrix, const int64_t ldp_vxc)#

Compute the exchange-correlation energy and potential for a given density matrix.

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • integrator – The GauXCIntegrator instance to use for the integration.

  • m – The number of rows in the density matrix.

  • n – The number of columns in the density matrix.

  • density_matrix – Pointer to the input density matrix data.

  • ldp – The leading dimension of the density matrix.

  • exc – Pointer to the output variable where the computed exchange-correlation energy will be stored.

  • vxc_matrix – Pointer to the output array where the computed exchange-correlation potential matrix will be stored.

  • ldp_vxc – The leading dimension of the vxc_matrix array.

void gauxc_integrator_eval_exc_vxc_uks(GauXCStatus *status, GauXCIntegrator integrator, const int64_t m, const int64_t n, const double *density_matrix_s, const int64_t ldp_s, const double *density_matrix_z, const int64_t ldp_z, double *exc, double *vxc_matrix_s, const int64_t ldp_vxc_s, double *vxc_matrix_z, const int64_t ldp_vxc_z)#

Compute the exchange-correlation energy and potential for a given density matrix.

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • integrator – The GauXCIntegrator instance to use for the integration.

  • m – The number of rows in the density matrix.

  • n – The number of columns in the density matrix.

  • density_matrix_s – Pointer to the input density matrix data.

  • ldp_s – The leading dimension of the density matrix.

  • density_matrix_z – Pointer to the input density matrix data.

  • ldp_z – The leading dimension of the density matrix.

  • exc – Pointer to the output variable where the computed exchange-correlation energy will be stored.

  • vxc_matrix_s – Pointer to the output array where the computed exchange-correlation potential matrix for the spin-up component will be stored.

  • ldp_vxc_s – The leading dimension of the vxc_matrix_s array.

  • vxc_matrix_z – Pointer to the output array where the computed exchange-correlation potential matrix for the spin-down component will be stored.

  • ldp_vxc_z – The leading dimension of the vxc_matrix_z array.

void gauxc_integrator_eval_exc_vxc_onedft_uks(GauXCStatus *status, GauXCIntegrator integrator, const int64_t m, const int64_t n, const double *density_matrix_s, const int64_t ldp_s, const double *density_matrix_z, const int64_t ldp_z, const char *model, double *exc, double *vxc_matrix_s, const int64_t ldp_vxc_s, double *vxc_matrix_z, const int64_t ldp_vxc_z)#

Compute the exchange-correlation energy and potential for a given density matrix.

Important

This function is available if GAUXC_HAS_ONEDFT is defined or the CMake option GAUXC_ENABLE_ONEDFT is enabled. It requires a compatible checkpoint for the Skala implementation of the functional, which can be specified with the model parameter.

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • integrator – The GauXCIntegrator instance to use for the integration.

  • m – The number of rows in the density matrix.

  • n – The number of columns in the density matrix.

  • density_matrix_s – Pointer to the input density matrix data.

  • ldp_s – The leading dimension of the density matrix.

  • density_matrix_z – Pointer to the input density matrix data.

  • ldp_z – The leading dimension of the density matrix.

  • model – The model checkpoint to use for evaluating the exchange-correlation energy and potential.

  • exc – Pointer to the output variable where the computed exchange-correlation energy will be stored.

  • vxc_matrix_s – Pointer to the output array where the computed exchange-correlation potential matrix for the spin-up component will be stored.

  • ldp_vxc_s – The leading dimension of the vxc_matrix_s array.

  • vxc_matrix_z – Pointer to the output array where the computed exchange-correlation potential matrix for the spin-down component will be stored.

  • ldp_vxc_z – The leading dimension of the vxc_matrix_z array.

void gauxc_integrator_eval_exc_vxc_gks(GauXCStatus *status, GauXCIntegrator integrator, const int64_t m, const int64_t n, const double *density_matrix_s, const int64_t ldp_s, const double *density_matrix_z, const int64_t ldp_z, const double *density_matrix_y, const int64_t ldp_y, const double *density_matrix_x, const int64_t ldp_x, double *exc, double *vxc_matrix_s, const int64_t ldp_vxc_s, double *vxc_matrix_z, const int64_t ldp_vxc_z, double *vxc_matrix_y, const int64_t ldp_vxc_y, double *vxc_matrix_x, const int64_t ldp_vxc_x)#

Compute the exchange-correlation energy and potential for a given density matrix.

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • integrator – The GauXCIntegrator instance to use for the integration.

  • m – The number of rows in the density matrix.

  • n – The number of columns in the density matrix.

  • density_matrix_s – Pointer to the input density matrix data.

  • ldp_s – The leading dimension of the density matrix.

  • density_matrix_z – Pointer to the input density matrix data.

  • ldp_z – The leading dimension of the density matrix.

  • density_matrix_y – Pointer to the input density matrix data.

  • ldp_y – The leading dimension of the density matrix.

  • density_matrix_x – Pointer to the input density matrix data.

  • ldp_x – The leading dimension of the density matrix.

  • exc – Pointer to the output variable where the computed exchange-correlation energy will be stored.

  • vxc_matrix_s – Pointer to the output array where the computed exchange-correlation potential matrix for the spin-up component will be stored.

  • ldp_vxc_s – The leading dimension of the vxc_matrix_s array.

  • vxc_matrix_z – Pointer to the output array where the computed exchange-correlation potential matrix for the spin-down component will be stored.

  • ldp_vxc_z – The leading dimension of the vxc_matrix_z array.

  • vxc_matrix_y – Pointer to the output array where the computed exchange-correlation potential matrix for the spin-y component will be stored.

  • ldp_vxc_y – The leading dimension of the vxc_matrix_y array.

  • vxc_matrix_x – Pointer to the output array where the computed exchange-correlation potential matrix for the spin-x component will be stored.

  • ldp_vxc_x – The leading dimension of the vxc_matrix_x array.

void gauxc_integrator_delete(GauXCStatus *status, GauXCIntegrator *integrator)#

Delete an exchange-correlation integrator instance.

Parameters:
  • status – Pointer to a GauXCStatus struct where the status of the operation will be stored.

  • integrator – Pointer to the GauXCIntegrator instance to be deleted.

struct GauXCFunctional#

Opaque type representing an exchange-correlation functional in the GauXC C API, which can be used with GauXC integrators.

Fortran bindings#

type  gauxc_integrator_type#

Opaque type representing an exchange-correlation integrator instance in the GauXC Fortran API. Available in the module gauxc_integrator.

function  gauxc_integrator_new(status, functional, lb, ex[, integrator_input_type, integrator_kernel_name, local_work_kernel_name, reduction_kernel_name])#

Create a new exchange-correlation integrator instance with the specified functional, load balancer, execution space, and kernel names.

Parameters:
  • status [type(gauxc_status_type)] :: A variable to store the status of the operation.

  • functional [type(gauxc_functional_type)] :: The exchange-correlation functional for which to create the integrator.

  • lb [type(gauxc_load_balancer_type)] :: The load balancer to use for the integrator.

  • ex [integer(c_int)] :: The execution space for which to create the integrator.

Options:
  • integrator_input_type [character(len=*)] :: The type of input data expected by the integrator kernels. Default: “Replicated”

  • integrator_kernel_name [character(len=*)] :: The name of the kernel to use for the main integration step. Default: “Default”

  • local_work_kernel_name [character(len=*)] :: The name of the kernel to use for computing local work sizes. Default: “Default”

  • reduction_kernel_name [character(len=*)] :: The name of the kernel to use for reduction operations. Default: “Default”

Return:

type (gauxc_integrator_type) :: A new gauxc_integrator_type object initialized with the specified parameters.

subroutine  gauxc_integrator_integrate_den(status, integrator, density_matrix, den)#

Compute the total density to get the number of electrons.

Parameters:
  • status [type(gauxc_status_type)] :: A variable to store the status of the operation.

  • integrator [type(gauxc_integrator_type)] :: The GauXCIntegrator instance to use for the integration.

  • density_matrix [real(c_double),dimension(:,:)] :: The input density matrix data.

  • den [real(c_double)] :: Output variable where the computed total density will be stored.

subroutine  gauxc_integrator_eval_exc_rks(status, integrator, density_matrix, exc)#

Compute the exchange-correlation energy for a given density matrix. Part of the gauxc_eval_exc() interface.

Parameters:
  • status [type(gauxc_status_type)] :: A variable to store the status of the operation.

  • integrator [type(gauxc_integrator_type)] :: The GauXCIntegrator instance to use for the integration.

  • density_matrix [real(c_double),dimension(:,:)] :: The input density matrix data.

  • exc [real(c_double)] :: Output variable where the computed exchange-correlation energy will be stored.

subroutine  gauxc_integrator_eval_exc_uks(status, integrator, density_matrix_s, density_matrix_z, exc)#

Compute the exchange-correlation energy for a given density matrix. Part of the gauxc_eval_exc() interface.

Parameters:
  • status [type(gauxc_status_type)] :: A variable to store the status of the operation.

  • integrator [type(gauxc_integrator_type)] :: The GauXCIntegrator instance to use for the integration.

  • density_matrix_s [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-up component.

  • density_matrix_z [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-down component.

  • exc [real(c_double)] :: Output variable where the computed exchange-correlation energy will be stored.

subroutine  gauxc_integrator_eval_exc_gks(status, integrator, density_matrix_s, density_matrix_z, density_matrix_y, density_matrix_x, exc)#

Compute the exchange-correlation energy for a given density matrix. Part of the gauxc_eval_exc() interface.

Parameters:
  • status [type(gauxc_status_type)] :: A variable to store the status of the operation.

  • integrator [type(gauxc_integrator_type)] :: The GauXCIntegrator instance to use for the integration.

  • density_matrix_s [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-up component.

  • density_matrix_z [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-down component.

  • density_matrix_y [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-y component.

  • density_matrix_x [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-x component.

  • exc [real(c_double)] :: Output variable where the computed exchange-correlation energy will be stored.

subroutine  gauxc_integrator_eval_exc_vxc_rks(status, integrator, density_matrix, exc, vxc_matrix, ldp_vxc)#

Compute the exchange-correlation energy and potential for a given density matrix. Part of the gauxc_eval_exc_vxc() interface.

Parameters:
  • status [type(gauxc_status_type)] :: A variable to store the status of the operation.

  • integrator [type(gauxc_integrator_type)] :: The GauXCIntegrator instance to use for the integration.

  • density_matrix [real(c_double),dimension(:,:)] :: The input density matrix data.

  • exc [real(c_double)] :: Output variable where the computed exchange-correlation energy will be stored.

  • vxc_matrix [real(c_double),dimension(:,:)] :: Output array where the computed exchange-correlation potential matrix will be stored.

  • ldp_vxc [integer(c_int64_t)] :: The leading dimension of the vxc_matrix array.

subroutine  gauxc_integrator_eval_exc_vxc_uks(status, integrator, density_matrix_s, density_matrix_z, exc, vxc_matrix_s, vxc_matrix_z)#

Compute the exchange-correlation energy and potential for a given density matrix. Part of the gauxc_eval_exc_vxc() interface.

Parameters:
  • status [type(gauxc_status_type)] :: A variable to store the status of the operation.

  • integrator [type(gauxc_integrator_type)] :: The GauXCIntegrator instance to use for the integration.

  • density_matrix_s [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-up component.

  • density_matrix_z [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-down component.

  • exc [real(c_double)] :: Output variable where the computed exchange-correlation energy will be stored.

  • vxc_matrix_s [real(c_double),dimension(:,:)] :: Output array where the computed exchange-correlation potential matrix for the spin-up component will be stored.

  • vxc_matrix_z [real(c_double),dimension(:,:)] :: Output array where the computed exchange-correlation potential matrix for the spin-down component will be stored.

subroutine  gauxc_integrator_eval_exc_vxc_onedft_uks(status, integrator, density_matrix_s, density_matrix_z, model, exc, vxc_matrix_s, vxc_matrix_z)#

Compute the exchange-correlation energy and potential for a given density matrix. Part of the gauxc_eval_exc_vxc() interface.

Important

This function is available if GAUXC_HAS_ONEDFT is defined or the CMake option GAUXC_ENABLE_ONEDFT is enabled. It requires a compatible checkpoint for the Skala implementation of the functional, which can be specified with the model parameter.

Parameters:
  • status [type(gauxc_status_type)] :: A variable to store the status of the operation.

  • integrator [type(gauxc_integrator_type)] :: The GauXCIntegrator instance to use for the integration.

  • density_matrix_s [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-up component.

  • density_matrix_z [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-down component.

  • model [character(len=*)] :: The model checkpoint to use for evaluating the exchange-correlation energy and potential.

  • exc [real(c_double)] :: Output variable where the computed exchange-correlation energy will be stored.

  • vxc_matrix_s [real(c_double),dimension(:,:)] :: Output array where the computed exchange-correlation potential matrix for the spin-up component will be stored.

  • vxc_matrix_z [real(c_double),dimension(:,:)] :: Output array where the computed exchange-correlation potential matrix for the spin-down component will be stored.

subroutine  gauxc_integrator_eval_exc_vxc_gks(status, integrator, density_matrix_s, density_matrix_z, density_matrix_y, density_matrix_x, exc, vxc_matrix_s, vxc_matrix_z, vxc_matrix_y, vxc_matrix_x)#

Compute the exchange-correlation energy and potential for a given density matrix. Part of the gauxc_eval_exc_vxc() interface.

Parameters:
  • status [type(gauxc_status_type)] :: A variable to store the status of the operation.

  • integrator [type(gauxc_integrator_type)] :: The GauXCIntegrator instance to use for the integration.

  • density_matrix_s [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-up component.

  • density_matrix_z [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-down component.

  • density_matrix_y [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-y component.

  • density_matrix_x [real(c_double),dimension(:,:)] :: The input density matrix data for the spin-x component.

  • exc [real(c_double)] :: Output variable where the computed exchange-correlation energy will be stored.

  • vxc_matrix_s [real(c_double),dimension(:,:)] :: Output array where the computed exchange-correlation potential matrix for the spin-up component will be stored.

  • vxc_matrix_z [real(c_double),dimension(:,:)] :: Output array where the computed exchange-correlation potential matrix for the spin-down component will be stored.

  • vxc_matrix_y [real(c_double),dimension(:,:)] :: Output array where the computed exchange-correlation potential matrix for the spin-y component will be stored.

  • vxc_matrix_x [real(c_double),dimension(:,:)] :: Output array where the computed exchange-correlation potential matrix for the spin-x component will be stored.

type  gauxc_functional_type#

Opaque type representing an exchange-correlation functional in the GauXC Fortran API, which can be used with GauXC integrators.