Commit Graph

67 Commits

Author SHA1 Message Date
Markus Blatt
457d270bdf [refactor] Move cell centroid lookup magic to vanguard for reuse.
In addition to transmissibilities We will need this for the tracers,
too, and should prevent code duplication.
2021-10-04 09:47:03 +02:00
Arne Morten Kvarving
86fc165af6 remove template parameters for enableEnergy/Diffusion in transmissibility
- the diffusion one is basically done on runtime anyways
- the energy one gives some small code elimination gains
  however, it complicates the writing of downstream templates.
2021-05-20 08:53:40 +02:00
Arne Morten Kvarving
eaa09a3905 quell warnings in serial build 2021-05-13 22:40:39 +02:00
Arne Morten Kvarving
7ff44d9093 ecltransmissibility: separate from typetag
this allows using explicit template instantation to only
compile this code per grid, not per simulator object
2021-05-12 12:10:29 +02:00
Arne Morten Kvarving
215a8b7c25 eclcpgridvanguard: split in typetag dependent and typetag-independent parts 2021-05-11 11:30:35 +02:00
Kai Bao
2ee51c2e0d fixing the serial running due to including of eclmpiserializer.hh 2021-04-21 15:59:26 +02:00
Kai Bao
06fa81f4e3 following interface change for processEcipseFormat 2021-04-20 11:27:15 +02:00
Kai Bao
9f360c5c6d fixing the mistakes due to rebasing 2021-04-14 13:16:30 +02:00
Kai Bao
364187aa1a updating NNC after grid processing for parallel case
numerical aquifers might modify NNCs during grid processing, while it
only updates in the root process. Other processes need to be updated
too.
2021-04-14 09:47:57 +02:00
Joakim Hove
138e3b2af3 Report cell volume removed due to MINPV/MINPVV 2021-04-12 21:44:42 +02:00
Kai Bao
6061b5f5b0 updating the interface of function processEclipseFormat 2021-03-23 20:27:10 +01:00
Bård Skaflestad
c220d7f127 Push 'corners' Object into Assert
That way we don't get "unused variable" warnings when someone
defines NDEBUG.  While here, also switch to using Geometry
references where appropriate to avoid needlessly copying Geometry
objects.
2021-03-19 09:42:27 +01:00
Tor Harald Sandve
3df75f5ab6
Merge pull request #3076 from totto82/drsdt_dyn
Implement convective dissolution rate
2021-03-18 08:45:46 +01:00
Joakim Hove
b1c9e3a2cf Add comment about distribution 2021-03-01 16:51:10 +01:00
Tor Harald Sandve
9aa4c415ad Implement convective dissolution rate
The convective DRSDT is activated with DRSDTCON
2021-02-23 12:45:50 +01:00
Markus Blatt
e1e1ff9a17 Added support for external load balancer to EclCpGridVanguard.
You can use EclCpGridVanguard::setExternalLoadBalancer() to
set an external funtion that creates a vector of integers (containing
the partition for each cell) from the grid. If it is set then this
information will be used for loadbalancing, otherwise ZOLTAN.
2021-01-26 21:12:04 +01:00
Markus Blatt
f464d93f15 Activate distributed standard wells.
We introduce a new parameter --enable-distributed-wells=<true|false>
for this. During startup we check that the model either only has
standard wells or that multisegement wells are actively interpreted
as standard wells (by way of passing --enable-multisegment-wells=false
as an option).
2021-01-25 15:05:24 +01:00
Tor Harald Sandve
3cd0d9c29f dynamically set zoltan imbalance tolerance 2021-01-06 11:52:48 +01:00
Tor Harald Sandve
6cf91e7f19 Get compressed to cartesian mapping and depths from the vanguard 2020-12-11 12:48:01 +01:00
Markus Blatt
19bebcefe2 Broadcast schedule another time after filtering connection on rank 0
Only after rank zero does the filtering the schedule the well
definitions in there are guarateed to have no perforations to inactive
cells. Therefore we broadcast the schedule another time to publish
this to all processes.

Previously, we did the filtering locally on these processes bit that
did also remove perforations to cells that are active globally but
not locally. That seems very hard to work with when allowing
distributed wells.
2020-11-24 22:46:49 +01:00
Markus Blatt
d8eaef3271 Fixed and updated comment 2020-11-19 15:29:45 +01:00
Markus Blatt
46cb9012c0 Do not filter connections on the schedule of the loadbalanced grid.
It would remove perforated cells from wells that cross the local
domain's border. That would make it impossible to figure out the
first connection. In addition we would not be able to check that
the connections exist (as rank 0 would have the complete information
-> inconsistency).
2020-11-19 15:29:45 +01:00
Atgeirr Flø Rasmussen
c6203e9bec Add command line parameter --serial-partitioning. 2020-09-29 16:14:45 +02:00
Markus Blatt
1d94357558 Refactored how well information is exported after load balancing.
Previously, we exported an unordered map containing all names of
wells that are not present in the local part of the grid.

As we envision to have wells that are distributed across multiple
processors, this information does not seem to be enough. We need
to be able to set up communication for each well. To do this we need
to find out who handles perforations of each well.

We now export a full list of well name together with a boolean
indicating whether it perforates local cells (vector of pair of string
and bool).
2020-09-22 20:04:01 +02:00
Arne Morten Kvarving
3b21a8a481 changed: remove SET_TYPE_PROP macro usage 2020-08-28 10:44:53 +02:00
Arne Morten Kvarving
e8248b44ff changed: remove NEW_TYPE_TAG macro usage 2020-08-27 13:01:51 +02:00
Arne Morten Kvarving
74fac38d85 changed: remove GET_PROP_TYPE / GET_PROP macro usage 2020-08-27 08:19:39 +02:00
Arne Morten Kvarving
70908d9017 changed: remove BEGIN_PROPERTIES/END_PROPERTIES macro usage 2020-08-21 15:50:35 +02:00
andrthu
3d0d0f9624 Remove GhostLast ILU 2020-03-13 15:03:31 +01:00
andrthu
c91eb330d3 remove 2.6 and move ownerFirst in lb 2020-03-11 12:42:55 +01:00
andrthu
1fb0860712 add ownersFirst arguments. Change loadBalance to match change in opm-grid. 2020-03-11 12:41:37 +01:00
Markus Blatt
400ca4230b Use dynamic_cast to ParallelEclipseState and do error checking. 2020-03-10 14:29:19 +01:00
Markus Blatt
04311f6337 Allow auto creation of field properties arrays in ParallelEclipseState.
There are field properties that can usually be queried even if they
are not explicitly specified in the input
file (e.g. PVTNUM). Unfortunately, the ParallelEclipseState cannot
forsee which of these will be queried at startup and after the
loadbalancing only the master process is able to auto creates
these (easily). Hence this commit uses a fall-back if an unstored
keyword is queried. In this case we use get_global-* to auto create
the keyword and use functions of the cartesian mapper to extract the
relevant values on the process.

Of course this temporarily wastes space and we might want to resort to
a more memory savy approach later.
2020-03-10 11:36:02 +01:00
Markus Blatt
4c962e61d1 Also distribute the centroids when loadbalancing CpGrid.
They are attached to the cells as well and are now distributed
during CpGrid::loadBalance. Due to this change we also rename
FieldPropsDataHandle to PropsCentroidsDataHandle.
2020-03-06 14:09:32 +01:00
Markus Blatt
77478a59eb Use CpGrid::loadBalance to distribute the field properties.
The created data handle for the communication could in theory be used
with other DUNE grids, too. In reality we will need to merge with the
handle that ALUGrid already uses to communicate the cartesian indices.

This PR gets rid of using the get_global_(double|int) method in
ParallelEclipseState and reduces the amount of boilerplate code there.
2020-03-06 09:48:04 +01:00
Arne Morten Kvarving
293612265e fix build without MPI 2020-02-28 13:03:16 +01:00
Arne Morten Kvarving
05c0c4b6e8 Use the ParallelEclipseState and ParallelFieldPropsManager
with these in place, we now only parse the deck on the root process.
2020-02-28 10:26:55 +01:00
Arne Morten Kvarving
ac28bbfd15 changed: avoid usage of eclipseGrid on non-root processes setting up transmissibilities
obtain data from root process
2020-02-28 10:24:00 +01:00
Arne Morten Kvarving
4978e72039 bump required dune version to 2.6
remove compatiblity code with older versions
2020-02-06 16:24:39 +01:00
Arne Morten Kvarving
39492fdaf4 only calculate ACTNUM on root-process 2020-01-29 15:30:55 +01:00
Arne Morten Kvarving
d91155738f avoid dereferencing eclGrid and FieldProps on non-root processes setting up grids
these only used on root process in any case
2020-01-29 15:30:55 +01:00
Joakim Hove
0e9535319b
Simulate with only active cells (#2213)
Use FieldProps implementation for 3D properties
2020-01-13 15:46:50 +01:00
Markus Blatt
ecfbb0e491 Pass a pointer to the EclipseGrid to CpGrid::processEclipseGrid.
... instead of a reference This is needed as we only want to read the
full deck and construct the EclipseGrid only on the master process
with rank 0. Hence all other ranks will pass a nullptr to this
function. This will be possible with this move from a reference to a
pointer.
2019-12-18 21:39:08 +01:00
Joakim Hove
d4890f81f5 Use Dune communicator instead of raw MPI call 2019-12-14 13:54:06 +01:00
Joakim Hove
f4aa118cc4 Update the internal ACTNUM in the FieldPropsManager 2019-12-12 12:00:51 +01:00
Markus Blatt
e7f7ad2ddc Use ActiveGridCells instead of EclipseGrid when filtering connections.
The function signature has changed upstream.
2019-12-10 11:50:07 +01:00
Markus Blatt
bc98b20118 Only filter in filterConnections_ on root process.
When filterConnections_ is called the grid is not load
balanced, yet. Currently that means that grid() will also return the
unbalanced grid and all processes will see the whole global grid.

We will change semantics of the unbalanced grid soon: Only the root
process will see the whole grid and the others will see an empty
partition of it. Hence filtering on this partition will remove all
connections on all wells in the schedule for non-root processes and
produce wrong results.

For non-root process the filtering needs to be done on the load
balanced grid. This is accomplished by this commit.
2019-11-14 23:41:17 +01:00
Joakim Hove
fce5d2f369 Rename Well2 -> Well and Group2 -> Group 2019-11-13 23:18:01 +01:00
Markus Blatt
a597539342 Filter connections on non-IO ranks, too.
This removes a deadlock experienced for some models
where we have specified connections to non-active cells.

On non-IO ranks we are using the local grid since in the
future there will be no global grid available. Wells connecting
cells not on these processors are neglected anyway.

Closes #2101
2019-10-30 13:46:43 +01:00
Markus Blatt
5812b767ef Always initialize mpiRank in constructor and use it consistently.
We cannot use grid->comm().rank() to check whether we are an
IORank since for an unbalanced grid this will always be zero in the
master branch.
2019-10-14 14:32:22 +02:00