mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Remove WBS-averaging over element
This commit is contained in:
@@ -243,12 +243,7 @@ std::vector<RigGeoMechWellLogExtractor::WbsParameterSource>
|
|||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
for ( int64_t intersectionIdx = 0; intersectionIdx < (int64_t)m_intersections.size(); ++intersectionIdx )
|
for ( int64_t intersectionIdx = 0; intersectionIdx < (int64_t)m_intersections.size(); ++intersectionIdx )
|
||||||
{
|
{
|
||||||
float averageUnscaledValue = std::numeric_limits<float>::infinity();
|
gridValues[intersectionIdx] = static_cast<double>( interpolatedInterfaceValues[intersectionIdx] );
|
||||||
averageIntersectionValuesToSegmentValue( intersectionIdx,
|
|
||||||
interpolatedInterfaceValues,
|
|
||||||
std::numeric_limits<float>::infinity(),
|
|
||||||
&averageUnscaledValue );
|
|
||||||
gridValues[intersectionIdx] = static_cast<double>( averageUnscaledValue );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -560,11 +555,8 @@ void RigGeoMechWellLogExtractor::wellBoreWallCurveData( const RigFemResultAddres
|
|||||||
double poissonRatio = poissonAllSegments[intersectionIdx];
|
double poissonRatio = poissonAllSegments[intersectionIdx];
|
||||||
double ucsBar = ucsAllSegments[intersectionIdx];
|
double ucsBar = ucsAllSegments[intersectionIdx];
|
||||||
|
|
||||||
caf::Ten3d segmentStress;
|
caf::Ten3d segmentStress = interpolatedInterfaceStressBar[intersectionIdx];
|
||||||
bool validSegmentStress = averageIntersectionValuesToSegmentValue( intersectionIdx,
|
bool validSegmentStress = segmentStress != caf::Ten3d::invalid();
|
||||||
interpolatedInterfaceStressBar,
|
|
||||||
caf::Ten3d::invalid(),
|
|
||||||
&segmentStress );
|
|
||||||
|
|
||||||
cvf::Vec3d wellPathTangent = calculateWellPathTangent( intersectionIdx, TangentConstantWithinCell );
|
cvf::Vec3d wellPathTangent = calculateWellPathTangent( intersectionIdx, TangentConstantWithinCell );
|
||||||
caf::Ten3d wellPathStressFloat = transformTensorToWellPathOrientation( wellPathTangent, segmentStress );
|
caf::Ten3d wellPathStressFloat = transformTensorToWellPathOrientation( wellPathTangent, segmentStress );
|
||||||
@@ -1095,54 +1087,6 @@ double RigGeoMechWellLogExtractor::pascalToBar( double pascalValue )
|
|||||||
return pascalValue * 1.0e-5;
|
return pascalValue * 1.0e-5;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
template <typename T>
|
|
||||||
bool RigGeoMechWellLogExtractor::averageIntersectionValuesToSegmentValue( size_t intersectionIdx,
|
|
||||||
const std::vector<T>& values,
|
|
||||||
const T& invalidValue,
|
|
||||||
T* averagedCellValue ) const
|
|
||||||
{
|
|
||||||
CVF_ASSERT( values.size() >= 2 );
|
|
||||||
|
|
||||||
*averagedCellValue = invalidValue;
|
|
||||||
|
|
||||||
T value1, value2;
|
|
||||||
cvf::Vec3d centroid( cellCentroid( intersectionIdx ) );
|
|
||||||
double dist1 = 0.0, dist2 = 0.0;
|
|
||||||
if ( intersectionIdx % 2 == 0 )
|
|
||||||
{
|
|
||||||
value1 = values[intersectionIdx];
|
|
||||||
value2 = values[intersectionIdx + 1];
|
|
||||||
|
|
||||||
dist1 = ( centroid - m_intersections[intersectionIdx] ).length();
|
|
||||||
dist2 = ( centroid - m_intersections[intersectionIdx + 1] ).length();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
value1 = values[intersectionIdx - 1];
|
|
||||||
value2 = values[intersectionIdx];
|
|
||||||
|
|
||||||
dist1 = ( centroid - m_intersections[intersectionIdx - 1] ).length();
|
|
||||||
dist2 = ( centroid - m_intersections[intersectionIdx] ).length();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( invalidValue == value1 || invalidValue == value2 )
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
RiaWeightedMeanCalculator<T> averageCalc;
|
|
||||||
averageCalc.addValueAndWeight( value1, dist2 );
|
|
||||||
averageCalc.addValueAndWeight( value2, dist1 );
|
|
||||||
if ( averageCalc.validAggregatedWeight() )
|
|
||||||
{
|
|
||||||
*averagedCellValue = averageCalc.weightedMean();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -120,11 +120,6 @@ private:
|
|||||||
double getWellLogSegmentValue( size_t intersectionIdx,
|
double getWellLogSegmentValue( size_t intersectionIdx,
|
||||||
const std::vector<std::pair<double, double>>& wellLogValues ) const;
|
const std::vector<std::pair<double, double>>& wellLogValues ) const;
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
bool averageIntersectionValuesToSegmentValue( size_t intersectionIdx,
|
|
||||||
const std::vector<T>& intersectionValues,
|
|
||||||
const T& invalidValue,
|
|
||||||
T* averagedSegmentValue ) const;
|
|
||||||
static double pascalToBar( double pascalValue );
|
static double pascalToBar( double pascalValue );
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|||||||
Reference in New Issue
Block a user