My Project
|
A class to write the reservoir state and the well state of a blackoil simulation to disk using the Eclipse binary format. More...
#include <EclipseIO.hpp>
Public Member Functions | |
EclipseIO (const EclipseState &es, EclipseGrid grid, const Schedule &schedule, const SummaryConfig &summary_config, const std::string &basename="", const bool writeEsmry=false) | |
Sets the common attributes required to write eclipse binary files using ERT. | |
void | writeInitial (data::Solution simProps=data::Solution(), std::map< std::string, std::vector< int > > int_data={}, const std::vector< NNCdata > &nnc={}) |
Output static properties in EGRID and INIT file. | |
void | overwriteInitialOIP (const data::Solution &simProps) |
Overwrite the initial OIP values. | |
void | writeTimeStep (const Action::State &action_state, const WellTestState &wtest_state, const SummaryState &st, const UDQState &udq_state, int report_step, bool isSubstep, double seconds_elapsed, RestartValue value, const bool write_double=false) |
Write a reservoir state and summary information to disk. | |
RestartValue | loadRestart (Action::State &action_state, SummaryState &summary_state, const std::vector< RestartKey > &solution_keys, const std::vector< RestartKey > &extra_keys={}) const |
const out::Summary & | summary () |
EclipseIO (const EclipseIO &)=delete | |
A class to write the reservoir state and the well state of a blackoil simulation to disk using the Eclipse binary format.
void Opm::EclipseIO::overwriteInitialOIP | ( | const data::Solution & | simProps | ) |
Overwrite the initial OIP values.
These are also written when we call writeInitial if the simProps contains them. If not these are assumed to zero and the simulator can update them with this methods.
simProps | The properties containing at least OIP. |
void Opm::EclipseIO::writeInitial | ( | data::Solution | simProps = data::Solution() , |
std::map< std::string, std::vector< int > > | int_data = {} , |
||
const std::vector< NNCdata > & | nnc = {} |
||
) |
Output static properties in EGRID and INIT file.
Write the static eclipse data (grid, PVT curves, etc) to disk, and set up additional initial properties. There are no specific keywords to configure the output to the INIT files, it seems like the algorithm is: "All available keywords are written to INIT file". For the current code the algorithm is as such:
The container simProps contains additional 3D floating point properties which have been calculated by the simulator, this typically includes the transmissibilities TRANX, TRANY and TRANZ but could in principle be anye floating point property.
If you want the FOE keyword in the summary output the simProps container must contain the initial OIP field.
In addition:
void Opm::EclipseIO::writeTimeStep | ( | const Action::State & | action_state, |
const WellTestState & | wtest_state, | ||
const SummaryState & | st, | ||
const UDQState & | udq_state, | ||
int | report_step, | ||
bool | isSubstep, | ||
double | seconds_elapsed, | ||
RestartValue | value, | ||
const bool | write_double = false |
||
) |
Write a reservoir state and summary information to disk.
The reservoir state can be inspected with visualization tools like ResInsight.
The summary information can then be visualized using tools from ERT or ECLIPSE. Note that calling this method is only meaningful after the first time step has been completed.
The optional simProps vector contains fields which have been calculated by the simulator and are written to the restart file. Examples of such fields would be the relative permeabilities KRO, KRW and KRG and fluxes. The keywords which can be added here are represented with mnenonics in the RPTRST keyword.
The extra_restart argument is an optional aergument which can be used to store arbitrary double vectors in the restart file. The following rules apply for the extra data:
If the optional argument write_double is sent in as true the fields in the solution container will be written in double precision. OPM can load and restart from files with double precision keywords, but this is non-standard, and other third party applications might choke on those.
The misc_summary_values argument is used to pass pass various summary values which are of type 'ECL_SMSPEC_MISC_VAR' to the summary writer. The ability to pass miscellanous values to the summary writer is not very flexible: