Class DeepPotBase

Inheritance Relationships

Derived Type

Class Documentation

class DeepPotBase

Deep Potential.

Subclassed by deepmd::DeepPotTF

Unnamed Group

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

Evaluate the energy, force, virial, atomic energy, and atomic virial by using this DP.

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.

  • 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.

  • 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.

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

Unnamed Group

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

Evaluate the energy, force, virial, atomic energy, and atomic virial by using this DP.

Note

The double precision interface is used by LAMMPS and AMBER.

Parameters
  • ener[out] The system energy.

  • force[out] The 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.

  • 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.

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

Unnamed Group

virtual void computew_mixed_type(std::vector<double> &ener, std::vector<double> &force, std::vector<double> &virial, std::vector<double> &atom_energy, std::vector<double> &atom_virial, const int &nframes, const std::vector<double> &coord, const std::vector<int> &atype, const std::vector<double> &box, const std::vector<double> &fparam = std::vector<double>(), const std::vector<double> &aparam = std::vector<double>()) = 0

Evaluate the energy, force, and virial with the mixed type by using this DP.

Note

At this time, no external program uses this interface.

Parameters
  • ener[out] The system energy.

  • force[out] The force on each atom.

  • virial[out] The virial.

  • atom_energy[out] The atomic energy.

  • atom_virial[out] The atomic virial.

  • nframes[in] The number of frames.

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

  • atype[in] The atom types. The array should be of size nframes x natoms.

  • 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.

virtual void computew_mixed_type(std::vector<double> &ener, std::vector<float> &force, std::vector<float> &virial, std::vector<float> &atom_energy, std::vector<float> &atom_virial, const int &nframes, const std::vector<float> &coord, const std::vector<int> &atype, const std::vector<float> &box, const std::vector<float> &fparam = std::vector<float>(), const std::vector<float> &aparam = std::vector<float>()) = 0

Public Functions

inline DeepPotBase()

DP constructor without initialization.

inline virtual ~DeepPotBase()
DeepPotBase(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.

virtual double cutoff() const = 0

Get the cutoff radius.

Returns

The cutoff radius.

virtual int numb_types() const = 0

Get the number of types.

Returns

The number of types.

virtual int numb_types_spin() const = 0

Get the number of types with spin.

Returns

The number of types with spin.

virtual int dim_fparam() const = 0

Get the dimension of the frame parameter.

Returns

The dimension of the frame parameter.

virtual int dim_aparam() const = 0

Get the dimension of the atomic parameter.

Returns

The dimension of the atomic parameter.

virtual void get_type_map(std::string &type_map) = 0

Get the type map (element name of the atom types) of this model.

Parameters

type_map[out] The type map of this model.

virtual bool is_aparam_nall() const = 0

Get whether the atom dimension of aparam is nall instead of fparam.

Parameters

aparam_nall[out] whether the atom dimension of aparam is nall instead of fparam.