#6597 Use and display scaled elastic properties.

This commit is contained in:
Kristian Bendiksen
2020-10-02 14:33:15 +02:00
parent 7c555658ec
commit 309d9313bd
9 changed files with 200 additions and 220 deletions

View File

@@ -20,6 +20,8 @@
#include "RiaInterpolationTools.h"
#include "cafAssert.h"
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -62,78 +64,6 @@ const std::vector<double>& RigElasticProperties::porosity() const
return m_porosity;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigElasticProperties::youngsModulus() const
{
return m_youngsModulus;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigElasticProperties::poissonsRatio() const
{
return m_poissonsRatio;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigElasticProperties::K_Ic() const
{
return m_K_Ic;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigElasticProperties::proppantEmbedment() const
{
return m_proppantEmbedment;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigElasticProperties::biotCoefficient() const
{
return m_biotCoefficient;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigElasticProperties::k0() const
{
return m_k0;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigElasticProperties::fluidLossCoefficient() const
{
return m_fluidLossCoefficient;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigElasticProperties::spurtLoss() const
{
return m_spurtLoss;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<double>& RigElasticProperties::immobileFluidSaturation() const
{
return m_immobileFluidSaturation;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -163,71 +93,51 @@ void RigElasticProperties::appendValues( double porosity,
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigElasticProperties::getYoungsModulus( double porosity ) const
size_t RigElasticProperties::numValues() const
{
return RiaInterpolationTools::linear( m_porosity, m_youngsModulus, porosity );
return m_porosity.size();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigElasticProperties::getPoissonsRatio( double porosity ) const
double RigElasticProperties::getValue( RiaDefines::CurveProperty property, size_t index, double scale ) const
{
return RiaInterpolationTools::linear( m_porosity, m_poissonsRatio, porosity );
CAF_ASSERT( index < numValues() );
const std::vector<double>& unscaledValues = getVector( property );
return unscaledValues[index] * scale;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigElasticProperties::getK_Ic( double porosity ) const
const std::vector<double>& RigElasticProperties::getVector( RiaDefines::CurveProperty property ) const
{
return RiaInterpolationTools::linear( m_porosity, m_K_Ic, porosity );
if ( property == RiaDefines::CurveProperty::YOUNGS_MODULUS ) return m_youngsModulus;
if ( property == RiaDefines::CurveProperty::POISSONS_RATIO ) return m_poissonsRatio;
if ( property == RiaDefines::CurveProperty::K_IC ) return m_K_Ic;
if ( property == RiaDefines::CurveProperty::PROPPANT_EMBEDMENT ) return m_proppantEmbedment;
if ( property == RiaDefines::CurveProperty::BIOT_COEFFICIENT ) return m_biotCoefficient;
if ( property == RiaDefines::CurveProperty::K0 ) return m_k0;
if ( property == RiaDefines::CurveProperty::FLUID_LOSS_COEFFICIENT ) return m_fluidLossCoefficient;
if ( property == RiaDefines::CurveProperty::SPURT_LOSS ) return m_spurtLoss;
// Default: if we get this far only one option left
CAF_ASSERT( property == RiaDefines::CurveProperty::IMMOBILE_FLUID_SATURATION );
return m_immobileFluidSaturation;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigElasticProperties::getProppantEmbedment( double porosity ) const
double RigElasticProperties::getValueForPorosity( RiaDefines::CurveProperty property, double porosity, double scale ) const
{
return RiaInterpolationTools::linear( m_porosity, m_proppantEmbedment, porosity );
}
const std::vector<double>& unscaledValues = getVector( property );
std::vector<double> scaledValues;
for ( double unscaled : unscaledValues )
{
scaledValues.push_back( unscaled * scale );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigElasticProperties::getBiotCoefficient( double porosity ) const
{
return RiaInterpolationTools::linear( m_porosity, m_biotCoefficient, porosity );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigElasticProperties::getK0( double porosity ) const
{
return RiaInterpolationTools::linear( m_porosity, m_k0, porosity );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigElasticProperties::getFluidLossCoefficient( double porosity ) const
{
return RiaInterpolationTools::linear( m_porosity, m_fluidLossCoefficient, porosity );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigElasticProperties::getSpurtLoss( double porosity ) const
{
return RiaInterpolationTools::linear( m_porosity, m_spurtLoss, porosity );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigElasticProperties::getImmobileFluidSaturation( double porosity ) const
{
return RiaInterpolationTools::linear( m_porosity, m_immobileFluidSaturation, porosity );
return RiaInterpolationTools::linear( m_porosity, scaledValues, porosity );
}

View File

@@ -18,6 +18,8 @@
#pragma once
#include "RiaFractureModelDefines.h"
#include <QString>
#include <vector>
@@ -43,28 +45,16 @@ public:
double fluidLossCoefficient,
double spurtLoss,
double immobileFluidSaturation );
double getYoungsModulus( double porosity ) const;
double getPoissonsRatio( double porosity ) const;
double getK_Ic( double porosity ) const;
double getProppantEmbedment( double porosity ) const;
double getBiotCoefficient( double porosity ) const;
double getK0( double porosity ) const;
double getFluidLossCoefficient( double porosity ) const;
double getSpurtLoss( double porosity ) const;
double getImmobileFluidSaturation( double porosity ) const;
size_t numValues() const;
double getValue( RiaDefines::CurveProperty property, size_t index, double scale = 1.0 ) const;
double getValueForPorosity( RiaDefines::CurveProperty property, double porosity, double scale = 1.0 ) const;
const std::vector<double>& porosity() const;
const std::vector<double>& youngsModulus() const;
const std::vector<double>& poissonsRatio() const;
const std::vector<double>& K_Ic() const;
const std::vector<double>& proppantEmbedment() const;
const std::vector<double>& biotCoefficient() const;
const std::vector<double>& k0() const;
const std::vector<double>& fluidLossCoefficient() const;
const std::vector<double>& spurtLoss() const;
const std::vector<double>& immobileFluidSaturation() const;
private:
const std::vector<double>& getVector( RiaDefines::CurveProperty property ) const;
QString m_fieldName;
QString m_formationName;
QString m_faciesName;