#1608 - fixing update of wellDiameter and perforation length (in fracture unit system) from fracture template

This commit is contained in:
astridkbjorke 2017-06-15 10:49:27 +02:00
parent 1911092cb7
commit 7d1dc5d9d6
3 changed files with 52 additions and 11 deletions

View File

@ -38,6 +38,7 @@
#include "RimEclipseCellColors.h"
#include "RimEclipseView.h"
#include "RimEllipseFractureTemplate.h"
#include "RimFractureTemplate.h"
#include "RimFractureTemplateCollection.h"
#include "RimOilField.h"
#include "RimProject.h"
@ -155,17 +156,7 @@ void RimFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
if (changedField == &m_fractureTemplate)
{
//perforationLength = m_fractureTemplate->perforationLength();
//TODO: Find out if performationLength should be in RimFractureTemplate or in RimEllipseFracTemplate
if (fractureTemplate()) azimuth = m_fractureTemplate->azimuthAngle();
else azimuth = 0.0;
updateAzimuthFromFractureTemplate();
RimStimPlanFractureTemplate* stimPlanFracTemplate = dynamic_cast<RimStimPlanFractureTemplate*>(fractureTemplate());
if (stimPlanFracTemplate)
{
stimPlanTimeIndexToPlot = stimPlanFracTemplate->activeTimeStepIndex();
}
setFractureTemplate(m_fractureTemplate);
}
if (changedField == &azimuth ||
@ -514,6 +505,8 @@ void RimFracture::setFractureTemplate(RimFractureTemplate* fractureTemplate)
}
this->updateAzimuthFromFractureTemplate();
this->wellDiameter = fractureTemplate->wellDiameterInFractureUnit(fractureUnit);
this->perforationLength = fractureTemplate->perforationLengthInFractureUnit(fractureUnit);
}
//--------------------------------------------------------------------------------------------------

View File

@ -226,6 +226,52 @@ void RimFractureTemplate::defineEditorAttribute(const caf::PdmFieldHandle* field
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RimFractureTemplate::wellDiameterInFractureUnit(RiaEclipseUnitTools::UnitSystemType fractureUnit)
{
if (fractureUnit == fractureTemplateUnit())
{
return wellDiameter;
}
else if (fractureTemplateUnit == RiaEclipseUnitTools::UNITS_METRIC
&& fractureUnit == RiaEclipseUnitTools::UNITS_FIELD)
{
return RiaEclipseUnitTools::meterToInch(wellDiameter);
}
else if (fractureTemplateUnit == RiaEclipseUnitTools::UNITS_FIELD
&& fractureUnit == RiaEclipseUnitTools::UNITS_METRIC)
{
return RiaEclipseUnitTools::inchToMeter(wellDiameter);
}
return cvf::UNDEFINED_DOUBLE;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RimFractureTemplate::perforationLengthInFractureUnit(RiaEclipseUnitTools::UnitSystemType fractureUnit)
{
if (fractureUnit == fractureTemplateUnit())
{
return perforationLength;
}
else if (fractureTemplateUnit == RiaEclipseUnitTools::UNITS_METRIC
&& fractureUnit == RiaEclipseUnitTools::UNITS_FIELD)
{
return RiaEclipseUnitTools::meterToFeet(perforationLength);
}
else if (fractureTemplateUnit == RiaEclipseUnitTools::UNITS_FIELD
&& fractureUnit == RiaEclipseUnitTools::UNITS_METRIC)
{
return RiaEclipseUnitTools::feetToMeter(perforationLength);
}
return cvf::UNDEFINED_DOUBLE;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -74,6 +74,8 @@ public:
caf::PdmField< RiaEclipseUnitTools::UnitSystemType > fractureTemplateUnit;
void setDefaultWellDiameterFromUnit();
double wellDiameterInFractureUnit(RiaEclipseUnitTools::UnitSystemType fractureUnit);
double perforationLengthInFractureUnit(RiaEclipseUnitTools::UnitSystemType fractureUnit);
virtual void fractureTriangleGeometry(std::vector<cvf::Vec3f>* nodeCoords,
std::vector<cvf::uint>* triangleIndices,