diff --git a/src/reducedmodeloptimizer.cpp b/src/reducedmodeloptimizer.cpp index 6fb74eb..caa9dee 100644 --- a/src/reducedmodeloptimizer.cpp +++ b/src/reducedmodeloptimizer.cpp @@ -935,14 +935,14 @@ void ReducedModelOptimizer::constructDomeSimulationScenario( = Eigen::Vector3d(-interfaceVector[0], -interfaceVector[1], 0) - * 0.01 + * 0.005 * std::abs( forceMagnitude); //NOTE:Should the forced displacement change relatively to the magnitude? // * std::abs(forceMagnitude / maxForceMagnitude_dome); job.nodalForcedDisplacements[viPair.second] = Eigen::Vector3d(interfaceVector[0], interfaceVector[1], 0) - * 0.001 * std::abs(forceMagnitude); + * 0.005 * std::abs(forceMagnitude); // * std::abs(forceMagnitude / maxForceMagnitude_dome); // CoordType v = (pMesh->vert[viPair.first].cP() - pMesh->vert[viPair.second].cP()) // ^ CoordType(0, 0, -1).Normalize(); @@ -1003,16 +1003,17 @@ double fullPatternMaxSimulationForceRotationalObjective(const double &forceMagni DRMSimulationModel simulator; DRMSimulationModel::Settings settings; + settings.totalExternalForcesNormPercentageTermination = 1e-2; // settings.totalResidualForcesNormThreshold = 1e-3; - // settings.totalTranslationalKineticEnergyThreshold = 1e-6; - // settings.shouldUseTranslationalKineticEnergyThreshold = true; + settings.totalTranslationalKineticEnergyThreshold = 1e-10; + settings.shouldUseTranslationalKineticEnergyThreshold = true; // settings.shouldDraw = true; // settings.isDebugMode = true; // settings.drawingStep = 500; // settings.beVerbose = true; // settings.debugModeStep = 200000; // settings.shouldCreatePlots = true; - settings.maxDRMIterations = 100000; + settings.maxDRMIterations = 150000; SimulationResults results = simulator.executeSimulation(std::make_shared(job), settings); const double &desiredRotationAngle = global.desiredMaxRotationAngle; @@ -1042,7 +1043,10 @@ double fullPatternMaxSimulationForceTranslationalObjective(const double &forceMa DRMSimulationModel simulator; DRMSimulationModel::Settings settings; - settings.totalResidualForcesNormThreshold = 1e-3; + // settings.totalResidualForcesNormThreshold = 1e-3; + settings.totalExternalForcesNormPercentageTermination = 1e-2; + settings.totalTranslationalKineticEnergyThreshold = 1e-10; + settings.shouldUseTranslationalKineticEnergyThreshold = true; // settings.totalTranslationalKineticEnergyThreshold = 1e-10; // settings.shouldUseTranslationalKineticEnergyThreshold = true; // settings.shouldDraw = true; @@ -1050,7 +1054,7 @@ double fullPatternMaxSimulationForceTranslationalObjective(const double &forceMa // settings.drawingStep = 200000; // settings.beVerbose = true; // settings.debugModeStep = 200000; - settings.maxDRMIterations = 50000; + settings.maxDRMIterations = 250000; #ifdef POLYSCOPE_DEFINED // settings.shouldDraw = true; // settings.isDebugMode = true; @@ -1058,7 +1062,8 @@ double fullPatternMaxSimulationForceTranslationalObjective(const double &forceMa // settings.debugModeStep = 10000; // settings.shouldCreatePlots = true; #endif - SimulationResults results = simulator.executeSimulation(std::make_shared(job)); + SimulationResults results = simulator.executeSimulation(std::make_shared(job), + settings); const double &desiredDisplacementValue = global.desiredMaxDisplacementValue; if (!results.converged) { return std::numeric_limits::max();