Commit Graph

98 Commits

Author SHA1 Message Date
Andreas Lauser
f0e5a25126 make the dune-localfunctions dependency optional
as a side effect, two-point gradients are now used by default for the
vertex-centered finite volume discretization. (because P1-FE gradients
require the FE shape functions and those are provided by
dune-localfunctions.)

as a consequence, this triggered an update of quite a few reference
solutions: the differences are measurable, but as far as I can see,
the results are compareable. also, this commit regresses the
performance of the test for the reservoir problem with the vertex
centered finite volume scheme a bit. While I would not bet a house on
the reason, I'm pretty sure that this is caused by the switch from P1
FE gradients to two-point ones.

Note that even though I'm the author of this patch, it shamelessly
rips off substantial parts of the @dr-robertk's patch:
https://github.com/OPM/ewoms/pull/69
2016-09-22 15:23:14 +02:00
Andreas Lauser
f90d1058a2 remove the navier-stokes test problem
this problem did not work properly anyway: it oscillated like hell
(very likely to the spatial discretization used being inappropriate)
and it did not even converge if more than a single iteration was
required.
2016-09-22 14:58:19 +02:00
Andreas Lauser
c4b3864bca VTK output: start writing at sequence number 0
i.e., in most cases the initial solution will be written into file
$SIM_NAME-00000.vtu and each time step will be written to the file
with the same number as the one printed during the simulation. (note
that this statement does not apply if the visualization files are not
written for all time steps.)
2016-08-13 12:41:59 +02:00
Andreas Lauser
82b8335b6e rename "local AD" to "dense AD" 2016-06-04 23:56:47 +02:00
Andreas Lauser
4d37a50c83 remove support for the legacy ALUGrid library provided by dune-grid
now, the dune-alugrid module is required if these tests are to be
run. (note that due to the fact that the OPM build system has not been
detecting the legacy alugrid library for a while, the practical
implications of this patch should be small to non-existant.)
2016-05-04 13:22:51 +02:00
Andreas Lauser
1d38555f92 adapt to the removal of the tags for local-AD evaluations 2016-04-16 23:23:44 +02:00
Andreas Lauser
290584dddc clean up the licensing preable of source files
the in-file lists of authors has been removed in favor of a global
list of authors in the LICENSE file. this is done because (a)
maintaining a list of authors at the beginning of a file is a major
pain in the a**, (b) the list of authors was not accurate in about 85%
of all cases where more than one person was involved and (c) this list
is not legally binding in any way (the copyright is at the person who
authored a given change, if these lists had any legal relevance, one
could "aquire" the copyright of the module by forking it and removing
the lists...)

the only exception of this is the eWoms fork of dune-istl's solvers.hh
file. This is beneficial because the authors of that file do not
appear in the global list. Further, carrying the fork of that file is
required because we would like to use a reasonable convergence
criterion for the linear solver. (the solvers from dune-istl do
neither support user-defined convergence criteria not do the
developers want support for it. (my patch was rejected a few years
ago.))
2016-03-17 13:20:20 +01:00
Andreas Lauser
4b3d2edad1 remove support for Dune 2.2
this has slowly become a hassle to support (i.e., it cluttered the
source with many #if's and in particularly the code was not tested
with Dune 2.2 on a regular basis). Also, Dune 2.3 has been out since
more than two years, so IMO it is not asked too much to ask people who
want to use the latest and greatest version of ewoms to upgrade their
Dune.
2016-02-28 00:36:08 +01:00
Andreas Lauser
7b223ebef1 add a unit test for the blackoil fluidstate
this requires that the meat of the unit test for fluid states in
opm-material is moved to a publicly accessible place...
2016-02-01 17:25:14 +01:00
Andreas Lauser
a128d49a6d lens problem: some small performance improvements
the changes enable the storage cache and the intensive quantity cache
for all simulators of the lens problem and automatic differentiation
for the one which uses the ECFV discretization.

while the performance improvements are not worthwhile for the problem
in its default incarnation (using automatic diffentiation even
slightly degrades performance), it speeds up linearization by about
30% if the grid exhibits 16 times as many elements (e.g. by passing
the --grid-global-refinements=2) parameter.
2016-01-23 20:35:20 +01:00
Andreas Lauser
3e58df254b add alternative reference solutions for problems that use dune-alugrid
dune-alugrid >= 2.4 changed the element ordering changed from
lexicographical ordering to one defined by a space filling curve. the
old reference solutions are still valid (and obtained if older
versions of dune-alugrid are used) and are thus retained.
2016-01-17 21:15:01 +01:00
Robert Kloefkorn
7369f2d3b4 FingerProblem: fix wrong heuristix file. 2016-01-07 12:51:31 -07:00
Robert Kloefkorn
8526c6c0ea Merge remote-tracking branch 'upstream/master' into PR/ewoms-can-use-dune-fem 2016-01-06 16:21:17 -07:00
Andreas Lauser
877eccb4cc reservoir problem: various improvements
- start with an initial "do nothing" episode of 100 days to get
  hydrostatic conditions.
- after that, produce oil and inject water for 900 days. (thereafter
  the reservoir will be empty.)
- make the problem work with element centered FV discretizations. this
  requires to make the width of the injection/production areas at
  least one cell wide. This is achieved by using the new "WellWidth"
  property which specifies the with of wells as a factor of the total
  domain width.
- make the problem work with fully compositional models. This implied
  to calculate the full composition for the fluid states which specify
  the initial condition and the thermodynamic state at the wells.
- add tests and reference solutions for any combination of the {ECFV,
  VCFV} discretizations and the {black-oil, NCP} models.
2016-01-05 11:54:27 +01:00
Andreas Lauser
f6c835298a rewrite the mechanism to enforce constraint degrees of freedom
- the residual now does not consider constraints anymore
- instead, the central place for constraints is the linearizer:
  - it gets a constraintsMap() method which is analogous to residual()
    but it stores (DOF index, constraints vector) pairs because
    typically only very few DOFs need to be constraint.
- the newton method consults the linearizer's constraint map to update
  the error and the current iterative solution. the primary variables
  for constraint degrees of freedom are now directly copied from the
  'Constraints' object to correctly handle pseudo primary variables.
- the abilility to specify partial constraints is removed, i.e., it is
  no longer possible to constrain some equations/primary variables of
  a degree of freedom without having to specify all of them. The
  reason is that is AFAICS with partial constraint DOFs it is
  impossible to specify the pseudo primary variables for models which
  require them (PVS, black-oil).

  because of this, the reference solution for the Navier-Stokes test
  is updated. the test still oscillates like hell, but fixing this
  would require to implement spatial discretizations that are either
  better in general (e.g., DG methods) or adapted to Navier-Stokes
  problems (e.g., staggered grid FV methods). since both of these are
  currently quite low on my list of priorities, let's just accept the
  osscillations for now.
2016-01-05 11:54:26 +01:00
Andreas Lauser
2c97e90a79 make most indices unsigned
(instead of using 'int'.) This triggered quite a few compiler warnings
which are also dealt-with by this patch.
2015-11-18 18:09:56 +01:00
Andreas Lauser
45205b9791 improve the art2dgf utility and unit test
the utility is now more verbose (it actually prints what it does or
does not do), the test converts the example ART file shipped with
eWoms, and finally the art2dgf utility is now not considered a "unit
test" anymore (instead, it is an application).
2015-10-29 14:34:37 +01:00
Andreas Lauser
929673d337 add reference solutions for the finger and Navier-Stokes test problems
they are required because the element ordering of the latest
dune-alugrid has changed. (it now uses a space-filling curve instead
of lexicgraphic ordering.)
2015-10-21 18:39:59 +02:00
Robert Kloefkorn
5fb9c9e74e ArtGridManager: removed
DgfGridManager: added capability to handle fractures.
2015-10-20 14:40:18 +02:00
Andreas Lauser
bfd447c5c9 co2injection_ncp_ni_ecfv_parallel: remove the TEST_ARGS
it seems like problems are created if the initial time step is set to
1 second. let's not overanalyze this...
2015-10-07 19:02:58 +02:00
Robert Kloefkorn
6547f0e9ed Merge remote-tracking branch 'upstream/master' into PR/ewoms-can-use-dune-fem 2015-09-10 15:08:14 +02:00
Andreas Lauser
dfd2a291fd update the reference solution for the reservoir blackoil test.
I cannot really say which one is better, but at least the new one
looks more reasonable: gas appears at the top of the reservoir where
the pressure is lower instead of close to the bottom.
2015-09-05 12:36:43 +02:00
Andreas Lauser
8fbf0ed060 update the reference solution for the reservoir problem
the solution itself did not change, but yesterday's change of the
phase indices of the black-oil fluid system caused the fields to be
outputted in different order.
2015-09-03 00:34:20 +02:00
Andreas Lauser
4c8b0524f1 finger problem: provide a version that used the ECFV discretization
and some assorted cleanups.
2015-08-06 15:24:56 +02:00
Andreas Lauser
d9e3a6d919 re-add the emacs and vim modelines to all source files
this makes things easier and IMHO these two lines do not cause any
disturbance.
2015-06-18 13:43:59 +02:00
Andreas Lauser
7f942c7100 fix the regressions caused by PR#20
The most important issue was that PR#20 removed the possibility to use
a test driver script. In eWoms, this script is responsible for
(fuzzily) comparing the results of the test runs with reference
solutions, to test the simulators in parallel and compare the results,
and to make sure that the --help command continues to work as
intended.

the approach taken to bring this functionality back is to specify the
test driver script and its parameters using the new macro
'opm_set_test_driver(${DRIVER_COMMAND} ${DRIVER_DEFAULT_ARGUMENTS})'
before the first call to 'opm_add_test'. If no test driver is
specified, the binary is run 'naked', so nothing should change in this
case.

this patch requires the changes for opm-cmake to be merged first.
2015-05-27 16:38:24 +02:00
Andreas Lauser
beeddb0a05 add a test for the Richards model using the ECFV discretization 2015-05-21 16:18:22 +02:00
Andreas Lauser
216508ef13 use the infrastructural code using its new locations 2015-04-28 13:38:28 +02:00
Andreas Lauser
a58fd3186e update the reference solution for the reservoir problem
seems like the changes for vaporized oil caused it to be
different. Since SPE1 and SPE9 still deliver the same result and the
new reference solution is closer to what one would expect, the new
result is probably the correct one...
2015-02-12 11:40:56 +01:00
Andreas Lauser
506d14b2e4 rename "velocity modules" to "flux modules"
that's because these modules do not necessarily use a velocity to
calculate fluxes...
2015-01-05 15:25:19 +01:00
Andreas Lauser
a74a4d2f6e fix the dune 2.4 deprecation warnings
mainly this boils down to mapper.map(e) -> mapper.index(e)
2014-12-12 14:32:29 +01:00
Andreas Lauser
a8d5c72248 move everything which is ECL specific to applications/ebos
this helps to keep the core blackoil model code lean and mean and it
is also less confusing for newbies because the ECL blackoil simulator
is not a "test" anymore.

in case somebody wonders, "ebos" stands for "&eWoms &Black-&Oil
&Simulator". I picked this name because it is short, a syllable, has
not been taken by anything else (as far as I know) and "descriptive"
names are rare for programs anyway: everyone who does not yet know
about 'git' or 'emacs' and tells me that based on their names they
must be a source-code managment system and an editor gets a crate of
beer sponsored by me!
2014-11-28 13:01:32 +01:00
Andreas Lauser
fa2f2cf9ed TPFA: change the way how gradients are calculated
before this, gradients had the direction of the face between two
finite volumes, now they exhibit the direction of the two
FV-centers.

For axis-aligned grids the result is identical for interior faces, but
it is different for boundary faces or if faces are not
axis-aligned. This patch fixes the SPE9 troubles with anisotropic
permeabilities on tilted grids...
2014-09-03 17:01:22 +02:00
Andreas Lauser
0d2bcdf610 some smallish parallel ctest improvements
the goal is to make it faster on computers with many cores: The
easiest way to do this is to ensure that the longest running tests are
not taking too much time and that they need about the same time. Thus
this patch contains the following changes which limits the CPU time
taken by each test to about two minutes in debug mode on my machine:

 - the water-air problem using the non-isothermal primary variable
   switching model now uses an 16x16 instead of a 32x32 grid. as a
   compensation it now runs for a year instead of 5000 seconds and the
   global grid refinement is now tested.
 - the end time of the lens problem ctests is now 3000 instead of
   30000 seconds. The binary itself does not change at all.
 - sort the tests in the CMakeLists.txt roughly in the order of their
   required time. (this will cause ctest not having to wait for long
   running test which were started late for too long.)
2014-09-03 13:09:47 +02:00
Andreas Lauser
e9205777fc fix output of tensorial VTK fields in the MPI-parallel case
this implies a few new reference solutions...
2014-08-31 21:11:49 +02:00
Andreas Lauser
f5baa7d760 test the tensor-vtk-output code a bit by enabling to write the intrinsic perms for the lens problem
this requires new reference solutions...
2014-08-22 21:53:27 +02:00
Andreas Lauser
6d6640fc9d use dune-alugrid instead of the old version from dune-grid if the module is available 2014-07-30 12:42:32 +02:00
Andreas Lauser
d59f32edc4 reservoir problem: update reference solution
this is necessary because of 35b66fb46074b9872126ead6efe78283176978b7...
2014-07-24 18:50:57 +02:00
Andreas Lauser
cad639ec21 adapt to the reworked blackoil fluid system and function tabulation classes
in particular, the density of undersaturated oil is now the one
specified by the PVTO keyword...
2014-07-24 14:59:34 +02:00
Andreas Lauser
f7982e15ce parallelization: treat off-diagonal matrix entries on the process boundaries properly
this is required so that the element-centered finite volume method
does not handle each partition of the domain separately. (i.e. so that
fluxes accross faces on the process boundaries are considered) mea culpa!

The fix for this is to also include these entries in the matrix which
uses domestic indices. This required some rather extensive changes to
the blacklisting mechanism as for this it must be possible to
translate the index of a blacklisted entity (i.e., an entity in a
ghost or an overlap cell) to a domestic index (i.e., the corresponding
index in the algebraic overlap).

Note that the code for algebraic overlaps is *fun* and the person who
wrote it should be tarred and feathered. (*ouch* ;)) Seriously: Better
approaches than "lets-throw-this-away-and-use-grid-overlaps" are
deeply appreciated. (The grid overlap is not really useful in Dune
because only "Mickey Mouse grids" like Dune::YaspGrid support it.)
2014-07-21 21:25:27 +02:00
Andreas Lauser
899f25a40a add/rename reference solutions for the parallel lens problem tests 2014-07-12 11:24:30 +02:00
Andreas Lauser
ee8e522db8 lens problem: add an ECFV variant 2014-07-11 20:27:44 +02:00
Andreas Lauser
87316b2cdc reservoir test problem: change the reference solution
this became necessary after the recent correction of how the Rs value
is considered...
2014-07-08 10:13:55 +02:00
Andreas Lauser
44064ba84f blackoil model test: update reference solution
For some reason, it changed because of the transition to the primary
variable switching approach. Because I trust the new result more than
the old, let's make this the new reference solution.
2014-05-30 13:53:36 +02:00
Andreas Lauser
69e6fb60a2 rename the tests/grids folder to tests/data
... since the "grids" in that folder are slowly accumulating
information. (e.g. the ART grid for the fracture mapper and ECLIPSE
decks in the future.)
2014-05-08 15:31:32 +02:00
Andreas Lauser
6f09c94d60 test driver: print the full command used for each test
this simplifies analyzing failed tests in the debugger...
2014-05-02 16:06:46 +02:00
Andreas Lauser
f3e2454b4e test driver script: fix off-by-one error when calculating the number of timesteps
(the initial solution also counts but was not counted.)
2014-04-27 21:41:03 +02:00
Andreas Lauser
4c7a2d2ca0 add a simulator which uses Eclipse data files and the blackoil model 2014-04-27 19:12:32 +02:00
Andreas Lauser
a76b64bc56 refactoring: extend the TimeManager to become the Simulator
this also comes with moving responsibilities around and some smaller
cleanups for the grid creation. (although grid creation could be
possibly done by the simulator now, the GridCreator concept has not
been abandoned, yet...)
2014-04-27 19:12:32 +02:00
Andreas Lauser
55bb38118c problems: make the name() methods static
this allows to retrieve the name of the problem before it is
instantiated. this is required to be able to print the "Initializing
problem" message at the correct point (i.e., before instantiating the
problem).
2014-03-07 12:38:19 +01:00