#2277 external files. Improve robustness when importing

This commit is contained in:
Bjørn Erik Jensen
2018-01-30 13:48:28 +01:00
parent 4094fd1861
commit e417e3af76
3 changed files with 34 additions and 16 deletions

View File

@@ -50,7 +50,7 @@
#include <vector> #include <vector>
#include <cmath> #include <cmath>
static std::vector<double> EMPTY_DOUBLE_VECTOR;
CAF_PDM_SOURCE_INIT(RimStimPlanFractureTemplate, "RimStimPlanFractureTemplate"); CAF_PDM_SOURCE_INIT(RimStimPlanFractureTemplate, "RimStimPlanFractureTemplate");
@@ -75,6 +75,7 @@ RimStimPlanFractureTemplate::RimStimPlanFractureTemplate(void)
CAF_PDM_InitField(&m_conductivityScalingFactor, "ConductivityFactor", 1.0, "Conductivity Scaling Factor", "", "The conductivity values read from file will be scaled with this parameters", ""); CAF_PDM_InitField(&m_conductivityScalingFactor, "ConductivityFactor", 1.0, "Conductivity Scaling Factor", "", "The conductivity values read from file will be scaled with this parameters", "");
m_fractureGrid = new RigFractureGrid(); m_fractureGrid = new RigFractureGrid();
m_readError = false;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -93,6 +94,7 @@ void RimStimPlanFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* ch
if (&m_stimPlanFileName == changedField) if (&m_stimPlanFileName == changedField)
{ {
m_readError = false;
updateUiTreeName(); updateUiTreeName();
loadDataAndUpdate(); loadDataAndUpdate();
setDefaultsBasedOnXMLfile(); setDefaultsBasedOnXMLfile();
@@ -237,16 +239,21 @@ bool RimStimPlanFractureTemplate::setBorderPolygonResultNameToDefault()
void RimStimPlanFractureTemplate::loadDataAndUpdate() void RimStimPlanFractureTemplate::loadDataAndUpdate()
{ {
QString errorMessage; QString errorMessage;
if (m_readError) return;
m_stimPlanFractureDefinitionData = RifStimPlanXmlReader::readStimPlanXMLFile( m_stimPlanFileName(), m_conductivityScalingFactor(), &errorMessage); m_stimPlanFractureDefinitionData = RifStimPlanXmlReader::readStimPlanXMLFile( m_stimPlanFileName(), m_conductivityScalingFactor(), &errorMessage);
if (errorMessage.size() > 0) RiaLogging::error(errorMessage); if (errorMessage.size() > 0) RiaLogging::error(errorMessage);
if (m_stimPlanFractureDefinitionData.notNull()) if (m_stimPlanFractureDefinitionData.notNull())
{ {
fractureTemplateUnit = m_stimPlanFractureDefinitionData->unitSet(); fractureTemplateUnit = m_stimPlanFractureDefinitionData->unitSet();
m_readError = false;
} }
else else
{ {
fractureTemplateUnit = RiaEclipseUnitTools::UNITS_UNKNOWN; fractureTemplateUnit = RiaEclipseUnitTools::UNITS_UNKNOWN;
m_readError = true;
} }
updateFractureGrid(); updateFractureGrid();
@@ -335,7 +342,7 @@ QString RimStimPlanFractureTemplate::getUnitForStimPlanParameter(QString paramet
const std::vector<double>& RimStimPlanFractureTemplate::timeSteps() const std::vector<double>& RimStimPlanFractureTemplate::timeSteps()
{ {
if (m_stimPlanFractureDefinitionData.isNull()) loadDataAndUpdate(); if (m_stimPlanFractureDefinitionData.isNull()) loadDataAndUpdate();
return m_stimPlanFractureDefinitionData->timeSteps(); return m_stimPlanFractureDefinitionData.notNull() ? m_stimPlanFractureDefinitionData->timeSteps() : EMPTY_DOUBLE_VECTOR;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -367,6 +374,7 @@ void RimStimPlanFractureTemplate::computeMinMax(const QString& resultName, const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<std::vector<double>> RimStimPlanFractureTemplate::resultValues(const QString& resultName, const QString& unitName, size_t timeStepIndex) const std::vector<std::vector<double>> RimStimPlanFractureTemplate::resultValues(const QString& resultName, const QString& unitName, size_t timeStepIndex) const
{ {
if (m_stimPlanFractureDefinitionData.isNull()) return std::vector<std::vector<double>>();
return m_stimPlanFractureDefinitionData->getDataAtTimeIndex(resultName, unitName, timeStepIndex); return m_stimPlanFractureDefinitionData->getDataAtTimeIndex(resultName, unitName, timeStepIndex);
} }
@@ -375,6 +383,7 @@ std::vector<std::vector<double>> RimStimPlanFractureTemplate::resultValues(const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<double> RimStimPlanFractureTemplate::fractureGridResults(const QString& resultName, const QString& unitName, size_t timeStepIndex) const std::vector<double> RimStimPlanFractureTemplate::fractureGridResults(const QString& resultName, const QString& unitName, size_t timeStepIndex) const
{ {
if (m_stimPlanFractureDefinitionData.isNull()) return EMPTY_DOUBLE_VECTOR;
return m_stimPlanFractureDefinitionData->fractureGridResults(resultName, unitName, timeStepIndex); return m_stimPlanFractureDefinitionData->fractureGridResults(resultName, unitName, timeStepIndex);
} }
@@ -405,9 +414,12 @@ const RigFractureGrid* RimStimPlanFractureTemplate::fractureGrid() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimStimPlanFractureTemplate::updateFractureGrid() void RimStimPlanFractureTemplate::updateFractureGrid()
{ {
m_fractureGrid = m_stimPlanFractureDefinitionData->createFractureGrid(m_activeTimeStepIndex, if (m_stimPlanFractureDefinitionData.notNull())
fractureTemplateUnit, {
m_wellPathDepthAtFracture); m_fractureGrid = m_stimPlanFractureDefinitionData->createFractureGrid(m_activeTimeStepIndex,
fractureTemplateUnit,
m_wellPathDepthAtFracture);
}
} }
@@ -424,12 +436,14 @@ void RimStimPlanFractureTemplate::fractureTriangleGeometry(std::vector<cvf::Vec3
{ {
loadDataAndUpdate(); loadDataAndUpdate();
} }
else
m_stimPlanFractureDefinitionData->createFractureTriangleGeometry(m_wellPathDepthAtFracture, {
neededUnit, m_stimPlanFractureDefinitionData->createFractureTriangleGeometry(m_wellPathDepthAtFracture,
name, neededUnit,
nodeCoords, name,
triangleIndices); nodeCoords,
triangleIndices);
}
return; return;
} }
@@ -438,6 +452,7 @@ void RimStimPlanFractureTemplate::fractureTriangleGeometry(std::vector<cvf::Vec3
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<cvf::Vec3f> RimStimPlanFractureTemplate::fractureBorderPolygon(RiaEclipseUnitTools::UnitSystem neededUnit) std::vector<cvf::Vec3f> RimStimPlanFractureTemplate::fractureBorderPolygon(RiaEclipseUnitTools::UnitSystem neededUnit)
{ {
if (m_stimPlanFractureDefinitionData.isNull()) return std::vector<cvf::Vec3f>();
QString parameterName = m_borderPolygonResultName; QString parameterName = m_borderPolygonResultName;
QString parameterUnit = getUnitForStimPlanParameter(parameterName); QString parameterUnit = getUnitForStimPlanParameter(parameterName);

View File

@@ -107,4 +107,5 @@ private:
caf::PdmField<double> m_conductivityScalingFactor; caf::PdmField<double> m_conductivityScalingFactor;
cvf::ref<RigFractureGrid> m_fractureGrid; cvf::ref<RigFractureGrid> m_fractureGrid;
bool m_readError;
}; };

View File

@@ -458,13 +458,15 @@ QList<caf::PdmOptionItemInfo> RimEclipseResultDefinition::calculateValueOptions(
bool enableSouring = false; bool enableSouring = false;
#ifdef ENABLE_SOURING #ifdef ENABLE_SOURING
RigCaseCellResultsData* cellResultsData = m_eclipseCase->results(this->porosityModel()); if (m_eclipseCase.notNull())
if (cellResultsData->hasFlowDiagUsableFluxes())
{ {
enableSouring = true; RigCaseCellResultsData* cellResultsData = m_eclipseCase->results(this->porosityModel());
}
if (cellResultsData->hasFlowDiagUsableFluxes())
{
enableSouring = true;
}
}
#endif /* ENABLE_SOURING */ #endif /* ENABLE_SOURING */