mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1278 - pre-proto - Converting data to case unit system for COMPDAT export
This commit is contained in:
parent
c25d4953df
commit
ccbc7c7021
@ -66,12 +66,6 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, c
|
||||
{
|
||||
RiaLogging::info(QString("Computing and writing COMPDAT values to file %1").arg(fileName));
|
||||
|
||||
if (!(unitsMatchCaseAndFractures(caseToApply, fractures)))
|
||||
{
|
||||
RiaLogging::error(QString("ERROR: The case selected and relevant fractures does not have consistent unit system"));
|
||||
return false;
|
||||
}
|
||||
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
RimView* activeView = RiaApplication::instance()->activeReservoirView();
|
||||
if (!activeView) return false;
|
||||
@ -98,7 +92,12 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, c
|
||||
|
||||
QTextStream out(&file);
|
||||
out << "\n";
|
||||
out << "-- Exported from ResInsight" << "\n\n";
|
||||
out << "-- Exported from ResInsight" << "\n";
|
||||
|
||||
RigEclipseCaseData::UnitsType caseUnit = caseToApply->reservoirData()->unitsType();
|
||||
if (caseUnit == RigEclipseCaseData::UNITS_METRIC) out << "-- Using metric unit system" << "\n";
|
||||
if (caseUnit == RigEclipseCaseData::UNITS_FIELD) out << "-- Using field unit system" << "\n";
|
||||
out << "\n";
|
||||
|
||||
printBackgroundDataHeaderLine(out);
|
||||
|
||||
@ -145,36 +144,6 @@ bool RifEclipseExportTools::writeFracturesToTextFile(const QString& fileName, c
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifEclipseExportTools::unitsMatchCaseAndFractures(RimEclipseCase* caseToApply, const std::vector<RimFracture *>& fractures)
|
||||
{
|
||||
bool unitsMatch = true;
|
||||
RigEclipseCaseData::UnitsType caseUnit = caseToApply->reservoirData()->unitsType();
|
||||
for (RimFracture* fracture : fractures)
|
||||
{
|
||||
if (fracture->attachedFractureDefinition())
|
||||
{
|
||||
if ((fracture->attachedFractureDefinition()->fractureTemplateUnit) == RimDefines::UNITS_METRIC)
|
||||
{
|
||||
if (!(caseUnit == RigEclipseCaseData::UNITS_METRIC))
|
||||
{
|
||||
unitsMatch = false;
|
||||
}
|
||||
}
|
||||
else if ((fracture->attachedFractureDefinition()->fractureTemplateUnit) == RimDefines::UNITS_FIELD)
|
||||
{
|
||||
if (!(caseUnit == RigEclipseCaseData::UNITS_FIELD))
|
||||
{
|
||||
unitsMatch = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return unitsMatch;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -51,8 +51,6 @@ public:
|
||||
|
||||
static bool writeFracturesToTextFile(const QString& fileName, const std::vector<RimFracture*>& fractures, RimEclipseCase* caseToApply);
|
||||
|
||||
static bool unitsMatchCaseAndFractures(RimEclipseCase* caseToApply, const std::vector<RimFracture *>& fractures);
|
||||
|
||||
static void printCOMPDATvalues(QTextStream & out, RigFractureData &fracData, RimFracture* fracture, RimWellPath* wellPath, RimEclipseWell* simWell, const RigMainGrid* mainGrid);
|
||||
|
||||
static void printBackgroundDataHeaderLine(QTextStream & out);
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "RimFracture.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaLogging.h"
|
||||
|
||||
#include "RifReaderInterface.h"
|
||||
|
||||
@ -282,6 +283,26 @@ cvf::Mat4f RimFracture::transformMatrix()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimFracture::computeTransmissibility(RimEclipseCase* caseToApply)
|
||||
{
|
||||
//Get correct unit system:
|
||||
RigEclipseCaseData::UnitsType caseUnit = caseToApply->reservoirData()->unitsType();
|
||||
RimDefines::UnitSystem unitForExport;
|
||||
|
||||
if (caseUnit == RigEclipseCaseData::UNITS_METRIC)
|
||||
{
|
||||
RiaLogging::debug(QString("Calculating transmissibilities for %1 in metric units").arg(name()));
|
||||
unitForExport = RimDefines::UNITS_METRIC;
|
||||
}
|
||||
else if (caseUnit == RigEclipseCaseData::UNITS_FIELD)
|
||||
{
|
||||
RiaLogging::debug(QString("Calculating transmissibilities for %1 in field units").arg(name()));
|
||||
unitForExport = RimDefines::UNITS_FIELD;
|
||||
}
|
||||
else
|
||||
{
|
||||
RiaLogging::error(QString("Unit system for case not supported for fracture export."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//TODO: Handle case with finite conductivity in fracture
|
||||
if (attachedFractureDefinition())
|
||||
@ -378,7 +399,7 @@ void RimFracture::computeTransmissibility(RimEclipseCase* caseToApply)
|
||||
|
||||
if (attachedFractureDefinition())
|
||||
{
|
||||
std::vector<cvf::Vec3f> fracPolygon = attachedFractureDefinition()->fracturePolygon(fractureUnit);
|
||||
std::vector<cvf::Vec3f> fracPolygon = attachedFractureDefinition()->fracturePolygon(unitForExport);
|
||||
|
||||
std::vector<cvf::Vec3d> fracPolygonDouble;
|
||||
for (auto v : fracPolygon) fracPolygonDouble.push_back(static_cast<cvf::Vec3d>(v));
|
||||
@ -428,7 +449,10 @@ void RimFracture::computeTransmissibility(RimEclipseCase* caseToApply)
|
||||
for (double lengtXarea : lengthXareaOfFractureParts) totalAreaXLength += lengtXarea;
|
||||
fractureAreaWeightedlength = totalAreaXLength / fractureArea;
|
||||
|
||||
double c = 0.008527; // TODO: Get value with units, is defined in RimReservoirCellResultsStorage
|
||||
double c = cvf::UNDEFINED_DOUBLE;
|
||||
if (unitForExport == RimDefines::UNITS_METRIC) c = 0.00852702;
|
||||
if (unitForExport == RimDefines::UNITS_FIELD) c = 0.00112712;
|
||||
// TODO: Use value from RimReservoirCellResultsStorage?
|
||||
|
||||
skinfactor = attachedFractureDefinition()->skinFactor;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user