diff --git a/ebos/ecloutputblackoilmodule.hh b/ebos/ecloutputblackoilmodule.hh
index d9ec0f8b1..f9655cb34 100644
--- a/ebos/ecloutputblackoilmodule.hh
+++ b/ebos/ecloutputblackoilmodule.hh
@@ -2,17 +2,17 @@
// vi: set et ts=4 sw=4 sts=4:
/*
This file is part of the Open Porous Media project (OPM).
-
+
OPM 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 2 of the License, or
(at your option) any later version.
-
+
OPM 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 for more details.
-
+
You should have received a copy of the GNU General Public License
along with OPM. If not, see .
@@ -114,65 +114,65 @@ class EclOutputBlackOilModule
enum WPId
{
WellLocationi = 0, //WLi
- WellLocationj = 1, //WLj
+ WellLocationj = 1, //WLj
OilRate = 2, //OR
WaterRate = 3, //WR
GasRate = 4, //GR
- FluidResVol = 5, //FRV
- WaterCut = 6, //WC
- GasOilRatio = 7, //GOR
- WatGasRatio = 8, //WGR
- BHP = 9, //BHP
- THP = 10, //THP
- SteadyStatePI = 11, //SteadyStatePI
- WellName = 0, //WName
- CTRLMode = 1, //CTRL
+ FluidResVol = 5, //FRV
+ WaterCut = 6, //WC
+ GasOilRatio = 7, //GOR
+ WatGasRatio = 8, //WGR
+ BHP = 9, //BHP
+ THP = 10, //THP
+ SteadyStatePI = 11, //SteadyStatePI
+ WellName = 0, //WName
+ CTRLMode = 1, //CTRL
};
static const int numWPValues = 12;
- static const int numWPNames = 2;
+ static const int numWPNames = 2;
};
struct WellInjDataType
{
enum WIId
{
WellLocationi = 0, //WLi
- WellLocationj = 1, //WLj
+ WellLocationj = 1, //WLj
OilRate = 2, //OR
WaterRate = 3, //WR
GasRate = 4, //GR
- FluidResVol = 5, //FRV
- BHP = 6, //BHP
- THP = 7, //THP
- SteadyStateII = 8, //SteadyStateII
- WellName = 0, //WName
- CTRLModeOil = 1, //CTRLo
- CTRLModeWat = 2, //CTRLw
- CTRLModeGas = 3, //CTRLg
+ FluidResVol = 5, //FRV
+ BHP = 6, //BHP
+ THP = 7, //THP
+ SteadyStateII = 8, //SteadyStateII
+ WellName = 0, //WName
+ CTRLModeOil = 1, //CTRLo
+ CTRLModeWat = 2, //CTRLw
+ CTRLModeGas = 3, //CTRLg
};
static const int numWIValues = 9;
- static const int numWINames = 4;
+ static const int numWINames = 4;
};
struct WellCumDataType
{
enum WCId
{
WellLocationi = 0, //WLi
- WellLocationj = 1, //WLj
+ WellLocationj = 1, //WLj
OilProd = 2, //OP
WaterProd = 3, //WP
GasProd = 4, //GP
- FluidResVolProd = 5, //FRVP
- OilInj = 6, //OI
+ FluidResVolProd = 5, //FRVP
+ OilInj = 6, //OI
WaterInj = 7, //WI
GasInj = 8, //GI
- FluidResVolInj = 9, //FRVI
- WellName = 0, //WName
- WellType = 1, //WType
- WellCTRL = 2, //WCTRL
+ FluidResVolInj = 9, //FRVI
+ WellName = 0, //WName
+ WellType = 1, //WType
+ WellCTRL = 2, //WCTRL
};
static const int numWCValues = 10;
- static const int numWCNames = 3;
- };
+ static const int numWCNames = 3;
+ };
public:
template
@@ -1115,6 +1115,30 @@ public:
const auto& st = simulator_.vanguard().summaryState();
const auto& schedule = simulator_.vanguard().schedule();
+
+ for (const auto& gname: schedule.groupNames()) {
+
+ auto gName = static_cast(gname);
+ auto get = [&st, &gName](const std::string& vector)
+ {
+ const auto key = vector + ':' + gName;
+
+ return st.has(key) ? st.get(key) : 0.0;
+ };
+
+ tmp_names[0] = gname;
+
+ tmp_values[2] = get("GOPR"); //WellProdDataType::OilRate
+ tmp_values[3] = get("GWPR"); //WellProdDataType::WaterRate
+ tmp_values[4] = get("GGPR"); //WellProdDataType::GasRate
+ tmp_values[5] = get("GVPR"); //WellProdDataType::FluidResVol
+ tmp_values[6] = get("GWCT"); //WellProdDataType::WaterCut
+ tmp_values[7] = get("GGOR"); //WellProdDataType::GasOilRatio
+ tmp_values[8] = get("GWPR")/get("GGPR"); //WellProdDataType::WaterGasRatio
+
+ outputProductionReport_(tmp_values, tmp_names, forceDisableProdOutput);
+ }
+
for (const auto& wname: schedule.wellNames(reportStepNum)) {
// don't bother with wells not on this process
@@ -1146,17 +1170,17 @@ public:
auto fctl = [](const auto wmctl) -> std::string
{
- switch (wmctl) {
- case CMode::ORAT: return "ORAT";
- case CMode::WRAT: return "WRAT";
- case CMode::GRAT: return "GRAT";
- case CMode::LRAT: return "LRAT";
- case CMode::RESV: return "RESV";
- case CMode::THP: return "THP";
- case CMode::BHP: return "BHP";
- case CMode::CRAT: return "CRate";
- case CMode::GRUP: return "GRUP";
- default:
+ switch (wmctl) {
+ case CMode::ORAT: return "ORAT";
+ case CMode::WRAT: return "WRAT";
+ case CMode::GRAT: return "GRAT";
+ case CMode::LRAT: return "LRAT";
+ case CMode::RESV: return "RESV";
+ case CMode::THP: return "THP";
+ case CMode::BHP: return "BHP";
+ case CMode::CRAT: return "CRate";
+ case CMode::GRUP: return "GRUP";
+ default:
{
return "none";
}
@@ -1194,7 +1218,27 @@ public:
outputInjectionReport_(tmp_values, tmp_names, forceDisableInjOutput);
const auto& st = simulator_.vanguard().summaryState();
- const auto& schedule = simulator_.vanguard().schedule();
+ const auto& schedule = simulator_.vanguard().schedule();
+ for (const auto& gname: schedule.groupNames()) {
+
+ auto gName = static_cast(gname);
+ auto get = [&st, &gName](const std::string& vector)
+ {
+ const auto key = vector + ':' + gName;
+
+ return st.has(key) ? st.get(key) : 0.0;
+ };
+
+ tmp_names[0] = gname;
+
+ tmp_values[2] = get("GOIR");//WellInjDataType::OilRate
+ tmp_values[3] = get("GWIR"); //WellInjDataType::WaterRate
+ tmp_values[4] = get("GGIR"); //WellInjDataType::GasRate
+ tmp_values[5] = get("GVIR");//WellInjDataType::FluidResVol
+
+ outputInjectionReport_(tmp_values, tmp_names, forceDisableInjOutput);
+ }
+
for (const auto& wname: schedule.wellNames(reportStepNum)) {
// don't bother with wells not on this process
@@ -1222,8 +1266,8 @@ public:
const auto& controls = well.injectionControls(st);
const auto ctlMode = controls.cmode;
- const auto injType = controls.injector_type;
- using CMode = ::Opm::Well2::InjectorCMode;
+ const auto injType = controls.injector_type;
+ using CMode = ::Opm::Well2::InjectorCMode;
using WType = ::Opm::Well2::InjectorType;
auto ftype = [](const auto wtype) -> std::string
@@ -1232,7 +1276,8 @@ public:
case WType::OIL: return "Oil";
case WType::WATER: return "Wat";
case WType::GAS: return "Gas";
- case WType::MULTI: return "Multi";
+ case WType::MULTI: return "Multi";
+
default:
{
return "";
@@ -1272,19 +1317,19 @@ public:
{
if (flowctl == "RATE"){ tmp_names[3] = "GRAT"; }
else { tmp_names[3] = flowctl; }
- }
+ }
- tmp_values[0] = well.getHeadI() + 1; //WellInjDataType::wellLocationi
- tmp_values[1] = well.getHeadJ() + 1; //WellInjDataType::wellLocationj
- tmp_values[2] = get("WOIR"); //WellInjDataType::OilRate
- tmp_values[3] = get("WWIR"); //WellInjDataType::WaterRate
- tmp_values[4] = get("WGIR"); //WellInjDataType::GasRate
- tmp_values[5] = get("WVIR");//WellInjDataType::FluidResVol
- tmp_values[6] = get("WBHP"); //WellInjDataType::BHP
- tmp_values[7] = get("WTHP"); //WellInjDataType::THP
- //tmp_values[8] = 0; //WellInjDataType::SteadyStateII
-
- outputInjectionReport_(tmp_values, tmp_names, forceDisableInjOutput);
+ tmp_values[0] = well.getHeadI() + 1; //WellInjDataType::wellLocationi
+ tmp_values[1] = well.getHeadJ() + 1; //WellInjDataType::wellLocationj
+ tmp_values[2] = get("WOIR"); //WellInjDataType::OilRate
+ tmp_values[3] = get("WWIR"); //WellInjDataType::WaterRate
+ tmp_values[4] = get("WGIR"); //WellInjDataType::GasRate
+ tmp_values[5] = get("WVIR");//WellInjDataType::FluidResVol
+ tmp_values[6] = get("WBHP"); //WellInjDataType::BHP
+ tmp_values[7] = get("WTHP"); //WellInjDataType::THP
+ //tmp_values[8] = 0; //WellInjDataType::SteadyStateII
+
+ outputInjectionReport_(tmp_values, tmp_names, forceDisableInjOutput);
}
}
@@ -1300,6 +1345,31 @@ public:
const auto& st = simulator_.vanguard().summaryState();
const auto& schedule = simulator_.vanguard().schedule();
+
+ for (const auto& gname: schedule.groupNames()) {
+
+ auto gName = static_cast(gname);
+ auto get = [&st, &gName](const std::string& vector)
+ {
+ const auto key = vector + ':' + gName;
+
+ return st.has(key) ? st.get(key) : 0.0;
+ };
+
+ tmp_names[0] = gname;
+
+ tmp_values[2] = get("GOPT"); //WellCumDataType::OilProd
+ tmp_values[3] = get("GWPT"); //WellCumDataType::WaterProd
+ tmp_values[4] = get("GGPT"); //WellCumDataType::GasProd
+ tmp_values[5] = get("GVPT");//WellCumDataType::FluidResVolProd
+ tmp_values[2] = get("GOIT"); //WellCumDataType::OilInj
+ tmp_values[3] = get("GWIT"); //WellCumDataType::WaterInj
+ tmp_values[4] = get("GGIT"); //WellCumDataType::GasInj
+ tmp_values[5] = get("GVIT");//WellCumDataType::FluidResVolInj
+
+ outputCumulativeReport_(tmp_values, tmp_names, forceDisableCumOutput);
+ }
+
for (const auto& wname : schedule.wellNames(reportStepNum)) {
// don't bother with wells not on this process
@@ -1310,7 +1380,7 @@ public:
const auto& well = schedule.getWell2(wname, reportStepNum);
- tmp_names[0] = wname; //WellCumDataType::WellName
+ tmp_names[0] = wname; //WellCumDataType::WellName
auto wName = static_cast(wname);
auto get = [&st, &wName](const std::string& vector)
@@ -1334,7 +1404,8 @@ public:
case WType::OIL: return "Oil";
case WType::WATER: return "Wat";
case WType::GAS: return "Gas";
- case WType::MULTI: return "Multi";
+ case WType::MULTI: return "Multi";
+
default:
{
return "";
@@ -1350,6 +1421,7 @@ public:
case CMode::THP: return "THP";
case CMode::BHP: return "BHP";
case CMode::GRUP: return "GRUP";
+
default:
{
return "";
@@ -1357,8 +1429,8 @@ public:
}
};
- tmp_names[1] = "INJ"; //WellCumDataType::WellType
- const auto flowctl = fctl(ctlMode);
+ tmp_names[1] = "INJ"; //WellCumDataType::WellType
+ const auto flowctl = fctl(ctlMode);
if (flowctl == "RATE") //WellCumDataType::WellCTRL
{
const auto flowtype = ftype(injType);
@@ -1398,16 +1470,16 @@ public:
tmp_names[1] = "PROD"; //WellProdDataType::CTRLMode
tmp_names[2] = fctl(controls.cmode); //WellProdDataType::CTRLMode
}
-
- tmp_values[0] = well.getHeadI() + 1; //WellCumDataType::wellLocationi
- tmp_values[1] = well.getHeadJ() + 1; //WellCumDataType::wellLocationj
- tmp_values[2] = get("WOPT"); //WellCumDataType::OilProd
- tmp_values[3] = get("WWPT"); //WellCumDataType::WaterProd
- tmp_values[4] = get("WGPT"); //WellCumDataType::GasProd
+
+ tmp_values[0] = well.getHeadI() + 1; //WellCumDataType::wellLocationi
+ tmp_values[1] = well.getHeadJ() + 1; //WellCumDataType::wellLocationj
+ tmp_values[2] = get("WOPT"); //WellCumDataType::OilProd
+ tmp_values[3] = get("WWPT"); //WellCumDataType::WaterProd
+ tmp_values[4] = get("WGPT"); //WellCumDataType::GasProd
tmp_values[5] = get("WVPT");//WellCumDataType::FluidResVolProd
- tmp_values[2] = get("WOIT"); //WellCumDataType::OilInj
- tmp_values[3] = get("WWIT"); //WellCumDataType::WaterInj
- tmp_values[4] = get("WGIT"); //WellCumDataType::GasInj
+ tmp_values[2] = get("WOIT"); //WellCumDataType::OilInj
+ tmp_values[3] = get("WWIT"); //WellCumDataType::WaterInj
+ tmp_values[4] = get("WGIT"); //WellCumDataType::GasInj
tmp_values[5] = get("WVIT");//WellCumDataType::FluidResVolInj
outputCumulativeReport_(tmp_values, tmp_names, forceDisableCumOutput);
@@ -1851,8 +1923,13 @@ private:
ss << "=================================================================================================================================\n";//=================== \n";
}
else {
- ss << std::right << std::fixed << ":" << std::setw (8) << wellProdNames[WellProdDataType::WellName] << ":" << std::setprecision(0) << std::setw(5) << wellProd[WellProdDataType::WellLocationi] << "," << std::setw(5) << wellProd[WellProdDataType::WellLocationj] << ":" << std::setw(4) << wellProdNames[WellProdDataType::CTRLMode] << ":" << std::setprecision(1) << std::setw(11) << wellProd[WellProdDataType::OilRate] << ":" << std::setw(11) << wellProd[WellProdDataType::WaterRate] << ":" << std::setw(11)<< wellProd[WellProdDataType::GasRate] << ":" << std::setw(11) << wellProd[WellProdDataType::FluidResVol] << std::setprecision(3) << ":" << std::setw(11) << wellProd[WellProdDataType::WaterCut] << std::setprecision(2) << ":" << std::setw(10) << wellProd[WellProdDataType::GasOilRatio] << std::setprecision(4) << ":" << std::setw(12) << wellProd[WellProdDataType::WatGasRatio] << std::setprecision(1) << ":" << std::setw(8) << wellProd[WellProdDataType::BHP] << ":" << std::setw(8) << wellProd[WellProdDataType::THP] << ": \n"//wellProd[WellProdDataType::SteadyStatePI] << std::setw(10) << "\n"
- << ":"<< std::setfill ('-') << std::setw (9) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (5) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (11) << ":" << std::setfill ('-') << std::setw (13) << ":" << std::setfill ('-') << std::setw (9) << ":" << std::setfill ('-') << std::setw (9) << ": \n";
+ if (wellProd[WellProdDataType::WellLocationi] < 1) {
+ ss << std::right << std::fixed << ":" << std::setw (8) << wellProdNames[WellProdDataType::WellName] << ":" << std::setprecision(0) << std::setw(11) << "" << ":" << std::setw(4) << wellProdNames[WellProdDataType::CTRLMode] << ":" << std::setprecision(1) << std::setw(11) << wellProd[WellProdDataType::OilRate] << ":" << std::setw(11) << wellProd[WellProdDataType::WaterRate] << ":" << std::setw(11)<< wellProd[WellProdDataType::GasRate] << ":" << std::setw(11) << wellProd[WellProdDataType::FluidResVol] << std::setprecision(3) << ":" << std::setw(11) << wellProd[WellProdDataType::WaterCut] << std::setprecision(2) << ":" << std::setw(10) << wellProd[WellProdDataType::GasOilRatio] << std::setprecision(4) << ":" << std::setw(12) << wellProd[WellProdDataType::WatGasRatio] << std::setprecision(1) << ":" << std::setw(8) << "" << ":" << std::setw(8) << "" << ": \n";//wellProd[WellProdDataType::SteadyStatePI] << std::setw(10) << "\n"
+ }
+ else {
+ ss << std::right << std::fixed << ":" << std::setw (8) << wellProdNames[WellProdDataType::WellName] << ":" << std::setprecision(0) << std::setw(5) << wellProd[WellProdDataType::WellLocationi] << "," << std::setw(5) << wellProd[WellProdDataType::WellLocationj] << ":" << std::setw(4) << wellProdNames[WellProdDataType::CTRLMode] << ":" << std::setprecision(1) << std::setw(11) << wellProd[WellProdDataType::OilRate] << ":" << std::setw(11) << wellProd[WellProdDataType::WaterRate] << ":" << std::setw(11)<< wellProd[WellProdDataType::GasRate] << ":" << std::setw(11) << wellProd[WellProdDataType::FluidResVol] << std::setprecision(3) << ":" << std::setw(11) << wellProd[WellProdDataType::WaterCut] << std::setprecision(2) << ":" << std::setw(10) << wellProd[WellProdDataType::GasOilRatio] << std::setprecision(4) << ":" << std::setw(12) << wellProd[WellProdDataType::WatGasRatio] << std::setprecision(1) << ":" << std::setw(8) << wellProd[WellProdDataType::BHP] << ":" << std::setw(8) << wellProd[WellProdDataType::THP] << ": \n";//wellProd[WellProdDataType::SteadyStatePI] << std::setw(10) << "\n"
+ }
+ ss << ":"<< std::setfill ('-') << std::setw (9) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (5) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (12) << ":" << std::setfill ('-') << std::setw (11) << ":" << std::setfill ('-') << std::setw (13) << ":" << std::setfill ('-') << std::setw (9) << ":" << std::setfill ('-') << std::setw (9) << ": \n";
}
Opm::OpmLog::note(ss.str());
}
@@ -1880,8 +1957,13 @@ private:
ss << "==============================================================================================================\n";//===================== \n";
}
else {
- ss << std::right << std::fixed << std::setprecision(0) << ":" << std::setw (8) << wellInjNames[WellInjDataType::WellName] << ":" << std::setw(5) << wellInj[WellInjDataType::WellLocationi] << "," << std::setw(5) << wellInj[WellInjDataType::WellLocationj] << ":" << std::setw(6) << wellInjNames[WellInjDataType::CTRLModeOil] << ":" << std::setw(6) << wellInjNames[WellInjDataType::CTRLModeWat] << ":" << std::setw(6) << wellInjNames[WellInjDataType::CTRLModeGas] << ":" << std::setprecision(1) << std::setw(11) << wellInj[WellInjDataType::OilRate] << ":" << std::setw(11) << wellInj[WellInjDataType::WaterRate] << ":" << std::setw(11)<< wellInj[WellInjDataType::GasRate] << ":" << std::setw(11) << wellInj[WellInjDataType::FluidResVol] << ":" << std::setw(8)<< wellInj[WellInjDataType::BHP] << ":" << std::setw(8)<< wellInj[WellInjDataType::THP] << ": \n"//wellInj[WellInjDataType::SteadyStateII] << std::setw(10) << "\n"
- << ":--------:-----------:------:------:------:------------:----------:-----------:-----------:--------:--------:\n";//--------------------:\n";
+ if (wellInj[WellInjDataType::WellLocationi] < 1) {
+ ss << std::right << std::fixed << std::setprecision(0) << ":" << std::setw (8) << wellInjNames[WellInjDataType::WellName] << ":" << std::setw(11) << "" << ":" << std::setw(6) << wellInjNames[WellInjDataType::CTRLModeOil] << ":" << std::setw(6) << wellInjNames[WellInjDataType::CTRLModeWat] << ":" << std::setw(6) << wellInjNames[WellInjDataType::CTRLModeGas] << ":" << std::setprecision(1) << std::setw(11) << wellInj[WellInjDataType::OilRate] << ":" << std::setw(11) << wellInj[WellInjDataType::WaterRate] << ":" << std::setw(11)<< wellInj[WellInjDataType::GasRate] << ":" << std::setw(11) << wellInj[WellInjDataType::FluidResVol] << ":" << std::setw(8)<< "" << ":" << std::setw(8)<< "" << ": \n";//wellInj[WellInjDataType::SteadyStateII] << std::setw(10) << "\n"
+ }
+ else {
+ ss << std::right << std::fixed << std::setprecision(0) << ":" << std::setw (8) << wellInjNames[WellInjDataType::WellName] << ":" << std::setw(5) << wellInj[WellInjDataType::WellLocationi] << "," << std::setw(5) << wellInj[WellInjDataType::WellLocationj] << ":" << std::setw(6) << wellInjNames[WellInjDataType::CTRLModeOil] << ":" << std::setw(6) << wellInjNames[WellInjDataType::CTRLModeWat] << ":" << std::setw(6) << wellInjNames[WellInjDataType::CTRLModeGas] << ":" << std::setprecision(1) << std::setw(11) << wellInj[WellInjDataType::OilRate] << ":" << std::setw(11) << wellInj[WellInjDataType::WaterRate] << ":" << std::setw(11)<< wellInj[WellInjDataType::GasRate] << ":" << std::setw(11) << wellInj[WellInjDataType::FluidResVol] << ":" << std::setw(8)<< wellInj[WellInjDataType::BHP] << ":" << std::setw(8)<< wellInj[WellInjDataType::THP] << ": \n";//wellInj[WellInjDataType::SteadyStateII] << std::setw(10) << "\n"
+ }
+ ss << ":--------:-----------:------:------:------:------------:----------:-----------:-----------:--------:--------: \n";//--------------------:\n";
}
Opm::OpmLog::note(ss.str());
}
@@ -1909,8 +1991,13 @@ private:
ss << "====================================================================================================================================\n";
}
else {
- ss << std::right << std::fixed << std::setprecision(0) << ":" << std::setw (8) << wellCumNames[WellCumDataType::WellName] << ":" << std::setw(5) << wellCum[WellCumDataType::WellLocationi] << "," << std::setw(5) << wellCum[WellCumDataType::WellLocationj] << ":" << std::setw(8) << wellCumNames[WellCumDataType::WellType] << ":" << std::setw(4) << wellCumNames[WellCumDataType::WellCTRL] << ":" << std::setprecision(1) << std::setw(11) << wellCum[WellCumDataType::OilProd] << ":" << std::setw(11) << wellCum[WellCumDataType::WaterProd] << ":" << std::setw(11)<< wellCum[WellCumDataType::GasProd]/1000 << ":" << std::setw(11) << wellCum[WellCumDataType::FluidResVolProd] << ":" << std::setw(11) << wellCum[WellCumDataType::OilProd] << ":" << std::setw(11) << wellCum[WellCumDataType::WaterInj] << ":" << std::setw(11) << wellCum[WellCumDataType::GasInj]/1000 << ":" << std::setw(11) << wellCum[WellCumDataType::FluidResVolInj] << ":\n"
- << ":--------:-----------:--------:----:------------:----------:-----------:-----------:------------:----------:-----------:-----------:\n";
+ if (wellCum[WellCumDataType::WellLocationi] < 1) {
+ ss << std::right << std::fixed << std::setprecision(0) << ":" << std::setw (8) << wellCumNames[WellCumDataType::WellName] << ":" << std::setw(11) << "" << ":" << std::setw(8) << wellCumNames[WellCumDataType::WellType] << ":" << std::setw(4) << wellCumNames[WellCumDataType::WellCTRL] << ":" << std::setprecision(1) << std::setw(11) << wellCum[WellCumDataType::OilProd] << ":" << std::setw(11) << wellCum[WellCumDataType::WaterProd] << ":" << std::setw(11)<< wellCum[WellCumDataType::GasProd]/1000 << ":" << std::setw(11) << wellCum[WellCumDataType::FluidResVolProd] << ":" << std::setw(11) << wellCum[WellCumDataType::OilProd] << ":" << std::setw(11) << wellCum[WellCumDataType::WaterInj] << ":" << std::setw(11) << wellCum[WellCumDataType::GasInj]/1000 << ":" << std::setw(11) << wellCum[WellCumDataType::FluidResVolInj] << ": \n";
+ }
+ else {
+ ss << std::right << std::fixed << std::setprecision(0) << ":" << std::setw (8) << wellCumNames[WellCumDataType::WellName] << ":" << std::setw(5) << wellCum[WellCumDataType::WellLocationi] << "," << std::setw(5) << wellCum[WellCumDataType::WellLocationj] << ":" << std::setw(8) << wellCumNames[WellCumDataType::WellType] << ":" << std::setw(4) << wellCumNames[WellCumDataType::WellCTRL] << ":" << std::setprecision(1) << std::setw(11) << wellCum[WellCumDataType::OilProd] << ":" << std::setw(11) << wellCum[WellCumDataType::WaterProd] << ":" << std::setw(11)<< wellCum[WellCumDataType::GasProd]/1000 << ":" << std::setw(11) << wellCum[WellCumDataType::FluidResVolProd] << ":" << std::setw(11) << wellCum[WellCumDataType::OilProd] << ":" << std::setw(11) << wellCum[WellCumDataType::WaterInj] << ":" << std::setw(11) << wellCum[WellCumDataType::GasInj]/1000 << ":" << std::setw(11) << wellCum[WellCumDataType::FluidResVolInj] << ": \n";
+ }
+ ss << ":--------:-----------:--------:----:------------:----------:-----------:-----------:------------:----------:-----------:-----------: \n";
}
Opm::OpmLog::note(ss.str());
}