///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2017 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 // for more details. // ///////////////////////////////////////////////////////////////////////////////// #pragma once #include "cvfBase.h" #include "cvfObject.h" #include "cvfMath.h" #include "cvfVector3.h" #include class RigFractureData { public: RigFractureData(); size_t reservoirCellIndex; double transmissibility; cvf::Vec3d transmissibilities; double totalArea; double fractureLenght; cvf::Vec3d projectedAreas; cvf::Vec3d permeabilities; cvf::Vec3d cellSizes; double NTG; double skinFactor; bool cellIsActive; //TODO: Used for upscaling - should be moved? double upscaledStimPlanValueHA; double upscaledStimPlanValueAH; }; class RigFractureStimPlanCellData { public: RigFractureStimPlanCellData(size_t i, size_t j); size_t m_i; size_t m_j; std::vector getContributingEclipseCells() { return contributingEclipseCells; } std::vector getContributingEclipseCellTransmisibilities() { return contributingEclipseCellTransmisibilities; } void addContributingEclipseCell(size_t eclipseCell, double transmissibility); private: double performationLenghtVertical; double performationLenghtHorizontal; std::vector contributingEclipseCells; std::vector contributingEclipseCellTransmisibilities; }; //================================================================================================== /// //================================================================================================== class RigFracture : public cvf::Object { public: RigFracture(); void setGeometry(const std::vector& triangleIndices, const std::vector& nodeCoords); const std::vector& triangleIndices() const; const std::vector& nodeCoords() const; void setFractureData(const std::vector& data); const std::vector& fractureData() const; //Access frac data std::vector m_fractureData; void addStimPlanCellFractureCell(RigFractureStimPlanCellData fracStimPlanCellData); private: std::vector m_triangleIndices; std::vector m_nodeCoords; std::vector m_stimPlanCellsFractureData; std::vector m_perforatedStimPlanCellsIndex; };