From 23ac22b4cac2a85e99fedeef63c4cabff50c37b9 Mon Sep 17 00:00:00 2001 From: mkirsz <s1351949@sms.ed.ac.uk> Date: Tue, 17 Dec 2024 13:07:58 +0000 Subject: [PATCH] Inheritance fixes --- .../functions/basis_functions/dm_bf_base.h | 17 +++++++++------- .../functions/basis_functions/dm_bf_linear.h | 8 ++++---- .../basis_functions/dm_bf_polynomial2.h | 8 ++++---- .../mlip/design_matrix/functions/dm_f_all.h | 2 +- .../functions/dm_function_base.h | 20 ++++++++++--------- .../functions/kernels/dm_kern_base.h | 16 +++++++-------- .../functions/kernels/dm_kern_linear.h | 8 ++++---- src/dm_bf_base.cpp | 4 ++++ src/dm_bf_linear.cpp | 2 +- src/dm_bf_polynomial2.cpp | 3 ++- src/dm_function_base.cpp | 5 ++++- src/dm_kern_base.cpp | 5 +++++ src/dm_kern_linear.cpp | 3 ++- src/dm_kern_lq.cpp | 5 +++-- src/dm_kern_polynomial.cpp | 4 ++-- src/dm_kern_quadratic.cpp | 4 ++-- src/dm_kern_rbf.cpp | 4 ++-- src/dm_kern_sigmoid.cpp | 4 ++-- 18 files changed, 71 insertions(+), 51 deletions(-) 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 98b1c37..6f6187d 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 107ac26..e0052c3 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 b0ce413..550f403 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 201905a..56c4bae 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 6b7b5a9..06f5321 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 cf0c12f..8a12489 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 5c75dad..cf026d0 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 e68de39..21543fa 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 ab467e8..9bb9846 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 6638fdb..9ef36d3 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 8c7af9b..945c434 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 ecf679c..773778a 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 90f97a7..2788656 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 3c14dfa..40fdb4d 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 b60e9d9..5227ca7 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 83a7198..9c4ecb2 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 1870190..2c9b9e0 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 2da37c9..7b547b0 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) {} -- GitLab