Serial prototype for benchmarking and validating ISDF implementation.
|
subroutine, public | isdf_serial_interpolation_vectors (isdf, namespace, mesh, st, indices, phi_mu, P_r_mu, isdf_vectors) |
| Construct interpolative separable density fitting (ISDF) vectors and other intermediate quantities relevant for density-fitting adaptively- compressed exchange. More...
|
|
subroutine | collate_batches_get_state (mesh, st, max_state, psi) |
| Loop over states per block, which makes applying the maximum state limit much simpler Use this to compare to the output of collate_batches Not distributed in states or domain. More...
|
|
subroutine | sample_phi_at_centroids (phi_r, indices, phi_mu) |
| Sample KS states at centroid points. More...
|
|
subroutine | construct_zct (zct) |
| Construct the product of Z and C matrices from the element-wise product of the quasi-density matrix. More...
|
|
subroutine | construct_cct (indices, zct, cct) |
| Construct the product \(CC^T\) from \(ZC^T\) by masking the first dimension of \(ZC^T\). More...
|
|
subroutine | construct_density_matrix_packed (phi, phi_mu, P_r_mu) |
| @ brief Construct the density matrix with shape (np, n_int). Denoted packed, because it expects phi in state-major format. More...
|
|
subroutine | construct_density_matrix_with_occ_packed (st, phi, phi_mu, P_r_mu) |
|
subroutine, public | quantify_error_and_visualise (isdf, namespace, st, space, mesh, ions, indices, isdf_vectors, output_cubes) |
| Wrapper for quantifying the error in the expansion of the product basis. More...
|
|
subroutine | approximate_pair_products (psi_mu, zeta, product_basis) |
| Construct a set of approximate pair products using the ISDF interpolation vectors. More...
|
|
subroutine | error_in_product_basis (mesh, product_basis, approx_product_basis, error, mean_error) |
| Quantify the error in the product basis expansion. More...
|
|
subroutine | generate_product_state_cubes (namespace, space, mesh, ions, file_prefix, data, limits) |
| Helper function to output a set of pair product states. More...
|
|
subroutine, public | isdf_serial_ace_compute_potentials (exxop, namespace, space, mesh, st, Vx_on_st, kpoints) |
| ISDF wrapper computing interpolation points and vectors, which are used to build the potential \(W_j=\left(V_x\left[\left\{\varphi_i\right\}\right] \psi_j\right)(\mathbf{r})\) used in adaptively-compressed exchange. More...
|
|
subroutine | isdf_serial_ace_w_unpacked (namespace, P_r_mu, isdf_vectors, psi_mu, poisson_solver, cam, st, W_ace) |
| Compute the action of the exchange potential on KS states for adaptively-compressed exchange. More...
|
|
subroutine | isdf_serial_ace_batch_w (isdf, st, W_ace, Vx_on_st) |
| Put the bare array representation of W into a batch. More...
|
|
subroutine isdf_serial_oct_m::construct_zct |
( |
real(real64), dimension(:, :), intent(inout), contiguous |
zct | ) |
|
|
private |
Construct the product of Z and C matrices from the element-wise product of the quasi-density matrix.
In this instance, the routine only accepts one set of Kohn-sham states:
\[
(ZC^T)_{\mathbf{r}, \mathbf{r}_{\mu}} =
P^{\varphi}(\mathbf{r}, \mathbf{r}_{\mu}) \circ P^{\varphi}(\mathbf{r}, \mathbf{r}_{\mu})
\quad \text{for all elements} \; \mathbf{r} \; \text{and} \; \mathbf{r}_{\mu}
\]
- Parameters
-
[in,out] | zct | In: Quasi-density matrix |
Definition at line 364 of file isdf_serial.F90.
subroutine isdf_serial_oct_m::construct_density_matrix_packed |
( |
real(real64), dimension(:, :), intent(in), contiguous |
phi, |
|
|
real(real64), dimension(:, :), intent(in), contiguous |
phi_mu, |
|
|
real(real64), dimension(:, :), intent(out), contiguous |
P_r_mu |
|
) |
| |
|
private |
@ brief Construct the density matrix with shape (np, n_int). Denoted packed, because it expects phi
in state-major format.
Construct the density matrix:
\[
P^{\varphi}\left(\mathbf{r}, \mathbf{r}_{\mu}\right) =
\sum_{i=1}^m \varphi_i(\mathbf{r}) \varphi_i\left(\mathbf{r}_{\mu}\right).
\]
- Parameters
-
[in] | phi | A set of states defined on real-space grid |
[in] | phi_mu | KS states, only defined at interpolation points |
[out] | p_r_mu | Density matrix of shape (np, n_int) |
Definition at line 430 of file isdf_serial.F90.
subroutine isdf_serial_oct_m::approximate_pair_products |
( |
real(real64), dimension(:, :), intent(in), contiguous |
psi_mu, |
|
|
real(real64), dimension(:, :), intent(in), contiguous |
zeta, |
|
|
real(real64), dimension(:, :), intent(out), contiguous |
product_basis |
|
) |
| |
|
private |
Construct a set of approximate pair products using the ISDF interpolation vectors.
\[
\varphi_i(\mathbf{r}) \varphi_j(\mathbf{r}) \approx
\sum_{\mu =1} \varphi_i(\mathbf{r}_\mu) \varphi_j(\mathbf{r}_\mu) \zeta_\mu(\mathbf{r})
\]
which is formulated in terms of a Khatri-Rao product to form, \(\varphi_i(\mathbf{r}_\mu) \varphi_j(\mathbf{r}_\mu)\), followed by the matrix-matrix product, \( \left[ \varphi_{ij, \mu} \right] \left[\zeta_{\mathbf{r},\mu} \right]^T \) to contract over the interpolation index.
- Parameters
-
[in] | psi_mu | States sampled at interpolation points |
[in] | zeta | Interpolation vectors |
[out] | product_basis | Approx product basis |
Definition at line 597 of file isdf_serial.F90.
subroutine isdf_serial_oct_m::isdf_serial_ace_w_unpacked |
( |
type(namespace_t), intent(in) |
namespace, |
|
|
real(real64), dimension(:, :), intent(in), contiguous |
P_r_mu, |
|
|
real(real64), dimension(:, :), intent(in), contiguous |
isdf_vectors, |
|
|
real(real64), dimension(:, :), intent(in), contiguous |
psi_mu, |
|
|
type(poisson_t), intent(in) |
poisson_solver, |
|
|
type(xc_cam_t), intent(in) |
cam, |
|
|
type(states_elec_t), intent(in) |
st, |
|
|
real(real64), dimension(:, :), intent(out), contiguous |
W_ace |
|
) |
| |
|
private |
Compute the action of the exchange potential on KS states for adaptively-compressed exchange.
\[
W_j(\mathbf{r}) = - \sum_{\mu} f P_{\mathbf{r}, \mu} V_{\mathbf{r}, \mu} \phi_j(\mathbf{r}_\mu).
\]
Returns W_ace
with shape(np, nst), as this is optimal for putting into a batch.
- Parameters
-
[in] | p_r_mu | Quasi-density matrix, shape(np, n_int) |
[in] | isdf_vectors | ISDF vectors \( \{ \zeta \} \), with shape(np, n_int) |
[in] | psi_mu | \( \phi_j(\mathbf{r}_\mu) \), with shape(nocc, n_int) |
[in] | poisson_solver | Poisson solver settings |
[in] | cam | Hybrid CAM parameters |
[in] | st | Current Kohn-Sham states |
[out] | w_ace | ACE W-matrix, expected with shape(np, nocc) |
Definition at line 786 of file isdf_serial.F90.