mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3224 Non-Darcy longitudinal : Use geometric mean for B-factor
This commit is contained in:
@@ -32,7 +32,7 @@
|
||||
#include "cvfVector3.h"
|
||||
|
||||
#include <vector>
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
|
||||
class RigFractureGrid;
|
||||
class RimFractureContainment;
|
||||
@@ -40,13 +40,14 @@ class MinMaxAccumulator;
|
||||
class PosNegAccumulator;
|
||||
class RimFracture;
|
||||
|
||||
class FractureWidthAndConductivity
|
||||
class WellFractureIntersectionData
|
||||
{
|
||||
public:
|
||||
FractureWidthAndConductivity()
|
||||
WellFractureIntersectionData()
|
||||
: m_width(0.0)
|
||||
, m_permeability(0.0)
|
||||
, m_conductivity(HUGE_VAL)
|
||||
, m_conductivity(std::numeric_limits<double>::infinity())
|
||||
, m_betaFactorInForcheimerUnits(std::numeric_limits<double>::infinity())
|
||||
{
|
||||
}
|
||||
|
||||
@@ -60,7 +61,7 @@ public:
|
||||
|
||||
bool isConductivityDefined() const
|
||||
{
|
||||
return (m_conductivity != HUGE_VAL);
|
||||
return (m_conductivity != std::numeric_limits<double>::infinity());
|
||||
}
|
||||
|
||||
// Unit : meter or feet
|
||||
@@ -70,6 +71,9 @@ public:
|
||||
double m_permeability;
|
||||
|
||||
double m_conductivity;
|
||||
|
||||
// Unit : Forcheimer unit
|
||||
double m_betaFactorInForcheimerUnits;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
@@ -106,6 +110,12 @@ public:
|
||||
WIDTH_FROM_FRACTURE,
|
||||
};
|
||||
|
||||
enum BetaFactorEnum
|
||||
{
|
||||
USER_DEFINED_BETA_FACTOR,
|
||||
BETA_FACTOR_FROM_FRACTURE,
|
||||
};
|
||||
|
||||
enum NonDarcyFlowEnum
|
||||
{
|
||||
NON_DARCY_NONE,
|
||||
@@ -165,6 +175,7 @@ public:
|
||||
double computeEffectivePermeability(const RimFracture* fractureInstance) const;
|
||||
double computeWellRadiusForDFactorCalculation(const RimFracture* fractureInstance) const;
|
||||
double computeFractureWidth(const RimFracture* fractureInstance) const;
|
||||
double getOrComputeBetaFactor(const RimFracture* fractureInstance) const;
|
||||
|
||||
void loadDataAndUpdateGeometryHasChanged();
|
||||
|
||||
@@ -177,10 +188,12 @@ protected:
|
||||
|
||||
std::vector<RimFracture*> fracturesUsingThisTemplate() const;
|
||||
virtual void onLoadDataAndUpdateGeometryHasChanged() = 0;
|
||||
|
||||
virtual bool isBetaFactorAvailableOnFile() const;
|
||||
|
||||
private:
|
||||
void prepareFieldsForUiDisplay();
|
||||
virtual FractureWidthAndConductivity widthAndConductivityAtWellPathIntersection(const RimFracture* fractureInstance) const = 0;
|
||||
virtual WellFractureIntersectionData wellFractureIntersectionData(const RimFracture* fractureInstance) const = 0;
|
||||
|
||||
QString dFactorSummary() const;
|
||||
double dFactorForTemplate() const;
|
||||
@@ -205,6 +218,8 @@ protected:
|
||||
|
||||
caf::PdmField<caf::AppEnum<WidthEnum>> m_fractureWidthType;
|
||||
caf::PdmField<double> m_fractureWidth;
|
||||
|
||||
caf::PdmField<caf::AppEnum<BetaFactorEnum>> m_betaFactorType;
|
||||
caf::PdmField<double> m_inertialCoefficient;
|
||||
|
||||
caf::PdmField<caf::AppEnum<PermeabilityEnum>> m_permeabilityType;
|
||||
|
||||
Reference in New Issue
Block a user