quantax.model.PfBackflow#

class quantax.model.PfBackflow#

Pfaffian backflow model. \(\psi(n) = \mathrm{pf}(n \star (U_0 + U_1(n)) J_0 (U_0 + U_1(n))^T)\), where \(\star\) denotes the operation slicing the rows and columns of the matrix.

__init__(net: ~typing.Callable[[~jax.Array], ~jax.Array], d: int, U0: ~jax.Array | None = None, J0: ~jax.Array | None = None, dtype: str | type[~typing.Any] | ~numpy.dtype | ~jax._src.typing.SupportsDType = <class 'jax.numpy.float64'>)#

Initialize the Pfaffian backflow model.

Parameters:
  • net – The backflow network that outputs the correction to the mean-field orbitals.

  • d – Channel (hidden) dimension of the network output.

  • U0 – The mean-field orbitals. If None, it’s initialized close to non-interacting fermions.

  • J0 – The mean-field pairing matrix.

  • dtype – Data type of the parameters.

__call__(s: Array) → LogArray#

Usual forward pass without internal quantities.

property J0_full: Array#

Returns the full antisymmetric mean-field pairing matrix J0, reconstructed from its stored upper-triangular entries.

property use_ref: bool#

Whether to use reference low-rank updates. It’s not used if the rank of the backflow correction is larger than the total number of particles.

init_internal(s: Array) → tuple[LogArray, MF_Internal | None]#

Return wavefunction and internal values for given input configurations. See RefModel for details.

property required_update_modes: tuple[str, ...]#

The required update modes for accelerated ref_forward pass.

ref_forward(s: Array, s_old: Array, update_mode: dict[str, Any], internal: MF_Internal | None, return_update: Literal[False] = False) → LogArray#
ref_forward(s: Array, s_old: Array, update_mode: dict[str, Any], internal: MF_Internal | None, return_update: Literal[True]) → tuple[LogArray, MF_Internal | None]

Accelerated forward pass through local updates and internal quantities. See RefModel for details.