#ifndef REDUCEDMODELEVALUATOR_HPP #define REDUCEDMODELEVALUATOR_HPP #include "reducedmodeloptimizer_structs.hpp" class ReducedModelEvaluator { public: enum CSVExportingDirection { Vertical = 0, Horizontal }; enum CSVExportingData { raw_drm2Reduced = 0, norm_drm2Reduced, raw_and_norm_drm2Reduced, NumberOfDataTypes }; inline static std::array csvExportingDataStrings{"raw_drm2Reduced", "norm_drm2Reduced", "raw_and_norm_drm2Reduced"}; struct Settings { CSVExportingDirection exportingDirection{Horizontal}; CSVExportingData exportingData{norm_drm2Reduced}; bool shouldWriteHeader{true}; std::string resultsLabel; }; inline static constexpr int NumberOfEvaluationScenarios{22}; struct Results { std::array distances_drm2reduced; std::array distances_normalizedDrm2reduced; std::array evaluationScenarioLabels; }; ReducedModelEvaluator(); static Results evaluateReducedModel( ReducedModelOptimization::Results &optimizationResult, const std::filesystem::path &tileInto_triMesh_filePath, const std::filesystem::path &scenariosDirectoryPath, // const std::filesystem::path &reducedPatternFilePath, const std::filesystem::path &fullPatternTessellatedResultsDirectoryPath); static Results evaluateReducedModel(ReducedModelOptimization::Results &optimizationResult); static void printResultsVertically(const ReducedModelEvaluator::Results &evaluationResults, csvFile &csvOutput); static void printResults(const ReducedModelEvaluator::Results &evaluationResults, const std::string &resultsLabel); inline static std::array scenariosTestSetLabels{ "22Hex_randomBending0", "22Hex_randomBending1", "22Hex_randomBending2", // "22Hex_randomBending3", "22Hex_randomBending4", "22Hex_randomBending5", // "22Hex_randomBending6", // "22Hex_randomBending7", "22Hex_randomBending8", "22Hex_randomBending9", "22Hex_randomBending10", "22Hex_randomBending11", "22Hex_randomBending12", // "22Hex_randomBending13", // "22Hex_randomBending14", // "22Hex_randomBending15", "22Hex_randomBending16", "22Hex_randomBending17", "22Hex_randomBending18", "22Hex_randomBending19", // "22Hex_randomBending20", "22Hex_bending_0.005N", "22Hex_bending_0.01N", "22Hex_bending_0.03N", // "22Hex_bending_0.05N", "22Hex_pullOppositeVerts_0.05N", "22Hex_pullOppositeVerts_0.1N", // "22Hex_pullOppositeVerts_0.3N", //#ifdef POLYSCOPE_DEFINED // "22Hex_shear_2N", // "22Hex_shear_5N", // "22Hex_axial_10N", // "22Hex_axial_20N", //#else // "notUsed_22Hex_shear_2N", // "notUsed_22Hex_shear_5N", // "notUsed_22Hex_axial_10N", // "notUsed_22Hex_axial_20N", //#endif "22Hex_cylinder_0.05N", "22Hex_cylinder_0.1N", "22Hex_s_0.05N", // "22Hex_s_0.1N" }; static void printResultsHorizontally(const Results &evaluationResults, csvFile &csvOutput); static void printResults(const Results &evaluationResults, const Settings &settings, csvFile &csvOutput); static void printHeader(const Settings &settings, csvFile &csvOutput); }; #endif // REDUCEDMODELEVALUATOR_HPP