mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#6364 Add import, display and export of immobile fluid saturation.
Part of Stimplan "detailed fluid loss" format.
This commit is contained in:
parent
71426dcacb
commit
d4d010c5d5
@ -49,6 +49,7 @@ void AppEnum<RiaDefines::CurveProperty>::setUp()
|
||||
addItem( RiaDefines::CurveProperty::THERMAL_EXPANSION_COEFFISIENT,
|
||||
"THERMAL_EXPANSION_COEFFISIENT",
|
||||
"Thermal Expansion Coeffisient" );
|
||||
addItem( RiaDefines::CurveProperty::IMMOBILE_FLUID_SATURATION, "IMMOBILE_FLUID_SATURATION", "Immobile FLuid Saturation" );
|
||||
|
||||
setDefault( RiaDefines::CurveProperty::UNDEFINED );
|
||||
}
|
||||
|
@ -48,5 +48,6 @@ enum class CurveProperty
|
||||
RELATIVE_PERMEABILITY_FACTOR,
|
||||
PORO_ELASTIC_CONSTANT,
|
||||
THERMAL_EXPANSION_COEFFISIENT,
|
||||
IMMOBILE_FLUID_SATURATION,
|
||||
};
|
||||
}; // namespace RiaDefines
|
||||
|
@ -143,7 +143,8 @@ RimFractureModelPlot*
|
||||
RiaDefines::CurveProperty::SPURT_LOSS,
|
||||
RiaDefines::CurveProperty::RELATIVE_PERMEABILITY_FACTOR,
|
||||
RiaDefines::CurveProperty::PORO_ELASTIC_CONSTANT,
|
||||
RiaDefines::CurveProperty::THERMAL_EXPANSION_COEFFISIENT};
|
||||
RiaDefines::CurveProperty::THERMAL_EXPANSION_COEFFISIENT,
|
||||
RiaDefines::CurveProperty::IMMOBILE_FLUID_SATURATION};
|
||||
|
||||
for ( auto result : results )
|
||||
{
|
||||
|
@ -96,7 +96,8 @@ void RicElasticPropertiesImportTools::importElasticPropertiesFromFile( const QSt
|
||||
item.biotCoefficient,
|
||||
item.k0,
|
||||
item.fluidLossCoefficient,
|
||||
item.spurtLoss );
|
||||
item.spurtLoss,
|
||||
item.immobileFluidSaturation );
|
||||
}
|
||||
|
||||
rimElasticProperties->setPropertiesForFacies( key, rigElasticProperties );
|
||||
|
@ -136,6 +136,7 @@ QString RimElasticProperties::generatePropertiesTable()
|
||||
" <th>k0</th>"
|
||||
" <th>Fluid Loss<br>Coefficient</th>"
|
||||
" <th>Spurt Loss</th>"
|
||||
" <th>Immobile Fluid<br>Saturation</th>"
|
||||
" </tr>"
|
||||
" </thead>"
|
||||
" <tbody>" );
|
||||
@ -143,16 +144,17 @@ QString RimElasticProperties::generatePropertiesTable()
|
||||
QString body;
|
||||
for ( auto prop : m_properties )
|
||||
{
|
||||
const QString& fieldName = prop.second.fieldName();
|
||||
const std::vector<double>& porosity = prop.second.porosity();
|
||||
const std::vector<double>& youngsModulus = prop.second.youngsModulus();
|
||||
const std::vector<double>& poissonsRatio = prop.second.poissonsRatio();
|
||||
const std::vector<double>& K_Ic = prop.second.K_Ic();
|
||||
const std::vector<double>& proppantEmbedment = prop.second.proppantEmbedment();
|
||||
const std::vector<double>& biotCoefficient = prop.second.biotCoefficient();
|
||||
const std::vector<double>& k0 = prop.second.k0();
|
||||
const std::vector<double>& fluidLossCoefficient = prop.second.fluidLossCoefficient();
|
||||
const std::vector<double>& spurtLoss = prop.second.spurtLoss();
|
||||
const QString& fieldName = prop.second.fieldName();
|
||||
const std::vector<double>& porosity = prop.second.porosity();
|
||||
const std::vector<double>& youngsModulus = prop.second.youngsModulus();
|
||||
const std::vector<double>& poissonsRatio = prop.second.poissonsRatio();
|
||||
const std::vector<double>& K_Ic = prop.second.K_Ic();
|
||||
const std::vector<double>& proppantEmbedment = prop.second.proppantEmbedment();
|
||||
const std::vector<double>& biotCoefficient = prop.second.biotCoefficient();
|
||||
const std::vector<double>& k0 = prop.second.k0();
|
||||
const std::vector<double>& fluidLossCoefficient = prop.second.fluidLossCoefficient();
|
||||
const std::vector<double>& spurtLoss = prop.second.spurtLoss();
|
||||
const std::vector<double>& immobileFluidSaturation = prop.second.immobileFluidSaturation();
|
||||
|
||||
for ( size_t i = 0; i < porosity.size(); i++ )
|
||||
{
|
||||
@ -169,6 +171,7 @@ QString RimElasticProperties::generatePropertiesTable()
|
||||
" <td align=right>%10</td>"
|
||||
" <td align=right>%11</td>"
|
||||
" <td align=right>%12</td>"
|
||||
" <td align=right>%13</td>"
|
||||
"</tr>" );
|
||||
|
||||
QString line = format.arg( fieldName )
|
||||
@ -182,7 +185,8 @@ QString RimElasticProperties::generatePropertiesTable()
|
||||
.arg( biotCoefficient[i] )
|
||||
.arg( k0[i] )
|
||||
.arg( fluidLossCoefficient[i] )
|
||||
.arg( spurtLoss[i] );
|
||||
.arg( spurtLoss[i] )
|
||||
.arg( immobileFluidSaturation[i] );
|
||||
|
||||
body.append( line );
|
||||
}
|
||||
|
@ -309,6 +309,11 @@ void RimElasticPropertiesCurve::performDataExtraction( bool* isUsingPseudoLength
|
||||
double val = rigElasticProperties.getSpurtLoss( porosity );
|
||||
values.push_back( val );
|
||||
}
|
||||
else if ( m_curveProperty() == RiaDefines::CurveProperty::IMMOBILE_FLUID_SATURATION )
|
||||
{
|
||||
double val = rigElasticProperties.getImmobileFluidSaturation( porosity );
|
||||
values.push_back( val );
|
||||
}
|
||||
else if ( m_fractureModel->hasDefaultValueForProperty( curveProperty() ) )
|
||||
{
|
||||
double val = m_fractureModel->getDefaultValueForProperty( curveProperty() );
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "RimFractureModelPlot.h"
|
||||
|
||||
#include "RiaDefines.h"
|
||||
#include "RiaFractureModelDefines.h"
|
||||
#include "RiaLogging.h"
|
||||
|
||||
#include "RicfCommandObject.h"
|
||||
@ -573,7 +574,7 @@ std::vector<double> RimFractureModelPlot::calculateProppandEmbedment() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<double> RimFractureModelPlot::calculateImmobileFluidSaturation() const
|
||||
{
|
||||
return std::vector<double>();
|
||||
return findCurveAndComputeLayeredAverage( RiaDefines::CurveProperty::IMMOBILE_FLUID_SATURATION );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -126,6 +126,14 @@ const std::vector<double>& RigElasticProperties::spurtLoss() const
|
||||
return m_spurtLoss;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const std::vector<double>& RigElasticProperties::immobileFluidSaturation() const
|
||||
{
|
||||
return m_immobileFluidSaturation;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -137,7 +145,8 @@ void RigElasticProperties::appendValues( double porosity,
|
||||
double biotCoefficient,
|
||||
double k0,
|
||||
double fluidLossCoefficient,
|
||||
double spurtLoss )
|
||||
double spurtLoss,
|
||||
double immobileFluidSaturation )
|
||||
{
|
||||
m_porosity.push_back( porosity );
|
||||
m_youngsModulus.push_back( youngsModulus );
|
||||
@ -148,6 +157,7 @@ void RigElasticProperties::appendValues( double porosity,
|
||||
m_k0.push_back( k0 );
|
||||
m_fluidLossCoefficient.push_back( fluidLossCoefficient );
|
||||
m_spurtLoss.push_back( spurtLoss );
|
||||
m_immobileFluidSaturation.push_back( immobileFluidSaturation );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -213,3 +223,11 @@ 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 );
|
||||
}
|
||||
|
@ -41,7 +41,8 @@ public:
|
||||
double biotCoefficient,
|
||||
double k0,
|
||||
double fluidLossCoefficient,
|
||||
double spurtLoss );
|
||||
double spurtLoss,
|
||||
double immobileFluidSaturation );
|
||||
double getYoungsModulus( double porosity ) const;
|
||||
double getPoissonsRatio( double porosity ) const;
|
||||
double getK_Ic( double porosity ) const;
|
||||
@ -50,6 +51,7 @@ public:
|
||||
double getK0( double porosity ) const;
|
||||
double getFluidLossCoefficient( double porosity ) const;
|
||||
double getSpurtLoss( double porosity ) const;
|
||||
double getImmobileFluidSaturation( double porosity ) const;
|
||||
|
||||
const std::vector<double>& porosity() const;
|
||||
const std::vector<double>& youngsModulus() const;
|
||||
@ -60,6 +62,7 @@ public:
|
||||
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:
|
||||
QString m_fieldName;
|
||||
@ -75,4 +78,5 @@ private:
|
||||
std::vector<double> m_k0;
|
||||
std::vector<double> m_fluidLossCoefficient;
|
||||
std::vector<double> m_spurtLoss;
|
||||
std::vector<double> m_immobileFluidSaturation;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user