From 2df403245ee1ae607cb52eec88fb392ce9ceb8e7 Mon Sep 17 00:00:00 2001 From: astridkbjorke Date: Fri, 16 Dec 2016 10:15:23 +0100 Subject: [PATCH] #1036 - pre-proto - Added fracture definition for storing description of simple fractures --- .../ProjectDataModel/CMakeLists_files.cmake | 2 + .../RimFractureDefinition.cpp | 64 +++++++++++++++++++ .../ProjectDataModel/RimFractureDefinition.h | 55 ++++++++++++++++ .../ProjectDataModel/RimOilField.cpp | 4 ++ .../ProjectDataModel/RimOilField.h | 2 + .../ProjectDataModel/RimProject.cpp | 2 + ApplicationCode/ProjectDataModel/RimProject.h | 2 + 7 files changed, 131 insertions(+) create mode 100644 ApplicationCode/ProjectDataModel/RimFractureDefinition.cpp create mode 100644 ApplicationCode/ProjectDataModel/RimFractureDefinition.h diff --git a/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake b/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake index 244985ff7b..c001111241 100644 --- a/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake +++ b/ApplicationCode/ProjectDataModel/CMakeLists_files.cmake @@ -84,6 +84,7 @@ ${CEE_CURRENT_LIST_DIR}RimPlotCurve.h ${CEE_CURRENT_LIST_DIR}RimEclipseInputCaseOpm.h ${CEE_CURRENT_LIST_DIR}RimIntersectionBox.h ${CEE_CURRENT_LIST_DIR}RimMultiSnapshotDefinition.h +${CEE_CURRENT_LIST_DIR}RimFractureDefinition.h ) set (SOURCE_GROUP_SOURCE_FILES @@ -166,6 +167,7 @@ ${CEE_CURRENT_LIST_DIR}RimPlotCurve.cpp ${CEE_CURRENT_LIST_DIR}RimEclipseInputCaseOpm.cpp ${CEE_CURRENT_LIST_DIR}RimIntersectionBox.cpp ${CEE_CURRENT_LIST_DIR}RimMultiSnapshotDefinition.cpp +${CEE_CURRENT_LIST_DIR}RimFractureDefinition.cpp ) list(APPEND CODE_HEADER_FILES diff --git a/ApplicationCode/ProjectDataModel/RimFractureDefinition.cpp b/ApplicationCode/ProjectDataModel/RimFractureDefinition.cpp new file mode 100644 index 0000000000..826dd49bae --- /dev/null +++ b/ApplicationCode/ProjectDataModel/RimFractureDefinition.cpp @@ -0,0 +1,64 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2016- 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. +// +///////////////////////////////////////////////////////////////////////////////// + +#include "RimFractureDefinition.h" + +#include "cafPdmObject.h" + + + +namespace caf +{ + template<> + + void caf::AppEnum< RimFractureDefinition::FracOrientationEnum>::setUp() + { + addItem(RimFractureDefinition::AZIMUTH, "Az", "Azimuth"); + addItem(RimFractureDefinition::ALONG_WELL_PATH, "AlongWellPath", "Along Well Path"); + addItem(RimFractureDefinition::TRANSVERSE_WELL_PATH, "TransverseWellPath", "Transverse (normal) to Well Path"); + + setDefault(RimFractureDefinition::TRANSVERSE_WELL_PATH); + } +} + + +CAF_PDM_SOURCE_INIT(RimFractureDefinition, "FractureDefinition"); + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimFractureDefinition::RimFractureDefinition(void) +{ + CAF_PDM_InitObject("Fracture definition", "", "", ""); + + //TODO New defaults??? + CAF_PDM_InitField(&halfLength, "HalfLength", 650.0f, "Fracture Halflength X_f", "", "", ""); + CAF_PDM_InitField(&height, "Height", 75.0f, "Fracture Height", "", "", ""); + CAF_PDM_InitField(&orientation, "Orientation", caf::AppEnum(TRANSVERSE_WELL_PATH), "Fracture orientation", "", "", ""); + CAF_PDM_InitField(&width, "Width", 1.0f, "Fracture Width", "", "", ""); + + CAF_PDM_InitField(&skinFactor, "SkinFactor", 1.0f, "Fracture Skin Factor", "", "", ""); + CAF_PDM_InitField(&permeability, "Permeability", 22000.f,"Fracture Permeability", "", "", ""); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimFractureDefinition::~RimFractureDefinition() +{ +} diff --git a/ApplicationCode/ProjectDataModel/RimFractureDefinition.h b/ApplicationCode/ProjectDataModel/RimFractureDefinition.h new file mode 100644 index 0000000000..dad2b5f8d5 --- /dev/null +++ b/ApplicationCode/ProjectDataModel/RimFractureDefinition.h @@ -0,0 +1,55 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2016- 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 "cafAppEnum.h" +#include "cafPdmField.h" +#include "cafPdmObject.h" + + +//================================================================================================== +/// +/// +//================================================================================================== +class RimFractureDefinition : public caf::PdmObject +{ + CAF_PDM_HEADER_INIT; + +public: + RimFractureDefinition(void); + virtual ~RimFractureDefinition(void); + + caf::PdmField halfLength; + caf::PdmField height; + caf::PdmField width; + + enum FracOrientationEnum + { + AZIMUTH, + ALONG_WELL_PATH, + TRANSVERSE_WELL_PATH + }; + caf::PdmField< caf::AppEnum< FracOrientationEnum > > orientation; + + + caf::PdmField skinFactor; + caf::PdmField permeability; + + +}; diff --git a/ApplicationCode/ProjectDataModel/RimOilField.cpp b/ApplicationCode/ProjectDataModel/RimOilField.cpp index db2a467338..50f843eef8 100644 --- a/ApplicationCode/ProjectDataModel/RimOilField.cpp +++ b/ApplicationCode/ProjectDataModel/RimOilField.cpp @@ -25,6 +25,7 @@ #include "RimGeoMechModels.h" #include "RimSummaryCaseCollection.h" #include "RimFormationNamesCollection.h" +#include "RimFractureDefinition.h" CAF_PDM_SOURCE_INIT(RimOilField, "ResInsightOilField"); //-------------------------------------------------------------------------------------------------- @@ -37,9 +38,11 @@ RimOilField::RimOilField(void) CAF_PDM_InitFieldNoDefault(&analysisModels, "AnalysisModels", "Grid Models", ":/GridModels.png", "", ""); CAF_PDM_InitFieldNoDefault(&geoMechModels, "GeoMechModels", "Geo Mech Models", ":/GridModels.png", "", ""); CAF_PDM_InitFieldNoDefault(&wellPathCollection, "WellPathCollection", "Well Paths", ":/WellCollection.png", "", ""); + CAF_PDM_InitFieldNoDefault(&fractureDefinition, "FractureDefenition", "Defenition of fractures", "", "", ""); CAF_PDM_InitFieldNoDefault(&summaryCaseCollection,"SummaryCaseCollection","Summary Cases",":/GridModels.png","",""); CAF_PDM_InitFieldNoDefault(&formationNamesCollection,"FormationNamesCollection","Formations","","",""); + fractureDefinition = new RimFractureDefinition(); analysisModels = new RimEclipseCaseCollection(); wellPathCollection = new RimWellPathCollection(); summaryCaseCollection = new RimSummaryCaseCollection(); @@ -51,6 +54,7 @@ RimOilField::RimOilField(void) RimOilField::~RimOilField(void) { if (wellPathCollection()) delete wellPathCollection(); + if (fractureDefinition()) delete fractureDefinition(); if (geoMechModels()) delete geoMechModels(); if (analysisModels()) delete analysisModels(); if (summaryCaseCollection()) delete summaryCaseCollection(); diff --git a/ApplicationCode/ProjectDataModel/RimOilField.h b/ApplicationCode/ProjectDataModel/RimOilField.h index 7e86ce7de2..d226d922af 100644 --- a/ApplicationCode/ProjectDataModel/RimOilField.h +++ b/ApplicationCode/ProjectDataModel/RimOilField.h @@ -28,6 +28,7 @@ class RimEclipseCaseCollection; class RimGeoMechModels; class RimWellPathCollection; +class RimFractureDefinition; class RimSummaryCaseCollection; class RimFormationNamesCollection; @@ -46,6 +47,7 @@ public: caf::PdmChildField analysisModels; caf::PdmChildField geoMechModels; caf::PdmChildField wellPathCollection; + caf::PdmChildField fractureDefinition; caf::PdmChildField summaryCaseCollection; caf::PdmChildField formationNamesCollection; diff --git a/ApplicationCode/ProjectDataModel/RimProject.cpp b/ApplicationCode/ProjectDataModel/RimProject.cpp index 4cc0bc1d51..3449325126 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationCode/ProjectDataModel/RimProject.cpp @@ -33,6 +33,7 @@ #include "RimEclipseCase.h" #include "RimEclipseCaseCollection.h" #include "RimFormationNamesCollection.h" +#include "RimFractureDefinition.h" #include "RimGeoMechCase.h" #include "RimGeoMechModels.h" #include "RimGridSummaryCase.h" @@ -825,6 +826,7 @@ void RimProject::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QS if (oilField->analysisModels()) uiTreeOrdering.add(oilField->analysisModels()); if (oilField->geoMechModels()) uiTreeOrdering.add(oilField->geoMechModels()); if (oilField->wellPathCollection()) uiTreeOrdering.add(oilField->wellPathCollection()); + if (oilField->fractureDefinition()) uiTreeOrdering.add(oilField->fractureDefinition()); if (oilField->formationNamesCollection()) uiTreeOrdering.add(oilField->formationNamesCollection()); } diff --git a/ApplicationCode/ProjectDataModel/RimProject.h b/ApplicationCode/ProjectDataModel/RimProject.h index fefadad18f..6f586e7358 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.h +++ b/ApplicationCode/ProjectDataModel/RimProject.h @@ -33,6 +33,7 @@ class RigMainGrid; class RimCase; class RimCommandObject; class RimEclipseCase; +class RimFractureDefinition; class RimIdenticalGridCaseGroup; class RimMainPlotCollection; class RimMultiSnapshotDefinition; @@ -73,6 +74,7 @@ public: caf::PdmChildArrayField commandObjects; caf::PdmChildArrayField multiSnapshotDefinitions; + caf::PdmChildArrayField fractureDefinition; caf::PdmField mainWindowTreeViewState; caf::PdmField mainWindowCurrentModelIndexPath;