mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2344 Tensor vectors: Avoid creating vectors of Infinity result values
This commit is contained in:
@@ -214,41 +214,44 @@ void RivTensorResultPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasicLi
|
|||||||
result3.set(elmPrincipalDirections[elmIdx][2] * arrowConstantScaling);
|
result3.set(elmPrincipalDirections[elmIdx][2] * arrowConstantScaling);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_rimReservoirView->tensorResults()->showPrincipal1())
|
if (isValid(result1) && m_rimReservoirView->tensorResults()->showPrincipal1())
|
||||||
{
|
{
|
||||||
if (cvf::Math::abs(elmPrincipals[0][elmIdx]) > m_rimReservoirView->tensorResults()->threshold())
|
if (result1.length() > m_rimReservoirView->tensorResults()->threshold())
|
||||||
{
|
{
|
||||||
bool isPressure = true;
|
bool isPressure = true;
|
||||||
if (elmPrincipals[0][elmIdx] < 0)
|
if (elmPrincipals[0][elmIdx] < 0)
|
||||||
{
|
{
|
||||||
isPressure = false;
|
isPressure = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), result1, color1, isPressure));
|
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), result1, color1, isPressure));
|
||||||
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), -result1, color1, isPressure));
|
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), -result1, color1, isPressure));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_rimReservoirView->tensorResults()->showPrincipal2())
|
if (isValid(result2) && m_rimReservoirView->tensorResults()->showPrincipal2())
|
||||||
|
{
|
||||||
|
if (result2.length() > m_rimReservoirView->tensorResults()->threshold())
|
||||||
{
|
{
|
||||||
bool isPressure = true;
|
bool isPressure = true;
|
||||||
if (elmPrincipals[1][elmIdx] < 0)
|
if (elmPrincipals[1][elmIdx] < 0)
|
||||||
{
|
{
|
||||||
isPressure = false;
|
isPressure = false;
|
||||||
}
|
}
|
||||||
if (cvf::Math::abs(elmPrincipals[1][elmIdx]) > m_rimReservoirView->tensorResults()->threshold())
|
|
||||||
{
|
|
||||||
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), result2, color2, isPressure));
|
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), result2, color2, isPressure));
|
||||||
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), -result2, color2, isPressure));
|
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), -result2, color2, isPressure));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_rimReservoirView->tensorResults()->showPrincipal3())
|
if (isValid(result3) && m_rimReservoirView->tensorResults()->showPrincipal3())
|
||||||
|
{
|
||||||
|
if (result3.length() > m_rimReservoirView->tensorResults()->threshold())
|
||||||
{
|
{
|
||||||
bool isPressure = true;
|
bool isPressure = true;
|
||||||
if (elmPrincipals[2][elmIdx] < 0)
|
if (elmPrincipals[2][elmIdx] < 0)
|
||||||
{
|
{
|
||||||
isPressure = false;
|
isPressure = false;
|
||||||
}
|
}
|
||||||
if (cvf::Math::abs(elmPrincipals[2][elmIdx]) > m_rimReservoirView->tensorResults()->threshold())
|
|
||||||
{
|
|
||||||
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), result3, color3, isPressure));
|
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), result3, color3, isPressure));
|
||||||
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), -result3, color3, isPressure));
|
tensorVisualizations.push_back(TensorVisualization(cvf::Vec3f(displayCoord), -result3, color3, isPressure));
|
||||||
}
|
}
|
||||||
@@ -357,3 +360,26 @@ bool RivTensorResultPartMgr::isTensorAddress(RigFemResultAddress address)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool RivTensorResultPartMgr::isValid(cvf::Vec3f resultVector)
|
||||||
|
{
|
||||||
|
if ( resultVector.x() == HUGE_VAL
|
||||||
|
|| resultVector.y() == HUGE_VAL
|
||||||
|
|| resultVector.z() == HUGE_VAL
|
||||||
|
|| resultVector.x() == -HUGE_VAL
|
||||||
|
|| resultVector.y() == -HUGE_VAL
|
||||||
|
|| resultVector.z() == -HUGE_VAL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (resultVector.length() == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ private:
|
|||||||
cvf::ref<cvf::Part> createPart(std::vector<TensorVisualization>& tensorVisualizations) const;
|
cvf::ref<cvf::Part> createPart(std::vector<TensorVisualization>& tensorVisualizations) const;
|
||||||
|
|
||||||
static bool isTensorAddress(RigFemResultAddress address);
|
static bool isTensorAddress(RigFemResultAddress address);
|
||||||
|
static bool isValid(cvf::Vec3f resultVector);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmPointer<RimGeoMechView> m_rimReservoirView;
|
caf::PdmPointer<RimGeoMechView> m_rimReservoirView;
|
||||||
|
|||||||
Reference in New Issue
Block a user