Added flip X/Y-axis on RimCase, will invert the sign of coordinates for the given flip axis.

p4#: 21453
This commit is contained in:
Magne Sjaastad 2013-04-26 13:19:34 +02:00
parent 8ccd89d3d1
commit 4b8e30e649
9 changed files with 90 additions and 32 deletions

View File

@ -51,6 +51,10 @@ RimCase::RimCase()
CAF_PDM_InitFieldNoDefault(&m_fractureModelResults, "FractureModelResults", "", "", "", "");
m_fractureModelResults.setUiHidden(true);
CAF_PDM_InitField(&flipXAxis, "FlipXAxis", false, "Flip X Axis", "", "", "");
CAF_PDM_InitField(&flipYAxis, "FlipYAxis", false, "Flip Y Axis", "", "", "");
// Obsolete field
CAF_PDM_InitField(&caseName, "CaseName", QString(), "Obsolete", "", "" ,"");
caseName.setIOWritable(false);
@ -250,6 +254,25 @@ void RimCase::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
releaseResultMemory = oldValue.toBool();
}
else if (changedField == &flipXAxis || changedField == &flipYAxis)
{
RigCaseData* rigEclipseCase = reservoirData();
if (rigEclipseCase)
{
rigEclipseCase->mainGrid()->setFlipAxis(flipXAxis, flipYAxis);
computeCachedData();
for (size_t i = 0; i < reservoirViews().size(); i++)
{
RimReservoirView* reservoirView = reservoirViews()[i];
reservoirView->scheduleReservoirGridGeometryRegen();
reservoirView->schedulePipeGeometryRegen();
reservoirView->createDisplayModelAndRedraw();
}
}
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -51,6 +51,9 @@ public:
caf::PdmField<QString> caseUserDescription;
caf::PdmField<bool> releaseResultMemory;
caf::PdmPointersField<RimReservoirView*> reservoirViews;
caf::PdmField<bool> flipXAxis;
caf::PdmField<bool> flipYAxis;
virtual bool openEclipseGridFile() { return false;}; // Should be pure virtual but PDM does not allow that.

View File

@ -96,6 +96,8 @@ void RimInputCase::openDataFileSet(const QStringList& filenames)
{
m_gridFileName = filenames[i];
this->reservoirData()->mainGrid()->setFlipAxis(flipXAxis, flipYAxis);
computeCachedData();
break;
@ -183,6 +185,8 @@ bool RimInputCase::openEclipseGridFile()
results(RifReaderInterface::MATRIX_RESULTS)->setReaderInterface(readerInterface.p());
results(RifReaderInterface::FRACTURE_RESULTS)->setReaderInterface(readerInterface.p());
this->reservoirData()->mainGrid()->setFlipAxis(flipXAxis, flipYAxis);
computeCachedData();
loadAndSyncronizeInputProperties();
@ -310,32 +314,6 @@ void RimInputCase::loadAndSyncronizeInputProperties()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimInputCase::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimInputCase::addFiles(const QStringList& newFileNames)
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimInputCase::removeFiles(const QStringList& obsoleteFileNames)
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -56,9 +56,6 @@ public:
// RimCase overrides
virtual bool openEclipseGridFile(); // Find grid file among file set. Read, Find read and validate property date. Syncronize child property sets.
// PdmObject overrides
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
// Overrides from RimCase
virtual QString locationOnDisc() const;
virtual QString gridFileName() const { return m_gridFileName();}
@ -66,9 +63,6 @@ public:
virtual void updateFilePathsFromProjectPath(const QString& projectPath, const QString& oldProjectPath);
private:
void addFiles(const QStringList& newFileNames);
void removeFiles(const QStringList& obsoleteFileNames);
cvf::ref<RifReaderInterface> createMockModel(QString modelName);
// Fields

View File

@ -1031,6 +1031,14 @@ void RimReservoirView::scheduleGeometryRegen(unsigned short geometryType)
m_reservoirGridPartManager->scheduleGeometryRegen(static_cast<RivReservoirViewPartMgr::ReservoirGeometryCacheType>(geometryType));
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimReservoirView::scheduleReservoirGridGeometryRegen()
{
m_reservoirGridPartManager->clearGeometryCache();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -1038,6 +1046,7 @@ void RimReservoirView::schedulePipeGeometryRegen()
{
m_pipesPartManager->scheduleGeometryRegen();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -153,6 +153,7 @@ public:
void loadDataAndUpdate();
void createDisplayModelAndRedraw();
void scheduleGeometryRegen(unsigned short geometryType);
void scheduleReservoirGridGeometryRegen();
void schedulePipeGeometryRegen();
void updateDisplayModelForWellResults();

View File

@ -47,6 +47,11 @@ RimResultCase::RimResultCase()
caseDirectory.setIOWritable(false);
caseDirectory.setUiHidden(true);
flipXAxis.setIOWritable(true);
flipXAxis.setUiHidden(true);
flipYAxis.setIOWritable(true);
flipYAxis.setUiHidden(true);
m_activeCellInfoIsReadFromFile = false;
m_gridAndWellDataIsReadFromFile = false;
}

View File

@ -26,6 +26,8 @@ RigMainGrid::RigMainGrid(void)
m_displayModelOffset = cvf::Vec3d::ZERO;
m_gridIndex = 0;
m_flipXAxis = false;
m_flipYAxis = false;
}
@ -116,3 +118,41 @@ const RigGridBase* RigMainGrid::gridByIndex(size_t localGridIndex) const
return m_localGrids[localGridIndex-1].p();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigMainGrid::setFlipAxis(bool flipXAxis, bool flipYAxis)
{
bool needFlipX = false;
bool needFlipY = false;
if (m_flipXAxis != flipXAxis)
{
needFlipX = true;
}
if (m_flipYAxis != flipYAxis)
{
needFlipY = true;
}
if (needFlipX || needFlipY)
{
for (size_t i = 0; i < m_nodes.size(); i++)
{
if (needFlipX)
{
m_nodes[i].x() *= -1.0;
}
if (needFlipY)
{
m_nodes[i].y() *= -1.0;
}
}
m_flipXAxis = flipXAxis;
m_flipYAxis = flipYAxis;
}
}

View File

@ -53,6 +53,8 @@ public:
virtual cvf::Vec3d displayModelOffset() const;
void setDisplayModelOffset(cvf::Vec3d offset);
void setFlipAxis(bool flipXAxis, bool flipYAxis);
private:
void initAllSubGridsParentGridPointer();
void initAllSubCellsMainGridCellIndex();
@ -64,5 +66,8 @@ private:
cvf::Collection<RigLocalGrid> m_localGrids; ///< List of all the LGR's in this reservoir
cvf::Vec3d m_displayModelOffset;
bool m_flipXAxis;
bool m_flipYAxis;
};