Commit Graph

74 Commits

Author SHA1 Message Date
Arne Morten Kvarving
07283aa780 EclCpGridVanguard: some modernization
- typedef -> using
- use constexpr
2022-08-10 12:44:53 +02:00
Elyes Ahmed
5c2b60bcd0 rebasing 2022-07-28 20:40:34 +02:00
Bård Skaflestad
7537d7ab95 Split Grid Distribution Out to Helper Functions
Mostly to reduce the number of nested scopes in doLoadBalance_() and
to make the data flow a little easier to track for human readers.
While here, also use down-casts to pointer instead of references.
Doing so replaces try/catch blocks with simpler if/else blocks.

Reimplement face transmissibility calculation/extraction loop in
terms of helper functions elements() and intersections().
2022-06-08 16:14:39 +02:00
Atgeirr Flø Rasmussen
1aed863956 Re-add grid view argument to doLoadBalance_(). 2022-06-08 15:33:32 +02:00
Bård Skaflestad
af94be5023 Use Consistent Grid Views for Transmissibility Calculation
There was an implied assumption that the "gridv" parameter would
coincide with "grid_->leafGridView()".  Make this assumption
explicit.
2022-06-01 14:34:28 +02:00
Tong Dong Qiu
61f693dbaf reenable normal opencl
Rebased
2022-04-21 17:18:54 +02:00
Tong Dong Qiu
e360c00b73 add block-jacobi partitioner option. Add block-jacobi matrix for use in OpenCL preconditioner
Rebased
2022-04-21 17:18:32 +02:00
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