opm-common
Loading...
Searching...
No Matches
Opm::out::Summary Class Reference

Computational engine for calculating summary vectors (2D curves as a function of time) and writing these values to the summary file. More...

#include <Summary.hpp>

Classes

class  SummaryImplementation

Public Types

using GlobalProcessParameters = std::map<std::string, double>
 Collection of named scalar quantities such as field-wide pressures, rates, and volumes, as well as performance related quantities such as CPU time, number of linear iterations &c.
using RegionParameters = std::map<std::string, std::vector<double>>
 Collection of named per-region quantities.
using BlockValues = std::map<std::pair<std::string, int>, double>
 Collection of per-block (cell) quantities.
using InterRegFlowValues = std::unordered_map<std::string, data::InterRegFlowMap>
 Collection of named inter-region flows (rates and cumulatives).

Public Member Functions

 Summary (SummaryConfig &sumcfg, const EclipseState &es, const EclipseGrid &grid, const Schedule &sched, const std::string &basename="", const bool writeEsmry=false)
 Constructor.
 ~Summary ()
 Destructor.
void add_timestep (const SummaryState &st, const int report_step, const int ministep_id, const bool isSubstep)
 Linearise summary values into internal buffer for output purposes.
void eval (SummaryState &summary_state, const int report_step, const double secs_elapsed, const data::Wells &well_solution, const data::WellBlockAveragePressures &wbp, const data::GroupAndNetworkValues &group_and_nwrk_solution, const GlobalProcessParameters &single_values, const std::optional< Inplace > &initial_inplace, const Inplace &inplace, const RegionParameters &region_values={}, const BlockValues &block_values={}, const data::Aquifers &aquifers_values={}, const InterRegFlowValues &interreg_flows={}) const
 Calculate summary vector values.
void write (const bool is_final_summary=false) const
 Write all current summary vector buffers to output files.

Detailed Description

Computational engine for calculating summary vectors (2D curves as a function of time) and writing these values to the summary file.

Supports formatted and unformatted, unified and separate summary files.

Member Typedef Documentation

◆ BlockValues

using Opm::out::Summary::BlockValues = std::map<std::pair<std::string, int>, double>

Collection of per-block (cell) quantities.

Identifier associates a summary keyword and a block ID (linearised Cartesian cell index).

◆ InterRegFlowValues

using Opm::out::Summary::InterRegFlowValues = std::unordered_map<std::string, data::InterRegFlowMap>

Collection of named inter-region flows (rates and cumulatives).

Name may or may not include a region set identifier.

◆ RegionParameters

using Opm::out::Summary::RegionParameters = std::map<std::string, std::vector<double>>

Collection of named per-region quantities.

Name may or may not include a region set identifier.

Constructor & Destructor Documentation

◆ Summary()

Opm::out::Summary::Summary ( SummaryConfig & sumcfg,
const EclipseState & es,
const EclipseGrid & grid,
const Schedule & sched,
const std::string & basename = "",
const bool writeEsmry = false )

Constructor.

Parameters
[in,out]sumcfgOn input, the full collection of summary vectors requested in the run's SUMMARY section. On exit, also contains those additional summary vectors needed to evaluate any UDQ defining expressions.
[in]esRun's static parameters such as region definitions. The Summary object retains a reference to this object, so its lifetime should not exceed that of the EclipseState object.
[in]gridRun's active cells. The Summary object retains a reference to this object, so its lifetime should not exceed that of the EclipseGrid object.
[in]schedRun's dynamic objects. The Summary object retains a reference to this object, so its lifetime should not exceed that of the Schedule object.
[in]basenameRun's base name. Needed to create names of summary output files.
[in]writeEsmryWhether or not to additionally create a "transposed" .ESMRY output file during the simulation run. ESMRY files typically load faster into post-processing tools such as qsummary and ResInsight than traditional SMSPEC/UNSMRY files, especially if the user only needs to view a small number of vectors. On the other hand, ESMRY files typically require more memory while writing.

◆ ~Summary()

Opm::out::Summary::~Summary ( )

Destructor.

Needed for PIMPL idiom.

Member Function Documentation

◆ add_timestep()

void Opm::out::Summary::add_timestep ( const SummaryState & st,
const int report_step,
const int ministep_id,
const bool isSubstep )

Linearise summary values into internal buffer for output purposes.

Parameters
[in]stSummary values from most recent call to eval(). Source object from which to retrieve the values that go into the output buffer.
[in]report_stepOne-based report step index for which to create output. This is the number that gets incorporated into the file extension of "separate" summary output files (i.e., .S000n). Report_step=0 represents time zero.
[in]ministep_idZero based count of time steps performed.
[in]isSubstepWhether or not we're being called in the middle of a report step.

◆ eval()

void Opm::out::Summary::eval ( SummaryState & summary_state,
const int report_step,
const double secs_elapsed,
const data::Wells & well_solution,
const data::WellBlockAveragePressures & wbp,
const data::GroupAndNetworkValues & group_and_nwrk_solution,
const GlobalProcessParameters & single_values,
const std::optional< Inplace > & initial_inplace,
const Inplace & inplace,
const RegionParameters & region_values = {},
const BlockValues & block_values = {},
const data::Aquifers & aquifers_values = {},
const InterRegFlowValues & interreg_flows = {} ) const

Calculate summary vector values.

Parameters
[in,out]summary_stateSummary vector values. On exit, holds updated values for all vectors that are not user-defined quantities. UDQs are calculated in UDQConfig::eval() which should be called shortly after calling Summary::eval().
[in]report_stepOne-based report step index for which to create output. This is the number that gets incorporated into the file extension of "separate" summary output files (i.e., .S000n). Report_step=0 represents time zero.
[in]secs_elapsedElapsed physical time in seconds since start of simulation.
[in]well_solutionCollection of per-well, per-connection, and per-segment solution variables.
[in]wbpWell-block average pressures inferred from WPAVE (or WWPAVE) settings.
[in]group_and_nwrk_solutionConstraints, guide rates and nodal pressures for the extended network model.
[in]single_valuesnamed scalar quantities such as field-wide pressures, rates, and volumes, as well as performance related quantities such as CPU time, number of linear iterations &c.
[in]initial_inplaceVolumes initially in place. Needed to calculate recovery factors. Nullopt if such initial volumes are not available.
[in]inplaceCurrent volumes in place.
[in]region_valuesPer-region quantities. Empty if such values do not exist–typically in unit tests or if per-region summary output has not been requested.
[in]block_valuesPer-block (cell) quantities. Empty if such values do not exist (e.g., in unit tests) or if no per-block summary vectors have been requested.
[in]aquifers_valuesFlow rates, cumulatives, and pressures attributed to aquifers–both analytic and numerical aquifers. Empty if such values do not exist (e.g., in unit tests) or if per-aquifer summary vectors have not been requested.
[in]interreg_flowsInter-region flows (rates and cumulatives). Empty if no such values exist (e.g., in unit tests) or if no such summary vectors have been requested.

◆ write()

void Opm::out::Summary::write ( const bool is_final_summary = false) const

Write all current summary vector buffers to output files.

Parameters
[in]is_final_summaryWhether or not this is the final summary output request. When set to true, this guarantees that runs which request the creation of a "transposed" .ESMRY output file will create ESMRY file output containing all summary vector values.

The documentation for this class was generated from the following files:
  • opm/output/eclipse/Summary.hpp
  • opm/output/eclipse/Summary.cpp