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()); }