diff --git a/CMakeLists.txt b/CMakeLists.txt index e455eb1..034c647 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,137 +1,144 @@ project(specmicp) cmake_minimum_required(VERSION 2.8) ####################### External Package ##################################### set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/") find_package(Eigen3 REQUIRED) # This module comes from the Eigen3 Package find_package(CxxTest) # Necessary if you want the tests ######################## Compilation flags ################################# if(UNIX) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -std=c++11") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -pedantic") SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG") message(STATUS "c++ flags ${CMAKE_CXX_FLAGS}") else() message(WARNING "not tested !") endif() ################ Directories ##################### set(PROJECT_TEST_DIR ${PROJECT_SOURCE_DIR}/tests) set(PROJECT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) # include include_directories(${EIGEN3_INCLUDE_DIR}) include_directories(${PROJECT_SOURCE_DIR}) ################ Modules ########################## # -------- MiCPSolver ---------------- set(MICPSOLVER_DIR ${PROJECT_SOURCE_DIR}/micpsolver) add_custom_target(specmisolver_inc SOURCES ${MICPSOLVER_DIR}/micpsolver.hpp ${MICPSOLVER_DIR}/micpsolver.inl ${MICPSOLVER_DIR}/micpprog.hpp ${MICPSOLVER_DIR}/ncp_function.hpp ${MICPSOLVER_DIR}/estimate_cond_number.hpp ) # ------- SpecMiCP --------------- set(SPECMICP_DIR ${PROJECT_SOURCE_DIR}/specmicp) add_custom_target(specmic_inc SOURCES #${SPECMICP_DIR}/specmicp.hpp ${SPECMICP_DIR}/thermodata.hpp ) set(SPECMICP_LIBFILE ${SPECMICP_DIR}/specmicp.cpp ) add_library(specmicp ${SPECMICP_LIBFILE}) # -------- Database ---------------- set(DATABASE_DIR ${PROJECT_SOURCE_DIR}/database) set(DATABASE_LIBFILE ${DATABASE_DIR}/reader.cpp) add_custom_target(data_incl SOURCES ${DATABASE_DIR}/common_def.hpp ${DATABASE_DIR}/data_container.hpp) add_library(specmicp_database ${DATABASE_LIBFILE}) # ------- Utils ------------------ set(UTILS_DIR ${PROJECT_SOURCE_DIR}/utils) add_custom_target(utils_inc SOURCES ${UTILS_DIR}/log.hpp) # ------- Data ------------------- set(DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data) -add_custom_target(data SOURCES ${DATA_DIR}/specmicp_database.js) -file(INSTALL ${DATA_DIR}/specmicp_database.js + +set(DATABASE_LIST + ${DATA_DIR}/specmicp_database.js + ${DATA_DIR}/cemdata_specmicp.js +) + +add_custom_target(data SOURCES ${DATABASE_LIST}) + +file(INSTALL ${DATABASE_LIST} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/) # ------ Documentation ----------- # add a target to generate API documentation with Doxygen find_package(Doxygen) if(DOXYGEN_FOUND) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile @ONLY) add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" VERBATIM ) endif(DOXYGEN_FOUND) # --------- Test ---------------------- # CXX Test # ======== if(CXXTEST_FOUND) set(CXXTEST_USE_PYTHON TRUE) include_directories(${CXXTEST_INCLUDE_DIR}) enable_testing() # MiCP Solver # ------------ CXXTEST_ADD_TEST(test_cond_number test_cond_number.cpp ${PROJECT_TEST_DIR}/micpsolver/test_cond_number.hpp) CXXTEST_ADD_TEST(test_ncp_funtion test_ncp_function.cpp ${PROJECT_TEST_DIR}/micpsolver/test_ncp_function.hpp) CXXTEST_ADD_TEST(test_micpsolver test_micpsolver.cpp ${PROJECT_TEST_DIR}/micpsolver/test_micpsolver.hpp) # Database # -------- CXXTEST_ADD_TEST(test_data_reader test_data_reader.cpp ${PROJECT_TEST_DIR}/database/test_data_reader.hpp) target_link_libraries(test_data_reader specmicp_database jsoncpp) endif() # Test 'Perso' # ============ add_executable(thermocarbo ${PROJECT_TEST_DIR}/specmicp/thermocarbo.cpp) target_link_libraries(thermocarbo specmicp) diff --git a/data/cemdata_specmicp.js b/data/cemdata_specmicp.js new file mode 100644 index 0000000..408627b --- /dev/null +++ b/data/cemdata_specmicp.js @@ -0,0 +1,161 @@ +// this is a manual and partial translation of the cemdata database +{ + "Metadata": { + "version": "0.0.1", + "last-modification": "04/05/2014" + }, + "Basis": [ + { + "label": "H2O" + }, + { + "label": "H[+]", + "activity": { + "a": 9.00, + "b": 0.00 + } + }, + { + "label": "HCO3[-]", + "activity": { + "a": 5.40, + "b": 0.00 + } + }, + { + "label": "Ca[2+]", + "activity": { + "a": 4.86, + "b": 0.15 + } + }, + { + "label": "Si(OH)4", + "activity": { + "a": 0.00, + "b": 0.10 + } + } + + ], + "Aqueous": [ + { + "label": "HO[-]", + "composition": "H2O, - H[+]", + "log_k": 13.9995, + "activity": { + "a": 10.65, + "b": 0.00 + } + }, + { + "label": "CO2", + "composition": "-H2O, H[+], +HCO3[-]", + "log_k": -6.3519, + "activity": { + "a": 0.00, + "b": 0.10 + } + }, + { + "label": "CO3[2-]", + "composition": "HCO3[-],- H[+]", + "log_k": 10.3289, + "activity": { + "a": 5.40, + "b": 0.00 + } + }, + { + "label": "SiO(OH)3[-]", + "composition": "Si(OH)4, -H[+]", + "log_k": 9.8100, + "activity": { + "a": 4.00, + "b": 0.00 + } + }, + { + "label": "SiO2(OH)2[2-]", + "composition": "Si(OH)4, -2 H[+]", + "log_k": 23.1400, + "activity": { + "a": 4.00, + "b": 0.00 + } + }, + { + "label": "CaCO3", + "composition": "HCO3[-], Ca[2+], -H[+]", + "log_k": 7.1048, + "activity": { + "a": 0.00, + "b": 0.10 + } + }, + { + "label": "CaHCO3[+]", + "composition": "HCO3[-], Ca[2+]", + "log_k": -1.1057, + "activity": { + "a": 4.00, + "b": 0.00 + } + }, + { + "label": "CaOH[+]", + "composition": "Ca[2+], H2O, -H[+]", + "log_k": 12.7800, + "activity": { + "a": 4.00, + "b": 0.00 + } + }, + { + "label": "CaSiO(OH)3[+]", + "composition": "Ca[2+], SiO(OH)3[-]", + "log_k": -1.200, + "activity": { + "a": 4.00, + "b": 0.00 + } + }, + { + "label": "CaSiO2(OH)2", + "composition": "Ca[2+], SiO2(OH)2[2-]", + "log_k": -4.60, + "activity": { + "a": 0.00, + "b": 0.10 + } + } + ], + "Minerals": [ + { + "label": "Portlandite", + "composition": "Ca[2+], +2 H2O, -2 H[+]", + "log_k": 22.800 + }, + { + "label": "SiO2,am", + "composition": "SiO(OH)3[-], - H2O, - HO[-]", + "log_k": 1.476 + }, + { + "label": "CSH,jennite", + "composition": "1.6667 Ca[2+], 2.3333 HO[-], SiO(OH)3[-], -0.5567 H2O", + "log_k": -13.17 + }, + { + "label": "CSH,tobermorite", + "composition": "0.8333 Ca[2+], 0.6667 HO[-], SiO(OH)3[-], -0.5 H2O", + "log_k": -8.00 + }, + { + "label": "Calcite", + "composition": "Ca[2+], HCO3[-], -H[+]", + "log_k": 1.8490 + } + ] +} +