Commit Graph

647 Commits

Author SHA1 Message Date
Arne Morten Kvarving
e686fabb39 added: class for calculating RPTRST CONV 2024-01-10 13:07:34 +01:00
Bård Skaflestad
60c7c79f58 Output Well Flow Sheets for All Wells
There is no need to restrict PRT file flow reports to those wells
which are active on the current rank since the SummaryState object
holds information for all wells active at the current report step.
2024-01-08 08:58:51 +01:00
Torbjørn Skille
72892f0c4b PRT file updates
* Arrays genarated from RPTSOL + FIP is now strictly following Eclipse format
* Adding reservoir volume array also for custom FIP regions
2024-01-03 21:47:54 +01:00
Tor Harald Sandve
f508f3d4e8 add output of dissolved solvent rswsol 2023-12-21 10:48:58 +01:00
Arne Morten Kvarving
de9c3ddfda added: test for outputdir 2023-12-19 15:21:58 +01:00
Arne Morten Kvarving
c95cd5b147 added: bool param to flag that Main.hpp should not initialize/finalize MPI
needed for tests
2023-12-19 15:12:44 +01:00
Atgeirr Flø Rasmussen
093b346426 Avoid modifying outputDir, leave empty if defaulted.
Handle this case for Damaris, which needs to be told the output dir
before this is available from the IOConfig.
2023-12-19 15:12:44 +01:00
Atgeirr Flø Rasmussen
1dbd971710
Merge pull request #4889 from jcbowden/damariswriter-for-sim-fields-v5
Geometric mesh data added for Damaris in-situ visualisation
2023-12-15 10:18:00 +01:00
Josh Bowden
54d6db6f35 Update 1 for code after code review of PR 4889 2023-12-13 18:13:55 +01:00
Markus Blatt
4f619f8f38 Also print information about parallel run to PRT file.
Up to now this information is only output to standard out.
To help with debugging and replicating (e.g. in case of crashes)
without saved standard putput, we now also print the imformation about
MPI processes and OMP threads to the PRT file.
2023-12-13 16:42:02 +01:00
Bård Skaflestad
c03f794f9c Remove Dashed Lines Between Records in PRT File Reports
This commit splits the production, injection, and cumulative
*Report_() functions into three logically distinct parts, one for
outputting the report header (begin*Report_()), one for outputting a
single report record (output*ReportRecord_()), and one for ending
the report (end*Report_()).  This simplifies the logic of the
*Record_() member functions since they no longer need to infer the
context which is already available in the caller and can perform a
more narrow task than before.

With this separation we're also able to remove the dashed lines
which would previously separate each report record, thereby creating
PRT file report sheets which have a more expected layout.

Moreover, as an aid to future maintenance, we also factor out common
code for the well and group cases in each *Record_() function.

Finally, fix a unit conversion problem in the report values for
cumulative gas quantities.  The sheet header states that we should
be outputting values in 'MM' prefixed units, but we were only
scaling the gas values by a factor of 1000 instead of 1000*1000.  In
other words, the injection and production gas values in the
cumulative sheet were off by a factor of 1000.
2023-12-11 10:01:22 +01:00
Arne Morten Kvarving
269d1877f7 SerializableSim: add virtual dtor 2023-12-08 18:42:07 +01:00
Bård Skaflestad
ec549df37b Remove Spurious Blank Lines in PRT File Reports
The StreamLog::addMessageUnconditionally() member function will end
each message with a newline (std::endl) so we should not add such
newlines ourselves.  The extra newline characters produce spurious
blank lines in the report sheets, e.g., for the "PRODUCTION REPORT".

This commit removes the last newline character from each report
request, thus deferring that responsibility to OpmLog::note()
instead.  Doing so, however, means we have take a little more care
with the first line of each report lest we create report sheets
which are smushed together.
2023-12-08 10:22:43 +01:00
Stein Krogstad
73ec44d9c4 include use-implicit-ipr as paramaeter 2023-12-07 13:09:00 +01:00
Arne Morten Kvarving
4eeefabedd changed: throw early in simulator serializer
if HDF5 input/output is requested but no support is available
we throw early instead of just logging an error when save/load
is to be performed
2023-12-06 10:03:29 +01:00
Arne Morten Kvarving
f46b6c5a01 changed: move simulator serialization to separate class
more separation of concerns
2023-12-05 11:20:22 +01:00
Bård Skaflestad
a6d583b9d0
Merge pull request #5024 from blattms/not-warn-loadStep-OutputDir
Do not warn about OutputDir when combined with LoadStep.
2023-11-24 19:03:52 +01:00
Atgeirr Flø Rasmussen
6945b927ec Minor refactoring of domain ordering for NLDD. 2023-11-24 14:57:45 +01:00
Markus Blatt
fa10546c0a Do not warn about OutputDir when combined with LoadStep.
Both can safely be used together.
2023-11-24 13:28:20 +01:00
Atgeirr Flø Rasmussen
6f04c31c7c Use string to enum helper. 2023-11-23 14:06:39 +01:00
Atgeirr Flø Rasmussen
7578fbf144 Change nldd default approach to gauss-seidel.
Also adjust local CNV tolerance scaling to 0.1 instead of 0.01.
2023-11-23 14:06:39 +01:00
Atgeirr Flø Rasmussen
94554ea4f2 Change default nldd number of domains to one per 1000 cells. 2023-11-23 14:06:39 +01:00
Atgeirr Flø Rasmussen
8acc8af2a4 Add MaxPressure NLDD domain ordering option, make it default. 2023-11-23 14:06:39 +01:00
Atgeirr Flø Rasmussen
9c9fae26a8 Require initial assembly for subdomains with Gauss-Seidel. 2023-11-20 12:59:44 +01:00
Bård Skaflestad
ea3b22480a Enable Loading Parallel NLDD Partition From File
This commit adds support for loading a three-column NLDD
partitioning scheme of the form

    MPI_Rank  Cartesian_Index  NLDD_Domain_ID

from a text file.  In an MPI run it is assumed that the first column
holds integers in the range 0..MPI_Size()-1, and typically that each
such integer is listed at least once.  In a sequential run, the MPI
rank column is ignored.

With this scheme we can load the same partition files that we write,
for increased repeatability and determinism, and we can also
experiment with externally generated NLDD partitions.
2023-11-17 17:39:17 +01:00
Bård Skaflestad
c0c96123bc Add Support for Writing NLDD-Like Partitions in Parallel
This commit adds a new (hidden) debugging option,

    DebugEmitCellPartition (--debug-emit-cell-partition)

which, when set, will cause each rank to write a three-column text
file of the form

    MPI_Rank  Cartesian_Index  NLDD_Domain_ID

into the directory

    partition/CaseName

of the run's output directory.  That file will be named according to
the process' MPI rank, so the first column will be the same as the
file name.

The option is primarily intended for debugging the NLDD partitioning
scheme, so is mostly reserved for runs with low MPI sizes (e.g.,
less than 20).

While here, also make the MPIPartitionFromFile helper class aware of
this format so that we can use concatenated output files as an input
to the MPI partitioning algorithm for repeatability.
2023-11-17 09:17:46 +01:00
Atgeirr Flø Rasmussen
d069081b52
Merge pull request #4960 from daavid00/dispersivity
Support for mechanical dispersion
2023-11-17 08:50:00 +01:00
David Landa Marban
bc03821d57 Support for mechanical dispersion 2023-11-16 16:55:01 +01:00
Bård Skaflestad
610c45aa77 Add Support for Reading MPI Partitioning From File
This commit introduces new, experimental support for loading a
partitioning of the cells from a text file.  The name of the file is
passed into the simulator using the new, hidden, command line option

    --external-partition=filename

and we perform some basic checking that the number of elements in the
partition matches the number of cells in the CpGrid object.
2023-11-16 16:28:14 +01:00
Bård Skaflestad
ed77c90238 Make Zoltan-Based Domain Partitioning MPI Aware
This commit switches the current implementation of
'partitionCellsZoltan()', i.e., 'partitionCells("zoltan", ...)' into
using the MPI-aware ParallelNLDDPartitioningZoltan utility.  In
doing so we make 'partitionCellsZoltan()' private since its
availability is not guaranteed.  We also slightly reorder the
parameters and switch from passing a "Grid" into passing a
"GridView" as an argument to partitionCells(), and specialise this
function for the known grid views in OPM Flow.

We extract the Zoltan-related parameters out to an Entity-dependent
helper structure and move the complexity of forming this type to a
new helper function, BlackoilModelEbosNldd::partitionCells().
2023-11-15 13:31:41 +01:00
Bård Skaflestad
fe67e9f9d3
Merge pull request #4978 from akva2/loghelper_refactor_fip_output
changed: refactor LogOutputHelper::fip
2023-11-10 14:49:09 +01:00
Arne Morten Kvarving
44ce054492 changed: refactor LogOutputHelper::fip
only do one output per call. allow passing the name of the
regions to process
2023-11-09 13:08:17 +01:00
Atgeirr Flø Rasmussen
4633578792 Add extra output to INFOITER file detailing unconverged wells. 2023-11-09 09:23:39 +01:00
Bård Skaflestad
abfb5c9d82 Update Well Topology if Triggered From ACTIONX
This commit adds a new flag data member,

    wellStructureChangedDynamically_

to the generic black-oil well model.  This flag captures the

    well_structure_changed

value from the 'SimulatorUpdate' structure in the updateEclWells()
member function.  Then, in BlackoilWellModel::beginTimeStep(), we
key a well structure update off this flag when set.  This, in turn,
enables creating or opening wells as a result of an ACTIONX block
updating the structure in the middle of a report step.
2023-11-07 17:02:18 +01:00
Tor Harald Sandve
968686e7e0
Merge pull request #4943 from hakonhagland/pybind3
Get simulator time step size from Python BlackOilSimulator module
2023-10-26 11:28:42 +02:00
Tor Harald Sandve
922fa5b9bf
Merge pull request #4853 from hakonhagland/pybind2
Get cell volumes from Python
2023-10-24 13:56:58 +02:00
Bård Skaflestad
e2ad737848 Make Number of Initial Global Iterations Configurable
The NLDD solver would always take one global non-linear (Newton)
iteration before starting the local non-linear iterations.  This
commit introduces a new command-line parameter,

    --nldd-num-initial-newton-iter (NlddNumInitialNewtonIter)

which allows the user to configure this value at runtime.  The
default value, 1, preserves the current behaviour.
2023-10-10 18:29:05 +02:00
Bård Skaflestad
0c7b0f5fcb Chase API Change for UDQ Evaluation
In particular, pass a "segment matcher factory" into every function
that forms UDQ context objects.
2023-10-04 16:33:19 +02:00
Kai Bao
83bbe89342 LocalWellSolveControlSwitching default to be false 2023-09-29 10:55:19 +02:00
Stein Krogstad
035d216641 adding function iterateWellEqWithSwitching
when we do the local solve for well equations, control/status will be
updated during the iteration process, such that the converged well gets
correct control/status regarding to the current reservoir state.

various change in the other parts of the code were made to make the
function work as intended.
2023-09-29 10:51:04 +02:00
josh bowden
7f7f3b06b2 Chane to fix issue with command line argument template
integrating code modification suggested by Arne Morten Kvarving (https://github.com/jcbowden/opm-simulators/pull/1)
2023-09-28 12:58:18 +02:00
josh bowden
8898db41d7 Reorganised headers, removing redundant ones;
Tidy up of whitespace.
2023-09-25 22:16:43 +02:00
josh bowden
c7c4bffa7c Refactored the Damaris command line functionality so that commandline arguments are accessed where they are needed in the DamarisKeywords() method 2023-09-24 22:23:31 +02:00
josh bowden
bb38c57b1b Update for support of Damaris mesh based in situ processing
Moved damaris command line parameter accessors to Main.cpp and fixed support for both Python and Paraview Python scripts, as they both cannot be present in the same simulation (seems to be an initialization conflict or double initialization)
2023-09-23 22:24:11 +02:00
josh bowden
8095eb0c48 Geometric mesh data added for in-situ visualisation
added access to DUNE mesh geometry and passing through data to Damaris;
Updated command line so users can specifiy Python or Paraview script names and other paramaters that control Damaris
- Simulation name
- Number of dedicated cores or dedicated nodes
- Shared memory region size
- switch to turn off HDF5 output.
- Damaris logging level
2023-09-22 23:23:29 +02:00
Markus Blatt
81c9594f5d Include name of missing OPM restart file in error.
Otherwise it is hard to tell for the (newbie?) user what went wrong.
2023-09-14 16:10:42 +02:00
Bård Skaflestad
a2d43cd0f5 Implement Interior Cell Counts for Grid Views
This is mostly to prepare for implementing partitionCells() for
grid views instead of grids.
2023-09-12 12:37:10 +02:00
Håkon Hægland
ac927d997b Added a get_dt() method
Added a get_dt() to the opm.simulators.BlackOilSimulator Python module.
This will return the size of the previous simulator time step.
2023-09-08 19:40:42 +02:00
Håkon Hægland
e2f62644ae Get cell volumes from Python
Adds a new method get_cell_volumes() to the opm.simulators Python module
that returns a python list of the cell volumes in the black oil
simulator.
2023-09-08 09:39:24 +02:00
Atgeirr Flø Rasmussen
87b9dd3ec2
Merge pull request #4837 from bska/remove-unused-code
Remove Unused Functions
2023-09-06 09:09:54 +02:00