From b4fe41249aa9080fba863708775223588a476e9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Mon, 3 Mar 2014 10:29:13 +0100 Subject: [PATCH 1/3] Fix error output. Also very minor whitespace issues. --- opm/autodiff/BlackoilPropsAdFromDeck.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/opm/autodiff/BlackoilPropsAdFromDeck.cpp b/opm/autodiff/BlackoilPropsAdFromDeck.cpp index 9bc36f073..5257cb87c 100644 --- a/opm/autodiff/BlackoilPropsAdFromDeck.cpp +++ b/opm/autodiff/BlackoilPropsAdFromDeck.cpp @@ -97,12 +97,11 @@ namespace Opm props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtDead(deck.getPVDO().pvdo_)); } } else if (deck.hasField("PVTO")) { - props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtLiveOil(deck.getPVTO().pvto_)); } else if (deck.hasField("PVCDO")) { props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtConstCompr(deck.getPVCDO().pvcdo_)); } else { - OPM_THROW(std::runtime_error, "Input is missing PVDO or PVTO\n"); + OPM_THROW(std::runtime_error, "Input is missing PVDO, PVTO or PVCDO\n"); } } // Gas PVT @@ -110,8 +109,7 @@ namespace Opm if (deck.hasField("PVDG")) { if (samples > 0) { props_[phase_usage_.phase_pos[Vapour]].reset(new SinglePvtDeadSpline(deck.getPVDG().pvdg_, samples)); - } - else { + } else { props_[phase_usage_.phase_pos[Vapour]].reset(new SinglePvtDead(deck.getPVDG().pvdg_)); } } else if (deck.hasField("PVTG")) { @@ -171,7 +169,6 @@ namespace Opm if (phase_usage_.phase_used[Aqua]) { if (newParserDeck->hasKeyword("PVTW")) { Opm::PvtwTable pvtwTable(newParserDeck->getKeyword("PVTW"), region_number); - props_[phase_usage_.phase_pos[Aqua]].reset(new SinglePvtConstCompr(pvtwTable)); } else { // Eclipse 100 default. @@ -188,14 +185,13 @@ namespace Opm } else if (newParserDeck->hasKeyword("PVTO")) { Opm::PvtoTable pvtoTable(newParserDeck->getKeyword("PVTO"), /*tableIdx=*/0); - props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtLiveOil(pvtoTable)); } else if (newParserDeck->hasKeyword("PVCDO")) { Opm::PvdcoTable pvdcoTable(newParserDeck->getKeyword("PVDCO"), region_number); props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtConstCompr(pvdcoTable)); } else { - OPM_THROW(std::runtime_error, "Input is missing PVDO or PVTO\n"); + OPM_THROW(std::runtime_error, "Input is missing PVDO, PVTO or PVCDO\n"); } } From 2cc5f0b421df191e819d23b92bd996c5826977b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Mon, 3 Mar 2014 10:30:39 +0100 Subject: [PATCH 2/3] Bugfix: PVDCO->PVCDO. --- opm/autodiff/BlackoilPropsAdFromDeck.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/opm/autodiff/BlackoilPropsAdFromDeck.cpp b/opm/autodiff/BlackoilPropsAdFromDeck.cpp index 5257cb87c..d5c5f1745 100644 --- a/opm/autodiff/BlackoilPropsAdFromDeck.cpp +++ b/opm/autodiff/BlackoilPropsAdFromDeck.cpp @@ -187,8 +187,7 @@ namespace Opm Opm::PvtoTable pvtoTable(newParserDeck->getKeyword("PVTO"), /*tableIdx=*/0); props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtLiveOil(pvtoTable)); } else if (newParserDeck->hasKeyword("PVCDO")) { - Opm::PvdcoTable pvdcoTable(newParserDeck->getKeyword("PVDCO"), region_number); - + Opm::PvdcoTable pvdcoTable(newParserDeck->getKeyword("PVCDO"), region_number); props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtConstCompr(pvdcoTable)); } else { OPM_THROW(std::runtime_error, "Input is missing PVDO, PVTO or PVCDO\n"); From 3627d9ec02387d33d5afbd67b7a0d954fafa38c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Mon, 3 Mar 2014 10:31:21 +0100 Subject: [PATCH 3/3] Make spline interpolation possible. This restores the logic for choosing monotone splines for dead oil/gas pvt tables, but the option is inactive (samples set to zero at top). --- opm/autodiff/BlackoilPropsAdFromDeck.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/opm/autodiff/BlackoilPropsAdFromDeck.cpp b/opm/autodiff/BlackoilPropsAdFromDeck.cpp index d5c5f1745..62285f011 100644 --- a/opm/autodiff/BlackoilPropsAdFromDeck.cpp +++ b/opm/autodiff/BlackoilPropsAdFromDeck.cpp @@ -141,6 +141,7 @@ namespace Opm rock_.init(newParserDeck, grid); } + const int samples = 0; const int region_number = 0; phase_usage_ = phaseUsageFromDeck(newParserDeck); @@ -180,8 +181,11 @@ namespace Opm if (phase_usage_.phase_used[Liquid]) { if (newParserDeck->hasKeyword("PVDO")) { Opm::PvdoTable pvdoTable(newParserDeck->getKeyword("PVDO"), region_number); - - props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtDead(pvdoTable)); + if (samples > 0) { + props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtDeadSpline(pvdoTable, samples)); + } else { + props_[phase_usage_.phase_pos[Liquid]].reset(new SinglePvtDead(pvdoTable)); + } } else if (newParserDeck->hasKeyword("PVTO")) { Opm::PvtoTable pvtoTable(newParserDeck->getKeyword("PVTO"), /*tableIdx=*/0); @@ -198,11 +202,13 @@ namespace Opm if (phase_usage_.phase_used[Vapour]) { if (newParserDeck->hasKeyword("PVDG")) { Opm::PvdoTable pvdgTable(newParserDeck->getKeyword("PVDG"), region_number); - - props_[phase_usage_.phase_pos[Vapour]].reset(new SinglePvtDead(pvdgTable)); + if (samples > 0) { + props_[phase_usage_.phase_pos[Vapour]].reset(new SinglePvtDeadSpline(pvdgTable, samples)); + } else { + props_[phase_usage_.phase_pos[Vapour]].reset(new SinglePvtDead(pvdgTable)); + } } else if (newParserDeck->hasKeyword("PVTG")) { Opm::PvtgTable pvtgTable(newParserDeck->getKeyword("PVTG"), /*tableIdx=*/0); - props_[phase_usage_.phase_pos[Vapour]].reset(new SinglePvtLiveGas(pvtgTable)); } else { OPM_THROW(std::runtime_error, "Input is missing PVDG or PVTG\n");