| @@ -23,11 +23,8 @@ from ...common import dtype as mstype | |||
| class BondForce(PrimitiveWithInfer): | |||
| """ | |||
| BondForce: | |||
| Calculate the force exerted by the simple harmonic bond on the | |||
| corresponding atoms. Assume the number of harmonic bonds is M and | |||
| the number of atoms is N. | |||
| Calculate the force exerted by the simple harmonic bond on the corresponding atoms. | |||
| Assume the number of harmonic bonds is M and the number of atoms is N. | |||
| .. math:: | |||
| @@ -90,8 +87,6 @@ class BondForce(PrimitiveWithInfer): | |||
| class BondEnergy(PrimitiveWithInfer): | |||
| """ | |||
| BondEnergy: | |||
| Calculate the harmonic potential energy between each bonded atom pair. | |||
| Assume our system has N atoms and M harmonic bonds. | |||
| @@ -101,15 +96,17 @@ class BondEnergy(PrimitiveWithInfer): | |||
| E = k*(|dr| - r_0)^2 | |||
| Args: | |||
| Same as operator BondForce(). | |||
| atom_numbers(int32): the number of atoms N. | |||
| bond_numbers(int32): the number of harmonic bonds M. | |||
| Inputs: | |||
| Same as operator BondForce(). | |||
| .. math:: | |||
| dr = (x_1-x_2, y_1-y_2, z_1-z_2) | |||
| E = k*(|dr| - r_0)^2 | |||
| - **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 (x, y, z), | |||
| between the real space float coordinates and the unsigned int coordinates. | |||
| - **atom_a** (Tensor, int32) - [M,], the first atom index of each bond. | |||
| - **atom_b** (Tensor, int32) - [M,], the second atom index of each bond. | |||
| - **bond_k** (Tensor, float32) - [M,], the force constant of each bond. | |||
| - **bond_r0** (Tensor, float32) - [M,], the equlibrium length of each bond. | |||
| Outputs: | |||
| - **bond_ene** (Tensor, float32) - [M,], the harmonic potential energy for each bond. | |||
| @@ -155,18 +152,23 @@ class BondEnergy(PrimitiveWithInfer): | |||
| class BondAtomEnergy(PrimitiveWithInfer): | |||
| """ | |||
| BondAtomEnergy: | |||
| Add the potential energy caused by simple harmonic bonds to the total | |||
| potential energy of each atom. | |||
| The calculation formula is the same as operator BondEnergy(). | |||
| Args: | |||
| Same as operator BondForce(). | |||
| atom_numbers(int32): the number of atoms N. | |||
| bond_numbers(int32): the number of harmonic bonds M. | |||
| Inputs: | |||
| Same as operator BondForce(). | |||
| - **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 (x, y, z), | |||
| between the real space float coordinates and the unsigned int coordinates. | |||
| - **atom_a** (Tensor, int32) - [M,], the first atom index of each bond. | |||
| - **atom_b** (Tensor, int32) - [M,], the second atom index of each bond. | |||
| - **bond_k** (Tensor, float32) - [M,], the force constant of each bond. | |||
| - **bond_r0** (Tensor, float32) - [M,], the equlibrium length of each bond. | |||
| Outputs: | |||
| - **atom_ene** (Tensor, float32) - [N,], the accumulated potential energy for each atom. | |||
| @@ -211,17 +213,22 @@ class BondAtomEnergy(PrimitiveWithInfer): | |||
| class BondForceWithAtomEnergy(PrimitiveWithInfer): | |||
| """ | |||
| BondForceWithAtomEnergy: | |||
| Calculate bond force and harmonic potential energy together. | |||
| The calculation formula is the same as operator BondForce() and BondEnergy(). | |||
| Args: | |||
| Same as operator BondForce(). | |||
| atom_numbers(int32): the number of atoms N. | |||
| bond_numbers(int32): the number of harmonic bonds M. | |||
| Inputs: | |||
| Same as operator BondForce(). | |||
| - **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 (x, y, z), | |||
| between the real space float coordinates and the unsigned int coordinates. | |||
| - **atom_a** (Tensor, int32) - [M,], the first atom index of each bond. | |||
| - **atom_b** (Tensor, int32) - [M,], the second atom index of each bond. | |||
| - **bond_k** (Tensor, float32) - [M,], the force constant of each bond. | |||
| - **bond_r0** (Tensor, float32) - [M,], the equlibrium length of each bond. | |||
| Outputs: | |||
| - **frc_f** (Tensor, float32) - [N, 3], same as operator BondForce(). | |||
| @@ -270,8 +277,6 @@ class BondForceWithAtomEnergy(PrimitiveWithInfer): | |||
| class BondForceWithAtomVirial(PrimitiveWithInfer): | |||
| """ | |||
| BondForceWithAtomVirial: | |||
| Calculate bond force and the virial coefficient caused by simple harmonic | |||
| bond for each atom together. | |||
| @@ -284,10 +289,17 @@ class BondForceWithAtomVirial(PrimitiveWithInfer): | |||
| virial = |dr|*(|dr| - r_0)*k | |||
| Args: | |||
| Same as operator BondForce(). | |||
| atom_numbers(int32): the number of atoms N. | |||
| bond_numbers(int32): the number of harmonic bonds M. | |||
| Inputs: | |||
| Same as operator BondForce() | |||
| - **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 (x, y, z), | |||
| between the real space float coordinates and the unsigned int coordinates. | |||
| - **atom_a** (Tensor, int32) - [M,], the first atom index of each bond. | |||
| - **atom_b** (Tensor, int32) - [M,], the second atom index of each bond. | |||
| - **bond_k** (Tensor, float32) - [M,], the force constant of each bond. | |||
| - **bond_r0** (Tensor, float32) - [M,], the equlibrium length of each bond. | |||
| Outputs: | |||
| - **frc_f** (Tensor, float32) - [N, 3], same as operator BondForce(). | |||
| @@ -336,8 +348,6 @@ class BondForceWithAtomVirial(PrimitiveWithInfer): | |||
| class DihedralForce(PrimitiveWithInfer): | |||
| """ | |||
| DihedralForce: | |||
| Calculate the force exerted by the dihedral term which made of 4-atoms | |||
| on the corresponding atoms. Assume the number of dihedral terms is M and | |||
| the number of atoms is N. | |||
| @@ -438,8 +448,6 @@ class DihedralForce(PrimitiveWithInfer): | |||
| class DihedralEnergy(PrimitiveWithInfer): | |||
| """ | |||
| DihedralEnergy: | |||
| Calculate the potential energy caused by dihedral terms for each 4-atom pair. | |||
| Assume our system has N atoms and M dihedral terms. | |||
| @@ -448,10 +456,24 @@ class DihedralEnergy(PrimitiveWithInfer): | |||
| E = k(1 + cos(n*phi - phi_0)) | |||
| Args: | |||
| Same as operator DihedralForce(). | |||
| dihedral_numbers(int32): the number of dihedral terms M. | |||
| Inputs: | |||
| Same as operator DihedralForce(). | |||
| - **dihedral_numbers** (int32) - the number of dihedral terms M. | |||
| - **uint_crd_f** (Tensor, uint32) - [N, 3], the unsigned int coordinates | |||
| 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 dihedral. | |||
| - **atom_b** (Tensor, int32) - [M,], the 2nd atom index of each dihedral. | |||
| - **atom_c** (Tensor, int32) - [M,], the 3rd atom index of each dihedral. | |||
| - **atom_d** (Tensor, int32) - [M,], the 4th atom index of each dihedral. | |||
| 4 atoms are connected in the form a-b-c-d. | |||
| - **ipn** (Tensor, int32) - [M,], the period of dihedral angle of each dihedral. | |||
| - **pk** (Tensor, float32) - [M,], the force constant of each dihedral. | |||
| - **gamc** (Tensor, float32) - [M,], k*cos(phi_0) of each dihedral. | |||
| - **gams** (Tensor, float32) - [M,], k*sin(phi_0) of each dihedral. | |||
| - **pn** (Tensor, float32) - [M,], the floating point form of ipn. | |||
| Outputs: | |||
| - **ene** (Tensor, float32) - [M,], the potential energy for each | |||
| @@ -506,18 +528,30 @@ class DihedralEnergy(PrimitiveWithInfer): | |||
| class DihedralAtomEnergy(PrimitiveWithInfer): | |||
| """ | |||
| DihedralAtomEnergy: | |||
| Add the potential energy caused by dihedral terms to the total potential | |||
| energy of each atom. | |||
| The calculation formula is the same as operator DihedralEnergy(). | |||
| Args: | |||
| Same as operator DihedralEnergy(). | |||
| dihedral_numbers(int32): the number of dihedral terms M. | |||
| Inputs: | |||
| Same as operator DihedralEnergy(). | |||
| - **dihedral_numbers** (int32) - the number of dihedral terms M. | |||
| - **uint_crd_f** (Tensor, uint32) - [N, 3], the unsigned int coordinates | |||
| 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 dihedral. | |||
| - **atom_b** (Tensor, int32) - [M,], the 2nd atom index of each dihedral. | |||
| - **atom_c** (Tensor, int32) - [M,], the 3rd atom index of each dihedral. | |||
| - **atom_d** (Tensor, int32) - [M,], the 4th atom index of each dihedral. | |||
| 4 atoms are connected in the form a-b-c-d. | |||
| - **ipn** (Tensor, int32) - [M,], the period of dihedral angle of each dihedral. | |||
| - **pk** (Tensor, float32) - [M,], the force constant of each dihedral. | |||
| - **gamc** (Tensor, float32) - [M,], k*cos(phi_0) of each dihedral. | |||
| - **gams** (Tensor, float32) - [M,], k*sin(phi_0) of each dihedral. | |||
| - **pn** (Tensor, float32) - [M,], the floating point form of ipn. | |||
| Outputs: | |||
| - **ene** (Tensor, float32) - [N,], the accumulated potential | |||
| @@ -573,17 +607,29 @@ class DihedralAtomEnergy(PrimitiveWithInfer): | |||
| class DihedralForceWithAtomEnergy(PrimitiveWithInfer): | |||
| """ | |||
| DihedralForceWithAtomEnergy: | |||
| Calculate dihedral force and potential energy together. | |||
| The calculation formula is the same as operator DihedralForce() and DihedralEnergy(). | |||
| Args: | |||
| Same as operator DihedralForce(). | |||
| dihedral_numbers(int32): the number of dihedral terms M. | |||
| Inputs: | |||
| Same as operator DihedralForce(). | |||
| - **dihedral_numbers** (int32) - the number of dihedral terms M. | |||
| - **uint_crd_f** (Tensor, uint32) - [N, 3], the unsigned int coordinates | |||
| 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 dihedral. | |||
| - **atom_b** (Tensor, int32) - [M,], the 2nd atom index of each dihedral. | |||
| - **atom_c** (Tensor, int32) - [M,], the 3rd atom index of each dihedral. | |||
| - **atom_d** (Tensor, int32) - [M,], the 4th atom index of each dihedral. | |||
| 4 atoms are connected in the form a-b-c-d. | |||
| - **ipn** (Tensor, int32) - [M,], the period of dihedral angle of each dihedral. | |||
| - **pk** (Tensor, float32) - [M,], the force constant of each dihedral. | |||
| - **gamc** (Tensor, float32) - [M,], k*cos(phi_0) of each dihedral. | |||
| - **gams** (Tensor, float32) - [M,], k*sin(phi_0) of each dihedral. | |||
| - **pn** (Tensor, float32) - [M,], the floating point form of ipn. | |||
| Outputs: | |||
| - **frc_f** (Tensor, float32) - [N, 3], same as operator DihedralForce(). | |||
| @@ -639,8 +685,6 @@ class DihedralForceWithAtomEnergy(PrimitiveWithInfer): | |||
| class AngleForce(PrimitiveWithInfer): | |||
| """ | |||
| AngleForce: | |||
| 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. | |||
| @@ -712,8 +756,6 @@ class AngleForce(PrimitiveWithInfer): | |||
| class AngleEnergy(PrimitiveWithInfer): | |||
| """ | |||
| AngleEnergy: | |||
| Calculate the energy caused by 3-atoms angle term. | |||
| .. math:: | |||
| @@ -724,10 +766,17 @@ class AngleEnergy(PrimitiveWithInfer): | |||
| E = k*(theta - theta_0)^2 | |||
| Args: | |||
| Same as operator AngleForce(). | |||
| angle_numbers(int32): the number of angles M. | |||
| Inputs: | |||
| Same as operator AngleForce(). | |||
| - **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: | |||
| - **ene** (Tensor, float32) - [M,], the potential energy for each angle term. | |||
| @@ -772,18 +821,23 @@ class AngleEnergy(PrimitiveWithInfer): | |||
| class AngleAtomEnergy(PrimitiveWithInfer): | |||
| """ | |||
| AngleAtomEnergy: | |||
| Add the potential energy caused by angle terms to the total potential | |||
| energy of each atom. | |||
| The calculation formula is the same as operator AngleEnergy(). | |||
| Args: | |||
| Same as operator AngleForce(). | |||
| angle_numbers(int32): the number of angles M. | |||
| Inputs: | |||
| Same as operator AngleForce(). | |||
| - **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: | |||
| - **ene** (Tensor, float32) - [N,], the accumulated potential energy for each atom. | |||
| @@ -829,17 +883,22 @@ class AngleAtomEnergy(PrimitiveWithInfer): | |||
| class AngleForceWithAtomEnergy(PrimitiveWithInfer): | |||
| """ | |||
| AngleForceWithAtomEnergy: | |||
| Calculate angle force and potential energy together. | |||
| The calculation formula is the same as operator AngleForce() and AngleEnergy(). | |||
| Args: | |||
| Same as operator AngleForce(). | |||
| angle_numbers(int32): the number of angles M. | |||
| Inputs: | |||
| Same as operator AngleForce(). | |||
| - **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], same as operator AngleForce(). | |||
| @@ -886,11 +945,10 @@ class AngleForceWithAtomEnergy(PrimitiveWithInfer): | |||
| class Dihedral14LJForce(PrimitiveWithInfer): | |||
| """ | |||
| Dihedral14LJForce: | |||
| Calculate the Lennard-Jones part of 1,4 dihedral force correction | |||
| for each necessary dihedral terms on the corresponding atoms. | |||
| Calculate the Lennard-Jones part of 1,4 dihedral force correction for | |||
| each necessary dihedral terms on the corresponding atoms. Assume the | |||
| number of necessary dihedral 1,4 terms is M, the number of atoms is N, | |||
| Assume the number of necessary dihedral 1,4 terms is M, the number of atoms is N, | |||
| and the number of Lennard-Jones types for all atoms is P, which means | |||
| there will be Q = P*(P+1)/2 types of possible Lennard-Jones interactions | |||
| for all kinds of atom pairs. | |||
| @@ -901,7 +959,7 @@ class Dihedral14LJForce(PrimitiveWithInfer): | |||
| F = k*(-12*A/|dr|^{14} + 6*B/|dr|^{8})*dr | |||
| Args: | |||
| dihedral_14_numbers (int32): the number of necessary dihedral 1,4 terms M. | |||
| nb14_numbers (int32): the number of necessary dihedral 1,4 terms M. | |||
| atom_numbers (int32): the number of atoms N. | |||
| Inputs: | |||
| @@ -958,8 +1016,6 @@ class Dihedral14LJForce(PrimitiveWithInfer): | |||
| class Dihedral14LJEnergy(PrimitiveWithInfer): | |||
| """ | |||
| Dihedral14LJEnergy: | |||
| Calculate the Lennard-Jones part of 1,4 dihedral energy correction for | |||
| each necessary dihedral terms on the corresponding atoms. | |||
| @@ -969,10 +1025,20 @@ class Dihedral14LJEnergy(PrimitiveWithInfer): | |||
| E = k*(A/|dr|^{12} - B/|dr|^{6}) | |||
| Args: | |||
| Same as operator Dihedral14LJForce(). | |||
| nb14_numbers (int32): the number of necessary dihedral 1,4 terms M. | |||
| atom_numbers (int32): the number of atoms N. | |||
| Inputs: | |||
| Same as operator Dihedral14LJForce(). | |||
| - **uint_crd_f** (Tensor, uint32) - [N, 3], the unsigned int coordinate value of each atom. | |||
| - **LJ_type** (Tensor, int32) - [N,], the Lennard-Jones type of each atom. | |||
| - **charge** (Tensor, float32) - [N,], the charge of each atom. | |||
| - **boxlength_f** (Tensor, float32) - [3,], the length of molecular simulation box in 3 dimensions. | |||
| - **a_14** (Tensor, int32) - [M,], the first atom index of each dihedral 1,4 term. | |||
| - **b_14** (Tensor, int32) - [M,], the second atom index of each dihedral 1,4 term. | |||
| - **lj_scale_factor** (Tensor, float32) - [M,], the scale factor for the | |||
| Lennard-Jones part of force correction of each dihedral 1,4 term. | |||
| - **LJ_type_A** (Tensor, float32) - [Q,], the A parameter in Lennard-Jones scheme of each atom pair type. | |||
| - **LJ_type_B** (Tensor, float32) - [Q,], the B parameter in Lennard-Jones shceme of each atom pair type. | |||
| Outputs: | |||
| - **ene** (Tensor, float32) - [M,], the Lennard-Jones potential | |||
| @@ -1017,8 +1083,6 @@ class Dihedral14LJEnergy(PrimitiveWithInfer): | |||
| class Dihedral14LJForceWithDirectCF(PrimitiveWithInfer): | |||
| """ | |||
| Dihedral14LJForceWithDirectCF: | |||
| Calculate the Lennard-Jones part and the Coulomb part of force correction | |||
| for each necessary dihedral 1,4 terms. | |||
| @@ -1031,13 +1095,22 @@ class Dihedral14LJForceWithDirectCF(PrimitiveWithInfer): | |||
| F = -k*q_a*q_b/|r|^3*dr | |||
| Args: | |||
| Same as operator Dihedral14LJForce(). | |||
| nb14_numbers (int32): the number of necessary dihedral 1,4 terms M. | |||
| atom_numbers (int32): the number of atoms N. | |||
| Inputs: | |||
| - **uint_crd_f** (Tensor, uint32) - [N, 3], the unsigned int coordinate value of each atom. | |||
| - **LJ_type** (Tensor, int32) - [N,], the Lennard-Jones type of each atom. | |||
| - **charge** (Tensor, float32) - [N,], the charge of each atom. | |||
| - **boxlength_f** (Tensor, float32) - [3,], the length of molecular simulation box in 3 dimensions. | |||
| - **a_14** (Tensor, int32) - [M,], the first atom index of each dihedral 1,4 term. | |||
| - **b_14** (Tensor, int32) - [M,], the second atom index of each dihedral 1,4 term. | |||
| - **lj_scale_factor** (Tensor, float32) - [M,], the scale factor for the | |||
| Lennard-Jones part of force correction of each dihedral 1,4 term. | |||
| - **cf_scale_factor** (Tensor, float) - [M,], the scale factor for the | |||
| Coulomb part of force correction for each dihedral 1,4 terms. | |||
| The rest of the inputs is the same as operator Dihedral14LJForce(). | |||
| - **LJ_type_A** (Tensor, float32) - [Q,], the A parameter in Lennard-Jones scheme of each atom pair type. | |||
| - **LJ_type_B** (Tensor, float32) - [Q,], the B parameter in Lennard-Jones shceme of each atom pair type. | |||
| Outputs: | |||
| - **frc_f** (Tensor, float) - [N, 3], the force felt by each atom. | |||
| @@ -1083,8 +1156,6 @@ class Dihedral14LJForceWithDirectCF(PrimitiveWithInfer): | |||
| class Dihedral14LJCFForceWithAtomEnergy(PrimitiveWithInfer): | |||
| """ | |||
| Dihedral14LJCFForceWithAtomEnergy: | |||
| Calculate the Lennard-Jones and Coulumb energy correction and force correction | |||
| for each necessary dihedral 1,4 terms together and add them to the total force | |||
| and potential energy for each atom. | |||
| @@ -1094,10 +1165,22 @@ class Dihedral14LJCFForceWithAtomEnergy(PrimitiveWithInfer): | |||
| as operator Dihedral14LJEnergy() and Dihedral14CFEnergy(). | |||
| Args: | |||
| Same as operator Dihedral14LJForce(). | |||
| nb14_numbers (int32): the number of necessary dihedral 1,4 terms M. | |||
| atom_numbers (int32): the number of atoms N. | |||
| Inputs: | |||
| Same as operator Dihedral14LJForceWithdirectCF(). | |||
| - **uint_crd_f** (Tensor, uint32) - [N, 3], the unsigned int coordinate value of each atom. | |||
| - **LJ_type** (Tensor, int32) - [N,], the Lennard-Jones type of each atom. | |||
| - **charge** (Tensor, float32) - [N,], the charge of each atom. | |||
| - **boxlength_f** (Tensor, float32) - [3,], the length of molecular simulation box in 3 dimensions. | |||
| - **a_14** (Tensor, int32) - [M,], the first atom index of each dihedral 1,4 term. | |||
| - **b_14** (Tensor, int32) - [M,], the second atom index of each dihedral 1,4 term. | |||
| - **lj_scale_factor** (Tensor, float32) - [M,], the scale factor for the | |||
| Lennard-Jones part of force correction of each dihedral 1,4 term. | |||
| - **cf_scale_factor** (Tensor, float) - [M,], the scale factor for the | |||
| Coulomb part of force correction for each dihedral 1,4 terms. | |||
| - **LJ_type_A** (Tensor, float32) - [Q,], the A parameter in Lennard-Jones scheme of each atom pair type. | |||
| - **LJ_type_B** (Tensor, float32) - [Q,], the B parameter in Lennard-Jones shceme of each atom pair type. | |||
| Outputs: | |||
| - **frc_f** (Tensor, float32) - [N, 3], the force felt by each atom. | |||
| @@ -1144,18 +1227,26 @@ class Dihedral14LJCFForceWithAtomEnergy(PrimitiveWithInfer): | |||
| class Dihedral14LJAtomEnergy(PrimitiveWithInfer): | |||
| """ | |||
| Dihedral14LJAtomEnergy: | |||
| Add the potenrial energy caused by Lennard-Jones energy correction for each | |||
| necessary dihedral 1,4 terms to the total potential energy of each atom. | |||
| The calculation formula is the same as operator Dihedral14LJEnergy(). | |||
| Args: | |||
| Same as operator Dihedral14LJForce(). | |||
| nb14_numbers (int32): the number of necessary dihedral 1,4 terms M. | |||
| atom_numbers (int32): the number of atoms N. | |||
| Inputs: | |||
| Same as operator Dihedral14LJForce(). | |||
| - **uint_crd_f** (Tensor, uint32) - [N, 3], the unsigned int coordinate value of each atom. | |||
| - **LJ_type** (Tensor, int32) - [N,], the Lennard-Jones type of each atom. | |||
| - **charge** (Tensor, float32) - [N,], the charge of each atom. | |||
| - **boxlength_f** (Tensor, float32) - [3,], the length of molecular simulation box in 3 dimensions. | |||
| - **a_14** (Tensor, int32) - [M,], the first atom index of each dihedral 1,4 term. | |||
| - **b_14** (Tensor, int32) - [M,], the second atom index of each dihedral 1,4 term. | |||
| - **lj_scale_factor** (Tensor, float32) - [M,], the scale factor for the | |||
| Lennard-Jones part of force correction of each dihedral 1,4 term. | |||
| - **LJ_type_A** (Tensor, float32) - [Q,], the A parameter in Lennard-Jones scheme of each atom pair type. | |||
| - **LJ_type_B** (Tensor, float32) - [Q,], the B parameter in Lennard-Jones shceme of each atom pair type. | |||
| Outputs: | |||
| - **ene** (Tensor, float32) - [N,], the accumulated potential energy of each atom. | |||
| @@ -1200,8 +1291,6 @@ class Dihedral14LJAtomEnergy(PrimitiveWithInfer): | |||
| class Dihedral14CFEnergy(PrimitiveWithInfer): | |||
| """ | |||
| Dihedral14CFEnergy: | |||
| Calculate the Coulumb part of 1,4 dihedral energy correction for | |||
| each necessary dihedral terms on the corresponding atoms. | |||
| @@ -1211,10 +1300,18 @@ class Dihedral14CFEnergy(PrimitiveWithInfer): | |||
| E = k*q_a*q_b/|dr| | |||
| Args: | |||
| Same as operator Dihedral14LJForce(). | |||
| nb14_numbers (int32): the number of necessary dihedral 1,4 terms M. | |||
| atom_numbers (int32): the number of atoms N. | |||
| Inputs: | |||
| The meaning and type of each input is the same as that of operator Dihedral14LJForceWithDirectCF(). | |||
| - **uint_crd_f** (Tensor, uint32) - [N, 3], the unsigned int coordinate value of each atom. | |||
| - **LJ_type** (Tensor, int32) - [N,], the Lennard-Jones type of each atom. | |||
| - **charge** (Tensor, float32) - [N,], the charge of each atom. | |||
| - **boxlength_f** (Tensor, float32) - [3,], the length of molecular simulation box in 3 dimensions. | |||
| - **a_14** (Tensor, int32) - [M,], the first atom index of each dihedral 1,4 term. | |||
| - **b_14** (Tensor, int32) - [M,], the second atom index of each dihedral 1,4 term. | |||
| - **cf_scale_factor** (Tensor, float) - [M,], the scale factor for the | |||
| Coulomb part of force correction for each dihedral 1,4 terms. | |||
| Outputs: | |||
| - **ene** (Tensor, float32) - [M,], the accumulated potential energy of each atom. | |||
| @@ -1256,18 +1353,24 @@ class Dihedral14CFEnergy(PrimitiveWithInfer): | |||
| class Dihedral14CFAtomEnergy(PrimitiveWithInfer): | |||
| """ | |||
| Dihedral14CFAtomEnergy: | |||
| Add the potential energy caused by Coulumb energy correction for each | |||
| necessary dihedral 1,4 terms to the total potential energy of each atom. | |||
| The calculation formula is the same as operator Dihedral14CFEnergy(). | |||
| Args: | |||
| Same as operator Dihedral14LJForce(). | |||
| nb14_numbers (int32): the number of necessary dihedral 1,4 terms M. | |||
| atom_numbers (int32): the number of atoms N. | |||
| Inputs: | |||
| The meaning and type of each input is the same as that of operator Dihedral14LJForceWithDirectCF(). | |||
| - **uint_crd_f** (Tensor, uint32) - [N, 3], the unsigned int coordinate value of each atom. | |||
| - **LJ_type** (Tensor, int32) - [N,], the Lennard-Jones type of each atom. | |||
| - **charge** (Tensor, float32) - [N,], the charge of each atom. | |||
| - **boxlength_f** (Tensor, float32) - [3,], the length of molecular simulation box in 3 dimensions. | |||
| - **a_14** (Tensor, int32) - [M,], the first atom index of each dihedral 1,4 term. | |||
| - **b_14** (Tensor, int32) - [M,], the second atom index of each dihedral 1,4 term. | |||
| - **cf_scale_factor** (Tensor, float) - [M,], the scale factor for the | |||
| Coulomb part of force correction for each dihedral 1,4 terms. | |||
| Outputs: | |||
| - **ene** (Tensor, float32) - [N,], the accumulated potential energy of each atom. | |||
| @@ -1310,8 +1413,6 @@ class Dihedral14CFAtomEnergy(PrimitiveWithInfer): | |||
| class MDIterationLeapFrog(PrimitiveWithInfer): | |||
| """ | |||
| MDIterationLeapFrog: | |||
| One step of classical leap frog algorithm to solve the finite difference | |||
| Hamiltonian equations of motion for certain system, using Langevin dynamics | |||
| with Liu's thermostat scheme. Assume the number of atoms is N and the target | |||
| @@ -1387,8 +1488,6 @@ class MDIterationLeapFrog(PrimitiveWithInfer): | |||
| class PMEReciprocalForce(PrimitiveWithInfer): | |||
| """ | |||
| PMEReciprocalForce: | |||
| Calculate the reciprocal part of long-range Coulumb force using | |||
| PME(Particle Meshed Ewald) method. Assume the number of atoms is N. | |||
| @@ -1413,7 +1512,7 @@ class PMEReciprocalForce(PrimitiveWithInfer): | |||
| - **force** (Tensor, float32) - [N, 3], the force felt by each atom. | |||
| Supported Platforms: | |||
| ```GPU``` | |||
| ``GPU`` | |||
| """ | |||
| @prim_attr_register | |||
| @@ -1448,8 +1547,6 @@ class PMEReciprocalForce(PrimitiveWithInfer): | |||
| class PMEExcludedForce(PrimitiveWithInfer): | |||
| """ | |||
| PMEExcludedForce: | |||
| Calculate the excluded part of long-range Coulumb force using | |||
| PME(Particle Meshed Ewald) method. Assume the number of atoms is | |||
| N, and the length of excluded list is E. | |||
| @@ -1460,22 +1557,22 @@ class PMEExcludedForce(PrimitiveWithInfer): | |||
| non-bond cutoff value and simulation precision tolerance. | |||
| Inputs: | |||
| - **uint_crd** (Tensor, uint32) - [N, 3], the unsigned int coordinates value of each atom. | |||
| - **scaler** (Tensor, float32) - [3,], the scale factor between real space | |||
| coordinates and its unsigned int value. | |||
| - **charge** (Tensor, float32) - [N,], the charge carried by each atom. | |||
| - **excluded_list_start** (Tensor, int32) - [N,], the start excluded index | |||
| in excluded list for each atom. | |||
| - **excluded_numbers** (Tensor, int32) - [N,], the number of atom excluded | |||
| in excluded list for each atom. | |||
| - **excluded_list** (Tensor, int32) - [E,], the contiguous join of excluded | |||
| list of each atom. | |||
| The rest of the input is the same as that of operator PMEReciprocalForce(). | |||
| - **excluded_atom_numbers** (Tensor, int32) - [N,], the number of atom excluded | |||
| in excluded list for each atom. | |||
| Outputs: | |||
| - **force** (Tensor, float32) - [N, 3], the force felt by each atom. | |||
| Supported Platforms: | |||
| ```GPU``` | |||
| ``GPU`` | |||
| """ | |||
| @prim_attr_register | |||
| @@ -1510,8 +1607,6 @@ class PMEExcludedForce(PrimitiveWithInfer): | |||
| class PMEEnergy(PrimitiveWithInfer): | |||
| """ | |||
| PMEEnergy: | |||
| Calculate the Coulumb energy of the system using PME method. | |||
| .. math:: | |||
| @@ -1519,11 +1614,27 @@ class PMEEnergy(PrimitiveWithInfer): | |||
| E = sum_{ij} q_iq_j/r_{ij} | |||
| Args: | |||
| same as operator PMEReciprocalForce(). | |||
| 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. | |||
| Inputs: | |||
| Same as operator PMEReciprocalForce(), PMEExcludedForce() | |||
| and PMEDirectAtomEnergy(). | |||
| - **boxlength** (Tensor, float32) - [3,], the length of simulation box in 3 dimensions. | |||
| - **uint_crd** (Tensor, uint32) - [N, 3], the unsigned int coordinates value of each atom. | |||
| - **charge** (Tensor, float32) - [N,], the charge carried by each atom. | |||
| - **nl_numbers** - (Tensor, int32) - [N,], the each atom. | |||
| - **nl_serial** - (Tensor, int32) - [N, 800], the neighbor list of each atom, the max number is 800. | |||
| - **scaler** (Tensor, float32) - [3,], the scale factor between real space | |||
| coordinates and its unsigned int value. | |||
| - **excluded_list_start** (Tensor, int32) - [N,], the start excluded index | |||
| in excluded list for each atom. | |||
| - **excluded_list** (Tensor, int32) - [E,], the contiguous join of excluded | |||
| list of each atom. | |||
| - **excluded_atom_numbers** (Tensor, int32) - [N,], the number of atom excluded | |||
| in excluded list for each atom. | |||
| Outputs: | |||
| - **reciprocal_ene** (float32) - the reciprocal term of PME energy. | |||
| @@ -1532,7 +1643,7 @@ class PMEEnergy(PrimitiveWithInfer): | |||
| - **correction_ene** (float32) - the correction term of PME energy. | |||
| Supported Platforms: | |||
| ```GPU`` | |||
| ``GPU`` | |||
| """ | |||
| @prim_attr_register | |||
| @@ -1580,8 +1691,6 @@ class PMEEnergy(PrimitiveWithInfer): | |||
| class LJEnergy(PrimitiveWithInfer): | |||
| """ | |||
| LJEnergy: | |||
| Calculate the Van der Waals interaction energy described by Lennard-Jones | |||
| potential for each atom. Assume the number of atoms is N, and the number | |||
| of Lennard-Jones types for all atoms is P, which means there will be | |||
| @@ -1614,7 +1723,7 @@ class LJEnergy(PrimitiveWithInfer): | |||
| - **d_LJ_energy_sum** (float32), the sum of Lennard-Jones potential energy of each atom. | |||
| Supported Platforms: | |||
| ```GPU``` | |||
| ``GPU`` | |||
| """ | |||
| @prim_attr_register | |||
| @@ -1646,8 +1755,6 @@ class LJEnergy(PrimitiveWithInfer): | |||
| class LJForce(PrimitiveWithInfer): | |||
| """ | |||
| LJForce: | |||
| Calculate the Van der Waals interaction force described by Lennard-Jones | |||
| potential energy for each atom. | |||
| @@ -1656,17 +1763,26 @@ class LJForce(PrimitiveWithInfer): | |||
| dr = (x_a-x_b, y_a-y_b, z_a-z_b) | |||
| F = (-12*A/|dr|^{14} + 6*B/|dr|^{8}) * dr | |||
| Args: | |||
| Same as operator LJEnergy(). | |||
| Agrs: | |||
| atom_numbers(int32): the number of atoms, N. | |||
| cutoff_square(float32): the square value of cutoff. | |||
| Inputs: | |||
| Same as operator LJEnergy(). | |||
| - **uint_crd** (Tensor, uint32) - [N, 3], the unsigned int coordinate value of each atom. | |||
| - **LJtype** (Tensor, int32) - [N,], the Lennard-Jones type of each atom. | |||
| - **charge** (Tensor, float32) - [N,], the charge carried by each atom. | |||
| - **scaler** (Tensor, float32) - [3,], the scale factor between real | |||
| space coordinate and its unsigned int value. | |||
| - **nl_numbers** - (Tensor, int32) - [N,], the each atom. | |||
| - **nl_serial** - (Tensor, int32) - [N, 800], the neighbor list of each atom, the max number is 800. | |||
| - **d_LJ_A** (Tensor, float32) - [Q,], the Lennard-Jones A coefficient of each kind of atom pair. | |||
| - **d_LJ_B** (Tensor, float32) - [Q,], the Lennard-Jones B coefficient of each kind of atom pair. | |||
| outputs: | |||
| - **frc** (Tensor, float32) - [N, 3], the force felt by each atom. | |||
| Supported Platforms: | |||
| ```GPU``` | |||
| ``GPU`` | |||
| """ | |||
| @prim_attr_register | |||
| @@ -1698,25 +1814,32 @@ class LJForce(PrimitiveWithInfer): | |||
| class LJForceWithPMEDirectForce(PrimitiveWithInfer): | |||
| """ | |||
| LJForceWithPMEDirectForce: | |||
| Calculate the Lennard-Jones force and PME direct force together. | |||
| The calculation formula of Lennard-Jones part is the same as operator | |||
| LJForce(), and the PME direct part is within PME method. | |||
| Args: | |||
| Agrs: | |||
| atom_numbers(int32): the number of atoms, N. | |||
| cutoff_square(float32): the square value of cutoff. | |||
| pme_beta(float32): PME beta parameter, same as operator PMEReciprocalForce(). | |||
| The rest is same as operator LJEnergy(). | |||
| Inputs: | |||
| same as operator LJForce(). | |||
| - **uint_crd** (Tensor, uint32) - [N, 3], the unsigned int coordinate value of each atom. | |||
| - **LJtype** (Tensor, int32) - [N,], the Lennard-Jones type of each atom. | |||
| - **charge** (Tensor, float32) - [N,], the charge carried by each atom. | |||
| - **scaler** (Tensor, float32) - [3,], the scale factor between real | |||
| space coordinate and its unsigned int value. | |||
| - **nl_numbers** - (Tensor, int32) - [N,], the each atom. | |||
| - **nl_serial** - (Tensor, int32) - [N, 800], the neighbor list of each atom, the max number is 800. | |||
| - **d_LJ_A** (Tensor, float32) - [Q,], the Lennard-Jones A coefficient of each kind of atom pair. | |||
| - **d_LJ_B** (Tensor, float32) - [Q,], the Lennard-Jones B coefficient of each kind of atom pair. | |||
| Outputs: | |||
| - **frc** (Tensor, float32), [N, 3], the force felt by each atom. | |||
| Supported Platforms: | |||
| ```GPU``` | |||
| ``GPU`` | |||
| """ | |||
| @prim_attr_register | |||
| @@ -1751,7 +1874,7 @@ class LJForceWithPMEDirectForce(PrimitiveWithInfer): | |||
| class GetCenterOfGeometry(PrimitiveWithInfer): | |||
| """ | |||
| GetCenterOfGeometry: | |||
| Get Center Of Geometry. | |||
| Supported Platforms: | |||
| ``GPU`` | |||
| @@ -1784,7 +1907,7 @@ class GetCenterOfGeometry(PrimitiveWithInfer): | |||
| class MDTemperature(PrimitiveWithInfer): | |||
| """ | |||
| MDTemperature: | |||
| Calculate the MD Temperature. | |||
| Calculate the temperature. | |||
| @@ -1828,8 +1951,6 @@ class MDTemperature(PrimitiveWithInfer): | |||
| class NeighborListUpdate(PrimitiveWithInfer): | |||
| """ | |||
| NeighborListUpdate | |||
| Update (or construct if first time) the Verlet neighbor list for the | |||
| calculation of short-ranged force. Assume the number of atoms is N, | |||
| the number of grids divided is G, the maximum number of atoms in one | |||
| @@ -1882,7 +2003,7 @@ class NeighborListUpdate(PrimitiveWithInfer): | |||
| - **res** (float32) | |||
| Supported Platforms: | |||
| ```GPU``` | |||
| ``GPU`` | |||
| """ | |||
| @prim_attr_register | |||
| @@ -2019,8 +2140,6 @@ class NeighborListUpdate(PrimitiveWithInfer): | |||
| class MDIterationLeapFrogWithRF(PrimitiveWithInfer): | |||
| """ | |||
| MDIterationLeapFrog: | |||
| One step of classical leap frog algorithm to solve the finite difference | |||
| Hamiltonian equations of motion for certain system, using Langevin dynamics | |||
| with Liu's thermostat scheme. Assume the number of atoms is N and the target | |||