GenericOutputModule.hpp
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3/*
4 This file is part of the Open Porous Media project (OPM).
5
6 OPM is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 2 of the License, or
9 (at your option) any later version.
10
11 OPM is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with OPM. If not, see <http://www.gnu.org/licenses/>.
18 Consult the COPYING file in the top-level source directory of this
19 module for the precise wording of the license and the list of
20 copyright holders.
21*/
26#ifndef OPM_GENERIC_OUTPUT_MODULE_HPP
27#define OPM_GENERIC_OUTPUT_MODULE_HPP
28
29#include <opm/input/eclipse/EclipseState/Grid/FaceDir.hpp>
30#include <opm/input/eclipse/EclipseState/SummaryConfig/SummaryConfig.hpp>
31#include <opm/input/eclipse/Units/UnitSystem.hpp>
32
33#include <opm/output/data/Wells.hpp>
34#include <opm/output/eclipse/Inplace.hpp>
35
50
52
53#include <array>
54#include <cstddef>
55#include <functional>
56#include <map>
57#include <optional>
58#include <string_view>
59#include <tuple>
60#include <unordered_map>
61#include <utility>
62#include <vector>
63
64namespace Opm::Parameters {
65
66struct ForceDisableFluidInPlaceOutput { static constexpr bool value = false; };
67struct ForceDisableResvFluidInPlaceOutput { static constexpr bool value = false; };
68
69} // namespace Opm::Parameters
70
71namespace Opm {
72
73namespace data { class Solution; }
74class EclHysteresisConfig;
75class EclipseGrid;
76class EclipseState;
77class Schedule;
78class SummaryConfig;
79class SummaryConfigNode;
80class SummaryState;
81
82template<class FluidSystem>
84public:
85 using Scalar = typename FluidSystem::Scalar;
86
87 // Virtual destructor for safer inheritance.
89
93 static void registerParameters();
94
95 void outputTimeStamp(const std::string& lbl,
96 double elapsed,
97 int rstep,
98 boost::posix_time::ptime currentDate);
99
103
107
108 // write cumulative production and injection reports to output
109 void outputCumLog(std::size_t reportStepNum,
110 const bool connData);
111
112 // write production report to output
113 void outputProdLog(std::size_t reportStepNum,
114 const bool connData);
115
116 // write injection report to output
117 void outputInjLog(std::size_t reportStepNum,
118 const bool connData);
119
120 // write msw report to output
121 void outputMSWLog(std::size_t reportStepNum);
122
123 // calculate Initial Fluid In Place
125
126 // calculate Fluid In Place
127 Inplace calc_inplace(std::map<std::string, double>& miscSummaryData,
128 std::map<std::string, std::vector<double>>& regionData,
129 const Parallel::Communication& comm);
130
151 void outputWellspecReport(const std::vector<std::string>& changedWells,
152 const bool changedWellLists,
153 const std::size_t reportStepNum,
154 const double elapsed,
155 boost::posix_time::ptime currentDate) const;
156
158
159 void addRftDataToWells(data::Wells& wellDatas,
160 std::size_t reportStepNum,
161 const Parallel::Communication& comm)
162 { this->rftC_.addToWells(wellDatas, reportStepNum, comm); }
163
167 virtual void assignToSolution(data::Solution& sol);
168
169 virtual void setRestart(const data::Solution& sol,
170 unsigned elemIdx,
171 unsigned globalDofIndex);
172
173 Scalar getSolventSaturation(unsigned elemIdx) const
174 {
175 if (sSol_.size() > elemIdx)
176 return sSol_[elemIdx];
177
178 return 0;
179 }
180
181 Scalar getSolventRsw(unsigned elemIdx) const
182 {
183 if (rswSol_.size() > elemIdx)
184 return rswSol_[elemIdx];
185
186 return 0;
187 }
188
189 Scalar getPolymerConcentration(unsigned elemIdx) const
190 {
191 if (cPolymer_.size() > elemIdx)
192 return cPolymer_[elemIdx];
193
194 return 0;
195 }
196
197 Scalar getFoamConcentration(unsigned elemIdx) const
198 {
199 if (cFoam_.size() > elemIdx)
200 return cFoam_[elemIdx];
201
202 return 0;
203 }
204
205 Scalar getSaltConcentration(unsigned elemIdx) const
206 {
207 if (cSalt_.size() > elemIdx)
208 return cSalt_[elemIdx];
209
210 return 0;
211 }
212
213 Scalar getSaltSaturation(unsigned elemIdx) const
214 {
215 if (pSalt_.size() > elemIdx)
216 return pSalt_[elemIdx];
217
218 return 0;
219 }
220
221 Scalar getPermFactor(unsigned elemIdx) const
222 {
223 if (permFact_.size() > elemIdx)
224 return permFact_[elemIdx];
225
226 return 0;
227 }
228
229 const std::vector<Scalar>& getFluidPressure() const
230 { return fluidPressure_; }
231
233 { return this->bioeffectsC_; }
234
236 { return this->CO2H2C_; }
237
239 { return this->flowsC_; }
240
241 bool needInterfaceFluxes([[maybe_unused]] const bool isSubStep) const
242 {
244 }
245
246 const std::map<std::pair<std::string, int>, double>& getBlockData()
247 {
248 return blockData_;
249 }
250
251 std::map<std::pair<std::string, int>, double>& getExtraBlockData()
252 {
253 return extraBlockData_;
254 }
255
256 // Per-LGR-cell block-summary results. Cell identity is the
257 // (keyword, grid level, level-local linearised Cartesian cell index)
258 // tuple — the same identity data::Connection carries as
259 // (lgr_grid, index) for LC* connection vectors. Empty for runs
260 // without LB* summary requests.
261 const std::map<std::tuple<std::string, int, int>, double>& getLgrBlockData() const
262 {
263 return lgrBlockData_;
264 }
265
266 const Inplace* initialInplace() const
267 {
268 return this->initialInplace_.has_value()
269 ? &*this->initialInplace_
270 : nullptr;
271 }
272
273 bool localDataValid() const{
274 return local_data_valid_;
275 }
276
278 local_data_valid_ = false;
279 }
280
282 local_data_valid_ = true;
283 }
284
285 template<class Serializer>
286 void serializeOp(Serializer& serializer)
287 {
288 serializer(initialInplace_);
289 }
290
292 { return this->rst_conv_; }
293
294 const RSTConv& getConv() const
295 { return this->rst_conv_; }
296
301 void assignGlobalFieldsToSolution(data::Solution& sol);
302
303protected:
304 using ScalarBuffer = std::vector<Scalar>;
305 using StringBuffer = std::vector<std::string>;
306 enum { numPhases = FluidSystem::numPhases };
307 enum { numComponents = FluidSystem::numComponents };
308 static constexpr int gasPhaseIdx = FluidSystem::gasPhaseIdx;
309 static constexpr int oilPhaseIdx = FluidSystem::oilPhaseIdx;
310 static constexpr int waterPhaseIdx = FluidSystem::waterPhaseIdx;
311 enum { gasCompIdx = FluidSystem::gasCompIdx };
312 enum { oilCompIdx = FluidSystem::oilCompIdx };
313 enum { waterCompIdx = FluidSystem::waterCompIdx };
314 using Dir = FaceDir::DirEnum;
315
320 {
321 std::string_view oilDensity{};
322 std::string_view gasDensity{};
323 std::string_view waterDensity{};
324 std::string_view oilViscosity{};
325 std::string_view gasViscosity{};
326 std::string_view waterViscosity{};
327 };
328
330 void assignPhaseProperties(data::Solution& sol,
331 const PhasePropertyNames& names);
332
335 static bool allocBufferIfRequested(std::map<std::string, int>& rstKeywords,
336 unsigned bufferSize,
337 std::vector<Scalar>& buffer,
338 std::string_view kw,
339 bool supported,
340 bool required = false);
341
344 void assignBuffer(data::Solution& sol,
345 std::string_view name,
346 UnitSystem::measure measure,
347 std::vector<Scalar>& buffer);
348
350 void assignBuffer(data::Solution& sol,
351 std::string_view name,
352 UnitSystem::measure measure,
353 std::vector<Scalar>& buffer,
354 int index);
355
356 GenericOutputModule(const EclipseState& eclState,
357 const Schedule& schedule,
358 const SummaryConfig& summaryConfig,
359 const SummaryState& summaryState,
360 const std::string& moduleVersionName,
362 std::function<bool(const unsigned)> isInterior,
363 const Parallel::Communication& comm,
364 bool enableEnergy,
365 bool constantTemperature,
366 bool enableMech,
367 bool enableSolvent,
368 bool enablePolymer,
369 bool enableFoam,
370 bool enableBrine,
371 bool enableSaltPrecipitation,
372 bool enableExtbo,
373 bool enableBioeffects,
374 bool enableGeochemistry);
375
376 void doAllocBuffers(unsigned bufferSize,
377 unsigned reportStepNum,
378 const bool substep,
379 const bool log,
380 const bool isRestart,
381 const EclHysteresisConfig* hysteresisConfig,
382 unsigned numOutputNnc = 0,
383 std::map<std::string, int> rstKeywords = {});
384
388 virtual void allocFormulationBuffers(std::map<std::string, int>& rstKeywords,
389 unsigned bufferSize) = 0;
390
391 void makeRegionSum(Inplace& inplace,
392 const std::string& region_name,
393 const Parallel::Communication& comm) const;
394
396
397 void updateSummaryRegionValues(const Inplace& inplace,
398 std::map<std::string, double>& miscSummaryData,
399 std::map<std::string, std::vector<double>>& regionData) const;
400
401 static bool isOutputCreationDirective_(const std::string& keyword);
402
403 // Sum Fip values over regions.
404 static ScalarBuffer regionSum(const ScalarBuffer& property,
405 const std::vector<int>& regionId,
406 const std::size_t maxNumberOfRegions,
407 const Parallel::Communication& comm);
408
409 static int regionMax(const std::vector<int>& region,
410 const Parallel::Communication& comm);
411
412 static void update(Inplace& inplace,
413 const std::string& region_name,
414 const Inplace::Phase phase,
415 const std::size_t ntFip,
416 const ScalarBuffer& values);
417
418 static Scalar sum(const ScalarBuffer& v);
419
420 void setupBlockData(std::function<bool(int)> isCartIdxOnThisRank);
421 void setupExtraBlockData(const std::size_t reportStepNum,
422 std::function<bool(int)> isCartIdxOnThisRank);
423
424 // Allocate lgrBlockData_ slots for every Block-category summary node
425 // that names an LGR cell. The level component of the key is resolved
426 // through EclipseGrid::get_lgr_cell_index (the same call data::Connection
427 // uses for lgr_grid on LC* connection vectors); the level-local
428 // linearised Cartesian index is recovered from node.number - 1.
429 //
430 // No rank check here — ownership for LGR leaf cells is decided in the
431 // walk via Dune::InteriorEntity on the leaf entity; the existing
432 // isCartIdxOnThisRank predicate operates in the global Cartesian space,
433 // which LGR cells do not inhabit.
434 //
435 // Caller-supplied via parameter rather than read from a member to keep
436 // this module decoupled from EclipseState ownership (matching how the
437 // existing block path receives its rank predicate as an argument).
438 void setupLgrBlockData(const std::map<std::string, int>& lgrNameToLevel,
439 const std::function<bool(int, int)>& isLgrCellOnThisRank);
440
441 virtual bool isDefunctParallelWell(const std::string& wname) const = 0;
442 virtual bool isOwnedByCurrentRank(const std::string& wname) const = 0;
443 virtual bool isOnCurrentRank(const std::string& wname) const = 0;
444
445 const EclipseState& eclState_;
446 const Schedule& schedule_;
447 const SummaryState& summaryState_;
448
449 SummaryConfig summaryConfig_;
450
453
454 bool enableEnergy_{false};
456 bool enableMech_{false};
457
458 bool enableSolvent_{false};
459 bool enablePolymer_{false};
460 bool enableFoam_{false};
461 bool enableBrine_{false};
463 bool enableExtbo_{false};
464 bool enableBioeffects_{false};
466
469 bool computeFip_{false};
470
472 std::unordered_map<std::string, std::vector<int>> regions_;
473 std::unordered_map<Inplace::Phase, std::vector<SummaryConfigNode>> regionNodes_;
474
475 std::vector<SummaryConfigNode> RPRNodes_;
476 std::vector<SummaryConfigNode> RPRPNodes_;
477
478 std::vector<int> failedCellsPb_;
479 std::vector<int> failedCellsPd_;
480
521
522 // buffers for mechanical output
525
526 std::array<ScalarBuffer, numPhases> saturation_;
527 std::array<ScalarBuffer, numPhases> density_;
528 std::array<ScalarBuffer, numPhases> viscosity_;
529
531
533
534 std::array<ScalarBuffer, numPhases> residual_;
535
537
540
541 std::map<std::pair<std::string, int>, double> blockData_;
542 // Extra block data required for non-summary output reasons
543 // Example is the block pressures for RPTSCHED WELLS=2
544 std::map<std::pair<std::string, int>, double> extraBlockData_;
545
546 // Per-LGR-cell block-summary results. Keyed by (keyword, grid level,
547 // level-local linearised Cartesian cell index). The map type matches
548 // Summary::DynamicSimulatorState::LgrBlockValues so the writer can hand
549 // a pointer to this member directly to the summary engine. Empty for
550 // runs that request no LB* summary vectors (zero non-LGR cost).
551 std::map<std::tuple<std::string, int, int>, double> lgrBlockData_;
552
553 std::optional<Inplace> initialInplace_;
554 bool local_data_valid_{false};
555
556 std::optional<RegionPhasePoreVolAverage> regionAvgDensity_;
557};
558
559} // namespace Opm
560
561#endif // OPM_GENERIC_OUTPUT_MODULE_HPP
Definition: BioeffectsContainer.hpp:38
Definition: CO2H2Container.hpp:38
Definition: ExtboContainer.hpp:37
Definition: FIPContainer.hpp:47
Definition: FlowsContainer.hpp:44
Definition: GenericOutputModule.hpp:83
GenericOutputModule(const EclipseState &eclState, const Schedule &schedule, const SummaryConfig &summaryConfig, const SummaryState &summaryState, const std::string &moduleVersionName, RSTConv::LocalToGlobalCellFunc globalCell, std::function< bool(const unsigned)> isInterior, const Parallel::Communication &comm, bool enableEnergy, bool constantTemperature, bool enableMech, bool enableSolvent, bool enablePolymer, bool enableFoam, bool enableBrine, bool enableSaltPrecipitation, bool enableExtbo, bool enableBioeffects, bool enableGeochemistry)
const Schedule & schedule_
Definition: GenericOutputModule.hpp:446
ScalarBuffer oilVaporizationFactor_
Definition: GenericOutputModule.hpp:509
bool forceDisableFipOutput_
Definition: GenericOutputModule.hpp:467
RFTContainer< FluidSystem > rftC_
Definition: GenericOutputModule.hpp:538
Scalar getSaltConcentration(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:205
ScalarBuffer saturatedOilFormationVolumeFactor_
Definition: GenericOutputModule.hpp:514
std::unordered_map< Inplace::Phase, std::vector< SummaryConfigNode > > regionNodes_
Definition: GenericOutputModule.hpp:473
bool enableGeochemistry_
Definition: GenericOutputModule.hpp:465
GeochemistryContainer< Scalar > geochemC_
Definition: GenericOutputModule.hpp:530
void outputTimeStamp(const std::string &lbl, double elapsed, int rstep, boost::posix_time::ptime currentDate)
std::optional< Inplace > initialInplace_
Definition: GenericOutputModule.hpp:553
ScalarBuffer rockCompPorvMultiplier_
Definition: GenericOutputModule.hpp:512
TracerContainer< FluidSystem > tracerC_
Definition: GenericOutputModule.hpp:532
ScalarBuffer hydrocarbonPoreVolume_
Definition: GenericOutputModule.hpp:482
CO2H2Container< Scalar > CO2H2C_
Definition: GenericOutputModule.hpp:517
std::array< ScalarBuffer, numPhases > residual_
Definition: GenericOutputModule.hpp:534
@ numPhases
Definition: GenericOutputModule.hpp:306
static constexpr int gasPhaseIdx
Definition: GenericOutputModule.hpp:308
ScalarBuffer sSol_
Definition: GenericOutputModule.hpp:493
void outputProdLog(std::size_t reportStepNum, const bool connData)
void doAllocBuffers(unsigned bufferSize, unsigned reportStepNum, const bool substep, const bool log, const bool isRestart, const EclHysteresisConfig *hysteresisConfig, unsigned numOutputNnc=0, std::map< std::string, int > rstKeywords={})
std::map< std::tuple< std::string, int, int >, double > lgrBlockData_
Definition: GenericOutputModule.hpp:551
void setupExtraBlockData(const std::size_t reportStepNum, std::function< bool(int)> isCartIdxOnThisRank)
typename FluidSystem::Scalar Scalar
Definition: GenericOutputModule.hpp:85
void calc_initial_inplace(const Parallel::Communication &comm)
std::vector< int > failedCellsPd_
Definition: GenericOutputModule.hpp:479
void validateLocalData()
Definition: GenericOutputModule.hpp:281
ScalarBuffer shmax_
Definition: GenericOutputModule.hpp:504
std::vector< SummaryConfigNode > RPRNodes_
Definition: GenericOutputModule.hpp:475
bool localDataValid() const
Definition: GenericOutputModule.hpp:273
ScalarBuffer sgmax_
Definition: GenericOutputModule.hpp:503
bool enableMech_
Definition: GenericOutputModule.hpp:456
ScalarBuffer rockCompTransMultiplier_
Definition: GenericOutputModule.hpp:515
bool local_data_valid_
Definition: GenericOutputModule.hpp:554
const SummaryState & summaryState_
Definition: GenericOutputModule.hpp:447
void setupBlockData(std::function< bool(int)> isCartIdxOnThisRank)
ScalarBuffer minimumOilPressure_
Definition: GenericOutputModule.hpp:513
virtual bool isOnCurrentRank(const std::string &wname) const =0
Inplace accumulateRegionSums(const Parallel::Communication &comm)
Scalar getFoamConcentration(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:197
bool constantTemperature_
Definition: GenericOutputModule.hpp:455
bool enableBioeffects_
Definition: GenericOutputModule.hpp:464
ScalarBuffer temperature_
Definition: GenericOutputModule.hpp:487
ScalarBuffer pcow_
Definition: GenericOutputModule.hpp:519
Scalar getSaltSaturation(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:213
bool enableBrine_
Definition: GenericOutputModule.hpp:461
ScalarBuffer drsdtcon_
Definition: GenericOutputModule.hpp:492
bool computeFip_
Definition: GenericOutputModule.hpp:469
std::optional< RegionPhasePoreVolAverage > regionAvgDensity_
Definition: GenericOutputModule.hpp:556
ScalarBuffer permFact_
Definition: GenericOutputModule.hpp:499
ScalarBuffer pressureTimesPoreVolume_
Definition: GenericOutputModule.hpp:483
ScalarBuffer overburdenPressure_
Definition: GenericOutputModule.hpp:490
TpsaContainer< Scalar > tpsaC_
Definition: GenericOutputModule.hpp:524
RSTConv rst_conv_
Helper class for RPTRST CONV.
Definition: GenericOutputModule.hpp:539
ScalarBuffer rPorV_
Definition: GenericOutputModule.hpp:485
std::array< ScalarBuffer, numPhases > viscosity_
Definition: GenericOutputModule.hpp:528
void serializeOp(Serializer &serializer)
Definition: GenericOutputModule.hpp:286
void setupLgrBlockData(const std::map< std::string, int > &lgrNameToLevel, const std::function< bool(int, int)> &isLgrCellOnThisRank)
bool enableExtbo_
Definition: GenericOutputModule.hpp:463
ScalarBuffer rvw_
Definition: GenericOutputModule.hpp:489
FIPContainer< FluidSystem > fipC_
Definition: GenericOutputModule.hpp:471
bool forceDisableFipresvOutput_
Definition: GenericOutputModule.hpp:468
const RSTConv & getConv() const
Definition: GenericOutputModule.hpp:294
const CO2H2Container< Scalar > & getCO2H2() const
Definition: GenericOutputModule.hpp:235
ScalarBuffer cPolymer_
Definition: GenericOutputModule.hpp:495
void assignBuffer(data::Solution &sol, std::string_view name, UnitSystem::measure measure, std::vector< Scalar > &buffer)
void outputMSWLog(std::size_t reportStepNum)
static bool allocBufferIfRequested(std::map< std::string, int > &rstKeywords, unsigned bufferSize, std::vector< Scalar > &buffer, std::string_view kw, bool supported, bool required=false)
static Scalar sum(const ScalarBuffer &v)
void assignGlobalFieldsToSolution(data::Solution &sol)
Assign fields that are in global numbering to the solution. \detail This is used to add fields that f...
bool enableFoam_
Definition: GenericOutputModule.hpp:460
RSTConv & getConv()
Definition: GenericOutputModule.hpp:291
std::unordered_map< std::string, std::vector< int > > regions_
Definition: GenericOutputModule.hpp:472
ScalarBuffer swmin_
Definition: GenericOutputModule.hpp:506
static constexpr int oilPhaseIdx
Definition: GenericOutputModule.hpp:309
virtual bool isOwnedByCurrentRank(const std::string &wname) const =0
FlowsContainer< FluidSystem > flowsC_
Definition: GenericOutputModule.hpp:536
std::map< std::pair< std::string, int >, double > blockData_
Definition: GenericOutputModule.hpp:541
bool enableSolvent_
Definition: GenericOutputModule.hpp:458
ScalarBuffer gasDissolutionFactor_
Definition: GenericOutputModule.hpp:508
void addRftDataToWells(data::Wells &wellDatas, std::size_t reportStepNum, const Parallel::Communication &comm)
Definition: GenericOutputModule.hpp:159
@ oilCompIdx
Definition: GenericOutputModule.hpp:312
FaceDir::DirEnum Dir
Definition: GenericOutputModule.hpp:314
MechContainer< Scalar > mech_
Definition: GenericOutputModule.hpp:523
SummaryConfig summaryConfig_
Definition: GenericOutputModule.hpp:449
BioeffectsContainer< Scalar > bioeffectsC_
Definition: GenericOutputModule.hpp:516
ExtboContainer< Scalar > extboC_
Definition: GenericOutputModule.hpp:500
static ScalarBuffer regionSum(const ScalarBuffer &property, const std::vector< int > &regionId, const std::size_t maxNumberOfRegions, const Parallel::Communication &comm)
void outputWellspecReport(const std::vector< std::string > &changedWells, const bool changedWellLists, const std::size_t reportStepNum, const double elapsed, boost::posix_time::ptime currentDate) const
Scalar getPermFactor(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:221
void outputCumLog(std::size_t reportStepNum, const bool connData)
std::vector< std::string > StringBuffer
Definition: GenericOutputModule.hpp:305
void invalidateLocalData()
Definition: GenericOutputModule.hpp:277
ScalarBuffer gasDissolutionFactorInWater_
Definition: GenericOutputModule.hpp:510
@ gasCompIdx
Definition: GenericOutputModule.hpp:311
const std::vector< Scalar > & getFluidPressure() const
Definition: GenericOutputModule.hpp:229
ScalarBuffer pcgw_
Definition: GenericOutputModule.hpp:518
Scalar getSolventSaturation(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:173
bool enablePolymer_
Definition: GenericOutputModule.hpp:459
LogOutputHelper< Scalar > logOutput_
Definition: GenericOutputModule.hpp:452
Scalar getSolventRsw(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:181
const std::map< std::pair< std::string, int >, double > & getBlockData()
Definition: GenericOutputModule.hpp:246
static void update(Inplace &inplace, const std::string &region_name, const Inplace::Phase phase, const std::size_t ntFip, const ScalarBuffer &values)
void assignPhaseProperties(data::Solution &sol, const PhasePropertyNames &names)
Move the phase density and viscosity buffers to sol under names.
std::vector< Scalar > ScalarBuffer
Definition: GenericOutputModule.hpp:304
void outputErrorLog(const Parallel::Communication &comm) const
void outputInjLog(std::size_t reportStepNum, const bool connData)
ScalarBuffer somin_
Definition: GenericOutputModule.hpp:505
const BioeffectsContainer< Scalar > & getBioeffects() const
Definition: GenericOutputModule.hpp:232
InterRegFlowMap interRegionFlows_
Definition: GenericOutputModule.hpp:451
void updateSummaryRegionValues(const Inplace &inplace, std::map< std::string, double > &miscSummaryData, std::map< std::string, std::vector< double > > &regionData) const
static constexpr int waterPhaseIdx
Definition: GenericOutputModule.hpp:310
const FlowsContainer< FluidSystem > & getFlows() const
Definition: GenericOutputModule.hpp:238
bool enableSaltPrecipitation_
Definition: GenericOutputModule.hpp:462
ScalarBuffer soMax_
Definition: GenericOutputModule.hpp:501
const std::map< std::tuple< std::string, int, int >, double > & getLgrBlockData() const
Definition: GenericOutputModule.hpp:261
std::array< ScalarBuffer, numPhases > density_
Definition: GenericOutputModule.hpp:527
ScalarBuffer pressureTimesHydrocarbonVolume_
Definition: GenericOutputModule.hpp:484
ScalarBuffer cFoam_
Definition: GenericOutputModule.hpp:496
ScalarBuffer waterVaporizationFactor_
Definition: GenericOutputModule.hpp:511
@ waterCompIdx
Definition: GenericOutputModule.hpp:313
std::array< ScalarBuffer, numPhases > saturation_
Definition: GenericOutputModule.hpp:526
ScalarBuffer rsw_
Definition: GenericOutputModule.hpp:488
Inplace calc_inplace(std::map< std::string, double > &miscSummaryData, std::map< std::string, std::vector< double > > &regionData, const Parallel::Communication &comm)
ScalarBuffer oilSaturationPressure_
Definition: GenericOutputModule.hpp:491
const EclipseState & eclState_
Definition: GenericOutputModule.hpp:445
static bool isOutputCreationDirective_(const std::string &keyword)
std::vector< SummaryConfigNode > RPRPNodes_
Definition: GenericOutputModule.hpp:476
ScalarBuffer ppcw_
Definition: GenericOutputModule.hpp:507
virtual bool isDefunctParallelWell(const std::string &wname) const =0
std::map< std::pair< std::string, int >, double > & getExtraBlockData()
Definition: GenericOutputModule.hpp:251
@ numComponents
Definition: GenericOutputModule.hpp:307
virtual void assignToSolution(data::Solution &sol)
Move all buffers to data::Solution.
ScalarBuffer cSalt_
Definition: GenericOutputModule.hpp:497
ScalarBuffer pcog_
Definition: GenericOutputModule.hpp:520
const Inplace * initialInplace() const
Definition: GenericOutputModule.hpp:266
bool needInterfaceFluxes(const bool isSubStep) const
Definition: GenericOutputModule.hpp:241
ScalarBuffer swMax_
Definition: GenericOutputModule.hpp:502
ScalarBuffer rswSol_
Definition: GenericOutputModule.hpp:494
std::map< std::pair< std::string, int >, double > extraBlockData_
Definition: GenericOutputModule.hpp:544
static void registerParameters()
Register all run-time parameters for the Vtk output module.
ScalarBuffer fluidPressure_
Definition: GenericOutputModule.hpp:486
ScalarBuffer gasFormationVolumeFactor_
Definition: GenericOutputModule.hpp:481
virtual void setRestart(const data::Solution &sol, unsigned elemIdx, unsigned globalDofIndex)
void assignBuffer(data::Solution &sol, std::string_view name, UnitSystem::measure measure, std::vector< Scalar > &buffer, int index)
A negative index marks an inactive phase and reports nothing.
bool enableEnergy_
Definition: GenericOutputModule.hpp:454
Scalar getPolymerConcentration(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:189
std::vector< int > failedCellsPb_
Definition: GenericOutputModule.hpp:478
void makeRegionSum(Inplace &inplace, const std::string &region_name, const Parallel::Communication &comm) const
virtual void allocFormulationBuffers(std::map< std::string, int > &rstKeywords, unsigned bufferSize)=0
ScalarBuffer pSalt_
Definition: GenericOutputModule.hpp:498
static int regionMax(const std::vector< int > &region, const Parallel::Communication &comm)
Definition: GeochemistryContainer.hpp:36
Inter-region flow accumulation maps for all region definition arrays.
Definition: InterRegFlows.hpp:179
bool wantInterRegflowSummary() const
Definition: InterRegFlows.hpp:282
Definition: LogOutputHelper.hpp:45
Definition: MechContainer.hpp:45
Definition: RFTContainer.hpp:51
Class computing RPTRST CONV output.
Definition: RSTConv.hpp:36
std::function< int(const int)> LocalToGlobalCellFunc
Definition: RSTConv.hpp:38
Definition: TpsaContainer.hpp:45
Definition: TracerContainer.hpp:39
Dune::Communication< MPIComm > Communication
Definition: ParallelCommunication.hpp:30
Definition: blackoilnewtonmethodparams.hpp:31
Phase
Phase indices for reservoir coupling, we currently only support black-oil phases (oil,...
Definition: ReservoirCoupling.hpp:165
Definition: blackoilbioeffectsmodules.hh:45
std::string moduleVersionName()
Definition: GenericOutputModule.hpp:320
std::string_view waterDensity
Definition: GenericOutputModule.hpp:323
std::string_view waterViscosity
Definition: GenericOutputModule.hpp:326
std::string_view gasDensity
Definition: GenericOutputModule.hpp:322
std::string_view gasViscosity
Definition: GenericOutputModule.hpp:325
std::string_view oilDensity
Definition: GenericOutputModule.hpp:321
std::string_view oilViscosity
Definition: GenericOutputModule.hpp:324
Definition: GenericOutputModule.hpp:66
static constexpr bool value
Definition: GenericOutputModule.hpp:66
Definition: GenericOutputModule.hpp:67
static constexpr bool value
Definition: GenericOutputModule.hpp:67