mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3891 StimPlan : BETA values for transversal and azimuth
This commit is contained in:
@@ -461,7 +461,6 @@ WellFractureIntersectionData RimStimPlanFractureTemplate::wellFractureIntersecti
|
|||||||
double weightedConductivity = 0.0;
|
double weightedConductivity = 0.0;
|
||||||
double weightedWidth = 0.0;
|
double weightedWidth = 0.0;
|
||||||
double weightedBetaFactorOnFile = 0.0;
|
double weightedBetaFactorOnFile = 0.0;
|
||||||
double conversionFactorForBeta = 1.0;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
std::vector<double> widthResultValues;
|
std::vector<double> widthResultValues;
|
||||||
@@ -483,20 +482,6 @@ WellFractureIntersectionData RimStimPlanFractureTemplate::wellFractureIntersecti
|
|||||||
auto nameUnit = betaFactorParameterNameAndUnit();
|
auto nameUnit = betaFactorParameterNameAndUnit();
|
||||||
betaFactorResultValues = m_stimPlanFractureDefinitionData->fractureGridResults(
|
betaFactorResultValues = m_stimPlanFractureDefinitionData->fractureGridResults(
|
||||||
nameUnit.first, nameUnit.second, m_activeTimeStepIndex);
|
nameUnit.first, nameUnit.second, m_activeTimeStepIndex);
|
||||||
|
|
||||||
QString trimmedUnit = nameUnit.second.trimmed().toLower();
|
|
||||||
if (trimmedUnit == "/m")
|
|
||||||
{
|
|
||||||
conversionFactorForBeta = 1.01325E+08;
|
|
||||||
}
|
|
||||||
else if (trimmedUnit == "/cm")
|
|
||||||
{
|
|
||||||
conversionFactorForBeta = 1.01325E+06;
|
|
||||||
}
|
|
||||||
else if (trimmedUnit == "/ft")
|
|
||||||
{
|
|
||||||
conversionFactorForBeta = 3.088386E+07;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RiaWeightedMeanCalculator<double> widthCalc;
|
RiaWeightedMeanCalculator<double> widthCalc;
|
||||||
@@ -545,7 +530,9 @@ WellFractureIntersectionData RimStimPlanFractureTemplate::wellFractureIntersecti
|
|||||||
values.m_width = weightedWidth;
|
values.m_width = weightedWidth;
|
||||||
values.m_conductivity = weightedConductivity;
|
values.m_conductivity = weightedConductivity;
|
||||||
|
|
||||||
double betaFactorForcheimer = weightedBetaFactorOnFile / conversionFactorForBeta;
|
double conversionFactorForBeta = conversionFactorForBetaValues();
|
||||||
|
double betaFactorForcheimer = weightedBetaFactorOnFile / conversionFactorForBeta;
|
||||||
|
|
||||||
values.m_betaFactorInForcheimerUnits = betaFactorForcheimer;
|
values.m_betaFactorInForcheimerUnits = betaFactorForcheimer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -561,24 +548,42 @@ WellFractureIntersectionData RimStimPlanFractureTemplate::wellFractureIntersecti
|
|||||||
double conductivity = wellCell.getConductivityValue();
|
double conductivity = wellCell.getConductivityValue();
|
||||||
values.m_conductivity = conductivity;
|
values.m_conductivity = conductivity;
|
||||||
|
|
||||||
auto nameUnit = widthParameterNameAndUnit();
|
|
||||||
if (!nameUnit.first.isEmpty())
|
|
||||||
{
|
{
|
||||||
double widthInRequiredUnit = HUGE_VAL;
|
auto nameUnit = widthParameterNameAndUnit();
|
||||||
|
if (!nameUnit.first.isEmpty())
|
||||||
{
|
{
|
||||||
auto resultValues = fractureGridResultsForUnitSystem(
|
double widthInRequiredUnit = HUGE_VAL;
|
||||||
nameUnit.first, nameUnit.second, m_activeTimeStepIndex, fractureTemplateUnit());
|
|
||||||
|
|
||||||
if (wellCellIndex < resultValues.size())
|
|
||||||
{
|
{
|
||||||
widthInRequiredUnit = resultValues[wellCellIndex];
|
auto resultValues = fractureGridResultsForUnitSystem(
|
||||||
|
nameUnit.first, nameUnit.second, m_activeTimeStepIndex, fractureTemplateUnit());
|
||||||
|
|
||||||
|
if (wellCellIndex < resultValues.size())
|
||||||
|
{
|
||||||
|
widthInRequiredUnit = resultValues[wellCellIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widthInRequiredUnit != HUGE_VAL && fabs(widthInRequiredUnit) > 1e-20)
|
||||||
|
{
|
||||||
|
values.m_width = widthInRequiredUnit;
|
||||||
|
values.m_permeability = RigTransmissibilityEquations::permeability(conductivity, widthInRequiredUnit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (widthInRequiredUnit != HUGE_VAL && fabs(widthInRequiredUnit) > 1e-20)
|
{
|
||||||
|
auto nameUnit = betaFactorParameterNameAndUnit();
|
||||||
|
std::vector<double> betaFactorResultValues =
|
||||||
|
m_stimPlanFractureDefinitionData->fractureGridResults(nameUnit.first, nameUnit.second, m_activeTimeStepIndex);
|
||||||
|
|
||||||
|
if (wellCellIndex < betaFactorResultValues.size())
|
||||||
{
|
{
|
||||||
values.m_width = widthInRequiredUnit;
|
double nativeBetaValue = betaFactorResultValues[wellCellIndex];
|
||||||
values.m_permeability = RigTransmissibilityEquations::permeability(conductivity, widthInRequiredUnit);
|
|
||||||
|
double conversionFactorForBeta = conversionFactorForBetaValues();
|
||||||
|
double betaFactorForcheimer = nativeBetaValue / conversionFactorForBeta;
|
||||||
|
|
||||||
|
values.m_betaFactorInForcheimerUnits = betaFactorForcheimer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -668,6 +673,32 @@ bool RimStimPlanFractureTemplate::isBetaFactorAvailableOnFile() const
|
|||||||
return !nameAndUnit.first.isEmpty();
|
return !nameAndUnit.first.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
double RimStimPlanFractureTemplate::conversionFactorForBetaValues() const
|
||||||
|
{
|
||||||
|
auto nameUnit = betaFactorParameterNameAndUnit();
|
||||||
|
|
||||||
|
double conversionFactorForBeta = 1.0;
|
||||||
|
|
||||||
|
QString trimmedUnit = nameUnit.second.trimmed().toLower();
|
||||||
|
if (trimmedUnit == "/m")
|
||||||
|
{
|
||||||
|
conversionFactorForBeta = 1.01325E+08;
|
||||||
|
}
|
||||||
|
else if (trimmedUnit == "/cm")
|
||||||
|
{
|
||||||
|
conversionFactorForBeta = 1.01325E+06;
|
||||||
|
}
|
||||||
|
else if (trimmedUnit == "/ft")
|
||||||
|
{
|
||||||
|
conversionFactorForBeta = 3.088386E+07;
|
||||||
|
}
|
||||||
|
|
||||||
|
return conversionFactorForBeta;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -114,6 +114,8 @@ private:
|
|||||||
std::pair<QString, QString> betaFactorParameterNameAndUnit() const;
|
std::pair<QString, QString> betaFactorParameterNameAndUnit() const;
|
||||||
bool isBetaFactorAvailableOnFile() const override;
|
bool isBetaFactorAvailableOnFile() const override;
|
||||||
|
|
||||||
|
double conversionFactorForBetaValues() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<int> m_activeTimeStepIndex;
|
caf::PdmField<int> m_activeTimeStepIndex;
|
||||||
caf::PdmField<QString> m_conductivityResultNameOnFile;
|
caf::PdmField<QString> m_conductivityResultNameOnFile;
|
||||||
|
|||||||
Reference in New Issue
Block a user