qmctorch.wavefunction.jastrows.distance.electron_nuclei_distance module

class qmctorch.wavefunction.jastrows.distance.electron_nuclei_distance.ElectronNucleiDistance(*args: Any, **kwargs: Any)[source]

Bases: Module

Computes the electron-nuclei distances

\[r_{iA} = \sqrt{ (x_i-x_A)^2 + (y_i-y_A)^2 + (z_i-z_A)^2}\]
Parameters:
  • nelec (int) – number of electrons

  • atomic_pos (tensor) – positions of the atoms

  • ndim (int) – number of spatial dimensions

  • scale (bool, optional) – return scaled values, Defaults to False

  • scale_factor (float, optional) – value of the scale factor, Defaults to 0.6

Examples::
>>> endist = ElectronNucleiDistance(2,2)
>>> epos = torch.tensor(500,6)
>>> r = edist(pos)
>>> dr = edist(pos,derivative=1)
forward(input, derivative=0)[source]

Compute the pairwise distances between electrons and atoms or their derivative.

Parameters:
  • input (torch.tesnor) –

    position of the electron

    size : Nbatch x [Nelec x Ndim]

  • derivative (int, optional) –

    degre of the derivative.

    Defaults to 0.

Returns:

distance (or derivative) matrix

Nbatch x Nelec x Natom if derivative = 0

Nbatch x Ndim x Nelec x Natom if derivative = 1,2

Return type:

torch.tensor

get_der_distance(pos, dist)[source]

Get the derivative of the electron-nuclei distance matrix

\[\frac{d r_{iA}}{d x_i}\]
Parameters:
  • pos (torch.tensor) – positions of the electrons Nbatch x Nelec x Ndim

  • dist (torch.tensor) – distance matrix between the elecs Nbatch x Nelec x Nelec

Returns:

[description]

Return type:

[type]

get_second_der_distance(pos, dist)[source]

Get the derivative of the electron-nuclei distance matrix

\[\frac{d^2 r_{iA}}{d x_i^2}\]
Parameters:
  • pos (torch.tensor) – positions of the electrons Nbatch x Nelec x Ndim

  • dist (torch.tensor) – distance matrix between the elecs Nbatch x Nelec x Nelec

Returns:

[description]

Return type:

[type]