mindspore.ops.PMEReciprocalForceUpdate

class mindspore.ops.PMEReciprocalForceUpdate(atom_numbers, beta, fftx, ffty, fftz, box_length_0, box_length_1, box_length_2, need_update=0)[source]

Calculate the reciprocal part of long-range Coulumb force using PME(Particle Meshed Ewald) method for pressure. Assume the number of atoms is n.

The detailed calculation formula of PME(Particle Meshed Ewald) method can be found in this paper: A Smooth Particle Mesh Ewald Method. DOI: 10.1063/1.470117.

Because there is a large amount of inputs and each of them are related, there is no way to construct Examples using random methods. For details, refer the webpage SPONGE in MindSpore.

Warning

This is an experimental prototype that is subject to change and/or deletion.

Parameters
  • atom_numbers (int32) – the number of atoms, n.

  • beta (float32) – the PME beta parameter, determined by the non-bond cutoff value and simulation precision tolerance.

  • fftx (int32) – the number of points for Fourier transform in dimension X.

  • ffty (int32) – the number of points for Fourier transform in dimension Y.

  • fftz (int32) – the number of points for Fourier transform in dimension Z.

  • box_length_0 (float32) – the value of boxlength idx 0

  • box_length_1 (float32) – the value of boxlength idx 1

  • box_length_2 (float32) – the value of boxlength idx 2

  • need_update (int32) – if need_update = 1, calculate the pressure, default 0.

Inputs:
  • uint_crd (Tensor) - The unsigned int coordinate value of each atom. The data type is uint32 and the shape is \((n, 3)\).

  • charge (Tensor) - The charge carried by each atom. The data type is float32 and the shape is \((n,)\)

  • beta (Tensor) - The PME beta parameter to be updated in pressure calculation. The data type is float32 and the shape is \((1,)\)

Outputs:
  • force (Tensor) - The force felt by each atom. The data type is float32 and the shape is \((n, 3)\)

Supported Platforms:

GPU