diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e1a7a18..0c2fda7 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,164 +1,177 @@ ##################### External packages ######################### # catch for unit testing include(ExternalProject) find_package(Git REQUIRED) ExternalProject_Add( catch PREFIX ${CMAKE_BINARY_DIR}/catch GIT_REPOSITORY https://github.com/philsquared/Catch.git TIMEOUT 10 UPDATE_COMMAND ${GIT_EXECUTABLE} pull CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" LOG_DOWNLOAD ON ) ################## Configuration ################################ set(PROJECT_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}) ExternalProject_Get_Property(catch source_dir) set(CATCH_INCLUDE_DIR ${source_dir}/include CACHE INTERNAL "Path to include folder for Catch") include_directories(${CATCH_INCLUDE_DIR}) include_directories(${PROJECT_TEST_DIR}) ################## Tests ######################################## enable_testing(true) # Test 'Perso' # ============ add_executable(thermocarbo ${PROJECT_TEST_DIR}/specmicp/thermocarbo.cpp) target_link_libraries(thermocarbo specmicp specmicp_database) add_executable(carboalu ${PROJECT_TEST_DIR}/specmicp/carboalu.cpp) target_link_libraries(carboalu specmicp specmicp_database) add_executable(alkaliactivated ${PROJECT_TEST_DIR}/specmicp/alkaliactivated.cpp) target_link_libraries(alkaliactivated specmicp specmicp_database) add_executable(rate_nicoleau ${PROJECT_TEST_DIR}/specmicp/rate_nicoleau.cpp) target_link_libraries(rate_nicoleau specmicp specmicp_database) add_executable(kinetics ${PROJECT_TEST_DIR}/specmicp/kinetics.cpp) target_link_libraries(kinetics specmicp specmicp_database) set(DATA_TEST ${PROJECT_TEST_DIR}/specmicp/data_test/data_nicoleau_c3sm.csv ${PROJECT_TEST_DIR}/specmicp/data_test/data_nicoleau_c3st1.csv ${PROJECT_TEST_DIR}/specmicp/data_test/data_nicoleau_c3st2.csv ) add_custom_target(data_nicoleau SOURCES ${DATA_TEST}) file(INSTALL ${DATA_TEST} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data_test/) # Catch test #=========== # MiCPSolver # ---------- set(MICPSOLVER_TEST_DIR ${PROJECT_TEST_DIR}/micpsolver) add_executable(test_micpsolver ${MICPSOLVER_TEST_DIR}/test_micpsolver.cpp ${MICPSOLVER_TEST_DIR}/condition_number.cpp ${MICPSOLVER_TEST_DIR}/ncp_functions.cpp ${MICPSOLVER_TEST_DIR}/micpsolver.cpp ) # ODEInt # ---------- set(ODEINT_TEST_DIR ${PROJECT_TEST_DIR}/odeint) add_executable(test_odeint ${ODEINT_TEST_DIR}/test_odeint.cpp ${ODEINT_TEST_DIR}/butchertableau.cpp ${ODEINT_TEST_DIR}/embeddedrungekutta.cpp ) # Database # -------- set(DATABASE_TEST_DIR ${PROJECT_TEST_DIR}/database) add_executable(test_database ${DATABASE_TEST_DIR}/test_database.cpp ${DATABASE_TEST_DIR}/database_reader.cpp ${DATABASE_TEST_DIR}/database_selector.cpp ) set(TEST_DATABASE_PATH \\"../data/specmicp_database.js\\") set_target_properties(test_database PROPERTIES COMPILE_FLAGS -DTEST_DATABASE_PATH=${TEST_DATABASE_PATH}) target_link_libraries(test_database specmicp_database) # Mesh # ---- add_executable(test_meshes ${PROJECT_TEST_DIR}/reactmicp/meshes/test_meshes.cpp ${PROJECT_TEST_DIR}/reactmicp/meshes/test_uniform_mesh_1d.cpp ${PROJECT_TEST_DIR}/reactmicp/meshes/test_axisymmetric_uniform_mesh_1d.cpp ) # Saturated Diffusion # ------------------- add_executable(test_reactmicp_saturated_diffusion ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_diffusion/test_reactmicp_saturated_diffusion.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_diffusion/variables.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_diffusion/solver.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_diffusion/neutrality_solver.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_diffusion/transport_program.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_diffusion/reactive_transport.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_diffusion/utils.cpp ) target_link_libraries(test_reactmicp_saturated_diffusion reactmicp specmicp specmicp_database) # Specmicp : Adim system # ---------------------- add_executable(test_specmicp_adim ${PROJECT_TEST_DIR}/specmicp/adim/test_specmicp_adim.cpp ${PROJECT_TEST_DIR}/specmicp/adim/adimensional_system.cpp ${PROJECT_TEST_DIR}/specmicp/adim/adimensional_system_solver.cpp ${PROJECT_TEST_DIR}/specmicp/adim/adimensional_system_conditions.cpp ${PROJECT_TEST_DIR}/specmicp/adim/adimensional_system_problem_solver.cpp ${PROJECT_TEST_DIR}/specmicp/adim/adimensional_system_thermocarbo.cpp ${PROJECT_TEST_DIR}/specmicp/adim/adimensional_system_carboalu.cpp ) target_link_libraries(test_specmicp_adim specmicp specmicp_database) + +# Specmicp : Adim Kinetics +# ------------------------ + +set(ADIMKINETICS_TEST_DIR ${PROJECT_TEST_DIR}/specmicp/adim_kinetics) + +add_executable(test_specmicp_adim_kinetics + ${ADIMKINETICS_TEST_DIR}/test_specmicp_adim_kinetics.cpp + ${ADIMKINETICS_TEST_DIR}/kinetics_variables.cpp +) + +target_link_libraries(test_specmicp_adim_kinetics specmicp specmicp_database) + # Reactmicp : Reactive transport solver # ------------------------------------- add_executable(test_reactive_transport_solver ${PROJECT_TEST_DIR}/reactmicp/solver/test_reactive_transport_solver.cpp ${PROJECT_TEST_DIR}/reactmicp/solver/test_coupling.cpp ) target_link_libraries(test_reactive_transport_solver reactmicp specmicp specmicp_database) # Saturated diffusion using new reactive transport solver # ------------------------------------------------------- add_executable(test_reactmicp_saturated_react ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_react/test_reactmicp_saturated_react.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_react/speciation_system.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_react/variables.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_react/transport_program.cpp ${PROJECT_TEST_DIR}/reactmicp/systems/saturated_react/equilibrium_stagger.cpp ) target_link_libraries(test_reactmicp_saturated_react reactmicp specmicp specmicp_database) diff --git a/tests/specmicp/adim_kinetics/kinetics_variables.cpp b/tests/specmicp/adim_kinetics/kinetics_variables.cpp new file mode 100644 index 0000000..2846b45 --- /dev/null +++ b/tests/specmicp/adim_kinetics/kinetics_variables.cpp @@ -0,0 +1,30 @@ +#include "catch.hpp" + +#include "specmicp/adimensional_kinetics/kinetic_variables.hpp" + +using namespace specmicp; +using namespace specmicp::kinetics; + +TEST_CASE("kinetics variables", "[Specmicp,adim,kinetics,variables]") +{ + SECTION("Init") + { + Vector total_concentrations(4); + total_concentrations << 1.0, 2.0, 3.0, 4.0; + + Vector mineral_concentrations(2); + mineral_concentrations << 5, 6; + + AdimKineticVariables variables(total_concentrations, mineral_concentrations); + + CHECK(variables.total_concentration(0) == 1.0); + CHECK(variables.total_concentration(1) == 2.0); + CHECK(variables.total_concentration(2) == 3.0); + CHECK(variables.total_concentration(3) == 4.0); + + CHECK(variables.concentration_mineral(0) == 5.0); + CHECK(variables.concentration_mineral(1) == 6.0); + + CHECK(variables.rate_component(0) == 0.0); + } +} diff --git a/tests/specmicp/adim_kinetics/simple_model.hpp b/tests/specmicp/adim_kinetics/simple_model.hpp new file mode 100644 index 0000000..e69de29 diff --git a/tests/specmicp/adim_kinetics/test_specmicp_adim_kinetics.cpp b/tests/specmicp/adim_kinetics/test_specmicp_adim_kinetics.cpp new file mode 100644 index 0000000..178916e --- /dev/null +++ b/tests/specmicp/adim_kinetics/test_specmicp_adim_kinetics.cpp @@ -0,0 +1,3 @@ +#define CATCH_CONFIG_MAIN +#include "catch.hpp" +