Added argument for recomputing the base scenarios max force magnitudes

This commit is contained in:
iasonmanolas 2022-01-17 13:08:39 +02:00
parent 534efb98bb
commit 94408b7a74
2 changed files with 13 additions and 9 deletions

View File

@ -967,7 +967,8 @@ ReducedModelOptimizer::computeFullPatternMaxSimulationForces(
std::array<double, NumberOfBaseSimulationScenarios> std::array<double, NumberOfBaseSimulationScenarios>
ReducedModelOptimizer::getFullPatternMaxSimulationForces( ReducedModelOptimizer::getFullPatternMaxSimulationForces(
const std::vector<BaseSimulationScenario> &desiredBaseSimulationScenarioIndices, const std::vector<BaseSimulationScenario> &desiredBaseSimulationScenarioIndices,
const std::filesystem::path &intermediateResultsDirectoryPath) const std::filesystem::path &intermediateResultsDirectoryPath,
const bool &recomputeForceMagnitudes)
{ {
std::array<double, NumberOfBaseSimulationScenarios> fullPatternSimulationScenarioMaxMagnitudes; std::array<double, NumberOfBaseSimulationScenarios> fullPatternSimulationScenarioMaxMagnitudes;
//#ifdef POLYSCOPE_DEFINED //#ifdef POLYSCOPE_DEFINED
@ -978,7 +979,7 @@ ReducedModelOptimizer::getFullPatternMaxSimulationForces(
.append(m_pFullPatternSimulationMesh->getLabel() + ".json")); .append(m_pFullPatternSimulationMesh->getLabel() + ".json"));
const bool fullPatternScenarioMagnitudesExist = std::filesystem::exists( const bool fullPatternScenarioMagnitudesExist = std::filesystem::exists(
patternMaxForceMagnitudesFilePath); patternMaxForceMagnitudesFilePath);
if (fullPatternScenarioMagnitudesExist) { if (fullPatternScenarioMagnitudesExist && !recomputeForceMagnitudes) {
nlohmann::json json; nlohmann::json json;
std::ifstream ifs(patternMaxForceMagnitudesFilePath.string()); std::ifstream ifs(patternMaxForceMagnitudesFilePath.string());
ifs >> json; ifs >> json;
@ -1867,9 +1868,11 @@ void ReducedModelOptimizer::optimize(
global.optimizationSettings = optimizationSettings; global.optimizationSettings = optimizationSettings;
global.pFullPatternSimulationMesh = m_pFullPatternSimulationMesh; global.pFullPatternSimulationMesh = m_pFullPatternSimulationMesh;
constexpr bool recomputeForceMagnitudes = true;
std::array<double, NumberOfBaseSimulationScenarios> fullPatternSimulationScenarioMaxMagnitudes std::array<double, NumberOfBaseSimulationScenarios> fullPatternSimulationScenarioMaxMagnitudes
= getFullPatternMaxSimulationForces(desiredBaseSimulationScenarioIndices, = getFullPatternMaxSimulationForces(desiredBaseSimulationScenarioIndices,
intermediateResultsDirectoryPath); intermediateResultsDirectoryPath,
recomputeForceMagnitudes);
global.fullPatternSimulationJobs global.fullPatternSimulationJobs
= createFullPatternSimulationJobs(m_pFullPatternSimulationMesh, = createFullPatternSimulationJobs(m_pFullPatternSimulationMesh,
fullPatternSimulationScenarioMaxMagnitudes); fullPatternSimulationScenarioMaxMagnitudes);
@ -1916,7 +1919,7 @@ void ReducedModelOptimizer::optimize(
.append(m_pFullPatternSimulationMesh->getLabel()) .append(m_pFullPatternSimulationMesh->getLabel())
.append(pFullPatternSimulationJob->getLabel())); .append(pFullPatternSimulationJob->getLabel()));
// .append(pFullPatternSimulationJob->getLabel() + ".json") // .append(pFullPatternSimulationJob->getLabel() + ".json")
constexpr bool recomputeFullPatternResults = false; constexpr bool recomputeFullPatternResults = true;
SimulationResults fullPatternResults; SimulationResults fullPatternResults;
if (!recomputeFullPatternResults && std::filesystem::exists(jobResultsDirectoryPath)) { if (!recomputeFullPatternResults && std::filesystem::exists(jobResultsDirectoryPath)) {
fullPatternResults.load(std::filesystem::path(jobResultsDirectoryPath).append("Results"), fullPatternResults.load(std::filesystem::path(jobResultsDirectoryPath).append("Results"),

View File

@ -257,11 +257,6 @@ private:
#ifdef DLIB_DEFINED #ifdef DLIB_DEFINED
static double objective(const dlib::matrix<double, 0, 1> &x); static double objective(const dlib::matrix<double, 0, 1> &x);
#endif #endif
std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios>
getFullPatternMaxSimulationForces(
const std::vector<ReducedModelOptimization::BaseSimulationScenario>
&desiredBaseSimulationScenarioIndices,
const std::filesystem::path &intermediateResultsDirectoryPath);
void computeScenarioWeights(const std::vector<ReducedModelOptimization::BaseSimulationScenario> void computeScenarioWeights(const std::vector<ReducedModelOptimization::BaseSimulationScenario>
&baseSimulationScenarios); &baseSimulationScenarios);
std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios> std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios>
@ -272,6 +267,12 @@ private:
const std::shared_ptr<SimulationMesh> &pMesh, const std::shared_ptr<SimulationMesh> &pMesh,
const std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios> const std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios>
&baseScenarioMaxForceMagnitudes) const; &baseScenarioMaxForceMagnitudes) const;
std::array<double, ReducedModelOptimization::NumberOfBaseSimulationScenarios>
getFullPatternMaxSimulationForces(
const std::vector<ReducedModelOptimization::BaseSimulationScenario>
&desiredBaseSimulationScenarioIndices,
const std::filesystem::path &intermediateResultsDirectoryPath,
const bool &recomputeForceMagnitudes);
}; };
inline std::function<void(const double &newE, inline std::function<void(const double &newE,
std::shared_ptr<SimulationMesh> &pReducedPatternSimulationMesh)> std::shared_ptr<SimulationMesh> &pReducedPatternSimulationMesh)>