diff --git a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h index 98b1c37b7dee207fb9a0c545336f773609d3470c..6f6187dbc2fffd1d7b799e33a1765d4db11a3fe1 100644 --- a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h +++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h @@ -10,13 +10,16 @@ #include <iostream> struct DM_BF_Base: public DM_Function_Base, public virtual BF_Base { + + DM_BF_Base(); + DM_BF_Base(const Config &c); virtual ~DM_BF_Base(); - virtual size_t get_phi_cols(const Config &config)=0; - virtual void calc_phi_energy_row(phi_type &Phi, size_t &row, - const double fac, const Structure &st, const StDescriptors &st_d)=0; - virtual void calc_phi_force_rows(phi_type &Phi, size_t &row, - const double fac, const Structure &st, const StDescriptors &st_d)=0; - virtual void calc_phi_stress_rows(phi_type &Phi, size_t &row, - const double fac[6], const Structure &st, const StDescriptors &st_d)=0; + // virtual size_t get_phi_cols(const Config &config)=0; + // virtual void calc_phi_energy_row(phi_type &Phi, size_t &row, + // const double fac, const Structure &st, const StDescriptors &st_d)=0; + // virtual void calc_phi_force_rows(phi_type &Phi, size_t &row, + // const double fac, const Structure &st, const StDescriptors &st_d)=0; + // virtual void calc_phi_stress_rows(phi_type &Phi, size_t &row, + // const double fac[6], const Structure &st, const StDescriptors &st_d)=0; }; #endif diff --git a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h index 107ac2626401144ccf912759e2042b7f44b43f7e..e0052c373aad55baa891fc67e6476dccedacbda0 100644 --- a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h +++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h @@ -8,12 +8,12 @@ struct DM_BF_Linear: public DM_BF_Base, public BF_Linear { DM_BF_Linear(); DM_BF_Linear(const Config &c); - size_t get_phi_cols(const Config &config); + size_t get_phi_cols(const Config &config) override; void calc_phi_energy_row(phi_type &Phi, size_t &row, - const double fac, const Structure &st, const StDescriptors &st_d); + const double fac, const Structure &st, const StDescriptors &st_d) override; void calc_phi_force_rows(phi_type &Phi, size_t &row, - const double fac, const Structure &st, const StDescriptors &st_d); + const double fac, const Structure &st, const StDescriptors &st_d) override; void calc_phi_stress_rows(phi_type &Phi, size_t &row, - const double fac[6], const Structure &st, const StDescriptors &st_d); + const double fac[6], const Structure &st, const StDescriptors &st_d) override; }; #endif diff --git a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h index b0ce41382901c53e23fc9f5d4ced860c0c2599d0..550f4038e5cbba6b1b240b2c21a60396f630d69d 100644 --- a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h +++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h @@ -8,12 +8,12 @@ struct DM_BF_Polynomial2: public DM_BF_Base, public BF_Polynomial2 { DM_BF_Polynomial2(); DM_BF_Polynomial2(const Config &c); - size_t get_phi_cols(const Config &config); + size_t get_phi_cols(const Config &config) override; void calc_phi_energy_row(phi_type &Phi, size_t &row, - const double fac, const Structure &st, const StDescriptors &st_d); + const double fac, const Structure &st, const StDescriptors &st_d) override; void calc_phi_force_rows(phi_type &Phi, size_t &row, - const double fac, const Structure &st, const StDescriptors &st_d); + const double fac, const Structure &st, const StDescriptors &st_d) override; void calc_phi_stress_rows(phi_type &Phi, size_t &row, - const double fac[6], const Structure &st, const StDescriptors &st_d); + const double fac[6], const Structure &st, const StDescriptors &st_d) override; }; #endif diff --git a/include/tadah/mlip/design_matrix/functions/dm_f_all.h b/include/tadah/mlip/design_matrix/functions/dm_f_all.h index 201905ab6ced5873fb618ea606034c7c2e5065cc..56c4baed80353ca9d691d8a94594b605a46f8143 100644 --- a/include/tadah/mlip/design_matrix/functions/dm_f_all.h +++ b/include/tadah/mlip/design_matrix/functions/dm_f_all.h @@ -1,2 +1,2 @@ #include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_all.h> -#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_all.h> + #include <tadah/mlip/design_matrix/functions/kernels/dm_kern_all.h> diff --git a/include/tadah/mlip/design_matrix/functions/dm_function_base.h b/include/tadah/mlip/design_matrix/functions/dm_function_base.h index 6b7b5a9afc5c305d943b2dc57e276da8d70b73e7..06f53215d403f1e4ca665ab93dcddc698ab90a7d 100644 --- a/include/tadah/mlip/design_matrix/functions/dm_function_base.h +++ b/include/tadah/mlip/design_matrix/functions/dm_function_base.h @@ -16,16 +16,18 @@ /** Base class for Kernels and Basis Functions */ struct DM_Function_Base: public virtual Function_Base { - // Derived classes must implement Derived() and Derived(Config) - virtual ~DM_Function_Base() {}; + // Derived classes must implement Derived() and Derived(Config) + DM_Function_Base(); + DM_Function_Base(const Config &c); + virtual ~DM_Function_Base(); - virtual size_t get_phi_cols(const Config &)=0; - virtual void calc_phi_energy_row(phi_type &, size_t &, - const double , const Structure &, const StDescriptors &)=0; - virtual void calc_phi_force_rows(phi_type &, size_t &, - const double , const Structure &, const StDescriptors &)=0; - virtual void calc_phi_stress_rows(phi_type &, size_t &, - const double[6], const Structure &, const StDescriptors &)=0; + virtual size_t get_phi_cols(const Config &)=0; + virtual void calc_phi_energy_row(phi_type &, size_t &, + const double , const Structure &, const StDescriptors &)=0; + virtual void calc_phi_force_rows(phi_type &, size_t &, + const double , const Structure &, const StDescriptors &)=0; + virtual void calc_phi_stress_rows(phi_type &, size_t &, + const double[6], const Structure &, const StDescriptors &)=0; }; //template<> inline CONFIG::Registry<DM_Function_Base>::Map CONFIG::Registry<DM_Function_Base>::registry{}; //template<> inline CONFIG::Registry<DM_Function_Base,Config&>::Map CONFIG::Registry<DM_Function_Base,Config&>::registry{}; diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h index cf0c12f38e19c7b7ee22279a68a233e0f0920c78..8a12489c2eaead83a3a64915cf65cea398045fc3 100644 --- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h @@ -1,6 +1,7 @@ #ifndef DM_KERN_BASE_H #define DM_KERN_BASE_H +#include "tadah/core/config.h" #include <tadah/mlip/design_matrix/functions/dm_function_base.h> #include <tadah/mlip/structure.h> #include <tadah/mlip/st_descriptors.h> @@ -16,17 +17,16 @@ * - ff = force descriptor * - all derivatives are defined wrt to the second argument */ -class DM_Kern_Base: public DM_Function_Base, public virtual Kern_Base { +class DM_Kern_Base: public DM_Function_Base, public virtual Kern_Base { public: + DM_Kern_Base(); + DM_Kern_Base(const Config&c); virtual ~DM_Kern_Base(); - virtual size_t get_phi_cols(const Config &config); - virtual void calc_phi_energy_row(phi_type &Phi, size_t &row, const double fac, - const Structure &st, const StDescriptors &st_d); - virtual void calc_phi_force_rows(phi_type &Phi, size_t &row, const double fac, - const Structure &st, const StDescriptors &st_d); - virtual void calc_phi_stress_rows(phi_type &Phi, size_t &row, const double fac[6], - const Structure &st, const StDescriptors &st_d); + virtual size_t get_phi_cols(const Config &config) override; + virtual void calc_phi_energy_row(phi_type &Phi, size_t &row, const double fac, const Structure &st, const StDescriptors &st_d) override; + virtual void calc_phi_force_rows(phi_type &Phi, size_t &row, const double fac, const Structure &st, const StDescriptors &st_d) override; + virtual void calc_phi_stress_rows(phi_type &Phi, size_t &row, const double fac[6], const Structure &st, const StDescriptors &st_d) override; }; #endif diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h index 5c75dad56262708a78bcba2b35ce0dbefd4aefda..cf026d05cf1baf954868d897af9c3158782315f5 100644 --- a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h @@ -19,12 +19,12 @@ class DM_Kern_Linear : public DM_Kern_Base, public Kern_Linear { DM_Kern_Linear (); DM_Kern_Linear (const Config &c); - size_t get_phi_cols(const Config &config); + size_t get_phi_cols(const Config &config) override; void calc_phi_energy_row(phi_type &Phi, size_t &row, - const double fac, const Structure &st, const StDescriptors &st_d); + const double fac, const Structure &st, const StDescriptors &st_d) override; void calc_phi_force_rows(phi_type &Phi, size_t &row, - const double fac, const Structure &st, const StDescriptors &st_d); + const double fac, const Structure &st, const StDescriptors &st_d) override; void calc_phi_stress_rows(phi_type &Phi, size_t &row, - const double fac[6], const Structure &st, const StDescriptors &st_d); + const double fac[6], const Structure &st, const StDescriptors &st_d) override; }; #endif diff --git a/src/dm_bf_base.cpp b/src/dm_bf_base.cpp index e68de39417b717811cc30da8c434ada3f4a9a2de..21543fa989c0eaca4edf254b9c8d0cbd46fe0b9b 100644 --- a/src/dm_bf_base.cpp +++ b/src/dm_bf_base.cpp @@ -1,2 +1,6 @@ +#include "tadah/mlip/design_matrix/functions/dm_function_base.h" +#include "tadah/models/functions/basis_functions/bf_base.h" #include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h> +DM_BF_Base::DM_BF_Base() {} +DM_BF_Base::DM_BF_Base(const Config &c): BF_Base(c), DM_Function_Base(c) {} DM_BF_Base::~DM_BF_Base() {} diff --git a/src/dm_bf_linear.cpp b/src/dm_bf_linear.cpp index ab467e8c4ba7eb31f43ab3cdc26ec860061b312a..9bb9846ec32f02097ebfdaac07aec19e229d9a75 100644 --- a/src/dm_bf_linear.cpp +++ b/src/dm_bf_linear.cpp @@ -4,7 +4,7 @@ //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_BF_Linear> DM_BF_Linear_2( "BF_Linear" ); DM_BF_Linear::DM_BF_Linear() {} -DM_BF_Linear::DM_BF_Linear(const Config &c): BF_Linear(c) +DM_BF_Linear::DM_BF_Linear(const Config &c): DM_BF_Base(c), BF_Linear(c) {} size_t DM_BF_Linear::get_phi_cols(const Config &config) { diff --git a/src/dm_bf_polynomial2.cpp b/src/dm_bf_polynomial2.cpp index 6638fdb19ce46998b511e14e90b8b0b0f2f51c0f..9ef36d3e5279be8049b8c78e755a73e26078b018 100644 --- a/src/dm_bf_polynomial2.cpp +++ b/src/dm_bf_polynomial2.cpp @@ -1,10 +1,11 @@ +#include "tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h" #include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h> //CONFIG::Registry<DM_Function_Base>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_1( "BF_Polynomial2" ); //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_BF_Polynomial2> DM_BF_Polynomial2_2( "BF_Polynomial2" ); DM_BF_Polynomial2::DM_BF_Polynomial2() {} -DM_BF_Polynomial2::DM_BF_Polynomial2(const Config &c): BF_Polynomial2(c) +DM_BF_Polynomial2::DM_BF_Polynomial2(const Config &c): DM_BF_Base(c), BF_Polynomial2(c) {} size_t DM_BF_Polynomial2::get_phi_cols(const Config &config) { diff --git a/src/dm_function_base.cpp b/src/dm_function_base.cpp index 8c7af9b405e4ed2a9de97a58ac8b770b7a68f62b..945c4344841ae7c84c896e0cd66ac226cf2a1cdb 100644 --- a/src/dm_function_base.cpp +++ b/src/dm_function_base.cpp @@ -1,2 +1,5 @@ +#include "tadah/models/functions/function_base.h" #include <tadah/mlip/design_matrix/functions/dm_function_base.h> - +DM_Function_Base::DM_Function_Base() {} +DM_Function_Base::DM_Function_Base(const Config &c): Function_Base(c) {} +DM_Function_Base::~DM_Function_Base() {} diff --git a/src/dm_kern_base.cpp b/src/dm_kern_base.cpp index ecf679c39ad18a36219dc36aa0aa3de34cb80c95..773778aa1d8f310c63645ff8e5e8ab72a4179345 100644 --- a/src/dm_kern_base.cpp +++ b/src/dm_kern_base.cpp @@ -1,6 +1,11 @@ +#include "tadah/core/config.h" +#include "tadah/mlip/design_matrix/functions/dm_function_base.h" +#include "tadah/models/functions/kernels/kern_base.h" #include <tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h> DM_Kern_Base::~DM_Kern_Base() {} +DM_Kern_Base::DM_Kern_Base() {} +DM_Kern_Base::DM_Kern_Base(const Config &c): DM_Function_Base(c), Kern_Base(c) {} size_t DM_Kern_Base::get_phi_cols(const Config &) { return basis.cols(); diff --git a/src/dm_kern_linear.cpp b/src/dm_kern_linear.cpp index 90f97a7eda24374a7bad06a72f926a97c67370fe..27886568a4c8e31d4ddb9f7b5592de2c1fd8004c 100644 --- a/src/dm_kern_linear.cpp +++ b/src/dm_kern_linear.cpp @@ -1,10 +1,11 @@ +#include "tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h" #include <tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h> //CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Linear> DM_Kern_Linear_1( "Kern_Linear" ); //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_Kern_Linear> DM_Kern_Linear_2( "Kern_Linear" ); DM_Kern_Linear::DM_Kern_Linear() {} -DM_Kern_Linear::DM_Kern_Linear (const Config &c): Kern_Linear(c) +DM_Kern_Linear::DM_Kern_Linear (const Config &c): DM_Kern_Base(c), Kern_Linear(c) {} size_t DM_Kern_Linear::get_phi_cols(const Config &config) { diff --git a/src/dm_kern_lq.cpp b/src/dm_kern_lq.cpp index 3c14dfaad5465facd3ef725b13d7a323fd29f7b0..40fdb4d8bc78b8ca41d41380d28fd62e4a9e8856 100644 --- a/src/dm_kern_lq.cpp +++ b/src/dm_kern_lq.cpp @@ -1,11 +1,12 @@ +#include "tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h" #include <tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h> //CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_LQ> DM_Kern_LQ_1( "Kern_LQ" ); //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_Kern_LQ> DM_Kern_LQ_2( "Kern_LQ" ); -DM_Kern_LQ::DM_Kern_LQ(): - Kern_LQ() +DM_Kern_LQ::DM_Kern_LQ() {} DM_Kern_LQ::DM_Kern_LQ(const Config &c): + DM_Kern_Base(c), Kern_LQ(c) {} diff --git a/src/dm_kern_polynomial.cpp b/src/dm_kern_polynomial.cpp index b60e9d913d808a63f48a6bb76cbb2547888b3500..5227ca7ee806958b8043acb786e64a414e57d4a7 100644 --- a/src/dm_kern_polynomial.cpp +++ b/src/dm_kern_polynomial.cpp @@ -3,9 +3,9 @@ //CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_1( "Kern_Polynomial" ); //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_Kern_Polynomial> DM_Kern_Polynomial_2( "Kern_Polynomial" ); -DM_Kern_Polynomial::DM_Kern_Polynomial(): - Kern_Polynomial() +DM_Kern_Polynomial::DM_Kern_Polynomial() {} DM_Kern_Polynomial::DM_Kern_Polynomial(const Config &c): + DM_Kern_Base(c), Kern_Polynomial(c) {} diff --git a/src/dm_kern_quadratic.cpp b/src/dm_kern_quadratic.cpp index 83a71981b1312f04f7c713d21f1e4ac546402d08..9c4ecb2b9219851f2ad07175e03306bcabcdcaab 100644 --- a/src/dm_kern_quadratic.cpp +++ b/src/dm_kern_quadratic.cpp @@ -3,9 +3,9 @@ //CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_1( "Kern_Quadratic" ); //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_Kern_Quadratic> DM_Kern_Quadratic_2( "Kern_Quadratic" ); -DM_Kern_Quadratic::DM_Kern_Quadratic(): - Kern_Quadratic() +DM_Kern_Quadratic::DM_Kern_Quadratic() {} DM_Kern_Quadratic::DM_Kern_Quadratic(const Config &c): + DM_Kern_Base(c), Kern_Quadratic(c) {} diff --git a/src/dm_kern_rbf.cpp b/src/dm_kern_rbf.cpp index 1870190d591d2c0df7b88acadbcd00f9b5839326..2c9b9e04969ab34dc1fe60fa8a13b1880d358901 100644 --- a/src/dm_kern_rbf.cpp +++ b/src/dm_kern_rbf.cpp @@ -3,9 +3,9 @@ //CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_RBF> DM_Kern_RBF_1( "Kern_RBF" ); //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_Kern_RBF> DM_Kern_RBF_2( "Kern_RBF" ); -DM_Kern_RBF::DM_Kern_RBF(): - Kern_RBF() +DM_Kern_RBF::DM_Kern_RBF() {} DM_Kern_RBF::DM_Kern_RBF(const Config &c): + DM_Kern_Base(c), Kern_RBF(c) {} diff --git a/src/dm_kern_sigmoid.cpp b/src/dm_kern_sigmoid.cpp index 2da37c905a1be2f801beafd7ed9bbcbd83f99295..7b547b06af0bf9e1f2dcb23ddc7a9a3b1047f25e 100644 --- a/src/dm_kern_sigmoid.cpp +++ b/src/dm_kern_sigmoid.cpp @@ -3,9 +3,9 @@ //CONFIG::Registry<DM_Function_Base>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_1( "Kern_Sigmoid" ); //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_Kern_Sigmoid> DM_Kern_Sigmoid_2( "Kern_Sigmoid" ); -DM_Kern_Sigmoid::DM_Kern_Sigmoid(): - Kern_Sigmoid() +DM_Kern_Sigmoid::DM_Kern_Sigmoid() {} DM_Kern_Sigmoid::DM_Kern_Sigmoid(const Config &c): + DM_Kern_Base(c), Kern_Sigmoid(c) {}