Added initAfterRead for case group

p4#: 20904
This commit is contained in:
Magne Sjaastad 2013-03-14 09:28:49 +01:00
parent 99159cb12d
commit 469c5a9657
4 changed files with 66 additions and 4 deletions

View File

@ -1306,7 +1306,7 @@ void RIApplication::updateRegressionTest(const QString& testRootPath)
}
//--------------------------------------------------------------------------------------------------
///
/// Make sure changes in this functions is validated to RimIdenticalGridCaseGroup::initAfterRead()
//--------------------------------------------------------------------------------------------------
bool RIApplication::addEclipseCases(const QStringList& fileNames)
{

View File

@ -26,6 +26,8 @@
#include "RimStatisticalCalculation.h"
#include "RimStatisticalCollection.h"
#include "RimResultReservoir.h"
#include "cafProgressInfo.h"
CAF_PDM_SOURCE_INIT(RimIdenticalGridCaseGroup, "RimIdenticalGridCaseGroup");
@ -106,3 +108,55 @@ caf::PdmFieldHandle* RimIdenticalGridCaseGroup::userDescriptionField()
return &name;
}
//--------------------------------------------------------------------------------------------------
/// Make sure changes in this functions is validated to RIApplication::addEclipseCases()
//--------------------------------------------------------------------------------------------------
void RimIdenticalGridCaseGroup::initAfterRead()
{
if (caseCollection()->reservoirs().size() == 0)
{
return;
}
// First file is read completely including grid.
// The main grid from the first case is reused directly in for the other cases.
// When reading active cell info, only the total cell count is tested for consistency
RigEclipseCase* mainEclipseCase = NULL;
RimResultReservoir* rimReservoir = dynamic_cast<RimResultReservoir*>(caseCollection()->reservoirs()[0]);
CVF_ASSERT(rimReservoir);
rimReservoir->openEclipseGridFile();
mainEclipseCase = rimReservoir->reservoirData();
CVF_ASSERT(mainEclipseCase);
// Read active cell info from all source cases
caf::ProgressInfo info(caseCollection()->reservoirs().size(), "Case group - Reading Active Cell data");
for (size_t i = 1; i < caseCollection()->reservoirs().size(); i++)
{
RimResultReservoir* rimReservoir = dynamic_cast<RimResultReservoir*>(caseCollection()->reservoirs()[i]);
CVF_ASSERT(rimReservoir);
if (!rimReservoir->openAndReadActiveCellData(mainEclipseCase))
{
CVF_ASSERT(false);
}
info.setProgress(i);
}
// Set main grid for statistical calculations
for (size_t i = 0; i < statisticalReservoirCollection()->reservoirs().size(); i++)
{
RimStatisticalCalculation* rimReservoir = dynamic_cast<RimStatisticalCalculation*>(statisticalReservoirCollection()->reservoirs()[i]);
CVF_ASSERT(rimReservoir);
rimReservoir->setMainGrid(mainEclipseCase->mainGrid());
}
m_mainGrid = mainEclipseCase->mainGrid();
}

View File

@ -54,6 +54,7 @@ public:
protected:
virtual caf::PdmFieldHandle* userDescriptionField();
virtual void initAfterRead();
private:
RigMainGrid* m_mainGrid;
};

View File

@ -89,8 +89,11 @@ RimReservoir::~RimReservoir()
{
reservoirViews.deleteAllChildObjects();
// At this point, we assume that memory should be released
CVF_ASSERT(m_rigEclipseCase->refCount() == 1);
if (m_rigEclipseCase.notNull())
{
// At this point, we assume that memory should be released
CVF_ASSERT(m_rigEclipseCase->refCount() == 1);
}
}
//--------------------------------------------------------------------------------------------------
@ -101,7 +104,11 @@ RimReservoirView* RimReservoir::createAndAddReservoirView()
// If parent is collection, and number of views is zero, make sure rig is set to NULL to initiate normal case loading
if (parentCaseCollection() != NULL && reservoirViews().size() == 0)
{
CVF_ASSERT(m_rigEclipseCase->refCount() == 1);
if (m_rigEclipseCase.notNull())
{
CVF_ASSERT(m_rigEclipseCase->refCount() == 1);
}
m_rigEclipseCase = NULL;
}