mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1586 Compute diameter and roughness for main bore and ICDs
This commit is contained in:
parent
712cac9e9e
commit
2922a00fd6
@ -244,6 +244,8 @@ void RicExportFishbonesWellSegmentsFeature::generateWelsegsTable(RifEclipseDataT
|
|||||||
depth += location.trueVerticalDepth - previousTVD;
|
depth += location.trueVerticalDepth - previousTVD;
|
||||||
length += location.fishbonesSubs->measuredDepth(location.subIndex) - previousMD;
|
length += location.fishbonesSubs->measuredDepth(location.subIndex) - previousMD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double diameter = computeEffectiveDiameter(wellPath->fishbonesCollection()->linerDiameter(), wellPath->fishbonesCollection()->mainBoreDiameter());
|
||||||
|
|
||||||
formatter.comment(QString("Segment for sub %1").arg(location.subIndex));
|
formatter.comment(QString("Segment for sub %1").arg(location.subIndex));
|
||||||
formatter.add(location.segmentNumber).add(location.segmentNumber);
|
formatter.add(location.segmentNumber).add(location.segmentNumber);
|
||||||
@ -251,8 +253,8 @@ void RicExportFishbonesWellSegmentsFeature::generateWelsegsTable(RifEclipseDataT
|
|||||||
formatter.add(location.segmentNumber - 1); // All main stem segments are connected to the segment below them
|
formatter.add(location.segmentNumber - 1); // All main stem segments are connected to the segment below them
|
||||||
formatter.add(length);
|
formatter.add(length);
|
||||||
formatter.add(depth);
|
formatter.add(depth);
|
||||||
formatter.add(-1.0); // FIXME : Diam of main stem?
|
formatter.add(diameter);
|
||||||
formatter.add(-1.0); // FIXME : Rough of main stem?
|
formatter.add(wellPath->fishbonesCollection()->roughnessFactor());
|
||||||
formatter.rowCompleted();
|
formatter.rowCompleted();
|
||||||
|
|
||||||
previousMD = location.measuredDepth;
|
previousMD = location.measuredDepth;
|
||||||
@ -266,14 +268,15 @@ void RicExportFishbonesWellSegmentsFeature::generateWelsegsTable(RifEclipseDataT
|
|||||||
formatter.comment("Rough: MSW - Open Hole Roughness Factor");
|
formatter.comment("Rough: MSW - Open Hole Roughness Factor");
|
||||||
for (const WellSegmentLocation& location : locations)
|
for (const WellSegmentLocation& location : locations)
|
||||||
{
|
{
|
||||||
|
double diameter = computeEffectiveDiameter(wellPath->fishbonesCollection()->linerDiameter(), wellPath->fishbonesCollection()->mainBoreDiameter());
|
||||||
formatter.comment("ICD");
|
formatter.comment("ICD");
|
||||||
formatter.add(location.icdSegmentNumber).add(location.icdSegmentNumber);
|
formatter.add(location.icdSegmentNumber).add(location.icdSegmentNumber);
|
||||||
formatter.add(location.icdBranchNumber);
|
formatter.add(location.icdBranchNumber);
|
||||||
formatter.add(location.segmentNumber);
|
formatter.add(location.segmentNumber);
|
||||||
formatter.add(0.1); // ICDs have 0.1 length
|
formatter.add(0.1); // ICDs have 0.1 length
|
||||||
formatter.add(0); // Depth change
|
formatter.add(0); // Depth change
|
||||||
formatter.add(-1.0); // Diam?
|
formatter.add(diameter);
|
||||||
formatter.add(-1.0); // Rough?
|
formatter.add(wellPath->fishbonesCollection()->roughnessFactor());
|
||||||
formatter.rowCompleted();
|
formatter.rowCompleted();
|
||||||
|
|
||||||
for (const WellSegmentLateral& lateral : location.laterals)
|
for (const WellSegmentLateral& lateral : location.laterals)
|
||||||
@ -416,7 +419,7 @@ double RicExportFishbonesWellSegmentsFeature::computeEffectiveDiameter(double in
|
|||||||
|
|
||||||
double effectiveArea = outerArea - innerArea;
|
double effectiveArea = outerArea - innerArea;
|
||||||
|
|
||||||
double effectiveRadius = cvf::Math::sqrt(effectiveArea / cvf::PI_D * 2);
|
double effectiveRadius = cvf::Math::sqrt(effectiveArea / cvf::PI_D);
|
||||||
|
|
||||||
return effectiveRadius * 2;
|
return effectiveRadius * 2;
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,7 @@ RimFishbonesCollection::RimFishbonesCollection()
|
|||||||
CAF_PDM_InitField(&m_startMD, "StartMD", HUGE_VAL, "Start MD", "", "", "");
|
CAF_PDM_InitField(&m_startMD, "StartMD", HUGE_VAL, "Start MD", "", "", "");
|
||||||
CAF_PDM_InitField(&m_mainBoreDiameter, "MainBoreDiameter", 0.0, "Main Bore Diameter", "", "", "");
|
CAF_PDM_InitField(&m_mainBoreDiameter, "MainBoreDiameter", 0.0, "Main Bore Diameter", "", "", "");
|
||||||
CAF_PDM_InitField(&m_linerDiameter, "LinerDiameter", 0.0, "Liner Diameter", "", "", "");
|
CAF_PDM_InitField(&m_linerDiameter, "LinerDiameter", 0.0, "Liner Diameter", "", "", "");
|
||||||
|
CAF_PDM_InitField(&m_roughnessFactor, "RoughnessFactor", 0.0, "Roughness Factor", "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -48,6 +48,9 @@ public:
|
|||||||
|
|
||||||
void recalculateStartMD();
|
void recalculateStartMD();
|
||||||
double startMD() const { return m_startMD(); }
|
double startMD() const { return m_startMD(); }
|
||||||
|
double mainBoreDiameter() const { return m_mainBoreDiameter(); }
|
||||||
|
double linerDiameter() const { return m_linerDiameter(); }
|
||||||
|
double roughnessFactor() const { return m_roughnessFactor(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||||
@ -61,4 +64,5 @@ private:
|
|||||||
caf::PdmField<double> m_startMD;
|
caf::PdmField<double> m_startMD;
|
||||||
caf::PdmField<double> m_mainBoreDiameter;
|
caf::PdmField<double> m_mainBoreDiameter;
|
||||||
caf::PdmField<double> m_linerDiameter;
|
caf::PdmField<double> m_linerDiameter;
|
||||||
|
caf::PdmField<double> m_roughnessFactor;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user