mindspore.ops.AngleForce

class mindspore.ops.AngleForce(*args, **kwargs)[source]

Calculate the force exerted by angles made of 3 atoms on the corresponding atoms. Assume the number of angles is m and the number of atoms is n.

drab=(xbxa,ybya,zbza)
drcb=(xbxc,ybyc,zbzc)
theta=arccos(innerproduct(drab,drcb)/|drab|/|drcb|)
Fa=2k(thetatheta0)/sin(theta)[cos(theta)/|drab|2drab1/|drab|/|drcb|drcb]
Fc=2k(thetatheta0)/sin(theta)[cos(theta)/|drcb|2drcb1/|drcb|/|drab|drab]
Fb=FaFc
Parameters

angle_numbers (int32) – the number of angles m.

Inputs:
  • uint_crd_f (Tensor, uint32) - [n, 3], the unsigned int coordinate value of each atom.

  • scaler_f (Tensor, float32) - [3,], the 3-D scale factor between the real space float coordinates and the unsigned int coordinates.

  • atom_a (Tensor, int32) - [m,], the 1st atom index of each angle.

  • atom_b (Tensor, int32) - [m,], the 2nd and the central atom index of each angle.

  • atom_c (Tensor, int32) - [m,], the 3rd atom index of each angle.

  • angle_k (Tensor, float32) - [m,], the force constant for each angle.

  • angle_theta0 (Tensor, float32) - [m,], the equilibrium position value for each angle.

Outputs:
  • frc_f (Tensor, float32) - [n, 3], the force felt by each atom.

Supported Platforms:

GPU