qmctorch.wavefunction.jastrows.distance.electron_nuclei_distance module

class qmctorch.wavefunction.jastrows.distance.electron_nuclei_distance.ElectronNucleiDistance(nelec, atomic_pos, ndim=3, scale=False, scale_factor=0.6)[source]

Bases: sphinx.ext.autodoc.importer._MockObject

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]