Reusing initial version. reset residual force convergence to percentage

This commit is contained in:
iasonmanolas 2021-07-01 02:45:03 +03:00
parent d0edd5a6a9
commit a8b361f859
2 changed files with 15 additions and 14 deletions

View File

@ -977,8 +977,8 @@ void DRMSimulationModel::updateResidualForcesOnTheFly(
Node::Forces &force = pMesh->nodes[vi].force; Node::Forces &force = pMesh->nodes[vi].force;
const Vector6d &nodeResidualForce = force.residual; const Vector6d &nodeResidualForce = force.residual;
sumOfResidualForces = sumOfResidualForces + nodeResidualForce; sumOfResidualForces = sumOfResidualForces + nodeResidualForce;
// const double residualForceNorm = nodeResidualForce.norm(); const double residualForceNorm = nodeResidualForce.norm();
const double residualForceNorm = nodeResidualForce.getTranslation().norm(); // const double residualForceNorm = nodeResidualForce.getTranslation().norm();
const bool shouldTrigger = std::isnan(residualForceNorm); const bool shouldTrigger = std::isnan(residualForceNorm);
totalResidualForcesNorm += residualForceNorm; totalResidualForcesNorm += residualForceNorm;
} }
@ -1461,7 +1461,7 @@ void DRMSimulationModel::updateKineticEnergy()
+ node.mass.rotationalI3 * pow(node.velocity[4], 2) + node.mass.rotationalI3 * pow(node.velocity[4], 2)
+ node.mass.rotationalI2 * pow(node.velocity[5], 2)); + node.mass.rotationalI2 * pow(node.velocity[5], 2));
node.kineticEnergy += nodeTranslationalKineticEnergy /*+ nodeRotationalKineticEnergy*/; node.kineticEnergy += nodeTranslationalKineticEnergy + nodeRotationalKineticEnergy;
assert(node.kineticEnergy < 1e15); assert(node.kineticEnergy < 1e15);
pMesh->currentTotalKineticEnergy += node.kineticEnergy; pMesh->currentTotalKineticEnergy += node.kineticEnergy;
@ -1962,18 +1962,18 @@ SimulationResults DRMSimulationModel::executeSimulation(const std::shared_ptr<Si
auto t1 = std::chrono::high_resolution_clock::now(); auto t1 = std::chrono::high_resolution_clock::now();
mSettings = settings; mSettings = settings;
reset(); reset();
// double totalExternalForcesNorm = 0; double totalExternalForcesNorm = 0;
// for (const std::pair<VertexIndex, Vector6d> &externalForce : pJob->nodalExternalForces) { for (const std::pair<VertexIndex, Vector6d> &externalForce : pJob->nodalExternalForces) {
// totalExternalForcesNorm += externalForce.second.norm(); totalExternalForcesNorm += externalForce.second.norm();
// } }
// if (!pJob->nodalExternalForces.empty()) { if (!pJob->nodalExternalForces.empty()) {
// // totalResidualForcesNormThreshold = settings.totalExternalForcesNormPercentageTermination mSettings.totalResidualForcesNormThreshold
// // * totalExternalForcesNorm; = settings.totalExternalForcesNormPercentageTermination * totalExternalForcesNorm;
// } else { } else {
// totalResidualForcesNormThreshold = 1; mSettings.totalResidualForcesNormThreshold = 1e-3;
// std::cout << "No forces setted default residual forces norm threshold" << std::endl; std::cout << "No forces setted default residual forces norm threshold" << std::endl;
// } }
if (mSettings.beVerbose) { if (mSettings.beVerbose) {
std::cout << "totalResidualForcesNormThreshold:" std::cout << "totalResidualForcesNormThreshold:"

View File

@ -42,6 +42,7 @@ public:
double gamma{0.8}; double gamma{0.8};
std::optional<double> displacementCap; std::optional<double> displacementCap;
double totalResidualForcesNormThreshold{1e-3}; double totalResidualForcesNormThreshold{1e-3};
double totalExternalForcesNormPercentageTermination{1e-3};
Settings() {} Settings() {}
}; };