Fracture : Move code to cpp

This commit is contained in:
Magne Sjaastad 2018-03-08 20:35:47 +01:00
parent 12b7ddf90b
commit 64845d796c
4 changed files with 154 additions and 49 deletions

View File

@ -1,17 +1,17 @@
/////////////////////////////////////////////////////////////////////////////////
//
// 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 <http://www.gnu.org/licenses/gpl.html>
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
@ -22,35 +22,80 @@
#include <QString>
//--------------------------------------------------------------------------------------------------
///
///
//--------------------------------------------------------------------------------------------------
RigFractureCell::RigFractureCell(std::vector<cvf::Vec3d> polygon, size_t i, size_t j)
: m_polygon(polygon)
, m_i(i)
, m_j(j)
, m_concutivityValue(0.0)
{
m_polygon = polygon;
m_i = i;
m_j = j;
m_concutivityValue = 0.0;
}
//--------------------------------------------------------------------------------------------------
///
///
//--------------------------------------------------------------------------------------------------
const std::vector<cvf::Vec3d>& RigFractureCell::getPolygon() const
{
return m_polygon;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigFractureCell::getConductivtyValue() const
{
return m_concutivityValue;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RigFractureCell::getI() const
{
return m_i;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RigFractureCell::getJ() const
{
return m_j;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigFractureCell::hasNonZeroConductivity() const
{
return m_concutivityValue > 1e-7;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFractureCell::setConductivityValue(double cond)
{
m_concutivityValue = cond;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigFractureCell::cellSizeX() const
{
//The polygon corners are always stored in the same order
if (m_polygon.size()>1) return (m_polygon[1] - m_polygon[0]).length();
// The polygon corners are always stored in the same order
if (m_polygon.size() > 1) return (m_polygon[1] - m_polygon[0]).length();
return cvf::UNDEFINED_DOUBLE;
}
//--------------------------------------------------------------------------------------------------
///
///
//--------------------------------------------------------------------------------------------------
double RigFractureCell::cellSizeZ() const
{
if (m_polygon.size()>2) return (m_polygon[2] - m_polygon[1]).length();
if (m_polygon.size() > 2) return (m_polygon[2] - m_polygon[1]).length();
return cvf::UNDEFINED_DOUBLE;
}

View File

@ -33,13 +33,13 @@ class RigFractureCell
public:
RigFractureCell(std::vector<cvf::Vec3d> polygon, size_t i, size_t j);
const std::vector<cvf::Vec3d>& getPolygon() const { return m_polygon; }
double getConductivtyValue() const { return m_concutivityValue; }
size_t getI() const { return m_i; }
size_t getJ() const { return m_j; }
const std::vector<cvf::Vec3d>& getPolygon() const;
double getConductivtyValue() const;
size_t getI() const;
size_t getJ() const;
bool hasNonZeroConductivity() const { return m_concutivityValue > 1e-7; }
void setConductivityValue(double cond) { m_concutivityValue = cond; }
bool hasNonZeroConductivity() const;
void setConductivityValue(double cond);
double cellSizeX() const;
double cellSizeZ() const;
@ -50,4 +50,3 @@ private:
size_t m_i;
size_t m_j;
};

View File

@ -1,37 +1,78 @@
/////////////////////////////////////////////////////////////////////////////////
//
// 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 <http://www.gnu.org/licenses/gpl.html>
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RigFractureGrid.h"
#include "RiaLogging.h"
#include <QString>
//--------------------------------------------------------------------------------------------------
///
///
//--------------------------------------------------------------------------------------------------
RigFractureGrid::RigFractureGrid()
: m_iCellCount(0),
m_jCellCount(0)
: m_iCellCount(0)
, m_jCellCount(0)
{
}
//--------------------------------------------------------------------------------------------------
///
///
//--------------------------------------------------------------------------------------------------
void RigFractureGrid::setFractureCells(std::vector<RigFractureCell> fractureCells)
{
m_fractureCells = fractureCells;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFractureGrid::setWellCenterFractureCellIJ(std::pair<size_t, size_t> wellCenterFractureCellIJ)
{
m_wellCenterFractureCellIJ = wellCenterFractureCellIJ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFractureGrid::setICellCount(size_t iCellCount)
{
m_iCellCount = iCellCount;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFractureGrid::setJCellCount(size_t jCellCount)
{
m_jCellCount = jCellCount;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<RigFractureCell>& RigFractureGrid::fractureCells() const
{
return m_fractureCells;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RigFractureGrid::getGlobalIndexFromIJ(size_t i, size_t j) const
{
@ -39,7 +80,7 @@ size_t RigFractureGrid::getGlobalIndexFromIJ(size_t i, size_t j) const
}
//--------------------------------------------------------------------------------------------------
///
///
//--------------------------------------------------------------------------------------------------
const RigFractureCell& RigFractureGrid::cellFromIndex(size_t index) const
{
@ -50,7 +91,7 @@ const RigFractureCell& RigFractureGrid::cellFromIndex(size_t index) const
}
else
{
//TODO: Better error handling?
// TODO: Better error handling?
RiaLogging::error(QString("Requesting non-existent StimPlanCell"));
RiaLogging::error(QString("Returning cell 0, results will be invalid"));
const RigFractureCell& cell = m_fractureCells[0];
@ -58,4 +99,26 @@ const RigFractureCell& RigFractureGrid::cellFromIndex(size_t index) const
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RigFractureGrid::jCellCount() const
{
return m_jCellCount;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RigFractureGrid::iCellCount() const
{
return m_iCellCount;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::pair<size_t, size_t> RigFractureGrid::fractureCellAtWellCenter() const
{
return m_wellCenterFractureCellIJ;
}

View File

@ -31,28 +31,26 @@ class RigFractureCell;
///
//==================================================================================================
class RigFractureGrid : public cvf::Object
{
public:
RigFractureGrid();
void setFractureCells(std::vector<RigFractureCell> fractureCells) { m_fractureCells = fractureCells; }
void setWellCenterFractureCellIJ(std::pair<size_t, size_t> wellCenterFractureCellIJ) { m_wellCenterFractureCellIJ = wellCenterFractureCellIJ; }
void setICellCount(size_t iCellCount) { m_iCellCount = iCellCount; }
void setJCellCount(size_t jCellCount) { m_jCellCount = jCellCount; }
void setFractureCells(std::vector<RigFractureCell> fractureCells);
void setWellCenterFractureCellIJ(std::pair<size_t, size_t> wellCenterFractureCellIJ);
void setICellCount(size_t iCellCount);
void setJCellCount(size_t jCellCount);
const std::vector<RigFractureCell>& fractureCells() const { return m_fractureCells; }
const std::vector<RigFractureCell>& fractureCells() const;
size_t getGlobalIndexFromIJ(size_t i, size_t j) const;
const RigFractureCell& cellFromIndex(size_t index) const;
size_t jCellCount() const { return m_jCellCount; }
size_t iCellCount() const { return m_iCellCount; }
size_t jCellCount() const;
size_t iCellCount() const;
std::pair<size_t, size_t> fractureCellAtWellCenter() const { return m_wellCenterFractureCellIJ; }
std::pair<size_t, size_t> fractureCellAtWellCenter() const;
private:
std::vector<RigFractureCell> m_fractureCells;
std::pair<size_t, size_t> m_wellCenterFractureCellIJ;
size_t m_iCellCount;
size_t m_jCellCount;
std::vector<RigFractureCell> m_fractureCells;
std::pair<size_t, size_t> m_wellCenterFractureCellIJ;
size_t m_iCellCount;
size_t m_jCellCount;
};