diff --git a/CMakeLists.txt b/CMakeLists.txt index 72360855b282dc21465f605b90ede511482ef590..c016eeb712842fff3282f12a6dc553d2d185279f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,57 +49,44 @@ get_filename_component(BUILD_DIR_NAME ${CMAKE_BINARY_DIR} NAME) FetchContent_Declare( Tadah.MODELS GIT_REPOSITORY https://git.ecdf.ed.ac.uk/tadah/models.git - GIT_TAG origin/main - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../MODELS - PATCH_COMMAND mkdir -p ${BUILD_DIR_NAME} - BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../MODELS/${BUILD_DIR_NAME} + GIT_TAG origin/develop + #SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../MODELS + #PATCH_COMMAND mkdir -p ${BUILD_DIR_NAME} + #BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../MODELS/${BUILD_DIR_NAME} ) FetchContent_MakeAvailable(Tadah.MODELS) -file(GLOB MLIP_SRC CONFIGURE_DEPENDS "*.cpp" "*.h" "*.hpp") -file(GLOB_RECURSE ANALYTICS_SRC CONFIGURE_DEPENDS - "analytics/*.cpp" "analytics/*.h" "analytics/*.hpp") -file(GLOB_RECURSE DESIGN_MATRIX_SRC CONFIGURE_DEPENDS - "design_matrix/*.cpp" "design_matrix/*.h" "design_matrix/*.hpp") -file(GLOB_RECURSE MODELS_SRC CONFIGURE_DEPENDS - "models/*.cpp" "models/*.h" "models/*.hpp") -file(GLOB_RECURSE OUTPUT_SRC CONFIGURE_DEPENDS - "output/*.cpp" "output/*.h" "output/*.hpp") -#file(GLOB_RECURSE UTILS_SRC CONFIGURE_DEPENDS "utils/*.cpp") - -add_library(tadah.mlip.obj OBJECT - ${MLIP_SRC} - ${ANALYTICS_SRC} - ${DESIGN_MATRIX_SRC} - ${MODELS_SRC} - ${OUTPUT_SRC} - ) - -target_link_libraries(tadah.mlip.obj PRIVATE config::rc) +file(GLOB MLIP_SRC CONFIGURE_DEPENDS "src/*.cpp") +add_library(tadah.mlip ${MLIP_SRC}) +target_link_libraries(tadah.mlip PRIVATE config::rc) +target_link_libraries(tadah.mlip PUBLIC Tadah.MODELS) +target_include_directories(tadah.mlip PUBLIC include) +target_include_directories(tadah.mlip PUBLIC ${Tadah.MODELS_SOURCE_DIR}/include) +target_include_directories(tadah.mlip PUBLIC ${Tadah.CORE_SOURCE_DIR}/include) +target_include_directories(tadah.mlip PUBLIC ${Tadah.CORE_SOURCE_DIR}/external/toml11) if(TADAH_ENABLE_OPENMP) find_package(OpenMP REQUIRED) - target_link_libraries(tadah.mlip.obj PUBLIC OpenMP::OpenMP_CXX) + target_link_libraries(tadah.mlip PUBLIC OpenMP::OpenMP_CXX) endif() if (TADAH_BUILD_MPI) find_package(MPI REQUIRED) - target_link_libraries(tadah.mlip.obj PUBLIC MPI::MPI_CXX) + target_link_libraries(tadah.mlip PUBLIC MPI::MPI_CXX) add_compile_definitions(TADAH_BUILD_MPI) endif() -add_library(tadah.mlip $<TARGET_OBJECTS:tadah.mlip.obj>) if(TADAH_BUILD_TESTS) include(CTest) add_subdirectory(tests) endif() -set(TADAH_MLIP_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/tadah/MLIP) -file(GLOB MLIP_H CONFIGURE_DEPENDS "*.h" "*.hpp") -install(FILES ${MLIP_H} DESTINATION ${TADAH_MLIP_INSTALL_DIR}) -install(DIRECTORY analytics DESTINATION ${TADAH_MLIP_INSTALL_DIR} FILES_MATCHING REGEX "(.+.h|.+.hpp)") -install(DIRECTORY design_matrix DESTINATION ${TADAH_MLIP_INSTALL_DIR} FILES_MATCHING REGEX "(.+.h|.+.hpp)") -install(DIRECTORY models DESTINATION ${TADAH_MLIP_INSTALL_DIR} FILES_MATCHING REGEX "(.+.h|.+.hpp)") -install(DIRECTORY output DESTINATION ${TADAH_MLIP_INSTALL_DIR} FILES_MATCHING REGEX "(.+.h|.+.hpp)") +#set(TADAH_MLIP_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/tadah/MLIP) +#file(GLOB MLIP_H CONFIGURE_DEPENDS "*.h" "*.hpp") +#install(FILES ${MLIP_H} DESTINATION ${TADAH_MLIP_INSTALL_DIR}) +#install(DIRECTORY analytics DESTINATION ${TADAH_MLIP_INSTALL_DIR} FILES_MATCHING REGEX "(.+.h|.+.hpp)") +#install(DIRECTORY design_matrix DESTINATION ${TADAH_MLIP_INSTALL_DIR} FILES_MATCHING REGEX "(.+.h|.+.hpp)") +#install(DIRECTORY models DESTINATION ${TADAH_MLIP_INSTALL_DIR} FILES_MATCHING REGEX "(.+.h|.+.hpp)") +#install(DIRECTORY output DESTINATION ${TADAH_MLIP_INSTALL_DIR} FILES_MATCHING REGEX "(.+.h|.+.hpp)") diff --git a/design_matrix/functions/basis_functions/dm_bf_all.h b/design_matrix/functions/basis_functions/dm_bf_all.h deleted file mode 100644 index b985440ba45ce69cce950fa582b02c44c4782467..0000000000000000000000000000000000000000 --- a/design_matrix/functions/basis_functions/dm_bf_all.h +++ /dev/null @@ -1,2 +0,0 @@ -#include "dm_bf_linear.h" -#include "dm_bf_polynomial2.h" diff --git a/design_matrix/functions/basis_functions/dm_bf_base.cpp b/design_matrix/functions/basis_functions/dm_bf_base.cpp deleted file mode 100644 index 4ed6543ac99c63a86b17182007b0fe7acd69f72c..0000000000000000000000000000000000000000 --- a/design_matrix/functions/basis_functions/dm_bf_base.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "dm_bf_base.h" -DM_BF_Base::~DM_BF_Base() {} diff --git a/design_matrix/functions/dm_f_all.h b/design_matrix/functions/dm_f_all.h deleted file mode 100644 index 38a31839eb25cbcb666bc7021d3f510f4604e4fc..0000000000000000000000000000000000000000 --- a/design_matrix/functions/dm_f_all.h +++ /dev/null @@ -1,2 +0,0 @@ -#include "basis_functions/dm_bf_all.h" -#include "kernels/dm_kern_all.h" diff --git a/design_matrix/functions/dm_function_base.cpp b/design_matrix/functions/dm_function_base.cpp deleted file mode 100644 index 6db860efa0127540bf7b21801c09c9d2b2760dfc..0000000000000000000000000000000000000000 --- a/design_matrix/functions/dm_function_base.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "dm_function_base.h" - diff --git a/design_matrix/functions/kernels/dm_kern_all.h b/design_matrix/functions/kernels/dm_kern_all.h deleted file mode 100644 index 0f050e617da6c0f2790656d3c4aa74519a2fd603..0000000000000000000000000000000000000000 --- a/design_matrix/functions/kernels/dm_kern_all.h +++ /dev/null @@ -1,7 +0,0 @@ -#include "dm_kern_base.h" -#include "dm_kern_linear.h" -#include "dm_kern_rbf.h" -#include "dm_kern_lq.h" -#include "dm_kern_polynomial.h" -#include "dm_kern_sigmoid.h" -#include "dm_kern_quadratic.h" diff --git a/analytics/analytics.h b/include/tadah/mlip/analytics/analytics.h similarity index 95% rename from analytics/analytics.h rename to include/tadah/mlip/analytics/analytics.h index d813c33aa0d54d0e577eaf173c035a2165645692..4a7dc4a48fda2d8c790cccdb82b7792d75f89575 100644 --- a/analytics/analytics.h +++ b/include/tadah/mlip/analytics/analytics.h @@ -1,8 +1,8 @@ #ifndef ANALYTICS_H #define ANALYTICS_H -#include "../structure_db.h" -#include "../../CORE/core_types.h" +#include <tadah/mlip/structure_db.h> +#include <tadah/core/core_types.h> /** Class for analysing and comparing datasets diff --git a/analytics/statistics.h b/include/tadah/mlip/analytics/statistics.h similarity index 94% rename from analytics/statistics.h rename to include/tadah/mlip/analytics/statistics.h index 8c0245e8d8e7b966176ac33a7af2c0353e191e6f..0d86664a567fea6a3f8bfd72632de0b7ac978e86 100644 --- a/analytics/statistics.h +++ b/include/tadah/mlip/analytics/statistics.h @@ -1,7 +1,7 @@ #ifndef STATISTICS_H #define STATISTICS_H -#include "../../CORE/core_types.h" +#include <tadah/core/core_types.h> /** Some basis statistical tools */ class Statistics { diff --git a/atom.h b/include/tadah/mlip/atom.h similarity index 96% rename from atom.h rename to include/tadah/mlip/atom.h index dfef91a950b1c3d708223e969250cf2af446cb6e..4a6fd8719b89b28972b40c39a87fef831f1e2e56 100644 --- a/atom.h +++ b/include/tadah/mlip/atom.h @@ -1,10 +1,11 @@ #ifndef ATOM_H #define ATOM_H +#include <tadah/core/element.h> +#include <tadah/core/core_types.h> + #include <string> #include <iostream> -#include "../CORE/element.h" -#include "../CORE/core_types.h" /** * Container to represent atom properties diff --git a/descriptors_calc.h b/include/tadah/mlip/descriptors_calc.h similarity index 90% rename from descriptors_calc.h rename to include/tadah/mlip/descriptors_calc.h index 06e82c7806a85b7c2fd4ebdd87925f5fbcb8bc17..640a86227922792c57250fd16ad40fe1242b0d81 100644 --- a/descriptors_calc.h +++ b/include/tadah/mlip/descriptors_calc.h @@ -1,16 +1,16 @@ #ifndef DESCRIPTORS_CALC_H #define DESCRIPTORS_CALC_H -#include "descriptors_calc_base.h" -#include "../CORE/config/config.h" -#include "structure.h" -#include "structure_db.h" -#include "st_descriptors.h" -#include "st_descriptors_db.h" -#include "../MODELS/descriptors/d2/d2_base.h" -#include "../MODELS/descriptors/d3/d3_base.h" -#include "../MODELS/descriptors/dm/dm_base.h" -#include "../MODELS/cutoffs/cutoffs.h" +#include <tadah/mlip/descriptors_calc_base.h> +#include <tadah/mlip/structure.h> +#include <tadah/mlip/structure_db.h> +#include <tadah/mlip/st_descriptors.h> +#include <tadah/mlip/st_descriptors_db.h> +#include <tadah/core/config.h> +#include <tadah/models/descriptors/d2/d2_base.h> +#include <tadah/models/descriptors/d3/d3_base.h> +#include <tadah/models/descriptors/dm/dm_base.h> +#include <tadah/models/cutoffs.h> /** \brief Descriptors calculator * diff --git a/descriptors_calc.hpp b/include/tadah/mlip/descriptors_calc.hpp similarity index 99% rename from descriptors_calc.hpp rename to include/tadah/mlip/descriptors_calc.hpp index 5d5cdfe3a6bae08c35b2092eaabb8dc5ac361f5c..5afb987346586758255464ae46bfac7c422f7e77 100644 --- a/descriptors_calc.hpp +++ b/include/tadah/mlip/descriptors_calc.hpp @@ -4,7 +4,7 @@ // This file is includeed back to descriptors_calc.h // So There is no need to include headers // Useful for debugging though... -#include "descriptors_calc.h" +#include <tadah/mlip/descriptors_calc.h> #include <cstdio> template <typename D2, typename D3, typename DM, typename C2, typename C3, typename CM> diff --git a/descriptors_calc_base.h b/include/tadah/mlip/descriptors_calc_base.h similarity index 64% rename from descriptors_calc_base.h rename to include/tadah/mlip/descriptors_calc_base.h index 0d5d9db978b09e8ebc3cb9e27193e39028b5f65d..a56c26f328d261161e21688d844aad0e68c90ddf 100644 --- a/descriptors_calc_base.h +++ b/include/tadah/mlip/descriptors_calc_base.h @@ -1,10 +1,10 @@ #ifndef DC_Base_H #define DC_Base_H -#include "structure.h" -#include "structure_db.h" -#include "st_descriptors.h" -#include "st_descriptors_db.h" +#include <tadah/mlip/structure.h> +#include <tadah/mlip/structure_db.h> +#include <tadah/mlip/st_descriptors.h> +#include <tadah/mlip/st_descriptors_db.h> class DC_Base { public: diff --git a/design_matrix/design_matrix.h b/include/tadah/mlip/design_matrix/design_matrix.h similarity index 97% rename from design_matrix/design_matrix.h rename to include/tadah/mlip/design_matrix/design_matrix.h index 5c08a9af654e1d989c00c642c8cceff2d6032725..3f87b5fec3bb6b1188e33da264b93ab0af37c2d2 100644 --- a/design_matrix/design_matrix.h +++ b/include/tadah/mlip/design_matrix/design_matrix.h @@ -1,12 +1,13 @@ #ifndef DESIGN_MATRIX_H #define DESIGN_MATRIX_H +#include <tadah/mlip/st_descriptors_db.h> +#include <tadah/mlip/structure_db.h> +#include <tadah/mlip/descriptors_calc.h> +#include <tadah/mlip/normaliser.h> +#include <tadah/core/config.h> + #include <stdexcept> -#include "../../CORE/config/config.h" -#include "../st_descriptors_db.h" -#include "../structure_db.h" -#include "../descriptors_calc.h" -#include "../normaliser.h" class DesignMatrixBase { diff --git a/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_all.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_all.h new file mode 100644 index 0000000000000000000000000000000000000000..48179cf65d71ab9692485bdc246206e5417910b1 --- /dev/null +++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_all.h @@ -0,0 +1,2 @@ +#include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h> +#include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h> diff --git a/design_matrix/functions/basis_functions/dm_bf_base.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h similarity index 74% rename from design_matrix/functions/basis_functions/dm_bf_base.h rename to include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h index 2ef9da16b71d0a5b3445b4905f89da6ea5764a04..98b1c37b7dee207fb9a0c545336f773609d3470c 100644 --- a/design_matrix/functions/basis_functions/dm_bf_base.h +++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h @@ -1,12 +1,13 @@ #ifndef DM_BASIS_FUNCTIONS_H #define DM_BASIS_FUNCTIONS_H +#include <tadah/mlip/design_matrix/functions/dm_function_base.h> +#include <tadah/mlip/structure.h> +#include <tadah/mlip/st_descriptors.h> +#include <tadah/core/core_types.h> +#include <tadah/models/functions/basis_functions/bf_base.h> + #include <iostream> -#include "../dm_function_base.h" -#include "../../../../CORE/core_types.h" -#include "../../../../MODELS/functions/basis_functions/bf_base.h" -#include "../../../structure.h" -#include "../../../st_descriptors.h" struct DM_BF_Base: public DM_Function_Base, public virtual BF_Base { virtual ~DM_BF_Base(); diff --git a/design_matrix/functions/basis_functions/dm_bf_linear.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h similarity index 82% rename from design_matrix/functions/basis_functions/dm_bf_linear.h rename to include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h index 36b7813e8eed54323d0391313bb5434f289db4e6..107ac2626401144ccf912759e2042b7f44b43f7e 100644 --- a/design_matrix/functions/basis_functions/dm_bf_linear.h +++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h @@ -1,8 +1,8 @@ #ifndef DM_BF_LINEAR_H #define DM_BF_LINEAR_H -#include "dm_bf_base.h" -#include "../../../../MODELS/functions/basis_functions/bf_linear.h" +#include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h> +#include <tadah/models/functions/basis_functions/bf_linear.h> struct DM_BF_Linear: public DM_BF_Base, public BF_Linear { diff --git a/design_matrix/functions/basis_functions/dm_bf_polynomial2.h b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h similarity index 82% rename from design_matrix/functions/basis_functions/dm_bf_polynomial2.h rename to include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h index ff8f6342ce207148f4c428520703f4f33cc555a0..b0ce41382901c53e23fc9f5d4ced860c0c2599d0 100644 --- a/design_matrix/functions/basis_functions/dm_bf_polynomial2.h +++ b/include/tadah/mlip/design_matrix/functions/basis_functions/dm_bf_polynomial2.h @@ -1,7 +1,8 @@ #ifndef DM_BF_POLYNOMIAL2_H #define DM_BF_POLYNOMIAL2_H -#include "dm_bf_base.h" -#include "../../../../MODELS/functions/basis_functions/bf_polynomial2.h" + +#include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h> +#include <tadah/models/functions/basis_functions/bf_polynomial2.h> struct DM_BF_Polynomial2: public DM_BF_Base, public BF_Polynomial2 { diff --git a/include/tadah/mlip/design_matrix/functions/dm_f_all.h b/include/tadah/mlip/design_matrix/functions/dm_f_all.h new file mode 100644 index 0000000000000000000000000000000000000000..201905ab6ced5873fb618ea606034c7c2e5065cc --- /dev/null +++ b/include/tadah/mlip/design_matrix/functions/dm_f_all.h @@ -0,0 +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> diff --git a/design_matrix/functions/dm_function_base.h b/include/tadah/mlip/design_matrix/functions/dm_function_base.h similarity index 81% rename from design_matrix/functions/dm_function_base.h rename to include/tadah/mlip/design_matrix/functions/dm_function_base.h index 1838f8661ce71773442764f2ab7d7d83ea679886..6b7b5a9afc5c305d943b2dc57e276da8d70b73e7 100644 --- a/design_matrix/functions/dm_function_base.h +++ b/include/tadah/mlip/design_matrix/functions/dm_function_base.h @@ -1,12 +1,12 @@ #ifndef DM_FUNCTION_H #define DM_FUNCTION_H -#include "../../../CORE/config/config.h" -#include "../../../CORE/registry.h" -#include "../../../CORE/core_types.h" -#include "../../../MODELS/functions/function_base.h" -#include "../../structure.h" -#include "../../st_descriptors.h" +#include <tadah/core/config.h> +#include <tadah/core/registry.h> +#include <tadah/core/core_types.h> +#include <tadah/models/functions/function_base.h> +#include <tadah/mlip/structure.h> +#include <tadah/mlip/st_descriptors.h> #include <iomanip> #include <iostream> diff --git a/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_all.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_all.h new file mode 100644 index 0000000000000000000000000000000000000000..b53a2f63d862fecb09f6410c744ee549d13c5784 --- /dev/null +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_all.h @@ -0,0 +1,7 @@ +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h> +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h> +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_rbf.h> +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h> +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_polynomial.h> +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_sigmoid.h> +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h> diff --git a/design_matrix/functions/kernels/dm_kern_base.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h similarity index 80% rename from design_matrix/functions/kernels/dm_kern_base.h rename to include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h index 929b3a112393a1f7812224c867d53a3dda1b75c8..cf0c12f38e19c7b7ee22279a68a233e0f0920c78 100644 --- a/design_matrix/functions/kernels/dm_kern_base.h +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h @@ -1,12 +1,13 @@ #ifndef DM_KERN_BASE_H #define DM_KERN_BASE_H +#include <tadah/mlip/design_matrix/functions/dm_function_base.h> +#include <tadah/mlip/structure.h> +#include <tadah/mlip/st_descriptors.h> +#include <tadah/core/core_types.h> +#include <tadah/models/functions/kernels/kern_base.h> + #include <iostream> -#include "../dm_function_base.h" -#include "../../../../CORE/core_types.h" -#include "../../../../MODELS/functions/kernels/kern_base.h" -#include "../../../structure.h" -#include "../../../st_descriptors.h" /** \brief Abstract class to be used as a base for all kernels. * diff --git a/design_matrix/functions/kernels/dm_kern_linear.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h similarity index 87% rename from design_matrix/functions/kernels/dm_kern_linear.h rename to include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h index d677d2815433f2a0568d38d016a53b19ac1a3bbc..5c75dad56262708a78bcba2b35ce0dbefd4aefda 100644 --- a/design_matrix/functions/kernels/dm_kern_linear.h +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_linear.h @@ -1,8 +1,8 @@ #ifndef DM_KERN_LINEAR_H #define DM_KERN_LINEAR_H -#include "dm_kern_base.h" -#include "../../../../MODELS/functions/kernels/kern_linear.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h> +#include <tadah/models/functions/kernels/kern_linear.h> /** * Linear kernel also knows as dot product kernel * diff --git a/design_matrix/functions/kernels/dm_kern_lq.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h similarity index 60% rename from design_matrix/functions/kernels/dm_kern_lq.h rename to include/tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h index dc77a8362108dc910901e474a1f8788d482411f2..f0b44451955e6c2e1f7f592397d318d2599fa31b 100644 --- a/design_matrix/functions/kernels/dm_kern_lq.h +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_lq.h @@ -1,8 +1,8 @@ #ifndef DM_KERN_LQ_H #define DM_KERN_LQ_H -#include "dm_kern_base.h" -#include "../../../../MODELS/functions/kernels/kern_lq.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h> +#include <tadah/models/functions/kernels/kern_lq.h> class DM_Kern_LQ : public DM_Kern_Base, public Kern_LQ { public: diff --git a/design_matrix/functions/kernels/dm_kern_polynomial.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_polynomial.h similarity index 64% rename from design_matrix/functions/kernels/dm_kern_polynomial.h rename to include/tadah/mlip/design_matrix/functions/kernels/dm_kern_polynomial.h index 2a5695fd2b7bf402b334b659d7e06f72d9a48d3e..5094370338d006531c85b4450a81878d7fcb6653 100644 --- a/design_matrix/functions/kernels/dm_kern_polynomial.h +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_polynomial.h @@ -1,8 +1,8 @@ #ifndef DM_KERN_POLYNOMIAL_H #define DM_KERN_POLYNOMIAL_H -#include "dm_kern_base.h" -#include "../../../../MODELS/functions/kernels/kern_polynomial.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h> +#include <tadah/models/functions/kernels/kern_polynomial.h> class DM_Kern_Polynomial : public DM_Kern_Base, public Kern_Polynomial { public: diff --git a/design_matrix/functions/kernels/dm_kern_quadratic.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h similarity index 63% rename from design_matrix/functions/kernels/dm_kern_quadratic.h rename to include/tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h index 3f432cf6b28fd3effcd9cb85255ef8fc633a1cfb..ecb85350cdc42c698547432ae1965124bd6fcde5 100644 --- a/design_matrix/functions/kernels/dm_kern_quadratic.h +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h @@ -1,8 +1,8 @@ #ifndef DM_KERN_QUADRATIC_H #define DM_KERN_QUADRATIC_H -#include "dm_kern_base.h" -#include "../../../../MODELS/functions/kernels/kern_quadratic.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h> +#include <tadah/models/functions/kernels/kern_quadratic.h> class DM_Kern_Quadratic : public DM_Kern_Base, public Kern_Quadratic { public: diff --git a/design_matrix/functions/kernels/dm_kern_rbf.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_rbf.h similarity index 60% rename from design_matrix/functions/kernels/dm_kern_rbf.h rename to include/tadah/mlip/design_matrix/functions/kernels/dm_kern_rbf.h index 8851e3ad996eba99af40570809764885f8b2eab8..7e1251afe93a266366024cf5d22a43869287d84a 100644 --- a/design_matrix/functions/kernels/dm_kern_rbf.h +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_rbf.h @@ -1,8 +1,8 @@ #ifndef DM_KERN_RBF_H #define DM_KERN_RBF_H -#include "dm_kern_base.h" -#include "../../../../MODELS/functions/kernels/kern_rbf.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h> +#include <tadah/models/functions/kernels/kern_rbf.h> class DM_Kern_RBF : public DM_Kern_Base, public Kern_RBF { public: diff --git a/design_matrix/functions/kernels/dm_kern_sigmoid.h b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_sigmoid.h similarity index 62% rename from design_matrix/functions/kernels/dm_kern_sigmoid.h rename to include/tadah/mlip/design_matrix/functions/kernels/dm_kern_sigmoid.h index 0c18643c70134aebbd3fe905831043175d622e32..c62a50ef586e4dd76390d5d710deec129c679d46 100644 --- a/design_matrix/functions/kernels/dm_kern_sigmoid.h +++ b/include/tadah/mlip/design_matrix/functions/kernels/dm_kern_sigmoid.h @@ -1,8 +1,8 @@ #ifndef DM_KERN_SIGMOID_H #define DM_KERN_SIGMOID_H -#include "dm_kern_base.h" -#include "../../../../MODELS/functions/kernels/kern_sigmoid.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h> +#include <tadah/models/functions/kernels/kern_sigmoid.h> class DM_Kern_Sigmoid : public DM_Kern_Base, public Kern_Sigmoid { public: diff --git a/models/basis.h b/include/tadah/mlip/models/basis.h similarity index 95% rename from models/basis.h rename to include/tadah/mlip/models/basis.h index 509d170d3dcb1a5b566f9eccede0cb7cfafc6610..74a4071bd4a7d5b3c084e505c5afd4fb7d77287a 100644 --- a/models/basis.h +++ b/include/tadah/mlip/models/basis.h @@ -1,10 +1,10 @@ #ifndef BASIS_H #define BASIS_H -#include "../../CORE/config/config.h" -#include "../../CORE/core_types.h" -#include "../st_descriptors_db.h" -#include "../st_descriptors.h" +#include <tadah/mlip/st_descriptors_db.h> +#include <tadah/mlip/st_descriptors.h> +#include <tadah/core/core_types.h> +#include <tadah/core/config.h> #include <numeric> #include <stdexcept> diff --git a/include/tadah/mlip/models/m_all.h b/include/tadah/mlip/models/m_all.h new file mode 100644 index 0000000000000000000000000000000000000000..d155789207e9ecc83fe25187a50bd95dd15d526b --- /dev/null +++ b/include/tadah/mlip/models/m_all.h @@ -0,0 +1,3 @@ +//#include "m_tadah_base.h" +#include <tadah/mlip/models/m_blr.h> +#include <tadah/mlip/models/m_krr.h> diff --git a/models/m_blr.h b/include/tadah/mlip/models/m_blr.h similarity index 97% rename from models/m_blr.h rename to include/tadah/mlip/models/m_blr.h index ae4146170ff232a73400a438a1da1c0ff7a9c5b7..4a88a4545d1a228ed2cdc6b09184e5db2fe153ed 100644 --- a/models/m_blr.h +++ b/include/tadah/mlip/models/m_blr.h @@ -1,3 +1,19 @@ +#ifndef M_BLR_H +#define M_BLR_H + +#include <tadah/mlip/models/m_tadah_base.h> +#include <tadah/mlip/descriptors_calc.h> +#include <tadah/mlip/design_matrix/design_matrix.h> +#include <tadah/mlip/design_matrix/functions/dm_function_base.h> +#include <tadah/mlip/normaliser.h> +#include <tadah/models/m_blr_train.h> +#include <tadah/core/config.h> + +#include <limits> +#include <stdexcept> +#include <type_traits> +#include <iostream> + /** Bayesian Linear Regression * * Model supported training modes: @@ -50,22 +66,6 @@ * * @tparam BF DM_BF_Base child, Basis function */ -#ifndef M_BLR_H -#define M_BLR_H - -#include "m_tadah_base.h" -#include "../descriptors_calc.h" -#include "../design_matrix/design_matrix.h" -#include "../design_matrix/functions/dm_function_base.h" -#include "../normaliser.h" -#include "../../MODELS/m_blr_train.h" -#include "../../CORE/config/config.h" - -#include <limits> -#include <stdexcept> -#include <type_traits> -#include <iostream> - template <class BF=DM_Function_Base&> diff --git a/models/m_krr.h b/include/tadah/mlip/models/m_krr.h similarity index 97% rename from models/m_krr.h rename to include/tadah/mlip/models/m_krr.h index 73443a32c870bd7c133809836e8322ff8331080a..a2cc52fce598e1ba3ed836a5cc85ff3a8dc638ce 100644 --- a/models/m_krr.h +++ b/include/tadah/mlip/models/m_krr.h @@ -1,13 +1,14 @@ #ifndef M_KRR_H #define M_KRR_H -#include "basis.h" -#include "m_tadah_base.h" -#include "../descriptors_calc.h" -#include "../design_matrix/design_matrix.h" -#include "../design_matrix/functions/dm_function_base.h" -#include "../../MODELS/m_krr_train.h" -#include "../../CORE/config/config.h" +#include <tadah/mlip/models/m_tadah_base.h> +#include <tadah/mlip/descriptors_calc.h> +#include <tadah/mlip/design_matrix/design_matrix.h> +#include <tadah/mlip/design_matrix/functions/dm_function_base.h> +#include <tadah/mlip/normaliser.h> +#include <tadah/models/m_krr_train.h> +#include <tadah/core/config.h> +#include <tadah/mlip/models/basis.h> #include <limits> #include <stdexcept> diff --git a/models/m_tadah_base.h b/include/tadah/mlip/models/m_tadah_base.h similarity index 91% rename from models/m_tadah_base.h rename to include/tadah/mlip/models/m_tadah_base.h index f0f4a31c950f4fa9fb8576c83c549926fc3c40fe..c98e4e67c49dc501d8af526ee77fba4e2ba37e57 100644 --- a/models/m_tadah_base.h +++ b/include/tadah/mlip/models/m_tadah_base.h @@ -1,15 +1,15 @@ #ifndef M_TADAH_BASE_H #define M_TADAH_BASE_H -#include "../structure.h" -#include "../structure_db.h" -#include "../st_descriptors.h" -#include "../st_descriptors_db.h" -#include "../normaliser.h" -#include "../descriptors_calc_base.h" -#include "../../CORE/core_types.h" -#include "../../MODELS/m_core.h" -#include "../../MODELS/m_predict.h" +#include <tadah/mlip/structure.h> +#include <tadah/mlip/structure_db.h> +#include <tadah/mlip/st_descriptors.h> +#include <tadah/mlip/st_descriptors_db.h> +#include <tadah/mlip/normaliser.h> +#include <tadah/mlip/descriptors_calc_base.h> +#include <tadah/core/core_types.h> +#include <tadah/models/m_core.h> +#include <tadah/models/m_predict.h> /** This interface provides functionality required from all models. */ diff --git a/nn_finder.h b/include/tadah/mlip/nn_finder.h similarity index 90% rename from nn_finder.h rename to include/tadah/mlip/nn_finder.h index 16df1aa0ec9fc1bec0fa8807eca56c12dab9b45f..e263514881ae56944fe22cabec39b8218534db8f 100644 --- a/nn_finder.h +++ b/include/tadah/mlip/nn_finder.h @@ -1,9 +1,9 @@ #ifndef NN_FINDER_H #define NN_FINDER_H -#include "../CORE/config/config.h" -#include "structure.h" -#include "structure_db.h" +#include <tadah/core/config.h> +#include <tadah/mlip/structure.h> +#include <tadah/mlip/structure_db.h> /** Nearest Neighbour Finder * diff --git a/normaliser.h b/include/tadah/mlip/normaliser.h similarity index 95% rename from normaliser.h rename to include/tadah/mlip/normaliser.h index 66e1252dc53aaca0998dc56ae659983c7c7f3d59..72e8be17b58cba85a1761360313df9da5fc454b4 100644 --- a/normaliser.h +++ b/include/tadah/mlip/normaliser.h @@ -1,10 +1,10 @@ #ifndef NORMALISER_H #define NORMALISER_H -#include "st_descriptors_db.h" -#include "../CORE/normaliser_core.h" -#include "../CORE/config/config.h" -#include "../CORE/core_types.h" +#include <tadah/mlip/st_descriptors_db.h> +#include <tadah/core/normaliser_core.h> +#include <tadah/core/config.h> +#include <tadah/core/core_types.h> #include <limits> #include <stdexcept> diff --git a/output/output.h b/include/tadah/mlip/output/output.h similarity index 97% rename from output/output.h rename to include/tadah/mlip/output/output.h index 4394a6dce1032c2418dd2a3ff37abcf5e7c41bae..c9957890b9c7cf41dafe582c68a476cc7e183709 100644 --- a/output/output.h +++ b/include/tadah/mlip/output/output.h @@ -1,13 +1,16 @@ +#ifndef OUTPUT_H +#define OUTPUT_H + +#include <tadah/mlip/structure_db.h> +#include <tadah/core/config.h> +#include <tadah/core/utils/utils.h> +#include <tadah/core/core_types.h> + #include <ios> #include <iostream> #include <iomanip> #include <string> -#include "../../CORE/config/config.h" -#include "../structure_db.h" -#include "../../CORE/utils/utils.h" -#include "../../CORE/core_types.h" - class Output { private: Config &pot_config; @@ -188,3 +191,4 @@ class Output { out_stress.close(); } }; +#endif // !OUTPUT_H diff --git a/st_descriptors.h b/include/tadah/mlip/st_descriptors.h similarity index 94% rename from st_descriptors.h rename to include/tadah/mlip/st_descriptors.h index b487c02d05a5148132ef9686cb02b6cc404859c1..56618d5dda034f5e5e912c467a7238c232a312bf 100644 --- a/st_descriptors.h +++ b/include/tadah/mlip/st_descriptors.h @@ -1,9 +1,9 @@ #ifndef ST_DESCRIPTORS_H #define ST_DESCRIPTORS_H -#include "structure.h" -#include "../CORE/config/config.h" -#include "../CORE/core_types.h" +#include <tadah/mlip/structure.h> +#include <tadah/core/config.h> +#include <tadah/core/core_types.h> #include <vector> diff --git a/st_descriptors_db.h b/include/tadah/mlip/st_descriptors_db.h similarity index 88% rename from st_descriptors_db.h rename to include/tadah/mlip/st_descriptors_db.h index 54b569cad90a3d2cb8e7f9d0ff94f18b930692a2..db8843c33b715d77d445322582bd7f678ee5d2d0 100644 --- a/st_descriptors_db.h +++ b/include/tadah/mlip/st_descriptors_db.h @@ -1,9 +1,9 @@ #ifndef ST_DESCRIPTORS_DB_H #define ST_DESCRIPTORS_DB_H -#include "../CORE/config/config.h" -#include "st_descriptors.h" -#include "structure_db.h" +#include <tadah/core/config.h> +#include <tadah/mlip/st_descriptors.h> +#include <tadah/mlip/structure_db.h> /** \brief Container for StDescriptors. diff --git a/structure.h b/include/tadah/mlip/structure.h similarity index 99% rename from structure.h rename to include/tadah/mlip/structure.h index 5b12357afb55cb06dd88ef34ee151d0584fb320f..f42580ef505487d6ff4f23b61ad69cf56728ea5e 100644 --- a/structure.h +++ b/include/tadah/mlip/structure.h @@ -1,8 +1,8 @@ #ifndef STRUCTURE_h #define STRUCTURE_h -#include "atom.h" -#include "../CORE/core_types.h" +#include <tadah/mlip/atom.h> +#include <tadah/core/core_types.h> #include <string> #include <iostream> diff --git a/structure_db.h b/include/tadah/mlip/structure_db.h similarity index 98% rename from structure_db.h rename to include/tadah/mlip/structure_db.h index 37bceddfefd76dfd74d181660ba937e528705e16..678a5e3cf380c89e27e9a529a155632dc6e86499 100644 --- a/structure_db.h +++ b/include/tadah/mlip/structure_db.h @@ -1,8 +1,8 @@ #ifndef STRUCTURE_DB_h #define STRUCTURE_DB_h -#include "structure.h" -#include "../CORE/config/config.h" +#include <tadah/mlip/structure.h> +#include <tadah/core/config.h> #include <string> #include <iostream> diff --git a/trainer.h b/include/tadah/mlip/trainer.h similarity index 98% rename from trainer.h rename to include/tadah/mlip/trainer.h index 3f72c8cd5d01ac47c638b7b7f79e95bcf8c90d63..aa56caeb096263cd1160af647d3b3a3e50e833bb 100644 --- a/trainer.h +++ b/include/tadah/mlip/trainer.h @@ -1,14 +1,15 @@ #ifndef MPI_TRAINER_H #define MPI_TRAINER_H +#include <tadah/mlip/descriptors_calc.h> +#include <tadah/mlip/design_matrix/design_matrix.h> +#include <tadah/mlip/trainer.h> +#include <tadah/mlip/design_matrix/functions/dm_function_base.h> +#include <tadah/mlip/models/m_tadah_base.h> +#include <tadah/mlip/nn_finder.h> +#include <tadah/core/config.h> +#include <tadah/models/dc_selector.h> + #include <iostream> -#include "../CORE/config/config.h" -#include "../MODELS/dc_selector.h" -#include "descriptors_calc.h" -#include "../MLIP/design_matrix/design_matrix.h" -#include "../MLIP/trainer.h" -#include "design_matrix/functions/dm_function_base.h" -#include "models/m_tadah_base.h" -#include "nn_finder.h" class Trainer { public: diff --git a/version.h b/include/tadah/mlip/version.h similarity index 100% rename from version.h rename to include/tadah/mlip/version.h diff --git a/models/m_all.h b/models/m_all.h deleted file mode 100644 index 21c64a18dde91e348cf02d60b85bebe522f5cc22..0000000000000000000000000000000000000000 --- a/models/m_all.h +++ /dev/null @@ -1,3 +0,0 @@ -//#include "m_tadah_base.h" -#include "m_blr.h" -#include "m_krr.h" diff --git a/models/m_blr.cpp b/models/m_blr.cpp deleted file mode 100644 index 69350920423fc69d44c18c6744b3abd1725c582f..0000000000000000000000000000000000000000 --- a/models/m_blr.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "m_blr.h" -#include "../../CORE/registry.h" diff --git a/models/m_krr.cpp b/models/m_krr.cpp deleted file mode 100644 index 03322f52f00937f1f4a3954b5dede0da748596b1..0000000000000000000000000000000000000000 --- a/models/m_krr.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "m_krr.h" -#include "../../CORE/registry.h" diff --git a/models/m_krr_work.h b/models/m_krr_work.h deleted file mode 100644 index e962d145bb44c6a87cc37f814ef59a789f314396..0000000000000000000000000000000000000000 --- a/models/m_krr_work.h +++ /dev/null @@ -1,357 +0,0 @@ -#ifndef M_KRR_H -#define M_KRR_H - -#include "basis.h" -#include "m_tadah_base.h" -#include "../descriptors_calc.h" -#include "../design_matrix/design_matrix.h" -#include "../design_matrix/functions/dm_function_base.h" -#include "../../MODELS/m_krr_train.h" -#include "../../CORE/config/config.h" - -#include <limits> -#include <stdexcept> -#include <type_traits> -#include <iostream> - -/** Kernel Ridge Regression implemented via Empirical Kernel Map - * - * **Optional Config keys**: - * - * - \ref LAMBDA = 0 -> use OLS - * - \ref LAMBDA > 0 -> manually set to given value - * - \ref LAMBDA = -1 -> use evidence approximation to find \f$\lambda\f$ - * - \ref SBASIS N -> Use N basis functions when nonlinear K is used - * - * @tparam K DM_Kern_Base child, Kernel function - */ -template -<class K=DM_Function_Base&> -class M_KRR: public M_Tadah_Base, - public M_KRR_Train<K> - //public M_KRR_Predict<K> -{ - - public: - - /** This constructor will preapare this object for either training - * or prediction (if potential is provides as a Config) - * - * Usage example: - * - * \code{.cpp} - * Config config("Config"); - * M_KRR<Kern_Linear> krr(config); - * \endcode - * - */ - using M_KRR_Train<K>::config; - using M_KRR_Train<K>::kernel; - using M_KRR_Train<K>::ekm; - M_KRR(Config &c): - M_KRR_Train<K>(c), - basis(c), - desmat(kernel,c) - { - norm = Normaliser(c); - //if (kernel.get_label()!="Kern_Linear" && config.exist("BASIS")) { - if (config.exist("BASIS")) { - basis.read_basis_from_config(); - for (int i=0; i<basis.b.cols(); ++i) - std::cout << basis.b.col(i) << std::endl; - kernel.set_basis(basis.b); - } - } - - /** This constructor will preapare this object for either training - * or prediction (if potential is provides as a Config) - * - * Usage example: - - * \code{.cpp} - * Config config("Config"); - * Kern_Linear kernel(config); - * M_KRR<> krr(kernel, config); - * \endcode - * - */ - M_KRR(K &kernel, Config &c): - M_KRR_Train<K>(kernel,c), - basis(c), - desmat(kernel,c) - { - norm = Normaliser(c); - //if (kernel.get_label()!="Kern_Linear" && config.exist("BASIS")) { - if (config.exist("BASIS")) { - basis.read_basis_from_config(); - for (int i=0; i<basis.b.cols(); ++i) - std::cout << basis.b.col(i) << std::endl; - kernel.set_basis(basis.b); - } - } - - double epredict(const aed_type2 &aed) { - return kernel.epredict(weights,aed); - }; - - double fpredict(const fd_type &fdij, const aed_type2 &aedi, const size_t k) { - return kernel.fpredict(weights,fdij,aedi,k); - } - - force_type fpredict(const fd_type &fdij, const aed_type2 &aedi) { - return kernel.fpredict(weights,fdij,aedi); - } - - void train(StDescriptorsDB &st_desc_db, const StructureDB &stdb) { - - //if(config.template get<bool>("NORM")) - // norm = Normaliser(config,st_desc_db); - - desmat.build(st_desc_db,stdb); - train(desmat); - } - - void train(StructureDB &stdb, DC_Base &dc) { - - // NEW IMPLEMENTATION OF KRR // - std::string force=config.template get<std::string>("FORCE"); - std::string stress=config.template get<std::string>("STRESS"); - config.remove("FORCE"); - config.remove("STRESS"); - config.add("FORCE", "false"); - config.add("STRESS", "false"); - StDescriptorsDB st_desc_db_temp = dc.calc(stdb); - if(config.template get<bool>("NORM")) { - norm = Normaliser(config); - norm.learn(st_desc_db_temp); - norm.normalise(st_desc_db_temp); - } - config.remove("FORCE"); - config.remove("STRESS"); - config.add("FORCE", force); - config.add("STRESS", stress); - basis.prep_basis_for_krr(st_desc_db_temp,stdb); - kernel.set_basis(basis.b); - M_KRR_Train<K>::train2(basis); - } - - Structure predict(const Config &c, StDescriptors &std, const Structure &st) { - // Used by tadah interface when predicting without -e flag - if(config.template get<bool>("NORM") && !std.normalised && kernel.get_label()!="Kern_Linear") - norm.normalise(std); - return M_Tadah_Base::predict(c,std,st); - } - - StructureDB predict(Config &c, const StructureDB &stdb, DC_Base &dc) { - return M_Tadah_Base::predict(c,stdb,dc); - } - - Config get_param_file() { - Config c = config; - c.remove("ALPHA"); - c.remove("BETA"); - c.remove("DBFILE"); - c.remove("FORCE"); - c.remove("STRESS"); - c.remove("VERBOSE"); - - c.clear_internal_keys(); - c.remove("MODEL"); - c.add("MODEL", label); - c.add("MODEL", kernel.get_label()); - - for (size_t i=0;i<weights.size();++i) { - c.add("WEIGHTS", weights(i)); - } - - if(config.template get<bool>("NORM")) { - for (size_t i=0;i<norm.mean.size();++i) { - c.add("NMEAN", norm.mean[i]); - } - for (size_t i=0;i<norm.std_dev.size();++i) { - c.add("NSTDEV", norm.std_dev[i]); - } - } - //if (kernel.get_label()!="Kern_Linear") { - // dump basis to the config file file - // make sure keys are not accidently assigned - if (c.exist("SBASIS")) - c.remove("SBASIS"); - if (c.exist("BASIS")) - c.remove("BASIS"); - c.add("SBASIS", basis.b.cols()); - for (size_t i=0;i<basis.b.cols();++i) { - for (size_t j=0;j<basis.b.rows();++j) { - c.add("BASIS", basis.b(j,i)); - } - } - //} - return c; - } - StructureDB predict(Config config_pred, StructureDB &stdb, DC_Base &dc, - aed_type2 &predicted_error) { - - LinearRegressor::read_sigma(config_pred,Sigma); - DesignMatrix<K> dm(kernel,config_pred); - dm.scale=false; // do not scale energy, forces and stresses - dm.build(stdb,norm,dc); - - //ekm.configure(basis.b); - //ekm.project(dm.Phi); - - - - // compute error - predicted_error = T_MDMT_diag(dm.Phi, Sigma); - double beta = config.template get<double>("BETA"); - predicted_error += 1.0/beta; - - // compute energy, forces and stresses - aed_type2 Tpred = T_dgemv(dm.Phi, weights); - - // Construct StructureDB object with predicted values - StructureDB stdb_; - stdb_.structures.resize(stdb.size()); - size_t i=0; - for (size_t s=0; s<stdb.size(); ++s) { - stdb_(s) = Structure(stdb(s)); - - predicted_error(i) = sqrt(predicted_error(i)); - - stdb_(s).energy = Tpred(i++); - if (config_pred.get<bool>("FORCE")) { - for (size_t a=0; a<stdb(s).natoms(); ++a) { - for (size_t k=0; k<3; ++k) { - predicted_error(i) = sqrt(predicted_error(i)); - stdb_(s).atoms[a].force[k] = Tpred(i++); - } - } - } - if (config_pred.get<bool>("STRESS")) { - for (size_t x=0; x<3; ++x) { - for (size_t y=x; y<3; ++y) { - predicted_error(i) = sqrt(predicted_error(i)); - stdb_(s).stress(x,y) = Tpred(i++); - if (x!=y) - stdb_(s).stress(y,x) = stdb_(s).stress(x,y); - } - } - } - } - return stdb_; - } - StructureDB predict(StructureDB &stdb) { - if(!trained) throw std::runtime_error("This object is not trained!\n\ - Hint: check different predict() methods."); - - phi_type &Phi = desmat.Phi; - - // compute energy, forces and stresses - aed_type2 Tpred = T_dgemv(Phi, weights); - - double eweightglob=config.template get<double>("EWEIGHT"); - double fweightglob=config.template get<double>("FWEIGHT"); - double sweightglob=config.template get<double>("SWEIGHT"); - - // Construct StructureDB object with predicted values - StructureDB stdb_; - stdb_.structures.resize(stdb.size()); - size_t s=0; - size_t i=0; - while (i<Phi.rows()) { - - stdb_(s).energy = Tpred(i++)*stdb(s).natoms()/eweightglob/stdb(s).eweight; - if (config.template get<bool>("FORCE")) { - stdb_(s).atoms.resize(stdb(s).natoms()); - for (size_t a=0; a<stdb(s).natoms(); ++a) { - for (size_t k=0; k<3; ++k) { - stdb_(s).atoms[a].force[k] = Tpred(i++)/fweightglob/stdb(s).fweight; - } - } - } - if (config.template get<bool>("STRESS")) { - for (size_t x=0; x<3; ++x) { - for (size_t y=x; y<3; ++y) { - stdb_(s).stress(x,y) = Tpred(i++)/sweightglob/stdb(s).sweight; - if (x!=y) - stdb_(s).stress(y,x) = stdb_(s).stress(x,y); - } - } - } - s++; - } - return stdb_; - } - - private: - std::string label="M_KRR"; - Basis<K> basis; - DesignMatrix<K> desmat; - - t_type convert_to_nweights(const t_type &weights) const { - if(kernel.get_label()!="Kern_Linear") { - throw std::runtime_error("Cannot convert weights to nweights for\n\ - non linear kernel\n"); - } - t_type kw(weights.rows()); - kw.set_zero(); - if(config.template get<bool>("NORM") && kernel.get_label()=="Kern_Linear") { - // normalise weights such that when predict is called - // we can supply it with a non-normalised descriptor - kw.resize(weights.rows()); - kw(0) = weights(0); - for (size_t i=1; i<weights.size(); ++i) { - - if (norm.std_dev[i] > std::numeric_limits<double>::min()) - kw(i) = weights(i) / norm.std_dev[i]; - else - kw(i) = weights(i); - - kw(0) -= norm.mean[i]*kw(i); - - } - } - return kw; - } - // The opposite of convert_to_nweights() - t_type convert_to_weights(const t_type &kw) const { - if(kernel.get_label()!="Kern_Linear") { - throw std::runtime_error("Cannot convert nweights to weights for\n\ - non linear kernel\n"); - } - // convert normalised weights back to "normal" - t_type w(kw.rows()); - w.set_zero(); - w(0) = kw(0); - for (size_t i=1; i<kw.size(); ++i) { - if (norm.std_dev[i] > std::numeric_limits<double>::min()) - w(i) = kw(i) * norm.std_dev[i]; - else - w(i) = kw(i); - - w(0) += kw(i)*norm.mean[i]; - } - return w; - } - - template <typename D> - void train(D &desmat) { - phi_type &Phi = desmat.Phi; - t_type &T = desmat.T; - M_KRR_Train<K>::train(Phi,T); - - //if (config.template get<bool>("NORM") && - // kernel.get_label()=="Kern_Linear") { - // weights = convert_to_nweights(weights); - //} - } - - // Do we want to confuse user with those and make them public? - // Either way they must be stated as below to silence clang warning - using M_KRR_Train<K>::predict; - using M_KRR_Train<K>::train; - using M_KRR_Train<K>::trained; - using M_KRR_Train<K>::weights; - using M_KRR_Train<K>::Sigma; -}; -#endif diff --git a/analytics/analytics.cpp b/src/analytics.cpp similarity index 98% rename from analytics/analytics.cpp rename to src/analytics.cpp index 9a8b3ea3de828d86bcba40738b07e06ef6bbc65f..4865127337529b0cc2c13c16dfaa138c0e4f92c1 100644 --- a/analytics/analytics.cpp +++ b/src/analytics.cpp @@ -1,5 +1,5 @@ -#include "analytics.h" -#include "statistics.h" +#include <tadah/mlip/analytics/analytics.h> +#include <tadah/mlip/analytics/statistics.h> Analytics::Analytics(const StructureDB &st, const StructureDB &stp): st(st), diff --git a/atom.cpp b/src/atom.cpp similarity index 91% rename from atom.cpp rename to src/atom.cpp index 98cd9291c287c3b05c150aa8df70afd6bd1ae9d5..a84be1e3ab60da955af783fff4d203c3d457328a 100644 --- a/atom.cpp +++ b/src/atom.cpp @@ -1,5 +1,5 @@ -#include "atom.h" -#include "../CORE/periodic_table.h" +#include <tadah/mlip/atom.h> +#include <tadah/core/periodic_table.h> #include <iomanip> Atom::Atom() {} diff --git a/src/dm_bf_base.cpp b/src/dm_bf_base.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e68de39417b717811cc30da8c434ada3f4a9a2de --- /dev/null +++ b/src/dm_bf_base.cpp @@ -0,0 +1,2 @@ +#include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_base.h> +DM_BF_Base::~DM_BF_Base() {} diff --git a/design_matrix/functions/basis_functions/dm_bf_linear.cpp b/src/dm_bf_linear.cpp similarity index 96% rename from design_matrix/functions/basis_functions/dm_bf_linear.cpp rename to src/dm_bf_linear.cpp index 8b3241a035dabc0f951350ff5ae6aeaa61efa6e0..f04f66e4921900f8ec3dea20e5c5adae8bc3fd1d 100644 --- a/design_matrix/functions/basis_functions/dm_bf_linear.cpp +++ b/src/dm_bf_linear.cpp @@ -1,4 +1,4 @@ -#include "dm_bf_linear.h" +#include <tadah/mlip/design_matrix/functions/basis_functions/dm_bf_linear.h> //CONFIG::Registry<DM_Function_Base>::Register<DM_BF_Linear> DM_BF_Linear_1( "BF_Linear" ); //CONFIG::Registry<DM_Function_Base,Config&>::Register<DM_BF_Linear> DM_BF_Linear_2( "BF_Linear" ); diff --git a/design_matrix/functions/basis_functions/dm_bf_polynomial2.cpp b/src/dm_bf_polynomial2.cpp similarity index 97% rename from design_matrix/functions/basis_functions/dm_bf_polynomial2.cpp rename to src/dm_bf_polynomial2.cpp index 9543e92baf97cdf2b4d1058e837b288ff1ee945b..51c3f561ce32df7c67017f379ec9f76a5eb3f123 100644 --- a/design_matrix/functions/basis_functions/dm_bf_polynomial2.cpp +++ b/src/dm_bf_polynomial2.cpp @@ -1,4 +1,4 @@ -#include "dm_bf_polynomial2.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" ); diff --git a/design_matrix/functions/dm_f_all.cpp b/src/dm_f_all.cpp similarity index 96% rename from design_matrix/functions/dm_f_all.cpp rename to src/dm_f_all.cpp index 5d174a089f9e1fdd668a8171b26c5e56bbc15dff..64a583a2ead0ea791730a3e0b5d00f8d0e78e84c 100644 --- a/design_matrix/functions/dm_f_all.cpp +++ b/src/dm_f_all.cpp @@ -1,4 +1,4 @@ -#include "dm_f_all.h" +#include <tadah/mlip/design_matrix/functions/dm_f_all.h> template<> CONFIG::Registry<DM_Function_Base>::Map CONFIG::Registry<DM_Function_Base>::registry{}; template<> CONFIG::Registry<DM_Function_Base,Config&>::Map CONFIG::Registry<DM_Function_Base,Config&>::registry{}; diff --git a/src/dm_function_base.cpp b/src/dm_function_base.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8c7af9b405e4ed2a9de97a58ac8b770b7a68f62b --- /dev/null +++ b/src/dm_function_base.cpp @@ -0,0 +1,2 @@ +#include <tadah/mlip/design_matrix/functions/dm_function_base.h> + diff --git a/design_matrix/functions/kernels/dm_kern_base.cpp b/src/dm_kern_base.cpp similarity index 97% rename from design_matrix/functions/kernels/dm_kern_base.cpp rename to src/dm_kern_base.cpp index 7227a1b1c5e7039456d976ea98d5f1628a91c632..92d62af48cb6227225fd049ada42970b2bfed683 100644 --- a/design_matrix/functions/kernels/dm_kern_base.cpp +++ b/src/dm_kern_base.cpp @@ -1,4 +1,4 @@ -#include "dm_kern_base.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_base.h> DM_Kern_Base::~DM_Kern_Base() {} size_t DM_Kern_Base::get_phi_cols(const Config &) diff --git a/design_matrix/functions/kernels/dm_kern_linear.cpp b/src/dm_kern_linear.cpp similarity index 97% rename from design_matrix/functions/kernels/dm_kern_linear.cpp rename to src/dm_kern_linear.cpp index 28fa629f3607bf7271c61cb45c9cf2144f0bf0d1..c04a361d072d474389ef8b0bcbdee9cc25340ba2 100644 --- a/design_matrix/functions/kernels/dm_kern_linear.cpp +++ b/src/dm_kern_linear.cpp @@ -1,4 +1,4 @@ -#include "dm_kern_linear.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" ); diff --git a/design_matrix/functions/kernels/dm_kern_lq.cpp b/src/dm_kern_lq.cpp similarity index 80% rename from design_matrix/functions/kernels/dm_kern_lq.cpp rename to src/dm_kern_lq.cpp index 590406ca712793ed36bfea7e7c701c903d169f29..0333db06a7ce4a9c9113e4b484bc1dc007d43db4 100644 --- a/design_matrix/functions/kernels/dm_kern_lq.cpp +++ b/src/dm_kern_lq.cpp @@ -1,4 +1,4 @@ -#include "dm_kern_lq.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" ); diff --git a/design_matrix/functions/kernels/dm_kern_polynomial.cpp b/src/dm_kern_polynomial.cpp similarity index 83% rename from design_matrix/functions/kernels/dm_kern_polynomial.cpp rename to src/dm_kern_polynomial.cpp index b533b005a5ca1fae0c88dfb2a3f1a77a5f8af6bf..b5fccbd4ab82ae3c397a002abcdadddeacb582c8 100644 --- a/design_matrix/functions/kernels/dm_kern_polynomial.cpp +++ b/src/dm_kern_polynomial.cpp @@ -1,4 +1,4 @@ -#include "dm_kern_polynomial.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_polynomial.h> //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" ); diff --git a/design_matrix/functions/kernels/dm_kern_quadratic.cpp b/src/dm_kern_quadratic.cpp similarity index 83% rename from design_matrix/functions/kernels/dm_kern_quadratic.cpp rename to src/dm_kern_quadratic.cpp index f710de24c65c74d6b3bd37fe0317222eb31476d2..402c7771f57933a289a08802eddc6de1ad79ddfb 100644 --- a/design_matrix/functions/kernels/dm_kern_quadratic.cpp +++ b/src/dm_kern_quadratic.cpp @@ -1,4 +1,4 @@ -#include "dm_kern_quadratic.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_quadratic.h> //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" ); diff --git a/design_matrix/functions/kernels/dm_kern_rbf.cpp b/src/dm_kern_rbf.cpp similarity index 81% rename from design_matrix/functions/kernels/dm_kern_rbf.cpp rename to src/dm_kern_rbf.cpp index 2a2112af1de5997daeaed1fff42d66d41a2e6c97..7ff05ef7af2d432ef6a82e33d1118c1d1ae31374 100644 --- a/design_matrix/functions/kernels/dm_kern_rbf.cpp +++ b/src/dm_kern_rbf.cpp @@ -1,4 +1,4 @@ -#include "dm_kern_rbf.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_rbf.h> //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" ); diff --git a/design_matrix/functions/kernels/dm_kern_sigmoid.cpp b/src/dm_kern_sigmoid.cpp similarity index 82% rename from design_matrix/functions/kernels/dm_kern_sigmoid.cpp rename to src/dm_kern_sigmoid.cpp index bf847236a791d25fa1120e425ba8309af909ab63..d1fb598553daa2c9fb695f2da49c3393e246ed6e 100644 --- a/design_matrix/functions/kernels/dm_kern_sigmoid.cpp +++ b/src/dm_kern_sigmoid.cpp @@ -1,4 +1,4 @@ -#include "dm_kern_sigmoid.h" +#include <tadah/mlip/design_matrix/functions/kernels/dm_kern_sigmoid.h> //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" ); diff --git a/models/m_all.cpp b/src/m_all.cpp similarity index 89% rename from models/m_all.cpp rename to src/m_all.cpp index 6d50651b2e08b1e13a5a227c4a6004359da7c24f..9c67972b5feb51734dcf20972aec98237cbfab37 100644 --- a/models/m_all.cpp +++ b/src/m_all.cpp @@ -1,4 +1,4 @@ -#include "m_all.h" +#include <tadah/mlip/models/m_all.h> template<> CONFIG::Registry<M_Tadah_Base,DM_Function_Base&,Config&>::Map CONFIG::Registry<M_Tadah_Base,DM_Function_Base&,Config&>::registry{}; CONFIG::Registry<M_Tadah_Base,DM_Function_Base&,Config&>::Register<M_KRR<>> M_KRR_1("M_KRR"); diff --git a/src/m_blr.cpp b/src/m_blr.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bdb85a73602412308a15ce55a4977f548d0ba742 --- /dev/null +++ b/src/m_blr.cpp @@ -0,0 +1,2 @@ +#include <tadah/mlip/models/m_blr.h> +#include <tadah/core/registry.h> diff --git a/src/m_krr.cpp b/src/m_krr.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d3cff341128e424be5e57afe5723901340524082 --- /dev/null +++ b/src/m_krr.cpp @@ -0,0 +1,2 @@ +#include <tadah/mlip/models/m_krr.h> +#include <tadah/core/registry.h> diff --git a/models/m_tadah_base.cpp b/src/m_tadah_base.cpp similarity index 98% rename from models/m_tadah_base.cpp rename to src/m_tadah_base.cpp index 1ebf99c56fd548ed9fe2a360412ad758214fdbb6..11cac065b7dff94a3c0eb954d44c95b9c88ab74c 100644 --- a/models/m_tadah_base.cpp +++ b/src/m_tadah_base.cpp @@ -1,4 +1,4 @@ -#include "m_tadah_base.h" +#include <tadah/mlip/models/m_tadah_base.h> void M_Tadah_Base:: fpredict(const size_t a, force_type &v, diff --git a/nn_finder.cpp b/src/nn_finder.cpp similarity index 99% rename from nn_finder.cpp rename to src/nn_finder.cpp index 8b63a42d8521220aed18f34d2ffe7c559df39ecc..1fedb4e9d1700c2b7af56652d8b0b28cfa8b84b4 100644 --- a/nn_finder.cpp +++ b/src/nn_finder.cpp @@ -1,4 +1,4 @@ -#include "nn_finder.h" +#include <tadah/mlip/nn_finder.h> #include <limits> NNFinder::NNFinder(Config &config): diff --git a/st_descriptors.cpp b/src/st_descriptors.cpp similarity index 97% rename from st_descriptors.cpp rename to src/st_descriptors.cpp index bb9a5c2bb070d8183ec92d00f19ec8f9fbcb28db..e7a2840877adeec62b05e229996df94007c0dd82 100644 --- a/st_descriptors.cpp +++ b/src/st_descriptors.cpp @@ -1,4 +1,4 @@ -#include "st_descriptors.h" +#include <tadah/mlip/st_descriptors.h> StDescriptors::StDescriptors(const Structure &s, const Config &c): // fully initialize aed diff --git a/st_descriptors_db.cpp b/src/st_descriptors_db.cpp similarity index 90% rename from st_descriptors_db.cpp rename to src/st_descriptors_db.cpp index 87c1591dead7f33b69a18ae2b461f94239732bd0..9f80ce091580001b8afbf471dc5b92401206fbe0 100644 --- a/st_descriptors_db.cpp +++ b/src/st_descriptors_db.cpp @@ -1,4 +1,4 @@ -#include "st_descriptors_db.h" +#include <tadah/mlip/st_descriptors_db.h> StDescriptorsDB::StDescriptorsDB(const StructureDB &stdb, Config &config): st_descs(stdb.size()) diff --git a/analytics/statistics.cpp b/src/statistics.cpp similarity index 94% rename from analytics/statistics.cpp rename to src/statistics.cpp index fce801956a8a6391734a8027dcfb91147a36b6bb..255d86761eb19c2008b62246bdf9f8ea181677bd 100644 --- a/analytics/statistics.cpp +++ b/src/statistics.cpp @@ -1,4 +1,5 @@ -#include "statistics.h" +#include <tadah/mlip/analytics/statistics.h> + #include <cmath> double Statistics::res_sum_sq(const vec &obs, const vec &pred) { diff --git a/structure.cpp b/src/structure.cpp similarity index 98% rename from structure.cpp rename to src/structure.cpp index e3d504c8e5fb2edb86faf483ed719c37c9871077..d6e0b8d64f0464f4f6e9a439bc10f560bcfcba7f 100644 --- a/structure.cpp +++ b/src/structure.cpp @@ -1,7 +1,8 @@ -#include "structure.h" +#include <tadah/mlip/structure.h> +#include <tadah/core/periodic_table.h> + #include <stdexcept> #include <cmath> -#include "../CORE/periodic_table.h" Structure::Structure() {} diff --git a/structure_db.cpp b/src/structure_db.cpp similarity index 98% rename from structure_db.cpp rename to src/structure_db.cpp index da7f8fc489c44d4cd7f7f1e7590393fdc9fb7419..c6e973307f30a4960893e6d5fc9186a9d3b3e426 100644 --- a/structure_db.cpp +++ b/src/structure_db.cpp @@ -1,4 +1,4 @@ -#include "structure_db.h" +#include <tadah/mlip/structure_db.h> StructureDB::StructureDB() {} StructureDB::StructureDB(const Config &config) { diff --git a/tests/test_atom.cpp b/tests/test_atom.cpp deleted file mode 100644 index fa435f18d86a9f88b9271dd2b009d6a89b5f6be7..0000000000000000000000000000000000000000 --- a/tests/test_atom.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "catch2/catch.hpp" -#include "../atom.h" -#include <string> - - -char symbol1[]="Ti"; -int Z1 = 22; -Vec3d pos1(1.0,2.0,3.0); -Vec3d force1(4.0,5.0,6.0); -Element element1(symbol1,Z1); - -char symbol2[]="Nb"; -int Z2 = 41; -Vec3d pos2(-1.0,-2.0,-3.0); -Vec3d force2(-4.0,-5.0,-6.0); -Element element2(symbol2,Z2); - -TEST_CASE( "Testing Atom class constructor", "[atom]" ) { - - - // Trivial case 1/2 - Atom a(element1, 1.0, 2.0, 3.0, - 4.0, 5.0, 6.0); - - REQUIRE( pos1 == a.position ); - REQUIRE( force1 == a.force ); - REQUIRE( symbol1[0] == a.symbol[0] ); - REQUIRE( symbol1[1] == a.symbol[1] ); - REQUIRE( Z1 == a.Z ); - - // Trivial case 2/2 - Atom b; - b.position = pos1; - b.force = force1; - b.symbol[0] = symbol1[0]; - b.symbol[1] = symbol1[1]; - b.Z = Z1; - - REQUIRE( pos1 == b.position ); - REQUIRE( force1 == b.force ); - REQUIRE( symbol1[0] == b.symbol[0] ); - REQUIRE( symbol1[1] == b.symbol[1] ); - REQUIRE( Z1 == b.Z ); - - REQUIRE( a == b ); -} -TEST_CASE( "Testing Atom operator==", "[atom_operator==]" ) { - Atom a(element1, 1.0, 2.0, 3.0, - 4.0, 5.0, 6.0); - Atom b(element1, 1.0, 2.0, 3.0, - 4.0, 5.0, 6.0); - REQUIRE(a==b); - - Atom c(element2, -1.0, -2.0, -3.0, - -4.0, -5.0, -6.0); - REQUIRE(!(a==c)); -} -TEST_CASE( "Testing Atom copy", "[atom_copy]" ) { - Atom a(element1, 1.0, 2.0, 3.0, - 4.0, 5.0, 6.0); - Atom b=a; - REQUIRE(a==b); -} diff --git a/tests/test_main.cpp b/tests/test_main.cpp deleted file mode 100644 index 8d417220ea552077e1c9c123fa6724032fd68054..0000000000000000000000000000000000000000 --- a/tests/test_main.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one cpp file -#include "catch2/catch.hpp" -// No test in this file... diff --git a/tests/test_structure.cpp b/tests/test_structure.cpp deleted file mode 100644 index 99a46a06d6cc8133e3a634a7632b726678eda642..0000000000000000000000000000000000000000 --- a/tests/test_structure.cpp +++ /dev/null @@ -1,118 +0,0 @@ -#include <string> -#include <filesystem> -#include "catch2/catch.hpp" -#include "../atom.h" -#include "../structure.h" - -// Conversion factor from eV/A^3 to kbar; -double fac = 1602.1766208; - -TEST_CASE( "Testing Structure class volume", "[structure_volume]" ) { - //using vec=Eigen::Vector3d; - - //std::string symbol="Ti"; - //std::string name="Titanium"; - //int Z = 22; - //vec pos(1.0,2.0,3.0); - //vec force(4.0,5.0,6.0); - //Element element(symbol,name,Z); - - //Atom a(element, 1.0, 2.0, 3.0, - // 4.0, 5.0, 6.0); - - Structure st; - // Integer volume - st.cell.load(2,-1,3, - 3,2,-4, - -2,0,1); - - REQUIRE(st.get_volume() == 11 ); - - // double volume - st.cell.load(5.0147,5.0104,-5.0018, - -9.9924,-3.3395,-9.9662, - -25.6396,38.4594,12.8198); - - REQUIRE(st.get_volume() == Approx(5980.0279772134).epsilon(1e-10)); - - -} -TEST_CASE( "Testing Structure virial pressure calculations", "[structure_virial_pressures]" ) { - - Structure st; - st.cell.load(9.374769,0.0,0.0, - 0.0,9.374769,0.0, - 0.0,0.0,9.374769); - - REQUIRE(st.get_volume() == Approx(823.91)); - - st.stress.load(257.0893807653,0.0,0.0, - 0.0,257.0893807653,0.0, - 0.0,0.0,257.0893807653); - REQUIRE(fac*st.get_virial_pressure() == Approx(499.93)); - -} -TEST_CASE( "Testing Structure read and write", "[structure_read_write]" ) { - Structure st; - st.read("tests_data/structure_1.dat"); - - REQUIRE(st.get_volume() == Approx(989.521812)); - - REQUIRE(fac*st.get_virial_pressure() == Approx(26.705578)); - REQUIRE(fac*st.get_pressure(300) == Approx(28.965914)); - REQUIRE(fac*st.get_pressure(0) == Approx(26.705578)); - - std::string tempfile = std::tmpnam(nullptr); - st.save(tempfile); - - Structure st_temp; - st_temp.read(tempfile); - - REQUIRE(st_temp.get_volume() == Approx(989.521812)); - - REQUIRE(fac*st_temp.get_virial_pressure() == Approx(26.705578)); - REQUIRE(fac*st_temp.get_pressure(300) == Approx(28.965914)); - REQUIRE(fac*st_temp.get_pressure(0) == Approx(26.705578)); - - REQUIRE(st==st_temp); - - std::remove(tempfile.c_str()); - -} -TEST_CASE( "Testing Structure compare", "[structure_compare]" ) { - Structure st; - st.read("tests_data/structure_1.dat"); - std::string tempfile = std::tmpnam(nullptr); - st.save(tempfile); - - Structure st_temp; - st_temp.read(tempfile); - - SECTION("Compare unchanged") { - REQUIRE(st==st_temp); - } - SECTION("Compare symbols") { - REQUIRE(st==st_temp); - st_temp.atoms[0].symbol[0]='X'; - st_temp.atoms[0].symbol[1]='X'; - REQUIRE(!(st==st_temp)); - } - SECTION("Compare position") { - REQUIRE(st==st_temp); - st_temp.atoms[0].position(0.12,0.13,10.14); - REQUIRE(!(st==st_temp)); - } - SECTION("Compare force") { - REQUIRE(st==st_temp); - st_temp.atoms[0].force(1.12, 0.13, 0.134); - REQUIRE(!(st==st_temp)); - } - - std::remove(tempfile.c_str()); -} -TEST_CASE( "Testing Structure copy", "[structure_copy]" ) { - Structure st; - st.read("tests_data/structure_1.dat"); - Structure st2=st; - REQUIRE(st==st2); -} diff --git a/utils/DX_FD.h b/utils/DX_FD.h deleted file mode 100644 index d5acbaa32b01e846ce649066dd431920268bd588..0000000000000000000000000000000000000000 --- a/utils/DX_FD.h +++ /dev/null @@ -1,272 +0,0 @@ -#ifndef TADAH_DX_FD_H -#define TADAH_DX_FD_H -#include "../../CORE/config/config.h" -#include "../../CORE/core_types.h" -#include "../../MODELS/descriptors/d_all.h" -#include "../../MODELS/cutoffs/cut_all.h" -#include "../../LIBS/Eigen/Dense" -#include <vector> - -typedef Eigen::VectorXd rhoi_type; -class DX_FD { - public: - DX_FD() {}; - template <typename D2, typename C> - void test_d2() { - double rcut = 6.0; - Config config; - config.remove("INIT2B"); - config.remove("VERBOSE"); - config.remove("BIAS"); - config.add("VERBOSE", 1); - config.add("INIT2B","true"); - config.add("BIAS","false"); - config.add("RCUT2B",rcut); - config.add("CGRID2B","-1 5 1.1 5.0"); - //std::cout << config << std::endl; - C cutoff(rcut); - D2 d2(config); - test_d2(&d2,&cutoff); - } - void test_d2(D2_Base *d2, Cut_Base *cutoff, double h=1e-4) { - - // Setup - aed_type2 aed(d2->size()); - aed_type2 aedp(d2->size()); - aed_type2 aedn(d2->size()); - - // Initial configuration - Atom a1("a1",0.1,7.2,1.3,0,0,0); - Atom a2("a2",2.2,4.1,1.8,0,0,0); - double r12 = (a1.position-a2.position).norm(); - double fc12 = cutoff->calc(r12); - double fcp12 = cutoff->calc_prime(r12); // cutoff prime - - // "Positive" displacement - double r12p = r12+h; - double fc12p = cutoff->calc(r12p); - - // "Negative" displacement - double r12n = r12-h; - double fc12n = cutoff->calc(r12n); - - d2->calc_aed(r12, r12*r12,fc12,aed); - d2->calc_aed(r12p, r12p*r12p,fc12p,aedp); - d2->calc_aed(r12n, r12n*r12n,fc12n,aedn); - - fd_type fd(d2->size(),3); // true fd - fd_type fd1a(d2->size(),3); // finite difference fd(approx) - - d2->calc_dXijdri(r12,r12*r12,fc12,fcp12,fd); - d2->calc_fd_approx(r12,fc12p,fc12n,aedp,aedn,fd1a,h); - - std::cout << "\nfd:\n" << fd << std::endl; - std::cout << "\nfda:\n" << fd1a << std::endl; - std::cout << "\nfd-fd1a:\n" << fd-fd1a << std::endl; - } - template <typename DM, typename C> - void test_dm() { - double rcut = 5.3; - Config config; - config.remove("INITMB"); - config.add("INITMB","true"); - config.remove("BIAS"); - config.add("BIAS","false"); - config.add("RCUTMB",rcut); - config.add("AGRIDMB",3); - config.add("SGRIDMB","-2 3 0.01 0.4"); - config.add("CGRIDMB","-1 2 0.0 3.0"); - config.add("SETFL","/home/s1351949/PROJECTS/tadah/workspace/Ta/Ta1_Ravelo_2013.eam.alloy"); - config.remove("VERBOSE"); - config.add("VERBOSE", 0); - //std::cout << config << std::endl; - C cutoff(rcut); - DM dm(config); - test_dm(&dm,&cutoff); - } - void test_dm(DM_Base *dm, Cut_Base *cutoff, double h=1e-4) { - - // Initial configuration - vec3d r1(0.0,0.1,0.0); - vec3d r2(1.1,0.3,1.1); - vec3d r3(3.1,4.2,0.8); - vec3d r4(2.1,0.0,3.8); - - std::vector<vec3d> rs = {r1,r2,r3,r4}; - std::cout << " True FD: " << std::endl; - std::vector<fd_type> fdi = calc_true_fd_dm(dm,cutoff,rs); - std::cout << " Finite difference FD: " << std::endl; - std::vector<fd_type> fda = calc_apporx_fd_dm(dm,cutoff,rs,h); - - std::cout << " Difference True-Approximation: " << std::endl; - for (size_t i=0; i<fdi.size(); ++i) { - std::cout << "fd" << i << ":\n" << fdi[i]-fda[i] << std::endl; - } - - - } - std::vector<fd_type> calc_true_fd_dm(DM_Base *dm, Cut_Base *cutoff, std::vector<vec3d> &rs) { - vec3d - // Copy vector to matrix - Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> rsm(rs.size(),3); // [N,3] - for (size_t i=0; i<rs.size(); ++i ) { - for (size_t j=0; j<3; ++j ) { - rsm(i,j) = rs[i][j]; - } - } - - Eigen::Matrix<vec3d,Eigen::Dynamic,Eigen::Dynamic> vecij(rs.size(),rs.size()); // [N,N] - std::vector<aed_type> aeds(rs.size(), aed_type(dm->size())); - std::vector<rhoi_type> rhois(rs.size()); - Eigen::Matrix<fd_type,Eigen::Dynamic,Eigen::Dynamic> fdij(rs.size(),rs.size()); // [N,N] - std::vector<fd_type> fdi(rs.size()); // [N,1] - - - // Initialize all data structures - for (size_t i=0; i<rs.size(); ++i ) { - dm->init_rhoi(rhois[i]); - aeds[i].set_zero(); - fdi[i] = fd_type(dm->size(),3); - fdi[i].set_zero(); - for (size_t j=i+1; j<rs.size(); ++j ) { - fdij(i,j) = fd_type(dm->size(),3); - fdij(i,j).set_zero(); - } - } - - for (size_t i=0; i<rs.size(); ++i ) { - for (size_t j=0; j<rs.size(); ++j ) { - vecij(i,j) = rsm.row(i) - rsm.row(j); - } - } - - for (size_t i=0; i<rs.size(); ++i ) { - - // Calculate densities - for (size_t j=i+1; j<rs.size(); ++j ) { - vec3d &vij = vecij(i,j); - vec3d &vji = vecij(j,i); - double rij = vij.norm(); - double fcij = cutoff->calc(rij); - dm->calc_rho(rij,rij*rij,fcij,vij,rhois[i]); - dm->calc_rho(rij,rij*rij,fcij,vji,rhois[j]); - } - - // Calculate energy and derivative of the embedding - // function at the atom - dm->calc_aed(rhois[i], aeds[i]); - - } - - for (size_t i=0; i<rs.size(); ++i ) { - - for (size_t j=i+1; j<rs.size(); ++j ) { - vec3d &vij = vecij(i,j); - double rij = vij.norm(); - double fcij = cutoff->calc(rij); - double fcpij = cutoff->calc_prime(rij); - int mode = dm->calc_dXijdri_dXjidri(rij,rij*rij,vij,fcij,fcpij,rhois[i],rhois[j],fdij(i,j)); - if (mode==0) { - for (size_t k=0; k<3; ++k ) { - fdi[i].col(k) += vij(k)*fdij(i,j).col(0)/rij; - fdi[j].col(k) -= vij(k)*fdij(i,j).col(0)/rij; - } - } - else { - fdi[i] += fdij(i,j); - fdi[j] -= fdij(i,j); - } - } - std::cout << "fd" << i << ":\n" << fdi[i] << std::endl; - } - - return fdi; - } - std::vector<fd_type> calc_apporx_fd_dm(DM_Base *dm, Cut_Base *cutoff, std::vector<vec3d> &rs, double h) { - // Copy vector to matrix - Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> rsp(rs.size(),3); // [N,3] - Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> rsn(rs.size(),3); // [N,3] - - Eigen::Matrix<vec3d,Eigen::Dynamic,Eigen::Dynamic> vecijp(rs.size(),rs.size()); // [N,N] - Eigen::Matrix<vec3d,Eigen::Dynamic,Eigen::Dynamic> vecijn(rs.size(),rs.size()); // [N,N] - std::vector<aed_type> aedp(rs.size(), aed_type(dm->size())); - std::vector<aed_type> aedn(rs.size(), aed_type(dm->size())); - std::vector<rhoi_type> rhoip(rs.size()); - std::vector<rhoi_type> rhoin(rs.size()); - std::vector<fd_type> fdi(rs.size()); // [N,1] - - // reset all positions - for (size_t i=0; i<rs.size(); ++i ) { - fdi[i] = fd_type(dm->size(),3); - fdi[i].set_zero(); - dm->init_rhoi(rhoip[i]); - dm->init_rhoi(rhoin[i]); - aedn[i].set_zero(); - for (size_t k=0; k<3; ++k ) { - rsp(i,k) = rs[i][k]; - rsn(i,k) = rs[i][k]; - } - } - - - - for (size_t ii=0; ii<rs.size(); ++ii ) { - for (size_t k=0; k<3; ++k ) { - - // displace atom ii by h in +/-k direction - rsp(ii,k) = rs[ii][k] + h; - rsn(ii,k) = rs[ii][k] - h; - - // reset arrays for new k - for (size_t i=0; i<rs.size(); ++i ) { - aedp[i].set_zero(); - aedn[i].set_zero(); - rhoip[i].set_zero(); - rhoin[i].set_zero); - } - - for (size_t i=0; i<rs.size(); ++i ) { - for (size_t j=i+1; j<rs.size(); ++j ) { - vecijp(i,j) = rsp.row(i) - rsp.row(j); - vecijn(i,j) = rsn.row(i) - rsn.row(j); - vec3d vijp = vecijp(i,j); - vec3d vijn = vecijn(i,j); - vec3d vjip = -vijp; - vec3d vjin = -vijn; - double rijp = vijp.norm(); - double rijn = vijn.norm(); - double fcijp = cutoff->calc(rijp); - double fcijn = cutoff->calc(rijn); - dm->calc_rho(rijp,rijp*rijp,fcijp,vijp,rhoip[i]); - dm->calc_rho(rijp,rijp*rijp,fcijp,vjip,rhoip[j]); - dm->calc_rho(rijn,rijn*rijn,fcijn,vijn,rhoin[i]); - dm->calc_rho(rijn,rijn*rijn,fcijn,vjin,rhoin[j]); - } - - dm->calc_aed(rhoip[i], aedp[i]); - dm->calc_aed(rhoin[i], aedn[i]); - fdi[ii].col(k) += (aedp[i]-aedn[i])/(2*h); - } - // reset back position for next k - rsp(ii,k) = rs[ii][k]; - rsn(ii,k) = rs[ii][k]; - } - - std::cout << "fd" << ii << ":\n" << fdi[ii] << std::endl; - } - return fdi; - } - - -}; -class Lattice { - public: - double a; // lattice parameter - double b; // lattice parameter - double c; // lattice parameter - double alpha; // Angle - double betta; // Angle - double gamma; // Angle -}; -#endif -