diff --git a/source/api_c/include/c_api.h b/source/api_c/include/c_api.h index a8798ba24d..534ae94403 100644 --- a/source/api_c/include/c_api.h +++ b/source/api_c/include/c_api.h @@ -12,7 +12,7 @@ extern "C" { /** C API version. Bumped whenever the API is changed. * @since API version 22 */ -#define DP_C_API_VERSION 25 +#define DP_C_API_VERSION 26 /** * @brief Neighbor list. @@ -1447,6 +1447,16 @@ int DP_DeepBaseModelGetDimAParam(DP_DeepBaseModel* dpbase); */ bool DP_DeepBaseModelIsAParamNAll(DP_DeepBaseModel* dpbase); +/** + * @brief Check if the model has default frame parameters. + * + * @param[in] dpbase The DP to use. + * @return true the model has default frame parameters + * @return false the model does not have default frame parameters + * @since API version 26 + */ +bool DP_DeepBaseModelHasDefaultFParam(DP_DeepBaseModel* dpbase); + /** * @brief Get the type map of a DP. * @param[in] dpbase The DP to use. @@ -1490,6 +1500,16 @@ int DP_DeepBaseModelDeviGetDimAParam(DP_DeepBaseModelDevi* dpbase); */ bool DP_DeepBaseModelDeviIsAParamNAll(DP_DeepBaseModelDevi* dpbase); +/** + * @brief Check if the model deviation has default frame parameters. + * + * @param[in] dpbase The DP Model Deviation to use. + * @return true the model has default frame parameters + * @return false the model does not have default frame parameters + * @since API version 26 + */ +bool DP_DeepBaseModelDeviHasDefaultFParam(DP_DeepBaseModelDevi* dpbase); + /** * @brief Get the type map of a DP model deviation. * @param[in] dpbase The DP model deviation to use. @@ -1569,6 +1589,15 @@ int DP_DeepPotGetDimAParam(DP_DeepPot* dp); */ bool DP_DeepPotIsAParamNAll(DP_DeepPot* dp); +/** + * @brief Check if the DP has default frame parameters. + * @param[in] dp The DP to use. + * @return true the model has default frame parameters + * @return false the model does not have default frame parameters + * @since API version 26 + */ +bool DP_DeepPotHasDefaultFParam(DP_DeepPot* dp); + /** * @brief Get the type map of a DP. * @param[in] dp The DP to use. @@ -1607,6 +1636,15 @@ int DP_DeepPotModelDeviGetDimAParam(DP_DeepPotModelDevi* dp); */ bool DP_DeepPotModelDeviIsAParamNAll(DP_DeepPotModelDevi* dp); +/** + * @brief Check if the DP model deviation has default frame parameters. + * @param[in] dp The DP model deviation to use. + * @return true the model has default frame parameters + * @return false the model does not have default frame parameters + * @since API version 26 + */ +bool DP_DeepPotModelDeviHasDefaultFParam(DP_DeepPotModelDevi* dp); + /** * @brief Get the type map of a DP model deviation. * @param[in] dp The DP model deviation to use. @@ -1688,6 +1726,15 @@ int DP_DeepSpinGetDimAParam(DP_DeepSpin* dp); */ bool DP_DeepSpinIsAParamNAll(DP_DeepSpin* dp); +/** + * @brief Check if the DP Spin Model has default frame parameters. + * @param[in] dp The DP Spin Model to use. + * @return true the model has default frame parameters + * @return false the model does not have default frame parameters + * @since API version 26 + */ +bool DP_DeepSpinHasDefaultFParam(DP_DeepSpin* dp); + /** * @brief Get the type map of a DP Spin Model. * @param[in] dp The DP Spin Model to use. @@ -1731,6 +1778,15 @@ int DP_DeepSpinModelDeviGetDimAParam(DP_DeepSpinModelDevi* dp); */ bool DP_DeepSpinModelDeviIsAParamNAll(DP_DeepSpinModelDevi* dp); +/** + * @brief Check if the DP Spin Model Deviation has default frame parameters. + * @param[in] dp The DP Spin Model Deviation to use. + * @return true the model has default frame parameters + * @return false the model does not have default frame parameters + * @since API version 26 + */ +bool DP_DeepSpinModelDeviHasDefaultFParam(DP_DeepSpinModelDevi* dp); + /** * @brief Get the type map of a DP model deviation. * @param[in] dp The DP model deviation to use. diff --git a/source/api_c/include/c_api_internal.h b/source/api_c/include/c_api_internal.h index 9824be76ab..63de2ebd35 100644 --- a/source/api_c/include/c_api_internal.h +++ b/source/api_c/include/c_api_internal.h @@ -45,6 +45,7 @@ struct DP_DeepBaseModel { int dfparam; int daparam; bool aparam_nall; + bool has_default_fparam; }; struct DP_DeepBaseModelDevi { @@ -57,6 +58,7 @@ struct DP_DeepBaseModelDevi { int dfparam; int daparam; bool aparam_nall; + bool has_default_fparam; }; struct DP_DeepPot : DP_DeepBaseModel { diff --git a/source/api_c/include/deepmd.hpp b/source/api_c/include/deepmd.hpp index 4f88238fa1..2f120ee86c 100644 --- a/source/api_c/include/deepmd.hpp +++ b/source/api_c/include/deepmd.hpp @@ -965,19 +965,29 @@ class DeepBaseModel { assert(dpbase); return daparam; } + /** + * @brief Check if the model has default frame parameters. + * @return true if the model has default frame parameters. + **/ + bool has_default_fparam() const { + assert(dpbase); + return has_default_fparam_; + } protected: DP_DeepBaseModel* dpbase; int dfparam; int daparam; bool aparam_nall; + bool has_default_fparam_; template void validate_fparam_aparam(const int& nframes, const int& nloc, const std::vector& fparam, const std::vector& aparam) const { if (fparam.size() != dfparam && - fparam.size() != static_cast(nframes) * dfparam) { + fparam.size() != static_cast(nframes) * dfparam && + !(fparam.empty() && has_default_fparam_)) { throw deepmd::hpp::deepmd_exception( "the dim of frame parameter provided is not consistent with what the " "model uses"); @@ -1058,6 +1068,7 @@ class DeepPot : public DeepBaseModel { dfparam = DP_DeepPotGetDimFParam(dp); daparam = DP_DeepPotGetDimAParam(dp); aparam_nall = DP_DeepPotIsAParamNAll(dp); + has_default_fparam_ = DP_DeepPotHasDefaultFParam(dp); dpbase = (DP_DeepBaseModel*)dp; }; @@ -1502,6 +1513,7 @@ class DeepSpin : public DeepBaseModel { dfparam = DP_DeepSpinGetDimFParam(dp); daparam = DP_DeepSpinGetDimAParam(dp); aparam_nall = DP_DeepSpinIsAParamNAll(dp); + has_default_fparam_ = DP_DeepSpinHasDefaultFParam(dp); dpbase = (DP_DeepBaseModel*)dp; }; @@ -1860,7 +1872,14 @@ class DeepBaseModelDevi { return daparam; } /** - * @brief Compute the average of vectors. + * @brief Check if the model has default frame parameters. + * @return true if the model has default frame parameters. + **/ + bool has_default_fparam() const { + assert(dpbase); + return has_default_fparam_; + } + /** * @param[out] avg The average of vectors. * @param[in] xx The vectors of all models. **/ @@ -1981,13 +2000,15 @@ class DeepBaseModelDevi { int dfparam; int daparam; bool aparam_nall; + bool has_default_fparam_; template void validate_fparam_aparam(const int& nframes, const int& nloc, const std::vector& fparam, const std::vector& aparam) const { if (fparam.size() != dfparam && - fparam.size() != static_cast(nframes) * dfparam) { + fparam.size() != static_cast(nframes) * dfparam && + !(fparam.empty() && has_default_fparam_)) { throw deepmd::hpp::deepmd_exception( "the dim of frame parameter provided is not consistent with what the " "model uses"); @@ -2081,6 +2102,7 @@ class DeepPotModelDevi : public DeepBaseModelDevi { dfparam = DP_DeepPotModelDeviGetDimFParam(dp); daparam = DP_DeepPotModelDeviGetDimAParam(dp); aparam_nall = DP_DeepPotModelDeviIsAParamNAll(dp); + has_default_fparam_ = DP_DeepPotModelDeviHasDefaultFParam(dp); dpbase = (DP_DeepBaseModelDevi*)dp; }; @@ -2513,6 +2535,7 @@ class DeepSpinModelDevi : public DeepBaseModelDevi { dfparam = DP_DeepSpinModelDeviGetDimFParam(dp); daparam = DP_DeepSpinModelDeviGetDimAParam(dp); aparam_nall = DP_DeepSpinModelDeviIsAParamNAll(dp); + has_default_fparam_ = DP_DeepSpinModelDeviHasDefaultFParam(dp); dpbase = (DP_DeepBaseModelDevi*)dp; }; diff --git a/source/api_c/src/c_api.cc b/source/api_c/src/c_api.cc index 3acb28a002..3646eb33c5 100644 --- a/source/api_c/src/c_api.cc +++ b/source/api_c/src/c_api.cc @@ -49,22 +49,26 @@ void DP_NlistSetMapping(DP_Nlist* nl, int* mapping) { void DP_DeleteNlist(DP_Nlist* nl) { delete nl; } // DP Base Model -DP_DeepBaseModel::DP_DeepBaseModel() {} +DP_DeepBaseModel::DP_DeepBaseModel() + : dfparam(0), daparam(0), aparam_nall(false), has_default_fparam(false) {} DP_DeepBaseModel::DP_DeepBaseModel(deepmd::DeepBaseModel& dpbase) : dpbase(dpbase) { dfparam = dpbase.dim_fparam(); daparam = dpbase.dim_aparam(); aparam_nall = dpbase.is_aparam_nall(); + has_default_fparam = dpbase.has_default_fparam(); } void DP_DeleteDeepBaseModel(DP_DeepBaseModel* dpbase) { delete dpbase; } // DP Base Model Devi -DP_DeepBaseModelDevi::DP_DeepBaseModelDevi() {} +DP_DeepBaseModelDevi::DP_DeepBaseModelDevi() + : dfparam(0), daparam(0), aparam_nall(false), has_default_fparam(false) {} DP_DeepBaseModelDevi::DP_DeepBaseModelDevi(deepmd::DeepBaseModelDevi& dpbase) : dpbase(dpbase) { dfparam = dpbase.dim_fparam(); daparam = dpbase.dim_aparam(); aparam_nall = dpbase.is_aparam_nall(); + has_default_fparam = dpbase.has_default_fparam(); } void DP_DeleteDeepBaseModelDevi(DP_DeepBaseModelDevi* dp) { delete dp; } @@ -2019,6 +2023,10 @@ bool DP_DeepBaseModelIsAParamNAll(DP_DeepBaseModel* dpbase) { return dpbase->aparam_nall; } +bool DP_DeepBaseModelHasDefaultFParam(DP_DeepBaseModel* dpbase) { + return dpbase->has_default_fparam; +} + const char* DP_DeepBaseModelCheckOK(DP_DeepBaseModel* dpbase) { return string_to_char(dpbase->exception); } @@ -2047,6 +2055,10 @@ bool DP_DeepBaseModelDeviIsAParamNAll(DP_DeepBaseModelDevi* dpbase) { return dpbase->aparam_nall; } +bool DP_DeepBaseModelDeviHasDefaultFParam(DP_DeepBaseModelDevi* dpbase) { + return dpbase->has_default_fparam; +} + const char* DP_DeepBaseModelDeviCheckOK(DP_DeepBaseModelDevi* dpbase) { return string_to_char(dpbase->exception); } @@ -2080,6 +2092,10 @@ bool DP_DeepPotIsAParamNAll(DP_DeepPot* dp) { return DP_DeepBaseModelIsAParamNAll(static_cast(dp)); } +bool DP_DeepPotHasDefaultFParam(DP_DeepPot* dp) { + return DP_DeepBaseModelHasDefaultFParam(static_cast(dp)); +} + const char* DP_DeepPotCheckOK(DP_DeepPot* dp) { return DP_DeepBaseModelCheckOK(static_cast(dp)); } @@ -2113,6 +2129,11 @@ bool DP_DeepPotModelDeviIsAParamNAll(DP_DeepPotModelDevi* dp) { static_cast(dp)); } +bool DP_DeepPotModelDeviHasDefaultFParam(DP_DeepPotModelDevi* dp) { + return DP_DeepBaseModelDeviHasDefaultFParam( + static_cast(dp)); +} + const char* DP_DeepPotModelDeviCheckOK(DP_DeepPotModelDevi* dp) { return DP_DeepBaseModelDeviCheckOK(static_cast(dp)); } @@ -2146,6 +2167,10 @@ bool DP_DeepSpinIsAParamNAll(DP_DeepSpin* dp) { return DP_DeepBaseModelIsAParamNAll(static_cast(dp)); } +bool DP_DeepSpinHasDefaultFParam(DP_DeepSpin* dp) { + return DP_DeepBaseModelHasDefaultFParam(static_cast(dp)); +} + const char* DP_DeepSpinCheckOK(DP_DeepSpin* dp) { return DP_DeepBaseModelCheckOK(static_cast(dp)); } @@ -2179,6 +2204,11 @@ bool DP_DeepSpinModelDeviIsAParamNAll(DP_DeepSpinModelDevi* dp) { static_cast(dp)); } +bool DP_DeepSpinModelDeviHasDefaultFParam(DP_DeepSpinModelDevi* dp) { + return DP_DeepBaseModelDeviHasDefaultFParam( + static_cast(dp)); +} + const char* DP_DeepSpinModelDeviCheckOK(DP_DeepSpinModelDevi* dp) { return DP_DeepBaseModelDeviCheckOK(static_cast(dp)); } diff --git a/source/api_c/tests/test_deeppot_default_fparam.cc b/source/api_c/tests/test_deeppot_default_fparam.cc new file mode 100644 index 0000000000..f6a28e9fea --- /dev/null +++ b/source/api_c/tests/test_deeppot_default_fparam.cc @@ -0,0 +1,154 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "deepmd.hpp" +#include "test_utils.h" + +// 1e-10 cannot pass; unclear bug or not +#undef EPSILON +#define EPSILON (std::is_same::value ? 1e-7 : 1e-4) + +template +class TestInferDeepPotDefaultFParam : public ::testing::Test { + protected: + std::vector coord = {12.83, 2.56, 2.18, 12.09, 2.87, 2.74, + 00.25, 3.32, 1.68, 3.36, 3.00, 1.81, + 3.51, 2.51, 2.60, 4.27, 3.22, 1.56}; + std::vector atype = {0, 0, 0, 0, 0, 0}; + std::vector box = {13., 0., 0., 0., 13., 0., 0., 0., 13.}; + std::vector aparam = {0.25852028, 0.25852028, 0.25852028, + 0.25852028, 0.25852028, 0.25852028}; + std::vector fparam = {0.25852028}; + std::vector expected_e = { + -1.038271223729637e-01, -7.285433579124989e-02, -9.467600492266426e-02, + -1.467050207422953e-01, -7.660561676973243e-02, -7.277296000253175e-02}; + std::vector expected_f = { + 6.622266941151356e-02, 5.278739714221517e-02, 2.265728009692279e-02, + -2.606048291367521e-02, -4.538812303131843e-02, 1.058247419681242e-02, + 1.679392617013225e-01, -2.257826240741907e-03, -4.490146347357200e-02, + -1.148364179422036e-01, -1.169790528013792e-02, 6.140403441496690e-02, + -8.078778123309406e-02, -5.838879041789346e-02, 6.773641084621368e-02, + -1.247724902386317e-02, 6.494524782787654e-02, -1.174787360813438e-01}; + std::vector expected_v = { + -1.589185601903571e-01, 2.586167090689234e-03, -1.575150812459097e-04, + -1.855360549216658e-02, 1.949822308966458e-02, -1.006552178977554e-02, + 3.177030388421500e-02, 1.714350280402170e-03, -1.290389705296196e-03, + -8.553511587973063e-02, -5.654638208496338e-03, -1.286955066237458e-02, + 2.464156699303163e-02, -2.398203243424216e-02, -1.957110698882903e-02, + 2.233493653505151e-02, 6.107843889444162e-03, 1.707076397717704e-03, + -1.653994136896924e-01, 3.894358809712642e-02, -2.169596032233905e-02, + 6.819702786555932e-03, -5.018240707559808e-03, 2.640663592968395e-03, + -1.985295554050314e-03, -3.638422207618973e-02, 2.342932709960212e-02, + -8.501331666888623e-02, -2.181253119706635e-03, 4.311299629419011e-03, + -1.910329576491371e-03, -1.808810428459616e-03, -1.540075460017380e-03, + -1.173703527688186e-02, -2.596307050960764e-03, 6.705026635782070e-03, + -9.038454847872568e-02, 3.011717694088482e-02, -5.083053967307887e-02, + -2.951212926932095e-03, 2.342446057919113e-02, -4.091208178777853e-02, + -1.648470670751170e-02, -2.872262362355538e-02, 4.763925761561248e-02, + -8.300037376165001e-02, 1.020429200603740e-03, -1.026734257188870e-03, + 5.678534821710347e-02, 1.273635858276582e-02, -1.530143401888294e-02, + -1.061672032476309e-01, -2.486859787145545e-02, 2.875323543588796e-02}; + int natoms; + double expected_tot_e; + std::vector expected_tot_v; + + deepmd::hpp::DeepPot dp; + + void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif + dp.init("../../tests/infer/fparam_aparam_default.pth"); + + natoms = expected_e.size(); + EXPECT_EQ(natoms * 3, expected_f.size()); + EXPECT_EQ(natoms * 9, expected_v.size()); + expected_tot_e = 0.; + expected_tot_v.resize(9); + std::fill(expected_tot_v.begin(), expected_tot_v.end(), 0.); + for (int ii = 0; ii < natoms; ++ii) { + expected_tot_e += expected_e[ii]; + } + for (int ii = 0; ii < natoms; ++ii) { + for (int dd = 0; dd < 9; ++dd) { + expected_tot_v[dd] += expected_v[ii * 9 + dd]; + } + } + }; + + void TearDown() override {}; +}; + +TYPED_TEST_SUITE(TestInferDeepPotDefaultFParam, ValueTypes); + +TYPED_TEST(TestInferDeepPotDefaultFParam, attrs) { + using VALUETYPE = TypeParam; + deepmd::hpp::DeepPot& dp = this->dp; + EXPECT_EQ(dp.dim_fparam(), 1); + EXPECT_EQ(dp.dim_aparam(), 1); + EXPECT_TRUE(dp.has_default_fparam()); +} + +TYPED_TEST(TestInferDeepPotDefaultFParam, cpu_build_nlist_empty_fparam) { + using VALUETYPE = TypeParam; + std::vector& coord = this->coord; + std::vector& atype = this->atype; + std::vector& box = this->box; + std::vector& aparam = this->aparam; + std::vector& expected_f = this->expected_f; + int& natoms = this->natoms; + double& expected_tot_e = this->expected_tot_e; + std::vector& expected_tot_v = this->expected_tot_v; + deepmd::hpp::DeepPot& dp = this->dp; + double ener; + std::vector force, virial; + std::vector empty_fparam; + dp.compute(ener, force, virial, coord, atype, box, empty_fparam, aparam); + + EXPECT_EQ(force.size(), natoms * 3); + EXPECT_EQ(virial.size(), 9); + + EXPECT_LT(fabs(ener - expected_tot_e), EPSILON); + for (int ii = 0; ii < natoms * 3; ++ii) { + EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON); + } + for (int ii = 0; ii < 3 * 3; ++ii) { + EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON); + } +} + +TYPED_TEST(TestInferDeepPotDefaultFParam, cpu_build_nlist_explicit_fparam) { + using VALUETYPE = TypeParam; + std::vector& coord = this->coord; + std::vector& atype = this->atype; + std::vector& box = this->box; + std::vector& fparam = this->fparam; + std::vector& aparam = this->aparam; + std::vector& expected_f = this->expected_f; + int& natoms = this->natoms; + double& expected_tot_e = this->expected_tot_e; + std::vector& expected_tot_v = this->expected_tot_v; + deepmd::hpp::DeepPot& dp = this->dp; + double ener; + std::vector force, virial; + dp.compute(ener, force, virial, coord, atype, box, fparam, aparam); + + EXPECT_EQ(force.size(), natoms * 3); + EXPECT_EQ(virial.size(), 9); + + EXPECT_LT(fabs(ener - expected_tot_e), EPSILON); + for (int ii = 0; ii < natoms * 3; ++ii) { + EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON); + } + for (int ii = 0; ii < 3 * 3; ++ii) { + EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON); + } +} diff --git a/source/api_cc/include/DeepBaseModel.h b/source/api_cc/include/DeepBaseModel.h index 68e2c8069b..374fa946be 100644 --- a/source/api_cc/include/DeepBaseModel.h +++ b/source/api_cc/include/DeepBaseModel.h @@ -75,6 +75,11 @@ class DeepBaseModelBackend { *instead of fparam. **/ virtual bool is_aparam_nall() const = 0; + /** + * @brief Check if the model has default frame parameters. + * @return true if the model has default frame parameters. + **/ + virtual bool has_default_fparam() const = 0; }; /** @@ -141,6 +146,11 @@ class DeepBaseModel { *instead of fparam. **/ bool is_aparam_nall() const; + /** + * @brief Check if the model has default frame parameters. + * @return true if the model has default frame parameters. + **/ + bool has_default_fparam() const; protected: bool inited; @@ -273,6 +283,14 @@ class DeepBaseModelDevi { assert(inited); return dpbases[0]->is_aparam_nall(); }; + /** + * @brief Check if the model has default frame parameters. + * @return true if the model has default frame parameters. + **/ + bool has_default_fparam() const { + assert(inited); + return dpbases[0]->has_default_fparam(); + }; protected: unsigned numb_models; diff --git a/source/api_cc/include/DeepPotJAX.h b/source/api_cc/include/DeepPotJAX.h index f2f610d1d5..7633d22d6c 100644 --- a/source/api_cc/include/DeepPotJAX.h +++ b/source/api_cc/include/DeepPotJAX.h @@ -94,6 +94,14 @@ class DeepPotJAX : public DeepPotBackend { assert(inited); return false; }; + /** + * @brief Check if the model has default frame parameters. + * @return true if the model has default frame parameters. + **/ + bool has_default_fparam() const { + assert(inited); + return has_default_fparam_; + }; // forward to template class void computew(std::vector& ener, @@ -191,6 +199,8 @@ class DeepPotJAX : public DeepPotBackend { int nnei; // do message passing bool do_message_passing; + // has default fparam + bool has_default_fparam_; // padding to nall int padding_to_nall = 0; // padding for nloc diff --git a/source/api_cc/include/DeepPotPD.h b/source/api_cc/include/DeepPotPD.h index c721ed23bc..70e5ae877b 100644 --- a/source/api_cc/include/DeepPotPD.h +++ b/source/api_cc/include/DeepPotPD.h @@ -260,6 +260,11 @@ class DeepPotPD : public DeepPotBackend { assert(inited); return aparam_nall; }; + /** + * @brief Check if the model has default frame parameters. + * @return Always false for Paddle backend. + **/ + bool has_default_fparam() const { return false; }; /** * @brief Print the shape of given tensor. diff --git a/source/api_cc/include/DeepPotPT.h b/source/api_cc/include/DeepPotPT.h index f679e8399d..14b545dce4 100644 --- a/source/api_cc/include/DeepPotPT.h +++ b/source/api_cc/include/DeepPotPT.h @@ -244,6 +244,14 @@ class DeepPotPT : public DeepPotBackend { assert(inited); return aparam_nall; }; + /** + * @brief Check if the model has default frame parameters. + * @return true if the model has default frame parameters. + **/ + bool has_default_fparam() const { + assert(inited); + return has_default_fparam_; + }; // forward to template class void computew(std::vector& ener, @@ -329,6 +337,7 @@ class DeepPotPT : public DeepPotBackend { int dfparam; int daparam; bool aparam_nall; + bool has_default_fparam_; // copy neighbor list info from host torch::jit::script::Module module; double rcut; diff --git a/source/api_cc/include/DeepPotTF.h b/source/api_cc/include/DeepPotTF.h index 10d33e8216..26420807d9 100644 --- a/source/api_cc/include/DeepPotTF.h +++ b/source/api_cc/include/DeepPotTF.h @@ -210,6 +210,11 @@ class DeepPotTF : public DeepPotBackend { assert(inited); return aparam_nall; }; + /** + * @brief Check if the model has default frame parameters. + * @return Always false for TF backend. + **/ + bool has_default_fparam() const { return false; }; // forward to template class void computew(std::vector& ener, diff --git a/source/api_cc/include/DeepSpinPT.h b/source/api_cc/include/DeepSpinPT.h index f65a5afef3..1cc35997e9 100644 --- a/source/api_cc/include/DeepSpinPT.h +++ b/source/api_cc/include/DeepSpinPT.h @@ -183,6 +183,14 @@ class DeepSpinPT : public DeepSpinBackend { assert(inited); return aparam_nall; }; + /** + * @brief Check if the model has default frame parameters. + * @return true if the model has default frame parameters. + **/ + bool has_default_fparam() const { + assert(inited); + return has_default_fparam_; + }; void computew(std::vector& ener, std::vector& force, @@ -251,6 +259,7 @@ class DeepSpinPT : public DeepSpinBackend { int dfparam; int daparam; bool aparam_nall; + bool has_default_fparam_; // copy neighbor list info from host torch::jit::script::Module module; double rcut; diff --git a/source/api_cc/include/DeepSpinTF.h b/source/api_cc/include/DeepSpinTF.h index 05f5ec7382..547f8140cf 100644 --- a/source/api_cc/include/DeepSpinTF.h +++ b/source/api_cc/include/DeepSpinTF.h @@ -176,6 +176,11 @@ class DeepSpinTF : public DeepSpinBackend { assert(inited); return aparam_nall; }; + /** + * @brief Check if the model has default frame parameters. + * @return Always false for TF backend. + **/ + bool has_default_fparam() const { return false; }; // forward to template class void computew(std::vector& ener, diff --git a/source/api_cc/src/DeepBaseModel.cc b/source/api_cc/src/DeepBaseModel.cc index a0514e4907..5ddb82c23c 100644 --- a/source/api_cc/src/DeepBaseModel.cc +++ b/source/api_cc/src/DeepBaseModel.cc @@ -34,6 +34,10 @@ void DeepBaseModel::get_type_map(std::string& type_map) { bool DeepBaseModel::is_aparam_nall() const { return dpbase->is_aparam_nall(); } +bool DeepBaseModel::has_default_fparam() const { + return dpbase->has_default_fparam(); +} + DeepBaseModelDevi::DeepBaseModelDevi() : inited(false), numb_models(0) {} // DeepBaseModelDevi::DeepBaseModelDevi( diff --git a/source/api_cc/src/DeepPotJAX.cc b/source/api_cc/src/DeepPotJAX.cc index 07f8b9119b..dab76f17ae 100644 --- a/source/api_cc/src/DeepPotJAX.cc +++ b/source/api_cc/src/DeepPotJAX.cc @@ -327,6 +327,12 @@ void deepmd::DeepPotJAX::init(const std::string& model, // compatibile with models generated by v3.0.0rc0 do_message_passing = false; } + try { + has_default_fparam_ = get_scalar(ctx, "has_default_fparam", + func_vector, device, status); + } catch (tf_function_not_found& e) { + has_default_fparam_ = false; + } inited = true; } diff --git a/source/api_cc/src/DeepPotPT.cc b/source/api_cc/src/DeepPotPT.cc index e239d6d506..04e54efb89 100644 --- a/source/api_cc/src/DeepPotPT.cc +++ b/source/api_cc/src/DeepPotPT.cc @@ -146,6 +146,11 @@ void DeepPotPT::init(const std::string& model, dfparam = module.run_method("get_dim_fparam").toInt(); daparam = module.run_method("get_dim_aparam").toInt(); aparam_nall = module.run_method("is_aparam_nall").toBool(); + if (module.find_method("has_default_fparam")) { + has_default_fparam_ = module.run_method("has_default_fparam").toBool(); + } else { + has_default_fparam_ = false; + } inited = true; } diff --git a/source/api_cc/src/DeepSpinPT.cc b/source/api_cc/src/DeepSpinPT.cc index 0c02d2f8aa..4f6f6ad7ab 100644 --- a/source/api_cc/src/DeepSpinPT.cc +++ b/source/api_cc/src/DeepSpinPT.cc @@ -118,6 +118,11 @@ void DeepSpinPT::init(const std::string& model, dfparam = module.run_method("get_dim_fparam").toInt(); daparam = module.run_method("get_dim_aparam").toInt(); aparam_nall = module.run_method("is_aparam_nall").toBool(); + if (module.find_method("has_default_fparam")) { + has_default_fparam_ = module.run_method("has_default_fparam").toBool(); + } else { + has_default_fparam_ = false; + } inited = true; } DeepSpinPT::~DeepSpinPT() {} diff --git a/source/api_cc/tests/test_deeppot_default_fparam_pt.cc b/source/api_cc/tests/test_deeppot_default_fparam_pt.cc new file mode 100644 index 0000000000..66f9e16359 --- /dev/null +++ b/source/api_cc/tests/test_deeppot_default_fparam_pt.cc @@ -0,0 +1,231 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "DeepPot.h" +#include "neighbor_list.h" +#include "test_utils.h" + +// 1e-10 cannot pass; unclear bug or not +#undef EPSILON +#define EPSILON (std::is_same::value ? 1e-7 : 1e-4) + +template +class TestInferDeepPotDefaultFParamPt : public ::testing::Test { + protected: + std::vector coord = {12.83, 2.56, 2.18, 12.09, 2.87, 2.74, + 00.25, 3.32, 1.68, 3.36, 3.00, 1.81, + 3.51, 2.51, 2.60, 4.27, 3.22, 1.56}; + std::vector atype = {0, 0, 0, 0, 0, 0}; + std::vector box = {13., 0., 0., 0., 13., 0., 0., 0., 13.}; + // aparam is still provided explicitly + std::vector aparam = {0.25852028, 0.25852028, 0.25852028, + 0.25852028, 0.25852028, 0.25852028}; + // explicit fparam for backward compat test + std::vector fparam = {0.25852028}; + // expected values computed with default fparam + std::vector expected_e = { + -1.038271223729637e-01, -7.285433579124989e-02, -9.467600492266426e-02, + -1.467050207422953e-01, -7.660561676973243e-02, -7.277296000253175e-02}; + std::vector expected_f = { + 6.622266941151356e-02, 5.278739714221517e-02, 2.265728009692279e-02, + -2.606048291367521e-02, -4.538812303131843e-02, 1.058247419681242e-02, + 1.679392617013225e-01, -2.257826240741907e-03, -4.490146347357200e-02, + -1.148364179422036e-01, -1.169790528013792e-02, 6.140403441496690e-02, + -8.078778123309406e-02, -5.838879041789346e-02, 6.773641084621368e-02, + -1.247724902386317e-02, 6.494524782787654e-02, -1.174787360813438e-01}; + std::vector expected_v = { + -1.589185601903571e-01, 2.586167090689234e-03, -1.575150812459097e-04, + -1.855360549216658e-02, 1.949822308966458e-02, -1.006552178977554e-02, + 3.177030388421500e-02, 1.714350280402170e-03, -1.290389705296196e-03, + -8.553511587973063e-02, -5.654638208496338e-03, -1.286955066237458e-02, + 2.464156699303163e-02, -2.398203243424216e-02, -1.957110698882903e-02, + 2.233493653505151e-02, 6.107843889444162e-03, 1.707076397717704e-03, + -1.653994136896924e-01, 3.894358809712642e-02, -2.169596032233905e-02, + 6.819702786555932e-03, -5.018240707559808e-03, 2.640663592968395e-03, + -1.985295554050314e-03, -3.638422207618973e-02, 2.342932709960212e-02, + -8.501331666888623e-02, -2.181253119706635e-03, 4.311299629419011e-03, + -1.910329576491371e-03, -1.808810428459616e-03, -1.540075460017380e-03, + -1.173703527688186e-02, -2.596307050960764e-03, 6.705026635782070e-03, + -9.038454847872568e-02, 3.011717694088482e-02, -5.083053967307887e-02, + -2.951212926932095e-03, 2.342446057919113e-02, -4.091208178777853e-02, + -1.648470670751170e-02, -2.872262362355538e-02, 4.763925761561248e-02, + -8.300037376165001e-02, 1.020429200603740e-03, -1.026734257188870e-03, + 5.678534821710347e-02, 1.273635858276582e-02, -1.530143401888294e-02, + -1.061672032476309e-01, -2.486859787145545e-02, 2.875323543588796e-02}; + int natoms; + double expected_tot_e; + std::vector expected_tot_v; + + deepmd::DeepPot dp; + + void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif + dp.init("../../tests/infer/fparam_aparam_default.pth"); + + natoms = expected_e.size(); + EXPECT_EQ(natoms * 3, expected_f.size()); + EXPECT_EQ(natoms * 9, expected_v.size()); + expected_tot_e = 0.; + expected_tot_v.resize(9); + std::fill(expected_tot_v.begin(), expected_tot_v.end(), 0.); + for (int ii = 0; ii < natoms; ++ii) { + expected_tot_e += expected_e[ii]; + } + for (int ii = 0; ii < natoms; ++ii) { + for (int dd = 0; dd < 9; ++dd) { + expected_tot_v[dd] += expected_v[ii * 9 + dd]; + } + } + }; + + void TearDown() override {}; +}; + +TYPED_TEST_SUITE(TestInferDeepPotDefaultFParamPt, ValueTypes); + +TYPED_TEST(TestInferDeepPotDefaultFParamPt, attrs) { + using VALUETYPE = TypeParam; + deepmd::DeepPot& dp = this->dp; + EXPECT_EQ(dp.dim_fparam(), 1); + EXPECT_EQ(dp.dim_aparam(), 1); + EXPECT_TRUE(dp.has_default_fparam()); +} + +TYPED_TEST(TestInferDeepPotDefaultFParamPt, cpu_build_nlist_empty_fparam) { + using VALUETYPE = TypeParam; + std::vector& coord = this->coord; + std::vector& atype = this->atype; + std::vector& box = this->box; + std::vector& aparam = this->aparam; + std::vector& expected_e = this->expected_e; + std::vector& expected_f = this->expected_f; + int& natoms = this->natoms; + double& expected_tot_e = this->expected_tot_e; + std::vector& expected_tot_v = this->expected_tot_v; + deepmd::DeepPot& dp = this->dp; + double ener; + std::vector force, virial; + // Empty fparam — model should use default + std::vector empty_fparam; + dp.compute(ener, force, virial, coord, atype, box, empty_fparam, aparam); + + EXPECT_EQ(force.size(), natoms * 3); + EXPECT_EQ(virial.size(), 9); + + EXPECT_LT(fabs(ener - expected_tot_e), EPSILON); + for (int ii = 0; ii < natoms * 3; ++ii) { + EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON); + } + for (int ii = 0; ii < 3 * 3; ++ii) { + EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON); + } +} + +TYPED_TEST(TestInferDeepPotDefaultFParamPt, cpu_build_nlist_explicit_fparam) { + using VALUETYPE = TypeParam; + std::vector& coord = this->coord; + std::vector& atype = this->atype; + std::vector& box = this->box; + std::vector& fparam = this->fparam; + std::vector& aparam = this->aparam; + std::vector& expected_e = this->expected_e; + std::vector& expected_f = this->expected_f; + int& natoms = this->natoms; + double& expected_tot_e = this->expected_tot_e; + std::vector& expected_tot_v = this->expected_tot_v; + deepmd::DeepPot& dp = this->dp; + double ener; + std::vector force, virial; + // Explicit fparam — backward compat + dp.compute(ener, force, virial, coord, atype, box, fparam, aparam); + + EXPECT_EQ(force.size(), natoms * 3); + EXPECT_EQ(virial.size(), 9); + + EXPECT_LT(fabs(ener - expected_tot_e), EPSILON); + for (int ii = 0; ii < natoms * 3; ++ii) { + EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON); + } + for (int ii = 0; ii < 3 * 3; ++ii) { + EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON); + } +} + +TYPED_TEST(TestInferDeepPotDefaultFParamPt, cpu_lmp_nlist_empty_fparam) { + using VALUETYPE = TypeParam; + std::vector& coord = this->coord; + std::vector& atype = this->atype; + std::vector& box = this->box; + std::vector& aparam = this->aparam; + std::vector& expected_f = this->expected_f; + int& natoms = this->natoms; + double& expected_tot_e = this->expected_tot_e; + std::vector& expected_tot_v = this->expected_tot_v; + deepmd::DeepPot& dp = this->dp; + float rc = dp.cutoff(); + int nloc = coord.size() / 3; + std::vector coord_cpy; + std::vector atype_cpy, mapping; + std::vector > nlist_data; + _build_nlist(nlist_data, coord_cpy, atype_cpy, mapping, coord, + atype, box, rc); + int nall = coord_cpy.size() / 3; + std::vector ilist(nloc), numneigh(nloc); + std::vector firstneigh(nloc); + deepmd::InputNlist inlist(nloc, &ilist[0], &numneigh[0], &firstneigh[0]); + convert_nlist(inlist, nlist_data); + + double ener; + std::vector force_, virial; + std::vector empty_fparam; + dp.compute(ener, force_, virial, coord_cpy, atype_cpy, box, nall - nloc, + inlist, 0, empty_fparam, aparam); + std::vector force; + _fold_back(force, force_, mapping, nloc, nall, 3); + + EXPECT_EQ(force.size(), natoms * 3); + EXPECT_EQ(virial.size(), 9); + + EXPECT_LT(fabs(ener - expected_tot_e), EPSILON); + for (int ii = 0; ii < natoms * 3; ++ii) { + EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON); + } + for (int ii = 0; ii < 3 * 3; ++ii) { + EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON); + } +} + +// Test that a model without default_fparam reports false +template +class TestInferDeepPotNoDefaultFParamPt : public ::testing::Test { + protected: + deepmd::DeepPot dp; + + void SetUp() override { +#ifndef BUILD_PYTORCH + GTEST_SKIP() << "Skip because PyTorch support is not enabled."; +#endif + dp.init("../../tests/infer/fparam_aparam.pth"); + }; + + void TearDown() override {}; +}; + +TYPED_TEST_SUITE(TestInferDeepPotNoDefaultFParamPt, ValueTypes); + +TYPED_TEST(TestInferDeepPotNoDefaultFParamPt, no_default_fparam) { + using VALUETYPE = TypeParam; + deepmd::DeepPot& dp = this->dp; + EXPECT_EQ(dp.dim_fparam(), 1); + EXPECT_FALSE(dp.has_default_fparam()); +} diff --git a/source/lmp/tests/test_lammps_faparam_pt.py b/source/lmp/tests/test_lammps_faparam_pt.py new file mode 100644 index 0000000000..6a22282f43 --- /dev/null +++ b/source/lmp/tests/test_lammps_faparam_pt.py @@ -0,0 +1,134 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +"""Test LAMMPS with default_fparam (PyTorch backend).""" + +import os +from pathlib import ( + Path, +) + +import numpy as np +import pytest +from lammps import ( + PyLammps, +) +from write_lmp_data import ( + write_lmp_data, +) + +pth_file = ( + Path(__file__).parent.parent.parent + / "tests" + / "infer" + / "fparam_aparam_default.pth" +) +data_file = Path(__file__).parent / "data.lmp" + +# expected values from fparam_aparam_default.pth with default_fparam=[0.25852028] +expected_ae = np.array( + [ + -1.038271223729637e-01, + -7.285433579124989e-02, + -9.467600492266426e-02, + -1.467050207422953e-01, + -7.660561676973243e-02, + -7.277296000253175e-02, + ] +) +expected_e = np.sum(expected_ae) +expected_f = np.array( + [ + 6.622266941151356e-02, + 5.278739714221517e-02, + 2.265728009692279e-02, + -2.606048291367521e-02, + -4.538812303131843e-02, + 1.058247419681242e-02, + 1.679392617013225e-01, + -2.257826240741907e-03, + -4.490146347357200e-02, + -1.148364179422036e-01, + -1.169790528013792e-02, + 6.140403441496690e-02, + -8.078778123309406e-02, + -5.838879041789346e-02, + 6.773641084621368e-02, + -1.247724902386317e-02, + 6.494524782787654e-02, + -1.174787360813438e-01, + ] +).reshape(6, 3) + +box = np.array([0, 13, 0, 13, 0, 13, 0, 0, 0]) +coord = np.array( + [ + [12.83, 2.56, 2.18], + [12.09, 2.87, 2.74], + [0.25, 3.32, 1.68], + [3.36, 3.00, 1.81], + [3.51, 2.51, 2.60], + [4.27, 3.22, 1.56], + ] +) +type_OH = np.array([1, 1, 1, 1, 1, 1]) + + +def setup_module() -> None: + if os.environ.get("ENABLE_PYTORCH", "1") != "1": + pytest.skip( + "Skip test because PyTorch support is not enabled.", + ) + write_lmp_data(box, coord, type_OH, data_file) + + +def teardown_module() -> None: + if data_file.exists(): + os.remove(data_file) + + +def _lammps(data_file, units="metal") -> PyLammps: + lammps = PyLammps() + lammps.units(units) + lammps.boundary("p p p") + lammps.atom_style("atomic") + lammps.neighbor("2.0 bin") + lammps.neigh_modify("every 10 delay 0 check no") + lammps.read_data(data_file.resolve()) + lammps.mass("1 16") + lammps.timestep(0.0005) + lammps.fix("1 all nve") + return lammps + + +@pytest.fixture +def lammps(): + lmp = _lammps(data_file=data_file) + yield lmp + lmp.close() + + +def test_pair_deepmd_default_fparam(lammps) -> None: + """Test that model with default_fparam works without providing fparam.""" + lammps.pair_style(f"deepmd {pth_file.resolve()} aparam 0.25852028") + lammps.pair_coeff("* *") + lammps.run(0) + assert lammps.eval("pe") == pytest.approx(expected_e) + for ii in range(6): + assert lammps.atoms[ii].force == pytest.approx( + expected_f[lammps.atoms[ii].id - 1] + ) + lammps.run(1) + + +def test_pair_deepmd_default_fparam_explicit(lammps) -> None: + """Test that explicit fparam still works with default_fparam model.""" + lammps.pair_style( + f"deepmd {pth_file.resolve()} fparam 0.25852028 aparam 0.25852028" + ) + lammps.pair_coeff("* *") + lammps.run(0) + assert lammps.eval("pe") == pytest.approx(expected_e) + for ii in range(6): + assert lammps.atoms[ii].force == pytest.approx( + expected_f[lammps.atoms[ii].id - 1] + ) + lammps.run(1) diff --git a/source/tests/infer/fparam_aparam_default.pth b/source/tests/infer/fparam_aparam_default.pth new file mode 100644 index 0000000000..b28adf574c Binary files /dev/null and b/source/tests/infer/fparam_aparam_default.pth differ diff --git a/source/tests/infer/fparam_aparam_default.yaml b/source/tests/infer/fparam_aparam_default.yaml new file mode 100644 index 0000000000..6d64bfc328 --- /dev/null +++ b/source/tests/infer/fparam_aparam_default.yaml @@ -0,0 +1,2042 @@ +"@variables": + min_nbor_dist: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: 2.353743796396622 +backend: PyTorch +model: + "@class": Model + "@variables": + out_bias: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - - 0.0 + out_std: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - - 1.0 + "@version": 2 + atom_exclude_types: [] + descriptor: + "@class": Descriptor + "@variables": + davg: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + - - 0.06225070363287908 + - 0.0 + - 0.0 + - 0.0 + dstd: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + - - 0.1045454866005929 + - 0.07024933895618589 + - 0.07024933895618589 + - 0.07024933895618589 + "@version": 2 + activation_function: tanh + axis_neuron: 8 + embeddings: + "@class": NetworkCollection + "@version": 1 + ndim: 2 + network_type: embedding_network + networks: + - "@class": EmbeddingNetwork + "@version": 2 + activation_function: tanh + bias: true + in_dim: 1 + layers: + - "@class": Layer + "@variables": + b: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - -0.5393433532012333 + - -2.1450802206126722 + - -0.6454751987088789 + - -0.43530560428805 + - -1.1264141395910752 + idt: null + w: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - -0.11928431211390167 + - 0.2972334263634328 + - -0.7895724892234077 + - -0.031767124148992236 + - 0.3367750863702063 + "@version": 1 + activation_function: tanh + bias: true + precision: float64 + resnet: true + use_timestep: false + - "@class": Layer + "@variables": + b: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - -1.4825567193011566 + - -0.9328060898428915 + - 0.17844735546789897 + - -0.32276558313671316 + - -1.2403350958455899 + - 0.4984588392035866 + - 0.4096734303015938 + - 0.9216217516087604 + - 1.9382946827757532 + - -0.8900825790436644 + idt: null + w: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - 0.11435909737502459 + - 0.1858728895190871 + - -0.2046786682461315 + - 0.2467186683996842 + - 0.08335016882362171 + - -0.5814534963162596 + - 0.15801370455189517 + - 0.0160151118247912 + - 0.054187549158138344 + - 0.4740701501166596 + - - 0.5766099594232977 + - 0.21065072239837349 + - 0.537532747392393 + - 0.6009469561755785 + - -0.11567151274046139 + - -0.03665499354986033 + - -0.23446891253226423 + - -0.09647788089595859 + - 0.3856221387557168 + - -0.3968673775873514 + - - 0.1875434492016538 + - -0.07624864471116187 + - -0.06230743206741011 + - 0.2049242424042828 + - 0.2215121779629657 + - 0.26435976550520995 + - -0.5543559867388343 + - 0.07241682722416391 + - 0.3138725568502555 + - 0.46296788670009364 + - - 0.010618533857717957 + - 0.5135341783276981 + - -0.0954664006160769 + - -0.2899316389193315 + - 0.030890827042339808 + - -0.11569419933900991 + - -0.17462260798908213 + - -0.4740075095822978 + - -0.09866689634273408 + - -0.23624222856005475 + - - -0.041821675313334084 + - -0.32241145585904374 + - 0.1788430731707003 + - -0.1357827518115096 + - 0.4133170897434098 + - -0.09154631770769013 + - -0.14482509060503318 + - -0.33238288638280794 + - -0.2468227401238795 + - -0.1766640540729262 + "@version": 1 + activation_function: tanh + bias: true + precision: float64 + resnet: true + use_timestep: false + - "@class": Layer + "@variables": + b: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - 0.1201069747876845 + - 0.7367725819668443 + - 1.3647773619786914 + - 0.3276073171969035 + - -1.7919393677158297 + - 1.2695684144074844 + - 1.6264610253229945 + - -0.6596208182376818 + - -0.25599475764779905 + - -0.20955836916953693 + - -0.19058013433355409 + - -0.7781958687273405 + - 1.819540068491198 + - -0.10531953749276078 + - -0.3840201271512646 + - 0.2261346254061039 + - 0.5160027785338503 + - -1.2932170257258633 + - 1.1016809843395212 + - 1.2104655698629647 + idt: null + w: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - 0.36479285623651586 + - 0.006230778209119185 + - 0.19285426823598684 + - 0.42341883381934226 + - 0.08488016007118615 + - 0.07417419646053469 + - 0.29744724429150554 + - -0.07474333789906382 + - -0.1818199151515834 + - -0.26603301049949607 + - 0.3078698773870124 + - 0.20151709691770464 + - 0.03557628234114872 + - -0.32698226839190836 + - 0.20487181768902804 + - -0.020566873529933534 + - 0.41602167574761584 + - 0.004571384086449874 + - 0.13699622738678013 + - 0.10035883288136736 + - - 0.2335663046377626 + - 0.5084782746496342 + - 0.2691345234737484 + - 0.28954698906185733 + - -0.10160999738871264 + - -0.06151616931627496 + - 0.11846148714060181 + - 0.1753863714525111 + - 0.02365884913524979 + - -0.20819320090686072 + - -0.1680690262500994 + - -0.08683275622790282 + - 0.2838212058686858 + - 0.2426095413644612 + - -0.08679734198420512 + - -0.18323035422055184 + - -0.09433977101376215 + - 0.027262795136855658 + - -0.023264712403720276 + - 0.1440084370778499 + - - -0.19800674240769445 + - -0.4337419598491409 + - 0.05608553079271123 + - -0.05758274011659217 + - -0.027373990505514343 + - -0.1338263620354308 + - 0.025235961882500983 + - -0.32747798191981126 + - 0.08755203035655969 + - -0.28082595784372116 + - 0.029375776231390427 + - 0.04683696719205464 + - 0.36576930717548567 + - 0.17132547751955568 + - -0.05467794509243931 + - -0.07915366823056322 + - -0.01972919118426503 + - 0.1828356344886703 + - -0.19174912898967905 + - 0.2314996687643926 + - - 0.1547112222174452 + - 0.10317233053523585 + - 0.22456533518332988 + - 0.16623746811473408 + - -0.21431151292363557 + - -0.10495879918074288 + - -0.2573625997343867 + - -0.21033878609863316 + - 0.1199356702981901 + - -0.1433043097611193 + - -0.1141746559395708 + - 0.1805260344221258 + - -0.16348218651403765 + - 0.4778734738305701 + - -0.01411535164296469 + - 0.12549345169281634 + - -0.25895158182873745 + - 0.31651478356560897 + - -0.4272329758673173 + - 0.1614936826281342 + - - 0.020553878193726387 + - 0.08467130979452786 + - 0.1257624346824833 + - -0.06255637560195629 + - 0.4947895197382922 + - -0.4301800550410035 + - -0.2680032282672294 + - -0.37321844642267193 + - -0.4147751188890007 + - -0.03850716845999225 + - 0.2962385417962931 + - 0.08566380151205333 + - 0.18262487559708918 + - 0.4978161183425859 + - 0.11606675328556663 + - -0.08309042310336472 + - -0.32608854872962817 + - 0.12203294371265407 + - -0.05502616235182448 + - 0.06339059425565763 + - - 0.08041981168429196 + - -0.18655983758104588 + - 0.3440468912351547 + - 0.18007991652713864 + - -0.26769124465454697 + - -0.22515099533875038 + - 0.010046290623469076 + - -0.3060598214140068 + - 0.17153966947778707 + - 0.1450276582197883 + - -0.137381880127616 + - -0.009838243796702775 + - -0.026026382110747454 + - -0.127133649599663 + - 0.12790343008211855 + - -0.22780606149921667 + - -0.13340378372252717 + - 0.047229295475135206 + - -0.19757772328573717 + - 0.15873773805051522 + - - 0.11754099189005918 + - 0.05328869164460871 + - 0.10575905288614194 + - -0.0648839843054928 + - -0.01964613771739507 + - 0.018513921569411364 + - 0.05006509187887497 + - -0.15875884760382486 + - -0.0760710256839464 + - -0.09595382909193642 + - 0.14580307776436208 + - 0.02454644204050615 + - 0.16958594915603495 + - -0.14926312088871038 + - -0.22871464655284424 + - 0.02879664508161061 + - 0.030087978759655958 + - 0.01960603757242702 + - -0.05486393910273347 + - -0.35089160240764955 + - - -0.10279585336093233 + - 0.032693882475248515 + - 0.0280732634792298 + - -0.0894714462527181 + - 0.04306096992210535 + - 0.1153944352250339 + - -0.35215098179344556 + - 0.5805648083400043 + - 0.2742969592399747 + - -0.1542415768215887 + - 0.09682940523416274 + - -0.1154100806671915 + - 0.35056959041085906 + - 0.06879342198021826 + - 0.1220998002145607 + - -0.12396446345007209 + - -0.1404987629693105 + - -0.1412599366278345 + - -0.12767367628626503 + - -0.17006632219979811 + - - -0.2708381903697149 + - 0.08809673356644092 + - -0.1775261194393731 + - -0.08717772592963265 + - -0.29149988990573733 + - -0.1748479125994894 + - 0.05055718998107484 + - -0.22146264983128117 + - -0.11194605751733501 + - 0.17778575717455314 + - -0.1822061751589591 + - -0.03167073142234772 + - -0.248162745929766 + - 0.03355957978648537 + - 0.02732699996949167 + - -0.20876545360591556 + - -0.25526396641058235 + - -0.037573152397033564 + - 0.40618926480471745 + - -0.16295943084025397 + - - 0.22152432511567405 + - -0.051110187619921824 + - 0.23884753240434317 + - 0.06419622269668213 + - -0.058475266992462034 + - -0.3263666640351109 + - -0.058320991517536176 + - 0.12299073454228615 + - -0.1444481559828422 + - -0.044033075043473605 + - 0.02108805126054965 + - -0.25969578525546766 + - 0.06417081964138613 + - 0.11383120767633738 + - 0.09744044663714806 + - 0.03209702548662613 + - -0.2605622053921571 + - 0.21508910646218854 + - 0.14017309092618999 + - 0.2632923995081555 + "@version": 1 + activation_function: tanh + bias: true + precision: float64 + resnet: true + use_timestep: false + neuron: + - 5 + - 10 + - 20 + precision: float64 + resnet_dt: false + ntypes: 1 + env_mat: + rcut: 6.0 + rcut_smth: 1.8 + env_protection: 0.0 + exclude_types: [] + neuron: &id002 + - 5 + - 10 + - 20 + precision: float64 + rcut: 6.0 + rcut_smth: 1.8 + resnet_dt: false + sel: &id003 + - 60 + set_davg_zero: false + spin: null + trainable: true + type: se_e2_a + type_map: &id001 + - O + type_one_side: false + fitting: + "@class": Fitting + "@variables": + aparam_avg: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - 0.47395382821559906 + aparam_inv_std: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - 4.641802480248834 + bias_atom_e: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - -3.2536784984447333 + default_fparam_tensor: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - 0.25852028 + fparam_avg: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - 0.47395382821559906 + fparam_inv_std: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - 4.641802480248834 + "@version": 2 + activation_function: tanh + atom_ener: &id004 [] + default_fparam: + - 0.25852028 + dim_descrpt: 160 + dim_out: 1 + exclude_types: [] + layer_name: null + mixed_types: false + nets: + "@class": NetworkCollection + "@version": 1 + ndim: 1 + network_type: fitting_network + networks: + - "@class": FittingNetwork + "@version": 1 + activation_function: tanh + bias_out: true + in_dim: 162 + layers: + - "@class": Layer + "@variables": + b: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - -1.2144802571743936 + - -0.03360820324898561 + - -0.32748176034999665 + - 0.40478717073318965 + - 0.3506512036523146 + idt: null + w: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - 0.08283890875661308 + - -0.0978967701076519 + - 0.003507960708749194 + - 0.043902693144219435 + - 0.21935675065605265 + - - 0.03528979360368904 + - -0.04396331001149691 + - -0.06406610074590875 + - 0.1144724330777556 + - 0.015195073767509615 + - - 0.09038859567753689 + - -0.15874654313829165 + - 0.08609020738727619 + - 0.1899099366136468 + - 0.13841117539665584 + - - 0.03175431448532425 + - -0.1535357218879254 + - 0.25869145779327773 + - 0.03757584558395431 + - 0.11274197995195152 + - - 0.11090971241467222 + - -0.018577141043065116 + - 0.07857594393082973 + - 0.030303966103298597 + - 0.0340220832150965 + - - -0.04744913948726431 + - 0.07313935755463763 + - -0.2298281796080754 + - -0.14731767047592295 + - -0.11165442046413367 + - - -0.12781258197262835 + - 0.030744384941131967 + - -0.08098840732625202 + - -0.14466281831607997 + - -0.1337640503044872 + - - 0.05523379122259124 + - 0.00119807138266962 + - 0.10061989470128524 + - 0.06238419047606993 + - 0.016564460772237204 + - - 0.01329557105905656 + - 0.07399559165612384 + - -0.0278703139161788 + - 0.0377745548608891 + - 0.12816280792147713 + - - 0.020890946128730575 + - -0.1774359725055422 + - 0.06538527739446592 + - 0.07410844388766565 + - 0.16057870693999352 + - - 0.04887041851180407 + - -0.11594036341873497 + - 0.22143497264935985 + - 0.06716963877777854 + - -0.09681406060180853 + - - 0.10711478920660919 + - -0.06273410773175234 + - 0.041528510879292456 + - 0.06662649646340289 + - 0.07832493455378677 + - - 0.1475926698637375 + - -0.0635579695407271 + - -0.03344649847198213 + - 0.08073718154398446 + - 0.023729702268273596 + - - -0.06299562540458771 + - 0.02790958642583323 + - 0.042925426853917086 + - -0.043080734640431294 + - 0.0886100650975182 + - - -0.07298869297583842 + - 0.08362453804085901 + - -0.10254296209306389 + - -0.11346591444568707 + - 0.0011697272935412032 + - - -0.06284676877905232 + - -0.14682088259713438 + - -0.1540766626493956 + - 0.15451961107917778 + - 0.14124516378916394 + - - 0.14965278709933721 + - -0.07557960506294555 + - 0.03814400661732616 + - 0.014740237572905653 + - 0.004520744995729561 + - - 0.25442228751520185 + - -0.03978000431857911 + - 0.09971602753499588 + - 0.23564540435126838 + - 0.20605385943445187 + - - -0.13237780832059517 + - 0.018484972381499567 + - -0.10275056910655743 + - -0.07207240104711896 + - -0.10787119389915188 + - - 0.007467834905230374 + - -0.08771349514122567 + - 0.16061592136898323 + - 0.17448059634113944 + - 0.001254834130330242 + - - 0.006207064950141034 + - -0.1564454400305388 + - 0.10375891706231936 + - 0.08904894303862643 + - 0.07462306715946615 + - - -0.1251398764721171 + - 0.15120238835065014 + - -0.1831913651482331 + - -0.1244459354646236 + - 0.03912712030297354 + - - 0.018623627215325136 + - 0.06424171502347877 + - -0.03831522154927344 + - 0.03046077526384358 + - -0.12461580567300859 + - - -0.19847024719342826 + - 0.059009181788912936 + - -0.08350177498884459 + - -0.12545114695970203 + - -0.1468460513523637 + - - 0.11393930952419748 + - -0.11107290650331157 + - 0.12227069148850617 + - 0.04815494958784596 + - 0.1612899234359781 + - - 0.10601521023885997 + - -0.09196068620290285 + - 0.13193361482364854 + - 0.04385293520329707 + - 0.050967645371539486 + - - 0.06042791267994735 + - -0.11048862787208417 + - 0.12322686424858807 + - 0.050218727918925135 + - 0.034723636344222486 + - - 0.09006114562774628 + - -0.21569611118707552 + - 0.02851760340965838 + - -0.04409903315009718 + - 0.05762618418120403 + - - 0.13596395782174261 + - 0.027147661725684454 + - -0.05034028137334426 + - 0.16943496840232128 + - 0.07271377861600281 + - - -0.07721600699149955 + - 0.13422254870195505 + - -0.09492703373929659 + - -0.07219267236006545 + - -0.12634390294392914 + - - -0.06039048298213025 + - 0.054958992262485414 + - 0.034089198483516436 + - 0.005133140077934299 + - -0.18739362302748785 + - - 0.07646701318073375 + - -0.09481384655532439 + - 0.07416912766826537 + - 0.20335244583215797 + - 0.08331892191067221 + - - 0.18034452460125583 + - 0.00456948388776407 + - 0.08823946566167708 + - -0.04228510270222473 + - 0.18231595201133147 + - - 0.0795629150388751 + - -0.20469823985875157 + - 0.019615892361513284 + - 0.12418021562764514 + - 0.22170705487180384 + - - 0.06272944209000424 + - -0.041315715198039504 + - 0.19478741045799394 + - 0.10909209019713605 + - 0.10630542145264084 + - - -0.08933716747297155 + - -0.062200016265509334 + - 0.08900863514351615 + - 0.04893902535667196 + - -3.765312270595895e-05 + - - 0.003730060841861892 + - 0.002239630051505072 + - 0.17740098388082823 + - 0.08781296067230691 + - 0.06877106035934107 + - - -0.06316935427528506 + - -0.052553339749666535 + - 0.02348906186352118 + - -0.1596026438047639 + - 0.016263068205026217 + - - -0.09198578116614688 + - 0.012054378107260741 + - 0.04676321793306408 + - -0.08257200308143862 + - -0.2041747404745336 + - - -0.08233149371408043 + - 0.06421171121416379 + - -0.1702579613292675 + - -0.08384088842840069 + - 0.017948063424081326 + - - -0.08731144852054175 + - 0.09668694323479392 + - -0.15999856172844967 + - -0.023761608989788675 + - -0.17117326225806032 + - - -0.1335663634738568 + - 0.08237499531345333 + - -0.09032706726341058 + - 0.03995257507901939 + - -0.16842830478635343 + - - -0.14414965058275372 + - 0.03763197194901953 + - -0.16521995604738912 + - -0.03599306090315186 + - -0.08643666806796473 + - - -0.10841622797155179 + - 0.1277468905523885 + - 0.002606909247989555 + - -0.03958687416728544 + - -0.14894144813660132 + - - 0.047902133592362055 + - 0.16264003161297788 + - -0.14537880005036363 + - 0.002064587026780515 + - -0.012237863406478361 + - - 0.17941505091673662 + - -0.10494508435997077 + - 0.16685378766479267 + - 0.055721537194068374 + - 0.06342610425363347 + - - 0.010011662881359002 + - 0.00844874924685302 + - 0.11213400788939097 + - 0.09549592948100319 + - -0.013687746646703797 + - - 0.11291973595835432 + - -0.07798782665519784 + - 0.07319647428363084 + - -0.0859350446696214 + - -0.11747308152826166 + - - -0.020739022868969875 + - 0.021520445116984123 + - -0.11163206030705296 + - -0.2551524770429758 + - -0.02104652688629577 + - - 0.02243092152374645 + - 0.1321278427577563 + - -0.0060529278635168245 + - -0.12658682968275983 + - -0.17292448407426056 + - - 0.019263075678292153 + - -0.03753010270766834 + - 0.056799448503123934 + - -0.11085253430147479 + - -0.07521764536173788 + - - -0.008862519308048367 + - 0.05922087608131348 + - -0.04340115806467522 + - -0.07816409726789776 + - -0.05716194602178932 + - - -0.063408376615269 + - 0.11641598040625065 + - -0.027534044184659986 + - -0.13397746200231797 + - -0.1763597151426023 + - - 0.08430956202813064 + - -0.10531313294199231 + - 0.12484544913819298 + - 0.0553876331512594 + - 0.10915732873455615 + - - 0.05770150638409161 + - -0.03051191255747992 + - 0.15907573911823947 + - 0.01078818961555572 + - 0.03849336034055925 + - - -0.1788784477942574 + - 0.05780974788528859 + - -0.016075709839977165 + - -0.06500404476537834 + - -0.002716251603830631 + - - 0.09006796825563741 + - -0.0904929420204248 + - 0.06768095787955528 + - 0.07245649379609936 + - 0.11888153399483643 + - - -0.11027018556057702 + - -0.11390911088681968 + - -0.049404398734417015 + - -0.03638649881135988 + - 0.026265291615660137 + - - -0.0934446170713147 + - 0.09689295458081919 + - 0.05269915046430991 + - 0.02420509250665058 + - -0.16849474552331076 + - - -0.026293451536492245 + - -0.06006005243014565 + - 0.24022729294150433 + - 0.09912989094235534 + - 0.1304448165686265 + - - -0.10942223143228466 + - 0.0632620722963796 + - -0.048662924099958704 + - -0.11712127186161843 + - -0.019264825490795102 + - - 0.06611063053448148 + - 0.047234622931010745 + - 0.062218082455135146 + - 0.00795524688203513 + - -0.17465564651696336 + - - 0.10492267741072867 + - 0.20619015313045283 + - -0.14998164363846797 + - -0.019410069883456397 + - -0.03337796726881261 + - - 0.06599126385451008 + - -0.029630066960402497 + - 0.03304774805215573 + - -0.03239240857835202 + - -0.049862293458798425 + - - -0.16400606524090355 + - 0.02461082804335203 + - 0.12436240584631339 + - -0.029190945922292606 + - 0.04568805996656692 + - - -0.0930682527405759 + - 0.056063362526642464 + - -0.09195551016718798 + - -0.06341600944886001 + - -0.18656755503130626 + - - 0.04773216160515043 + - 0.08844034969990572 + - -0.20802406432595733 + - -0.0820953379249641 + - -0.13153318001360256 + - - 0.12739418932327148 + - 0.05627065925143894 + - 0.07740504983173509 + - -0.15487764898076525 + - 0.006275826359321201 + - - -0.10817059649892483 + - 0.02531720531738993 + - -0.03327261488719224 + - -0.0953751520275134 + - -0.12701285403044454 + - - 0.08099228265910684 + - -0.07569773721797075 + - 0.12871080424177334 + - -0.1365367349439567 + - 0.19470633383694094 + - - -0.10753145878828377 + - -0.03189435254122997 + - -0.13161119754779194 + - -0.0021057573350648853 + - -0.0841044238142517 + - - -0.018208313935999913 + - -0.14254395674968134 + - 0.08312463250023637 + - 0.22628993256491536 + - 0.12130397847770219 + - - -0.14272177404854317 + - 0.11913978131624393 + - -0.07666814703512326 + - -0.1356077228611925 + - -0.008967413232436465 + - - -0.0063789577592416056 + - -0.003367116161589522 + - -0.05775046804713717 + - -0.06316355448601974 + - 0.019177335999794584 + - - -0.019650699471910144 + - -0.033009193380232574 + - -0.1706003834268161 + - -0.0834494296314558 + - -0.10131279487340544 + - - -0.09122567423467215 + - 0.15903750616097936 + - -0.13596722878896966 + - -0.1063514961969653 + - -0.19380358390954508 + - - 0.02590989910635198 + - -0.04196716793415404 + - 0.03392331203961417 + - -0.0670664439810597 + - 0.25134604250970854 + - - -0.14062517779736625 + - 0.14115203189164935 + - -0.08352219767162415 + - -0.027023094676120768 + - -0.07595909325706539 + - - 0.04231220468003574 + - -0.1156682882235978 + - -0.0035416713245802886 + - -0.014432233515029223 + - 0.18097549960605308 + - - -0.08274975492033733 + - -0.06872419639384296 + - -0.08859013097765253 + - -0.07175918527355407 + - -0.10472658765503902 + - - 0.15891561051421385 + - -0.15329373955890807 + - 0.13692919789912686 + - 0.13891255633512659 + - 0.11174367666884788 + - - 0.09575049098683118 + - -0.14251334625674872 + - 0.033762258902280996 + - -0.06649388317938487 + - 0.01563962973416851 + - - 0.060730209603678365 + - -0.12521257069130953 + - 0.05021392103662656 + - 0.08335953175446216 + - 0.05877348062360874 + - - 0.0428007860616611 + - -0.12686533854978582 + - 0.10146828511420027 + - 0.12429447618673943 + - 0.11935460391039295 + - - -0.009619453055945302 + - -0.006364173455932218 + - 0.13541293679652747 + - -0.11746939402807237 + - 0.0324847257975544 + - - 0.03232685092985265 + - 0.15151631307374916 + - 0.013584651577473362 + - -0.19128814709592204 + - -0.14435199321235812 + - - -0.0319002576415077 + - -0.0053020681416126375 + - -0.19760050288466713 + - -0.09530032196383612 + - -0.09489733782737665 + - - 0.1438664624164711 + - 0.06787050479803666 + - 0.01956670274991156 + - 0.04083447321606411 + - 0.21386156355084202 + - - -0.014917264317126233 + - -0.1366377801507765 + - 0.02668872807814398 + - 0.06952162903743021 + - 0.017506086162130913 + - - 0.0440367139368768 + - -0.0885431856895491 + - 0.16730597242451858 + - 0.010477407316439721 + - 0.0649388679752331 + - - 0.09811148126456636 + - -0.2507246973864138 + - 0.017673862879086788 + - 0.0823978644347986 + - 0.05198581404434903 + - - -0.052707039855195384 + - 0.00031348774400268974 + - 0.19022833423183738 + - -0.01848706940035508 + - -0.012313388636278028 + - - 0.04016540728751844 + - -0.04553648918647708 + - 0.1469008909981281 + - -0.00627132191136614 + - 0.04391488889086397 + - - -0.014600356632012083 + - -0.028104930330517905 + - -0.2740906333399828 + - -0.03674304930407705 + - -0.1633308701108342 + - - -0.009019064424266254 + - 0.009209544574238322 + - -0.09699874640100532 + - -0.06481000279736919 + - -0.12039872934213254 + - - 0.1855664494924395 + - 0.08802721768366675 + - 0.1290095140690073 + - 0.06684912669463279 + - 0.21117641748521998 + - - -0.06683819633384791 + - -0.06920510483372247 + - -0.039440826959528455 + - -0.07763487363437074 + - -0.02464049506571708 + - - 0.026678560706908896 + - -0.30845942498468276 + - -0.09754401670430242 + - 0.10718216089365575 + - 0.1465816405381986 + - - -0.00534098419191003 + - 0.07210958543422868 + - -0.028294187508293288 + - -0.22577967735004986 + - 0.03115377530465598 + - - 0.04240424385474482 + - 0.01761433322979715 + - -0.034425310057020805 + - -0.01965144838997553 + - -0.1318308296612131 + - - -0.004080637550202368 + - 0.00434314114623121 + - -0.1312773699828042 + - 0.030336792521441305 + - 0.0788054687638736 + - - -0.10669929586402817 + - 0.16671142083273546 + - -0.08768235696937275 + - -0.08011861963110233 + - -0.027334247787574106 + - - -0.023607914080106564 + - -0.08226925249540906 + - 0.033961522769037446 + - 0.017448829809594793 + - 0.12781278882938715 + - - -0.03151320141674685 + - 0.12722030232635492 + - -0.06120523041890792 + - -0.11721219903471479 + - 0.09894015709624894 + - - 0.09550093583336303 + - -0.011097235035047191 + - 0.1457135362097559 + - 0.121939791312964 + - 0.20072869763055845 + - - 0.01711189774396772 + - -0.09297031914619659 + - 0.054521867319173085 + - 0.009748890431836205 + - -0.03855184001258194 + - - 0.025234076926016383 + - -0.10510897160655577 + - 0.09586892120898095 + - 0.017259769130832145 + - -0.008842993964178513 + - - -0.008697912882316724 + - -0.2475009608232212 + - 0.07912746483607155 + - 0.16112132862240414 + - 0.01786098946154343 + - - 0.16086016770120365 + - -0.12423956485875684 + - 0.047342229897491 + - 0.20725228812186985 + - 0.12986650985714326 + - - 0.04794413683161891 + - 0.1558964571685027 + - -0.11009434956542813 + - -0.050425539614490554 + - -0.12476414234148817 + - - -0.13899016760765584 + - 0.07445142928026079 + - -0.14877548163580992 + - -0.11056104363649503 + - -0.06287520721690669 + - - -0.12163368156993211 + - 0.0012905289766367344 + - 0.07467096666474476 + - -0.042849862293410236 + - -0.012194750943890107 + - - -0.05200862841167023 + - -0.027343136984731103 + - 0.17701610099874313 + - -0.0753785412234156 + - 0.05248499544069008 + - - 0.07380059104977432 + - 0.0056310516664142855 + - -0.015334117856382976 + - -0.13633072522716663 + - -0.1273748709185686 + - - 0.060006242878051105 + - 0.05299291144573065 + - -0.0776724181143225 + - 0.03461305503571957 + - -0.018177903411168112 + - - 0.07484262276560463 + - -0.13483837672465515 + - 0.04787462871104627 + - 0.1959003849804364 + - 0.13378675590082484 + - - 0.11633445580198283 + - -0.07601237292207827 + - 0.18624497725694927 + - 0.05473812370697779 + - 0.09493370548620514 + - - -0.061661541185171746 + - 0.12254498053097647 + - -0.07031084153649944 + - -0.022286231371821716 + - -0.17241809734355634 + - - -0.12288526511572416 + - 0.02467825036628095 + - -0.16950023412254492 + - 0.012309849101453092 + - 0.0759137580514199 + - - -0.173563601323735 + - 0.12234834648532165 + - -0.022808546051849322 + - -0.09393856539130278 + - -0.06722363864168321 + - - -0.08936974047423063 + - 0.0918878145241707 + - 0.01586113482228164 + - 0.020514458962113704 + - -0.009706825772574963 + - - -0.10580562388600193 + - 0.11514370078068678 + - -0.04165429353621947 + - -0.02187628213897798 + - -0.018090000472466648 + - - 0.06296131654228153 + - -0.016545338791117265 + - -0.06775332185266952 + - 0.06322851923974751 + - 0.015625763925951094 + - - -0.0948642331036534 + - 0.12794904334513205 + - 0.06832836380364479 + - -0.029756081099133292 + - -0.09723043304550194 + - - -0.09397628932443784 + - 0.18233113748645402 + - 0.0563836906602804 + - 0.005657967512147693 + - -0.0638840744311192 + - - 0.18743418039890672 + - 0.052291703216797596 + - 0.005696478611152623 + - 0.008558946601956937 + - -0.01988140008429022 + - - -0.06975364040437583 + - 0.07021616323326019 + - -0.015568757564643146 + - 0.17534176296722698 + - -0.008661185105307974 + - - 0.014688943940397924 + - -0.2534642177230792 + - -0.0461734410192206 + - 0.06469598593965059 + - 0.20145458281241999 + - - 0.03409381212875548 + - -0.00658950489832221 + - 0.05083460077783896 + - -0.044806581261960965 + - -0.06829950275313887 + - - -0.06836778363832119 + - 0.036652808557390594 + - 0.05154459073325666 + - -0.03393746858146077 + - -0.07981031796178076 + - - -0.0020857702751361415 + - -0.06463620116180253 + - -0.043904880045130726 + - 0.017707470360044678 + - 0.24495741443727415 + - - -0.06398431134488457 + - 0.10588737469587119 + - 0.009664858328323018 + - 0.0009208248707322619 + - 0.0642137240540866 + - - -0.013866083573081696 + - 0.0805802220722968 + - -0.17216982733113226 + - 0.05298552572997218 + - -0.12767048637402634 + - - -0.006435623656658306 + - -0.08014705242209205 + - 0.047568434321081945 + - 0.06062975733708756 + - 0.1094661612154249 + - - 0.09343871871996914 + - -0.0309464701648373 + - -0.007024372444287255 + - 0.07397166218068804 + - 0.11034345337165591 + - - 0.10744199949284926 + - -0.0009836920368867857 + - -0.02763319989292998 + - 0.07779717111774624 + - 0.058937484894285755 + - - 0.09398607192126467 + - 0.058290807180027604 + - 0.18359030653625402 + - 0.09497664165281902 + - 0.11329176560265439 + - - -0.023462223397806903 + - 0.17396611369105727 + - 0.005712286495724057 + - 0.13078711933908713 + - 0.11511384766323744 + - - 0.0013780436681818252 + - -0.03834398468566224 + - -0.0006388795139380007 + - -0.0716627946234572 + - 0.01348373124584959 + - - -0.01436050649345182 + - -0.08277294510178755 + - 0.046852303753012 + - 0.0193111738398851 + - 0.11542535201442433 + - - 0.03508671629256297 + - -0.059713499753888455 + - 0.04941037124505839 + - -0.07947938257631662 + - 0.1819189541433824 + - - -0.031759775144887877 + - 0.043614376396095965 + - -0.16808953492358455 + - -0.08856224112884986 + - -0.013469431209871555 + - - -0.040358156466436416 + - 0.2168534874563718 + - -0.1499436970060153 + - -0.030370155864311042 + - -0.0924971868424551 + - - 0.07277441093727699 + - -0.012001380906576814 + - -0.037307546142875236 + - -0.09706714758323393 + - -0.10668390950194252 + - - -0.16483666701851443 + - 0.052244574742924245 + - -0.07686999126810759 + - -0.07383797345483081 + - -0.12733678379356012 + - - -0.005633716650528983 + - 0.07649814078301913 + - -0.14413621346514027 + - -0.05138998299287326 + - -0.11204568030686782 + - - 0.07420791411113495 + - 0.18273535107117944 + - -0.1824978879975496 + - -0.25039054106960956 + - -0.1464169408318536 + - - -0.11520816602204983 + - 0.12207963115583792 + - -0.11075990250294324 + - 0.08281098605338619 + - -0.07416715141336498 + - - -0.06922772981633313 + - 0.06945267852654755 + - -0.08522553796279313 + - -0.03832391591069263 + - 0.08522457948381255 + - - 0.0747851279355739 + - 0.03505096878374401 + - -0.03038099684359619 + - 0.035646787663883406 + - -0.09488507373637782 + - - -0.01908948393084388 + - -0.09092284931820235 + - 0.16700890907149846 + - 0.11267359519422974 + - -0.1341294014993034 + - - 0.11596772758398378 + - 0.03127419783619571 + - -0.1792646787183661 + - -0.037779059706928415 + - 0.07638990256598455 + - - -0.04033192439693881 + - 0.03543011103813353 + - -0.02535543169143005 + - -0.08302508654213196 + - 0.02185644392343393 + - - 0.01709853332111763 + - -0.021703366212802215 + - -0.014167374926209945 + - -0.0008147534049811085 + - 0.11508463491653442 + - - -0.02387846723515887 + - 0.05095169297915335 + - -0.2003764130469785 + - -0.08453792678351085 + - -0.08842723650958483 + - - -0.01022379743042409 + - 0.06067830096349489 + - 0.039418895147780054 + - 0.11407337758778067 + - -0.01452204833750862 + - - -0.00861392340118684 + - -0.13133327879922396 + - 0.13243783892259908 + - 0.1217633793771405 + - 0.0778551058668577 + - - -0.1418440665650706 + - 0.04902378507010331 + - -0.07566775026544358 + - -0.13846481809984384 + - -0.1218415195492671 + - - 0.1295360818691439 + - -0.017912489936880535 + - 0.14506706906399028 + - -0.11205537174507366 + - 0.17846997007582133 + - - -0.11229772955165573 + - 0.04782537610984338 + - -0.09393775946200425 + - 0.0521574964474245 + - -0.019777675916293043 + - - 0.024288630801507755 + - 0.048125249562928685 + - -0.005683800549228955 + - 0.013174821907661994 + - -0.06343759373213151 + - - 0.020846779280649128 + - -0.008650835636969233 + - -0.024671299410919664 + - -0.04641395204195701 + - 0.013138472356613858 + "@version": 1 + activation_function: tanh + bias: true + precision: float64 + resnet: true + use_timestep: false + - "@class": Layer + "@variables": + b: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - -0.36663563759715034 + - -1.9674781659950629 + - -0.7706772445689102 + - -0.2704578771477117 + - -0.974412817042122 + idt: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - 0.19202896546945716 + - 0.21219214365596734 + - 0.011425731631279476 + - 0.1909897098276416 + - -0.0063387203161913855 + w: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - -0.12082557127088184 + - 0.19201208898457822 + - -0.47654503564428036 + - -0.06961590722963343 + - 0.3161625361595068 + - - -0.24153267385395227 + - 0.4956818395782298 + - 0.07926172082929345 + - -0.5420573418577604 + - -0.055069219822197084 + - - 0.38671310161848943 + - -0.21698802223134325 + - 0.025710327531129906 + - 0.18784631102849803 + - 0.04000085019525522 + - - 0.5852368074233382 + - -0.12663457692866442 + - 0.4235866140500294 + - 0.32004290343618924 + - -0.24397935646287897 + - - 0.3198053703360751 + - -0.25848562067335357 + - -0.555361756589043 + - 0.4455381547462723 + - 0.06850644751743053 + "@version": 1 + activation_function: tanh + bias: true + precision: float64 + resnet: true + use_timestep: true + - "@class": Layer + "@variables": + b: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - -1.3028254467408813 + - -0.8147229531019917 + - 0.23327656293240528 + - -0.14396675976213297 + - -1.2399889770309833 + idt: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - 0.1784239089956849 + - 0.1856773431599767 + - 0.1872600391628524 + - 0.1898682837343385 + - 0.0018061590420037404 + w: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - -0.05915789241446439 + - 0.08097927097796409 + - -0.2542003098763919 + - 0.11053875887676368 + - 0.09691398510842836 + - - -0.7162650646630039 + - 0.39378339944887797 + - -0.1811395140957742 + - 0.07716803869927957 + - 0.4406092479261236 + - - 0.6804046248045935 + - 0.1168204253049476 + - 0.6529811246608016 + - 0.726169695853545 + - -0.16678674470969798 + - - 0.14903963554478278 + - -0.27999969079824943 + - -0.13752571375297468 + - 0.6624260246840007 + - -0.4809503819692311 + - - 0.24342961825577242 + - -0.22508292637304764 + - -0.07797877501014737 + - 0.2513712924558181 + - 0.2826793939516533 + "@version": 1 + activation_function: tanh + bias: true + precision: float64 + resnet: true + use_timestep: true + - "@class": Layer + "@variables": + b: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - 0.27935157276531497 + idt: null + w: + "@class": np.ndarray + "@is_variable": true + "@version": 1 + dtype: float64 + value: + - - 0.7197415086181096 + - - -0.20543635513622743 + - - 0.324034267585776 + - - 0.8831348697832359 + - - 0.1948665043063704 + "@version": 1 + activation_function: none + bias: true + precision: float64 + resnet: false + use_timestep: false + neuron: + - 5 + - 5 + - 5 + out_dim: 1 + precision: float64 + resnet_dt: true + ntypes: 1 + neuron: &id005 + - 5 + - 5 + - 5 + ntypes: 1 + numb_aparam: 1 + numb_fparam: 1 + precision: float64 + rcond: 0.001 + resnet_dt: true + spin: null + tot_ener_zero: false + trainable: + - true + - true + - true + - true + type: ener + type_map: *id001 + use_aparam_as_mask: false + var_name: energy + pair_exclude_types: [] + preset_out_bias: null + rcond: null + type: standard + type_map: *id001 +model_def_script: + data_bias_nsample: 10 + data_stat_nbatch: 1 + data_stat_protect: 0.01 + descriptor: + activation_function: tanh + axis_neuron: 8 + exclude_types: [] + neuron: *id002 + precision: default + rcut: 6.0 + rcut_smth: 1.8 + resnet_dt: false + seed: 1 + sel: *id003 + set_davg_zero: false + trainable: true + type: se_e2_a + type_one_side: false + fitting_net: + activation_function: tanh + atom_ener: *id004 + neuron: *id005 + numb_aparam: 1 + numb_fparam: 1 + precision: default + rcond: 0.001 + resnet_dt: true + seed: 1 + trainable: true + type: ener + use_aparam_as_mask: false + type_map: *id001 +software: deepmd-kit +tf_version: 2.15.0 +time: "2024-07-27 04:31:02.669792" +version: 3.0.0b3.dev27+gfda408f1c.d20240726