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/RegionVariableMapping.hpp>
34#include <opm/output/data/Wells.hpp>
35
36#include <opm/output/eclipse/Inplace.hpp>
37#include <opm/output/eclipse/RegionVariableCollection.hpp>
38
53
55
56#include <array>
57#include <cstddef>
58#include <functional>
59#include <map>
60#include <memory>
61#include <optional>
62#include <string_view>
63#include <tuple>
64#include <unordered_map>
65#include <utility>
66#include <vector>
67
68namespace Opm::Parameters {
69
70struct ForceDisableFluidInPlaceOutput { static constexpr bool value = false; };
71struct ForceDisableResvFluidInPlaceOutput { static constexpr bool value = false; };
72
73} // namespace Opm::Parameters
74
75namespace Opm {
76
77namespace data { class Solution; }
78class EclHysteresisConfig;
79class EclipseGrid;
80class EclipseState;
81class Schedule;
82class SummaryConfig;
83class SummaryConfigNode;
84class SummaryState;
85
86template<class FluidSystem>
88public:
89 using Scalar = typename FluidSystem::Scalar;
90
91 // Virtual destructor for safer inheritance.
93
97 static void registerParameters();
98
99 void outputTimeStamp(const std::string& lbl,
100 double elapsed,
101 int rstep,
102 boost::posix_time::ptime currentDate);
103
107
111
112 // write cumulative production and injection reports to output
113 void outputCumLog(std::size_t reportStepNum,
114 const bool connData);
115
116 // write production report to output
117 void outputProdLog(std::size_t reportStepNum,
118 const bool connData);
119
120 // write injection report to output
121 void outputInjLog(std::size_t reportStepNum,
122 const bool connData);
123
124 // write msw report to output
125 void outputMSWLog(std::size_t reportStepNum);
126
127 // calculate Initial Fluid In Place
129
130 // calculate Fluid In Place
131 Inplace calc_inplace(std::map<std::string, double>& miscSummaryData,
132 std::map<std::string, std::vector<double>>& regionData,
133 const Parallel::Communication& comm);
134
155 void outputWellspecReport(const std::vector<std::string>& changedWells,
156 const bool changedWellLists,
157 const std::size_t reportStepNum,
158 const double elapsed,
159 boost::posix_time::ptime currentDate) const;
160
162
163 void addRftDataToWells(data::Wells& wellDatas,
164 std::size_t reportStepNum,
165 const Parallel::Communication& comm)
166 { this->rftC_.addToWells(wellDatas, reportStepNum, comm); }
167
171 virtual void assignToSolution(data::Solution& sol);
172
173 virtual void setRestart(const data::Solution& sol,
174 unsigned elemIdx,
175 unsigned globalDofIndex);
176
177 Scalar getSolventSaturation(unsigned elemIdx) const
178 {
179 if (sSol_.size() > elemIdx)
180 return sSol_[elemIdx];
181
182 return 0;
183 }
184
185 Scalar getSolventRsw(unsigned elemIdx) const
186 {
187 if (rswSol_.size() > elemIdx)
188 return rswSol_[elemIdx];
189
190 return 0;
191 }
192
193 Scalar getPolymerConcentration(unsigned elemIdx) const
194 {
195 if (cPolymer_.size() > elemIdx)
196 return cPolymer_[elemIdx];
197
198 return 0;
199 }
200
201 Scalar getFoamConcentration(unsigned elemIdx) const
202 {
203 if (cFoam_.size() > elemIdx)
204 return cFoam_[elemIdx];
205
206 return 0;
207 }
208
209 Scalar getSaltConcentration(unsigned elemIdx) const
210 {
211 if (cSalt_.size() > elemIdx)
212 return cSalt_[elemIdx];
213
214 return 0;
215 }
216
217 Scalar getSaltSaturation(unsigned elemIdx) const
218 {
219 if (pSalt_.size() > elemIdx)
220 return pSalt_[elemIdx];
221
222 return 0;
223 }
224
225 Scalar getPermFactor(unsigned elemIdx) const
226 {
227 if (permFact_.size() > elemIdx)
228 return permFact_[elemIdx];
229
230 return 0;
231 }
232
233 const std::vector<Scalar>& getFluidPressure() const
234 { return fluidPressure_; }
235
237 { return this->bioeffectsC_; }
238
240 { return this->CO2H2C_; }
241
243 { return this->flowsC_; }
244
245 bool needInterfaceFluxes([[maybe_unused]] const bool isSubStep) const
246 {
248 }
249
250 const std::map<std::pair<std::string, int>, double>& getBlockData()
251 {
252 return blockData_;
253 }
254
255 std::map<std::pair<std::string, int>, double>& getExtraBlockData()
256 {
257 return extraBlockData_;
258 }
259
260 // Per-LGR-cell block-summary results. Cell identity is the
261 // (keyword, grid level, level-local linearised Cartesian cell index)
262 // tuple — the same identity data::Connection carries as
263 // (lgr_grid, index) for LC* connection vectors. Empty for runs
264 // without LB* summary requests.
265 const std::map<std::tuple<std::string, int, int>, double>& getLgrBlockData() const
266 {
267 return lgrBlockData_;
268 }
269
270 const Inplace* initialInplace() const
271 {
272 return this->initialInplace_.has_value()
273 ? &*this->initialInplace_
274 : nullptr;
275 }
276
277 bool localDataValid() const{
278 return local_data_valid_;
279 }
280
282 local_data_valid_ = false;
283 }
284
286 local_data_valid_ = true;
287 }
288
289 template<class Serializer>
290 void serializeOp(Serializer& serializer)
291 {
292 serializer(initialInplace_);
293 }
294
296 { return this->rst_conv_; }
297
298 const RSTConv& getConv() const
299 { return this->rst_conv_; }
300
301 const data::RegionVariableMapping& regVarMapping() const
302 {
303 return this->regVarMap_;
304 }
305
306 RegionVariableCollection& regionVariables()
307 {
308 return this->regionVars_;
309 }
310
315 void assignGlobalFieldsToSolution(data::Solution& sol);
316
317protected:
318 using ScalarBuffer = std::vector<Scalar>;
319 using StringBuffer = std::vector<std::string>;
320 enum { numPhases = FluidSystem::numPhases };
321 enum { numComponents = FluidSystem::numComponents };
322 static constexpr int gasPhaseIdx = FluidSystem::gasPhaseIdx;
323 static constexpr int oilPhaseIdx = FluidSystem::oilPhaseIdx;
324 static constexpr int waterPhaseIdx = FluidSystem::waterPhaseIdx;
325 enum { gasCompIdx = FluidSystem::gasCompIdx };
326 enum { oilCompIdx = FluidSystem::oilCompIdx };
327 enum { waterCompIdx = FluidSystem::waterCompIdx };
328 using Dir = FaceDir::DirEnum;
329
334 {
335 std::string_view oilDensity{};
336 std::string_view gasDensity{};
337 std::string_view waterDensity{};
338 std::string_view oilViscosity{};
339 std::string_view gasViscosity{};
340 std::string_view waterViscosity{};
341 };
342
344 void assignPhaseProperties(data::Solution& sol,
345 const PhasePropertyNames& names);
346
349 static bool allocBufferIfRequested(std::map<std::string, int>& rstKeywords,
350 unsigned bufferSize,
351 std::vector<Scalar>& buffer,
352 std::string_view kw,
353 bool supported,
354 bool required = false);
355
358 void assignBuffer(data::Solution& sol,
359 std::string_view name,
360 UnitSystem::measure measure,
361 std::vector<Scalar>& buffer);
362
364 void assignBuffer(data::Solution& sol,
365 std::string_view name,
366 UnitSystem::measure measure,
367 std::vector<Scalar>& buffer,
368 int index);
369
370 GenericOutputModule(const EclipseState& eclState,
371 const Schedule& schedule,
372 const SummaryConfig& summaryConfig,
373 const SummaryState& summaryState,
374 const std::string& moduleVersionName,
376 std::function<bool(const unsigned)> isInterior,
377 const Parallel::Communication& comm,
378 bool enableEnergy,
379 bool constantTemperature,
380 bool enableMech,
381 bool enableSolvent,
382 bool enablePolymer,
383 bool enableFoam,
384 bool enableBrine,
385 bool enableSaltPrecipitation,
386 bool enableExtbo,
387 bool enableBioeffects,
388 bool enableGeochemistry);
389
390 void doAllocBuffers(unsigned bufferSize,
391 unsigned reportStepNum,
392 const bool substep,
393 const bool log,
394 const bool isRestart,
395 const EclHysteresisConfig* hysteresisConfig,
396 unsigned numOutputNnc = 0,
397 std::map<std::string, int> rstKeywords = {});
398
402 virtual void allocFormulationBuffers(std::map<std::string, int>& rstKeywords,
403 unsigned bufferSize) = 0;
404
405 void makeRegionSum(Inplace& inplace,
406 const std::string& region_name,
407 const Parallel::Communication& comm) const;
408
410
411 void updateSummaryRegionValues(const Inplace& inplace,
412 std::map<std::string, double>& miscSummaryData,
413 std::map<std::string, std::vector<double>>& regionData) const;
414
415 static bool isOutputCreationDirective_(const std::string& keyword);
416
417 // Sum Fip values over regions.
418 static ScalarBuffer regionSum(const ScalarBuffer& property,
419 const std::vector<int>& regionId,
420 const std::size_t maxNumberOfRegions,
421 const Parallel::Communication& comm);
422
423 static int regionMax(const std::vector<int>& region,
424 const Parallel::Communication& comm);
425
426 static void update(Inplace& inplace,
427 const std::string& region_name,
428 const Inplace::Phase phase,
429 const std::size_t ntFip,
430 const ScalarBuffer& values);
431
432 static Scalar sum(const ScalarBuffer& v);
433
434 void setupBlockData(std::function<bool(int)> isCartIdxOnThisRank);
435 void setupExtraBlockData(const std::size_t reportStepNum,
436 std::function<bool(int)> isCartIdxOnThisRank);
437
438 // Allocate lgrBlockData_ slots for every Block-category summary node
439 // that names an LGR cell. The level component of the key is resolved
440 // through EclipseGrid::get_lgr_cell_index (the same call data::Connection
441 // uses for lgr_grid on LC* connection vectors); the level-local
442 // linearised Cartesian index is recovered from node.number - 1.
443 //
444 // No rank check here — ownership for LGR leaf cells is decided in the
445 // walk via Dune::InteriorEntity on the leaf entity; the existing
446 // isCartIdxOnThisRank predicate operates in the global Cartesian space,
447 // which LGR cells do not inhabit.
448 //
449 // Caller-supplied via parameter rather than read from a member to keep
450 // this module decoupled from EclipseState ownership (matching how the
451 // existing block path receives its rank predicate as an argument).
452 void setupLgrBlockData(const std::map<std::string, int>& lgrNameToLevel,
453 const std::function<bool(int, int)>& isLgrCellOnThisRank);
454
455 virtual bool isDefunctParallelWell(const std::string& wname) const = 0;
456 virtual bool isOwnedByCurrentRank(const std::string& wname) const = 0;
457 virtual bool isOnCurrentRank(const std::string& wname) const = 0;
458
459 const EclipseState& eclState_;
460 const Schedule& schedule_;
461 const SummaryState& summaryState_;
462
463 SummaryConfig summaryConfig_;
464
467
468 bool enableEnergy_{false};
470 bool enableMech_{false};
471
472 bool enableSolvent_{false};
473 bool enablePolymer_{false};
474 bool enableFoam_{false};
475 bool enableBrine_{false};
477 bool enableExtbo_{false};
478 bool enableBioeffects_{false};
480
483 bool computeFip_{false};
484
492 RegionVariableCollection regionVars_;
493
495 std::unordered_map<std::string, std::vector<int>> regions_;
496 std::unordered_map<Inplace::Phase, std::vector<SummaryConfigNode>> regionNodes_;
497
498 std::vector<SummaryConfigNode> RPRNodes_;
499 std::vector<SummaryConfigNode> RPRPNodes_;
500
504 data::RegionVariableMapping regVarMap_{};
505
506 std::vector<int> failedCellsPb_;
507 std::vector<int> failedCellsPd_;
508
549
550 // buffers for mechanical output
553
554 std::array<ScalarBuffer, numPhases> saturation_;
555 std::array<ScalarBuffer, numPhases> density_;
556 std::array<ScalarBuffer, numPhases> viscosity_;
557
559
561
562 std::array<ScalarBuffer, numPhases> residual_;
563
565
568
569 std::map<std::pair<std::string, int>, double> blockData_;
570 // Extra block data required for non-summary output reasons
571 // Example is the block pressures for RPTSCHED WELLS=2
572 std::map<std::pair<std::string, int>, double> extraBlockData_;
573
574 // Per-LGR-cell block-summary results. Keyed by (keyword, grid level,
575 // level-local linearised Cartesian cell index). The map type matches
576 // Summary::DynamicSimulatorState::LgrBlockValues so the writer can hand
577 // a pointer to this member directly to the summary engine. Empty for
578 // runs that request no LB* summary vectors (zero non-LGR cost).
579 std::map<std::tuple<std::string, int, int>, double> lgrBlockData_;
580
581 std::optional<Inplace> initialInplace_;
582 bool local_data_valid_{false};
583
584 std::optional<RegionPhasePoreVolAverage> regionAvgDensity_;
585
586private:
590 void initialiseRegionVariableSupport();
591};
592
593} // namespace Opm
594
595#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:87
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:460
ScalarBuffer oilVaporizationFactor_
Definition: GenericOutputModule.hpp:537
bool forceDisableFipOutput_
Definition: GenericOutputModule.hpp:481
RFTContainer< FluidSystem > rftC_
Definition: GenericOutputModule.hpp:566
Scalar getSaltConcentration(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:209
ScalarBuffer saturatedOilFormationVolumeFactor_
Definition: GenericOutputModule.hpp:542
std::unordered_map< Inplace::Phase, std::vector< SummaryConfigNode > > regionNodes_
Definition: GenericOutputModule.hpp:496
bool enableGeochemistry_
Definition: GenericOutputModule.hpp:479
RegionVariableCollection & regionVariables()
Definition: GenericOutputModule.hpp:306
GeochemistryContainer< Scalar > geochemC_
Definition: GenericOutputModule.hpp:558
void outputTimeStamp(const std::string &lbl, double elapsed, int rstep, boost::posix_time::ptime currentDate)
std::optional< Inplace > initialInplace_
Definition: GenericOutputModule.hpp:581
ScalarBuffer rockCompPorvMultiplier_
Definition: GenericOutputModule.hpp:540
TracerContainer< FluidSystem > tracerC_
Definition: GenericOutputModule.hpp:560
ScalarBuffer hydrocarbonPoreVolume_
Definition: GenericOutputModule.hpp:510
CO2H2Container< Scalar > CO2H2C_
Definition: GenericOutputModule.hpp:545
std::array< ScalarBuffer, numPhases > residual_
Definition: GenericOutputModule.hpp:562
@ numPhases
Definition: GenericOutputModule.hpp:320
static constexpr int gasPhaseIdx
Definition: GenericOutputModule.hpp:322
ScalarBuffer sSol_
Definition: GenericOutputModule.hpp:521
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:579
void setupExtraBlockData(const std::size_t reportStepNum, std::function< bool(int)> isCartIdxOnThisRank)
typename FluidSystem::Scalar Scalar
Definition: GenericOutputModule.hpp:89
void calc_initial_inplace(const Parallel::Communication &comm)
std::vector< int > failedCellsPd_
Definition: GenericOutputModule.hpp:507
void validateLocalData()
Definition: GenericOutputModule.hpp:285
ScalarBuffer shmax_
Definition: GenericOutputModule.hpp:532
std::vector< SummaryConfigNode > RPRNodes_
Definition: GenericOutputModule.hpp:498
bool localDataValid() const
Definition: GenericOutputModule.hpp:277
ScalarBuffer sgmax_
Definition: GenericOutputModule.hpp:531
bool enableMech_
Definition: GenericOutputModule.hpp:470
ScalarBuffer rockCompTransMultiplier_
Definition: GenericOutputModule.hpp:543
bool local_data_valid_
Definition: GenericOutputModule.hpp:582
const SummaryState & summaryState_
Definition: GenericOutputModule.hpp:461
void setupBlockData(std::function< bool(int)> isCartIdxOnThisRank)
ScalarBuffer minimumOilPressure_
Definition: GenericOutputModule.hpp:541
virtual bool isOnCurrentRank(const std::string &wname) const =0
Inplace accumulateRegionSums(const Parallel::Communication &comm)
Scalar getFoamConcentration(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:201
bool constantTemperature_
Definition: GenericOutputModule.hpp:469
bool enableBioeffects_
Definition: GenericOutputModule.hpp:478
ScalarBuffer temperature_
Definition: GenericOutputModule.hpp:515
ScalarBuffer pcow_
Definition: GenericOutputModule.hpp:547
Scalar getSaltSaturation(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:217
bool enableBrine_
Definition: GenericOutputModule.hpp:475
ScalarBuffer drsdtcon_
Definition: GenericOutputModule.hpp:520
bool computeFip_
Definition: GenericOutputModule.hpp:483
std::optional< RegionPhasePoreVolAverage > regionAvgDensity_
Definition: GenericOutputModule.hpp:584
ScalarBuffer permFact_
Definition: GenericOutputModule.hpp:527
ScalarBuffer pressureTimesPoreVolume_
Definition: GenericOutputModule.hpp:511
ScalarBuffer overburdenPressure_
Definition: GenericOutputModule.hpp:518
TpsaContainer< Scalar > tpsaC_
Definition: GenericOutputModule.hpp:552
RSTConv rst_conv_
Helper class for RPTRST CONV.
Definition: GenericOutputModule.hpp:567
ScalarBuffer rPorV_
Definition: GenericOutputModule.hpp:513
std::array< ScalarBuffer, numPhases > viscosity_
Definition: GenericOutputModule.hpp:556
void serializeOp(Serializer &serializer)
Definition: GenericOutputModule.hpp:290
void setupLgrBlockData(const std::map< std::string, int > &lgrNameToLevel, const std::function< bool(int, int)> &isLgrCellOnThisRank)
bool enableExtbo_
Definition: GenericOutputModule.hpp:477
ScalarBuffer rvw_
Definition: GenericOutputModule.hpp:517
FIPContainer< FluidSystem > fipC_
Definition: GenericOutputModule.hpp:494
bool forceDisableFipresvOutput_
Definition: GenericOutputModule.hpp:482
const RSTConv & getConv() const
Definition: GenericOutputModule.hpp:298
const CO2H2Container< Scalar > & getCO2H2() const
Definition: GenericOutputModule.hpp:239
ScalarBuffer cPolymer_
Definition: GenericOutputModule.hpp:523
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:474
RSTConv & getConv()
Definition: GenericOutputModule.hpp:295
std::unordered_map< std::string, std::vector< int > > regions_
Definition: GenericOutputModule.hpp:495
ScalarBuffer swmin_
Definition: GenericOutputModule.hpp:534
static constexpr int oilPhaseIdx
Definition: GenericOutputModule.hpp:323
virtual bool isOwnedByCurrentRank(const std::string &wname) const =0
FlowsContainer< FluidSystem > flowsC_
Definition: GenericOutputModule.hpp:564
std::map< std::pair< std::string, int >, double > blockData_
Definition: GenericOutputModule.hpp:569
bool enableSolvent_
Definition: GenericOutputModule.hpp:472
ScalarBuffer gasDissolutionFactor_
Definition: GenericOutputModule.hpp:536
void addRftDataToWells(data::Wells &wellDatas, std::size_t reportStepNum, const Parallel::Communication &comm)
Definition: GenericOutputModule.hpp:163
@ oilCompIdx
Definition: GenericOutputModule.hpp:326
FaceDir::DirEnum Dir
Definition: GenericOutputModule.hpp:328
MechContainer< Scalar > mech_
Definition: GenericOutputModule.hpp:551
SummaryConfig summaryConfig_
Definition: GenericOutputModule.hpp:463
BioeffectsContainer< Scalar > bioeffectsC_
Definition: GenericOutputModule.hpp:544
ExtboContainer< Scalar > extboC_
Definition: GenericOutputModule.hpp:528
const data::RegionVariableMapping & regVarMapping() const
Definition: GenericOutputModule.hpp:301
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:225
void outputCumLog(std::size_t reportStepNum, const bool connData)
std::vector< std::string > StringBuffer
Definition: GenericOutputModule.hpp:319
void invalidateLocalData()
Definition: GenericOutputModule.hpp:281
ScalarBuffer gasDissolutionFactorInWater_
Definition: GenericOutputModule.hpp:538
@ gasCompIdx
Definition: GenericOutputModule.hpp:325
const std::vector< Scalar > & getFluidPressure() const
Definition: GenericOutputModule.hpp:233
ScalarBuffer pcgw_
Definition: GenericOutputModule.hpp:546
Scalar getSolventSaturation(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:177
bool enablePolymer_
Definition: GenericOutputModule.hpp:473
LogOutputHelper< Scalar > logOutput_
Definition: GenericOutputModule.hpp:466
Scalar getSolventRsw(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:185
const std::map< std::pair< std::string, int >, double > & getBlockData()
Definition: GenericOutputModule.hpp:250
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:318
void outputErrorLog(const Parallel::Communication &comm) const
void outputInjLog(std::size_t reportStepNum, const bool connData)
ScalarBuffer somin_
Definition: GenericOutputModule.hpp:533
const BioeffectsContainer< Scalar > & getBioeffects() const
Definition: GenericOutputModule.hpp:236
InterRegFlowMap interRegionFlows_
Definition: GenericOutputModule.hpp:465
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:324
const FlowsContainer< FluidSystem > & getFlows() const
Definition: GenericOutputModule.hpp:242
bool enableSaltPrecipitation_
Definition: GenericOutputModule.hpp:476
ScalarBuffer soMax_
Definition: GenericOutputModule.hpp:529
const std::map< std::tuple< std::string, int, int >, double > & getLgrBlockData() const
Definition: GenericOutputModule.hpp:265
std::array< ScalarBuffer, numPhases > density_
Definition: GenericOutputModule.hpp:555
ScalarBuffer pressureTimesHydrocarbonVolume_
Definition: GenericOutputModule.hpp:512
ScalarBuffer cFoam_
Definition: GenericOutputModule.hpp:524
ScalarBuffer waterVaporizationFactor_
Definition: GenericOutputModule.hpp:539
@ waterCompIdx
Definition: GenericOutputModule.hpp:327
std::array< ScalarBuffer, numPhases > saturation_
Definition: GenericOutputModule.hpp:554
ScalarBuffer rsw_
Definition: GenericOutputModule.hpp:516
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:519
const EclipseState & eclState_
Definition: GenericOutputModule.hpp:459
static bool isOutputCreationDirective_(const std::string &keyword)
std::vector< SummaryConfigNode > RPRPNodes_
Definition: GenericOutputModule.hpp:499
ScalarBuffer ppcw_
Definition: GenericOutputModule.hpp:535
virtual bool isDefunctParallelWell(const std::string &wname) const =0
std::map< std::pair< std::string, int >, double > & getExtraBlockData()
Definition: GenericOutputModule.hpp:255
@ numComponents
Definition: GenericOutputModule.hpp:321
virtual void assignToSolution(data::Solution &sol)
Move all buffers to data::Solution.
ScalarBuffer cSalt_
Definition: GenericOutputModule.hpp:525
ScalarBuffer pcog_
Definition: GenericOutputModule.hpp:548
const Inplace * initialInplace() const
Definition: GenericOutputModule.hpp:270
bool needInterfaceFluxes(const bool isSubStep) const
Definition: GenericOutputModule.hpp:245
ScalarBuffer swMax_
Definition: GenericOutputModule.hpp:530
ScalarBuffer rswSol_
Definition: GenericOutputModule.hpp:522
std::map< std::pair< std::string, int >, double > extraBlockData_
Definition: GenericOutputModule.hpp:572
static void registerParameters()
Register all run-time parameters for the Vtk output module.
ScalarBuffer fluidPressure_
Definition: GenericOutputModule.hpp:514
ScalarBuffer gasFormationVolumeFactor_
Definition: GenericOutputModule.hpp:509
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:468
Scalar getPolymerConcentration(unsigned elemIdx) const
Definition: GenericOutputModule.hpp:193
data::RegionVariableMapping regVarMap_
Definition: GenericOutputModule.hpp:504
std::vector< int > failedCellsPb_
Definition: GenericOutputModule.hpp:506
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:526
RegionVariableCollection regionVars_
Definition: GenericOutputModule.hpp:492
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:46
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:334
std::string_view waterDensity
Definition: GenericOutputModule.hpp:337
std::string_view waterViscosity
Definition: GenericOutputModule.hpp:340
std::string_view gasDensity
Definition: GenericOutputModule.hpp:336
std::string_view gasViscosity
Definition: GenericOutputModule.hpp:339
std::string_view oilDensity
Definition: GenericOutputModule.hpp:335
std::string_view oilViscosity
Definition: GenericOutputModule.hpp:338
Definition: GenericOutputModule.hpp:70
static constexpr bool value
Definition: GenericOutputModule.hpp:70
Definition: GenericOutputModule.hpp:71
static constexpr bool value
Definition: GenericOutputModule.hpp:71