Files
ResInsight/ApplicationLibCode/ReservoirDataModel/Completions/RigEclipseToThermalCellTransmissibilityCalculator.h
Kristian Bendiksen 18c29d5fc7 Reveal: fix transmissibility calculation when filter cake is not present.
The "absolute" filter cake adjustment should only be used for cells when
filter cake is present (i.e filtrate thickness is not zero).
2023-11-08 15:52:33 +01:00

70 lines
3.8 KiB
C++

/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2022 Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "RigEclipseToStimPlanCellTransmissibilityCalculator.h"
#include "cvfMatrix4.h"
#include "cvfObject.h"
#include "RimThermalFractureTemplate.h"
#include <vector>
class QString;
class RimEclipseCase;
class RigFractureCell;
class RigResultAccessor;
class RimFracture;
//==================================================================================================
///
/// Calculator used to compute the intersection areas between one Thermal RigFractureCell and Eclipse cells
/// Both active and inactive Eclipse cells are included. The transmissibility value for inactive cells are set to zero.
/// Eclipse reservoir cells open for flow is defined by reservoirCellIndicesOpenForFlow
///
//==================================================================================================
class RigEclipseToThermalCellTransmissibilityCalculator : public RigEclipseToStimPlanCellTransmissibilityCalculator
{
public:
explicit RigEclipseToThermalCellTransmissibilityCalculator( const RimEclipseCase* caseToApply,
cvf::Mat4d fractureTransform,
double skinFactor,
double cDarcy,
const RigFractureCell& stimPlanCell,
const RimFracture* fracture,
RimThermalFractureTemplate::FilterCakePressureDrop filterCakePressureDrop,
double injectvityFactor,
double filterCakeMobility,
double filtrateThickness,
double viscosity,
double relativePermeability );
protected:
double calculateTransmissibility( const cvf::Vec3d& transmissibilityVector, double fractureArea ) override;
RimThermalFractureTemplate::FilterCakePressureDrop m_filterCakePressureDrop;
double m_injectivityFactor;
double m_filterCakeMobility;
double m_filtrateThickness;
double m_viscosity;
double m_relativePermeability;
};