Exporting internal potential energy in the results json. Exporting the full pattern scenarios.

This commit is contained in:
iasonmanolas 2021-07-07 18:19:59 +03:00
parent 408d1e8c38
commit fe7ecbcd38
2 changed files with 19 additions and 5 deletions

View File

@ -30,7 +30,8 @@ int main(int argc, char *argv[]) {
////Full pattern ////Full pattern
const std::string filepath_fullPattern = argv[1]; const std::string filepath_fullPattern = argv[1];
PatternGeometry fullPattern(filepath_fullPattern); PatternGeometry fullPattern(filepath_fullPattern);
fullPattern.scale(0.03,interfaceNodeIndex); // fullPattern.prependToLabel(std::to_string(fullPattern.EN()) + "#");
fullPattern.scale(0.03, interfaceNodeIndex);
////Reduced pattern ////Reduced pattern
const std::string filepath_reducedPattern = argv[2]; const std::string filepath_reducedPattern = argv[2];
PatternGeometry reducedPattern(filepath_reducedPattern); PatternGeometry reducedPattern(filepath_reducedPattern);
@ -119,7 +120,7 @@ int main(int argc, char *argv[]) {
} else { } else {
resultsOutputDir = convergedJobsDirPath.string(); resultsOutputDir = convergedJobsDirPath.string();
} }
optimizationResults.save(resultsOutputDir); optimizationResults.save(resultsOutputDir, true);
// Write results in csv // Write results in csv
csvFile csv_results({}, false); csvFile csv_results({}, false);
@ -132,7 +133,7 @@ int main(int argc, char *argv[]) {
optimizationResults.writeHeaderTo(csv_results); optimizationResults.writeHeaderTo(csv_results);
settings_optimization.writeHeaderTo(csv_results); settings_optimization.writeHeaderTo(csv_results);
csv_results << endrow; csv_results << endrow;
csv_results << pairName; csv_results << std::to_string(fullPattern.EN()) + "#" + pairName;
optimizationResults.writeResultsTo(settings_optimization, csv_results); optimizationResults.writeResultsTo(settings_optimization, csv_results);
settings_optimization.writeSettingsTo(csv_results); settings_optimization.writeSettingsTo(csv_results);
csv_results << endrow; csv_results << endrow;

View File

@ -237,8 +237,9 @@ double ReducedModelOptimizer::objective(long n, const double *x) {
} }
#ifdef POLYSCOPE_DEFINED #ifdef POLYSCOPE_DEFINED
++global.numberOfFunctionCalls; ++global.numberOfFunctionCalls;
if (global.numberOfFunctionCalls % (global.optimizationSettings.numberOfFunctionCalls / 100) if (global.optimizationSettings.numberOfFunctionCalls >= 100
== 0) { && global.numberOfFunctionCalls % (global.optimizationSettings.numberOfFunctionCalls / 100)
== 0) {
std::cout << "Number of function calls:" << global.numberOfFunctionCalls << std::endl; std::cout << "Number of function calls:" << global.numberOfFunctionCalls << std::endl;
} }
#endif #endif
@ -739,6 +740,7 @@ void ReducedModelOptimizer::getResults(const dlib::function_evaluation &optimiza
global.simulationScenarioIndices.size()); global.simulationScenarioIndices.size());
results.objectiveValue.perSimulationScenario_total.resize( results.objectiveValue.perSimulationScenario_total.resize(
global.simulationScenarioIndices.size()); global.simulationScenarioIndices.size());
results.perScenario_fullPatternPotentialEnergy.resize(global.simulationScenarioIndices.size());
for (int i = 0; i < global.simulationScenarioIndices.size(); i++) { for (int i = 0; i < global.simulationScenarioIndices.size(); i++) {
const int simulationScenarioIndex = global.simulationScenarioIndices[i]; const int simulationScenarioIndex = global.simulationScenarioIndices[i];
SimulationResults reducedModelResults = simulator.executeSimulation( SimulationResults reducedModelResults = simulator.executeSimulation(
@ -791,6 +793,8 @@ void ReducedModelOptimizer::getResults(const dlib::function_evaluation &optimiza
// assert(test_normalizedTranslationError == normalizedTranslationalError); // assert(test_normalizedTranslationError == normalizedTranslationalError);
// assert(test_normalizedRotationalError == normalizedRotationalError); // assert(test_normalizedRotationalError == normalizedRotationalError);
results.objectiveValue.totalRaw += rawTranslationalError + rawRotationalError; results.objectiveValue.totalRaw += rawTranslationalError + rawRotationalError;
results.perScenario_fullPatternPotentialEnergy[i]
= global.fullPatternResults[simulationScenarioIndex].internalPotentialEnergy;
#ifdef POLYSCOPE_DEFINED #ifdef POLYSCOPE_DEFINED
std::cout << "Simulation scenario:" std::cout << "Simulation scenario:"
<< global.reducedPatternSimulationJobs[simulationScenarioIndex]->getLabel() << global.reducedPatternSimulationJobs[simulationScenarioIndex]->getLabel()
@ -1479,6 +1483,15 @@ void ReducedModelOptimizer::optimize(
simulationSettings); simulationSettings);
if (!fullPatternResults.converged) { if (!fullPatternResults.converged) {
results.wasSuccessful = false; results.wasSuccessful = false;
#ifdef POLYSCOPE_DEFINED
std::cout << "Simulation job " << pFullPatternSimulationJob->getLabel()
<< " did not converge." << std::endl;
DRMSimulationModel::Settings debugSimulationSettings;
debugSimulationSettings.isDebugMode = true;
debugSimulationSettings.debugModeStep = 1000;
debugSimulationSettings.shouldCreatePlots = true;
simulator.executeSimulation(pFullPatternSimulationJob, simulationSettings);
#endif
return; return;
} }
results.wasSuccessful = true; results.wasSuccessful = true;