#2940 Geomech: Use display offset for FEM parts

This commit is contained in:
Jacob Støren 2018-05-18 13:39:20 +02:00
parent 2c2a2c6102
commit 439b8e22ad
3 changed files with 21 additions and 11 deletions

View File

@ -188,7 +188,7 @@ void RivFemPartGeometryGenerator::computeArrays()
trianglesToElements.reserve(estimatedQuadVxCount/2);
trianglesToElementFaces.reserve(estimatedQuadVxCount/2);
cvf::Vec3d offset = Vec3d::ZERO; //m_part->displayModelOffset();
cvf::Vec3d displayOffset = m_part->boundingBox().min();
const std::vector<cvf::Vec3f>& nodeCoordinates = m_part->nodes().coordinates;
#pragma omp parallel for schedule(dynamic)
@ -217,12 +217,10 @@ void RivFemPartGeometryGenerator::computeArrays()
if (faceNodeCount == 4)
{
const cvf::Vec3f* quadVxs[4];
quadVxs[0] = &(nodeCoordinates[ elmNodeIndices[localElmNodeIndicesForFace[0]] ]);
quadVxs[1] = &(nodeCoordinates[ elmNodeIndices[localElmNodeIndicesForFace[1]] ]);
quadVxs[2] = &(nodeCoordinates[ elmNodeIndices[localElmNodeIndicesForFace[2]] ]);
quadVxs[3] = &(nodeCoordinates[ elmNodeIndices[localElmNodeIndicesForFace[3]] ]);
cvf::Vec3f quadVxs0 ( cvf::Vec3d(nodeCoordinates[ elmNodeIndices[localElmNodeIndicesForFace[0]] ]) - displayOffset);
cvf::Vec3f quadVxs1 ( cvf::Vec3d(nodeCoordinates[ elmNodeIndices[localElmNodeIndicesForFace[1]] ]) - displayOffset);
cvf::Vec3f quadVxs2 ( cvf::Vec3d(nodeCoordinates[ elmNodeIndices[localElmNodeIndicesForFace[2]] ]) - displayOffset);
cvf::Vec3f quadVxs3 ( cvf::Vec3d(nodeCoordinates[ elmNodeIndices[localElmNodeIndicesForFace[3]] ]) - displayOffset);
int qNodeIdx[4];
qNodeIdx[0] = elmNodeIndices[localElmNodeIndicesForFace[0]];
@ -238,10 +236,10 @@ void RivFemPartGeometryGenerator::computeArrays()
#pragma omp critical
{
vertices.push_back(*quadVxs[0]);
vertices.push_back(*quadVxs[1]);
vertices.push_back(*quadVxs[2]);
vertices.push_back(*quadVxs[3]);
vertices.push_back(quadVxs0);
vertices.push_back(quadVxs1);
vertices.push_back(quadVxs2);
vertices.push_back(quadVxs3);
m_quadVerticesToNodeIdx.push_back(qNodeIdx[0]);
m_quadVerticesToNodeIdx.push_back(qNodeIdx[1]);

View File

@ -399,6 +399,14 @@ double RimGeoMechCase::frictionAngleDeg() const
return m_frictionAngleDeg;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
cvf::Vec3d RimGeoMechCase::displayModelOffset() const
{
return this->allCellsBoundingBox().min();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -78,7 +78,11 @@ public:
caf::PdmChildArrayField<RimGeoMechView*> geoMechViews;
private:
virtual cvf::Vec3d displayModelOffset() const override;
static std::vector<QDateTime> dateTimeVectorFromTimeStepStrings(const QStringList& timeStepStrings);
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;