Class DeepPotModelDevi

Class Documentation

class DeepPotModelDevi

Deep Potential model deviation.

Public Functions

inline DeepPotModelDevi()

DP model deviation constructor without initialization.

inline ~DeepPotModelDevi()
inline DeepPotModelDevi(const std::vector<std::string> &models)

DP model deviation constructor with initialization.

Parameters

models[in] The names of the frozen model file.

inline void init(const std::vector<std::string> &models, const int &gpu_rank = 0, const std::vector<std::string> &file_content = std::vector<std::string>())

Initialize the DP model deviation.

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

  • gpu_rank[in] The GPU rank.

  • file_content[in] The content of the frozen model file.

template<typename VALUETYPE>
inline void compute(std::vector<double> &ener, std::vector<std::vector<VALUETYPE>> &force, std::vector<std::vector<VALUETYPE>> &virial, const std::vector<VALUETYPE> &coord, const std::vector<int> &atype, const std::vector<VALUETYPE> &box, const int nghost, const InputNlist &lmp_list, const int &ago, const std::vector<VALUETYPE> &fparam = std::vector<VALUETYPE>(), const std::vector<VALUETYPE> &aparam = std::vector<VALUETYPE>())

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

Parameters
  • ener[out] The system energy.

  • force[out] The force on each atom.

  • virial[out] The 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 (PBC) or empty (no PBC).

template<typename VALUETYPE>
inline void compute(std::vector<double> &ener, std::vector<std::vector<VALUETYPE>> &force, std::vector<std::vector<VALUETYPE>> &virial, std::vector<std::vector<VALUETYPE>> &atom_energy, std::vector<std::vector<VALUETYPE>> &atom_virial, const std::vector<VALUETYPE> &coord, const std::vector<int> &atype, const std::vector<VALUETYPE> &box, const int nghost, const InputNlist &lmp_list, const int &ago, const std::vector<VALUETYPE> &fparam = std::vector<VALUETYPE>(), const std::vector<VALUETYPE> &aparam = std::vector<VALUETYPE>())

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

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 (PBC) or empty (no PBC).

inline double cutoff() const

Get the cutoff radius.

Returns

The cutoff radius.

inline int numb_types() const

Get the number of types.

Returns

The number of types.

inline int numb_types_spin() const

Get the number of types with spin.

Returns

The number of types with spin.

inline int dim_fparam() const

Get the dimension of the frame parameter.

Returns

The dimension of the frame parameter.

inline int dim_aparam() const

Get the dimension of the atomic parameter.

Returns

The dimension of the atomic parameter.

template<typename VALUETYPE>
inline void compute_avg(std::vector<VALUETYPE> &avg, const std::vector<std::vector<VALUETYPE>> &xx)

Compute the average of vectors.

Parameters
  • avg[out] The average of vectors.

  • xx[in] The vectors of all models.

template<typename VALUETYPE>
inline void compute_std(std::vector<VALUETYPE> &std, const std::vector<VALUETYPE> &avg, const std::vector<std::vector<VALUETYPE>> &xx, const int &stride)

Compute the standard deviation of vectors.

Parameters
  • std[out] The standard deviation of vectors.

  • avg[in] The average of vectors.

  • xx[in] The vectors of all models.

  • stride[in] The stride to compute the deviation.

template<typename VALUETYPE>
inline void compute_relative_std(std::vector<VALUETYPE> &std, const std::vector<VALUETYPE> &avg, const VALUETYPE eps, const int &stride)

Compute the relative standard deviation of vectors.

Parameters
  • std[out] The standard deviation of vectors.

  • avg[in] The average of vectors.

  • eps[in] The level parameter for computing the deviation.

  • stride[in] The stride to compute the deviation.

template<typename VALUETYPE>
inline void compute_std_f(std::vector<VALUETYPE> &std, const std::vector<VALUETYPE> &avg, const std::vector<std::vector<VALUETYPE>> &xx)

Compute the standard deviation of forces.

Parameters
  • std[out] The standard deviation of forces.

  • avg[in] The average of forces.

  • xx[in] The vectors of all forces.

template<typename VALUETYPE>
inline void compute_relative_std_f(std::vector<VALUETYPE> &std, const std::vector<VALUETYPE> &avg, const VALUETYPE eps)

Compute the relative standard deviation of forces.

Parameters
  • std[out] The relative standard deviation of forces.

  • avg[in] The relative average of forces.

  • eps[in] The level parameter for computing the deviation.