Refactoring. Fixed bug
This commit is contained in:
parent
4988a78b94
commit
846289448b
|
|
@ -692,8 +692,8 @@ double DRMSimulationModel::computeDerivativeTheta3(const EdgeType &e,
|
||||||
derivativeF1 = derivativeT1_k - (n * (derivativeT1_k * n));
|
derivativeF1 = derivativeT1_k - (n * (derivativeT1_k * n));
|
||||||
|
|
||||||
const double f1Norm = f1.Norm();
|
const double f1Norm = f1.Norm();
|
||||||
const VectorType derivativeF1Normalized = -f1 * (f1 * derivativeF1)
|
const double derivativeF1Norm = f1 * derivativeF1 / f1Norm;
|
||||||
/ (f1Norm * f1Norm * f1Norm)
|
const VectorType derivativeF1Normalized = -f1 * derivativeF1Norm / (f1Norm * f1Norm)
|
||||||
+ derivativeF1 / f1Norm;
|
+ derivativeF1 / f1Norm;
|
||||||
|
|
||||||
derivativeF2 = derivativeF1Normalized * cosRotationAngle
|
derivativeF2 = derivativeF1Normalized * cosRotationAngle
|
||||||
|
|
@ -713,8 +713,8 @@ double DRMSimulationModel::computeDerivativeTheta3(const EdgeType &e,
|
||||||
const VectorType &derivativeOfNormal = node.derivativeOfNormal[dofi];
|
const VectorType &derivativeOfNormal = node.derivativeOfNormal[dofi];
|
||||||
derivativeF1 = -(n * (t1_k * derivativeOfNormal) + derivativeOfNormal * (t1_k * n));
|
derivativeF1 = -(n * (t1_k * derivativeOfNormal) + derivativeOfNormal * (t1_k * n));
|
||||||
const double f1Norm = f1.Norm();
|
const double f1Norm = f1.Norm();
|
||||||
const VectorType derivativeF1Normalized = -f1 * (f1 * derivativeF1)
|
const double derivativeF1Norm = f1 * derivativeF1 / f1Norm;
|
||||||
/ (f1Norm * f1Norm * f1Norm)
|
const VectorType derivativeF1Normalized = -f1 * derivativeF1Norm / (f1Norm * f1Norm)
|
||||||
+ derivativeF1 / f1Norm;
|
+ derivativeF1 / f1Norm;
|
||||||
|
|
||||||
derivativeF2 = derivativeF1Normalized * cosRotationAngle +
|
derivativeF2 = derivativeF1Normalized * cosRotationAngle +
|
||||||
|
|
@ -1005,9 +1005,9 @@ 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 = mCurrentSimulationStep == 500;
|
||||||
totalResidualForcesNorm += residualForceNorm;
|
totalResidualForcesNorm += residualForceNorm;
|
||||||
#ifdef POLYSCOPE_DEFINED
|
#ifdef POLYSCOPE_DEFINED
|
||||||
if (std::isnan(force.residual.norm())) {
|
if (std::isnan(force.residual.norm())) {
|
||||||
|
|
@ -1751,7 +1751,7 @@ void DRMSimulationModel::draw(const std::string &screenshotsFolder)
|
||||||
accelerationX[pMesh->getIndex(v)] = pMesh->nodes[v].acceleration[0];
|
accelerationX[pMesh->getIndex(v)] = pMesh->nodes[v].acceleration[0];
|
||||||
}
|
}
|
||||||
meshPolyscopeHandle->addNodeScalarQuantity("Kinetic Energy", kineticEnergies)->setEnabled(false);
|
meshPolyscopeHandle->addNodeScalarQuantity("Kinetic Energy", kineticEnergies)->setEnabled(false);
|
||||||
meshPolyscopeHandle->addNodeVectorQuantity("Node normals", nodeNormals)->setEnabled(false);
|
meshPolyscopeHandle->addNodeVectorQuantity("Node normals", nodeNormals)->setEnabled(true);
|
||||||
meshPolyscopeHandle->addNodeVectorQuantity("Internal force", internalForces)->setEnabled(false);
|
meshPolyscopeHandle->addNodeVectorQuantity("Internal force", internalForces)->setEnabled(false);
|
||||||
meshPolyscopeHandle->addNodeVectorQuantity("External force", externalForces)->setEnabled(false);
|
meshPolyscopeHandle->addNodeVectorQuantity("External force", externalForces)->setEnabled(false);
|
||||||
meshPolyscopeHandle->addNodeVectorQuantity("External Moments", externalMoments)->setEnabled(true);
|
meshPolyscopeHandle->addNodeVectorQuantity("External Moments", externalMoments)->setEnabled(true);
|
||||||
|
|
@ -2063,7 +2063,7 @@ SimulationResults DRMSimulationModel::executeSimulation(const std::shared_ptr<Si
|
||||||
vcg::tri::UpdateBounding<SimulationMesh>::Box(*pMesh);
|
vcg::tri::UpdateBounding<SimulationMesh>::Box(*pMesh);
|
||||||
computeRigidSupports();
|
computeRigidSupports();
|
||||||
isVertexConstrained.resize(pMesh->VN(), false);
|
isVertexConstrained.resize(pMesh->VN(), false);
|
||||||
for (auto fixedVertex : pJob->constrainedVertices) {
|
for (auto fixedVertex : constrainedVertices) {
|
||||||
isVertexConstrained[fixedVertex.first] = true;
|
isVertexConstrained[fixedVertex.first] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue