diff --git a/CMakeLists.txt b/CMakeLists.txt index 81ced93..a58f696 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,11 @@ set(COMMON_SRC_FILES src/common.cpp ) -set(COMMON_LINK_LIBRARIES -leisgenerator) +if(WIN32) + set(COMMON_LINK_LIBRARIES -leisgenerator_static -static-libgcc -static-libstdc++ -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive -Bdynamic) +else() + set(COMMON_LINK_LIBRARIES -leisgenerator) +endif() add_compile_options( "-Wall" @@ -24,7 +28,7 @@ set_property(TARGET madaptoeis PROPERTY CXX_STANDARD 17) install(TARGETS madaptoeis RUNTIME DESTINATION bin) add_executable(relaxistoeis ${COMMON_SRC_FILES} src/relaxis.cpp) -target_link_libraries(relaxistoeis ${COMMON_LINK_LIBRARIES} -lrelaxisloaderpp) +target_link_libraries(relaxistoeis -lrelaxisloaderpp -Wl,-allow-multiple-definition ${COMMON_LINK_LIBRARIES}) set_property(TARGET relaxistoeis PROPERTY CXX_STANDARD 17) install(TARGETS relaxistoeis RUNTIME DESTINATION bin) diff --git a/src/relaxis.cpp b/src/relaxis.cpp index 826eb75..bdf7440 100644 --- a/src/relaxis.cpp +++ b/src/relaxis.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -11,6 +12,42 @@ #include "common.h" +static bool saveDataRlx(const rlx::Spectra& data, const std::filesystem::path& outDir, const std::filesystem::path& originFile) +{ + std::filesystem::path filename; + std::string modelStrWithoutParams = data.model; + eis::purgeEisParamBrackets(modelStrWithoutParams); + + size_t classIndex = 0; + + do + { + filename.assign("relaxisExport_"); + filename.concat(modelStrWithoutParams); + filename.concat("_"); + filename.concat(std::to_string(classIndex)); + filename.concat(".csv"); + ++classIndex; + } while(std::filesystem::exists(outDir/filename)); + + std::vector labelNames; + std::vector labels; + for(auto const& meta : data.metadata) + { + labelNames.push_back(meta.first); + labels.push_back(meta.second); + } + + eis::EisSpectra eisSpectra(data.data, data.model, originFile, labels, labelNames); + + if(!eisSpectra.saveToDisk(outDir/filename)) + { + std::cerr<<"Unable to save to "< genData = model.executeSweep(omega); - fvalue dist = eisNyquistDistance(spectra.data, genData); + fvalue dist = eis::eisNyquistDistance(spectra.data, genData); if(std::isnan(dist)) { @@ -101,7 +138,7 @@ int main(int argc, char** argv) data.data = spectra.data; data.modelStr = spectra.model; data.id = std::to_string(spectra.id); - saveData("relaxis", data, outDir, argv[arg]); + saveDataRlx(spectra, outDir, argv[arg]); } catch(const eis::file_error& err) {