Class DeepSpinBackend#

Inheritance Relationships#

Base Type#

Derived Types#

Class Documentation#

class DeepSpinBackend : public deepmd::DeepBaseModelBackend#

Deep Potential.

Subclassed by deepmd::DeepSpinPT, deepmd::DeepSpinTF

Unnamed Group

virtual void computew(std::vector<double> &ener, std::vector<double> &force, std::vector<double> &force_mag, std::vector<double> &virial, std::vector<double> &atom_energy, std::vector<double> &atom_virial, const std::vector<double> &coord, const std::vector<double> &spin, const std::vector<int> &atype, const std::vector<double> &box, const std::vector<double> &fparam, const std::vector<double> &aparam, const bool atomic) = 0#

Evaluate the energy, force, magnetic force, virial, atomic energy, and atomic virial by using this DP with spin input.

Note

The double precision interface is used by i-PI, GROMACS, ABACUS, and CP2k.

Parameters:
  • ener[out] The system energy.

  • force[out] The force on each atom.

  • force_mag[out] The magnetic force on each atom.

  • virial[out] The virial.

  • atom_energy[out] The atomic energy.

  • atom_virial[out] The atomic virial.

  • coord[in] The coordinates of atoms. The array should be of size nframes x natoms x 3.

  • spin[in] The spins of atoms, [0, 0, 0] if no spin. The array should be of size nframes x natoms x 3.

  • atype[in] The atom types. The list should contain natoms ints.

  • box[in] The cell of the region. The array should be of size nframes x 9.

  • fparam[in] The frame parameter. The array can be of size : nframes x dim_fparam. dim_fparam. Then all frames are assumed to be provided with the same fparam.

  • aparam[in] The atomic parameter The array can be of size : nframes x natoms x dim_aparam. natoms x dim_aparam. Then all frames are assumed to be provided with the same aparam.

  • atomic[in] Request atomic energy and virial if atomic is true.

virtual void computew(std::vector<double> &ener, std::vector<float> &force, std::vector<float> &force_mag, std::vector<float> &virial, std::vector<float> &atom_energy, std::vector<float> &atom_virial, const std::vector<float> &coord, const std::vector<float> &spin, const std::vector<int> &atype, const std::vector<float> &box, const std::vector<float> &fparam, const std::vector<float> &aparam, const bool atomic) = 0#

Unnamed Group

virtual void computew(std::vector<double> &ener, std::vector<double> &force, std::vector<double> &force_mag, std::vector<double> &virial, std::vector<double> &atom_energy, std::vector<double> &atom_virial, const std::vector<double> &coord, const std::vector<double> &spin, const std::vector<int> &atype, const std::vector<double> &box, const int nghost, const InputNlist &inlist, const int &ago, const std::vector<double> &fparam, const std::vector<double> &aparam, const bool atomic) = 0#

Evaluate the energy, force, magnetic force, virial, atomic energy, and atomic virial by using this DP with spin input.

Note

The double precision interface is used by LAMMPS and AMBER.

Parameters:
  • ener[out] The system energy.

  • force[out] The force on each atom.

  • force_mag[out] The magnetic force on each atom.

  • virial[out] The virial.

  • atom_energy[out] The atomic energy.

  • atom_virial[out] The atomic virial.

  • coord[in] The coordinates of atoms. The array should be of size nframes x natoms x 3.

  • spin[in] The spins of atoms, [0, 0, 0] if no spin. The array should be of size nframes x natoms x 3.

  • atype[in] The atom types. The list should contain natoms ints.

  • box[in] The cell of the region. The array should be of size nframes x 9.

  • nghost[in] The number of ghost atoms.

  • lmp_list[in] The input neighbour list.

  • ago[in] Update the internal neighbour list if ago is 0.

  • fparam[in] The frame parameter. The array can be of size : nframes x dim_fparam. dim_fparam. Then all frames are assumed to be provided with the same fparam.

  • aparam[in] The atomic parameter The array can be of size : nframes x natoms x dim_aparam. natoms x dim_aparam. Then all frames are assumed to be provided with the same aparam.

  • atomic[in] Request atomic energy and virial if atomic is true.

virtual void computew(std::vector<double> &ener, std::vector<float> &force, std::vector<float> &force_mag, std::vector<float> &virial, std::vector<float> &atom_energy, std::vector<float> &atom_virial, const std::vector<float> &coord, const std::vector<float> &spin, const std::vector<int> &atype, const std::vector<float> &box, const int nghost, const InputNlist &inlist, const int &ago, const std::vector<float> &fparam, const std::vector<float> &aparam, const bool atomic) = 0#

Public Functions

inline DeepSpinBackend()#

DP constructor without initialization.

inline virtual ~DeepSpinBackend()#
DeepSpinBackend(const std::string &model, const int &gpu_rank = 0, const std::string &file_content = "")#

DP constructor with initialization.

Parameters:
  • model[in] The name of the frozen model file.

  • gpu_rank[in] The GPU rank. Default is 0.

  • file_content[in] The content of the model file. If it is not empty, DP will read from the string instead of the file.

virtual void init(const std::string &model, const int &gpu_rank = 0, const std::string &file_content = "") = 0#

Initialize the DP.

Parameters:
  • model[in] The name of the frozen model file.

  • gpu_rank[in] The GPU rank. Default is 0.

  • file_content[in] The content of the model file. If it is not empty, DP will read from the string instead of the file.