Commit Graph

573 Commits

Author SHA1 Message Date
Robert K
6f55c862ce move Index query into if. 2014-12-04 17:55:29 +01:00
Robert K
cbfb4f0489 remove typename. 2014-12-04 14:01:06 +01:00
Robert K
855c278197 cleanup 2014-12-04 12:46:46 +01:00
Robert K
5583585063 Merge branch 'PR/performance-avoid-zero-matrix-entries' of ssh://github.com/dr-robertk/opm-autodiff into PR/performance-avoid-zero-matrix-entries
Conflicts:
	opm/autodiff/ConservativeSparseSparseProduct.h
2014-12-03 15:50:41 +01:00
Robert K
0495aaae8f if one of the matrices involved does not contain nonZeros, we can leave the product
routine.

Conflicts:
	opm/autodiff/ConservativeSparseSparseProduct.h
2014-12-03 15:49:26 +01:00
Robert K
21a9a7c446 avoid multiplication with empty matrices. 2014-12-03 15:48:43 +01:00
Andreas Lauser
1b22d3ab6b RateConverter: add missing call to averageTemperature()
thanks to [at] bska for noticing this!
2014-12-02 15:56:17 +01:00
Robert K
54feee5987 avoid the multiplication with zero matrix entries. 2014-12-02 14:57:00 +01:00
Robert K
054d4f4dcb include vector to make compile on proprietary systems. 2014-12-02 14:15:17 +01:00
Robert K
efe8ee79f9 added collapseJacs method. 2014-12-02 12:39:21 +01:00
Robert K
2ac6a211b2 use correct types of SparseMatrices. 2014-12-02 12:39:21 +01:00
Robert K
a266e98bac added some comment about sort. 2014-12-02 12:39:21 +01:00
Robert K
c51a794cac overloaded ConservativeSparseSparseProduct to speed up matrix-matrix multiplication. 2014-12-02 12:39:17 +01:00
Robert K
3f821f1d5f overloaded ConservativeSparseSparseProduct to speed up matrix-matrix multiplication. 2014-12-02 10:40:48 +01:00
Andreas Lauser
4e3a69cc90 PVT properties: allow them to be temperature dependent
Note that this patch does not introduce any real temperature
dependence but only changes the APIs for the viscosity and for the
density related methods. Note that I also don't like the fact that
this requires so many changes to so many files, but with the current
design of the property classes I cannot see a way to avoid this...
2014-12-01 20:06:02 +01:00
Robert K
9cffb51543 [bugfix] use SparseLU when UMFPack was not found. 2014-11-19 11:22:57 +01:00
Atgeirr Flø Rasmussen
933cfaf666 Improve performance of CPR preconditioner.
This restores the performance to approximately the level it had before
the change to support non-diagonal well jacobians, for SPE9. All changes
are to the eliminateVariable() method.
 - Explicitly compute and apply the inverse.
 - Change loop ordering to apply inverse only num_eq - 1 times, instead
   of (numeq - 1)^2.
 - Use UmfPackLU instead of SparseLU.
2014-11-13 16:56:11 +01:00
Tor Harald Sandve
19605a7826 BUGFIX. Currect scale of the mass balance residual
The mass balance residual is now currectly scaled with the time
increment divided by the sum of the pore volumes. Not the opposite.
2014-11-13 11:12:52 +01:00
Bård Skaflestad
e4ad38ec31 Merge pull request #231 from atgeirr/modify-convergence-output
Improve convergence output.
2014-11-12 22:43:47 +01:00
Atgeirr Flø Rasmussen
5dcccaf568 Fix convergence output header (again). 2014-11-12 21:37:51 +01:00
Atgeirr Flø Rasmussen
e5aef85295 Merge pull request #230 from totto82/fixSchur
Solve sub matrix systems in the Schur complement
2014-11-12 14:25:12 +01:00
Atgeirr Flø Rasmussen
f17660cc37 Further output refinement. 2014-11-12 11:18:35 +01:00
Atgeirr Flø Rasmussen
7f2c649496 Fix: change a CNVO to CNVW in header printout. 2014-11-12 10:29:27 +01:00
Atgeirr Flø Rasmussen
4270d51683 Improve convergence output.
- Add CNV{W,O,G} to output.
 - Make output a bit tighter.
 - Avoid printing extra newline and header for each iteration.
2014-11-12 10:23:12 +01:00
Tor Harald Sandve
12b8e9f061 Adressing comments in the PR
1. The right hand side is solved only once
2. The solver is constructed directly with the matrix
3. const is added where it was missing
4. More commennts is added
5. Variable names are changed for clarification
2014-11-12 09:11:16 +01:00
Atgeirr Flø Rasmussen
2a032dec71 Merge pull request #228 from totto82/partial_copy2
Use well to name mapping when copying the old well state to the new
2014-11-11 20:06:09 +01:00
Tor Harald Sandve
b614aa5f90 Adressing comments in the PR
The following comments has been adressed
1. An array is used in stead of pair
2. is not empty is used instead of size>0 to check if the well has been
initialized before
3. const_iterator is used instead of iterator
4. partial copy is removed
5. WellMapType is no longer mutable
2014-11-11 07:33:15 +01:00
Tor Harald Sandve
425aa6a00b Output the scaled mass balance residuals
The mass balance residuals are multiplied by the porevolume divided by
time
2014-11-10 13:37:34 +01:00
Tor Harald Sandve
ab7472b64c Change the maximum number of linear iteration
If we need more than 150 linear iterations, it's probably something
wrong, and we may be better of by restarting with smaller time-steps.
TODO: make it possible for the user to specify this number.
2014-11-10 12:17:36 +01:00
Tor Harald Sandve
6c4d62d7fd Solve submatrix system in the Schur complement
The non-diagonal elements in the sub-matrices in the Schur complement is
no longer ignored. Instead of assuming the matrix do be diagonal, and
compute the invert of the sub-matrix, small linear systems are solved
using superLU.

Tested on SPE3 and Norne. (With this fix a slightly modified norne runs
until 3292 days)
2014-11-10 10:26:12 +01:00
Tor Harald Sandve
9380ce71a2 Output the total mass balance residual
The residual output is changed from max residual to
total mass balance residual. In this way the output
resemble what is actually used as convergence criteria.
2014-11-10 09:29:13 +01:00
Tor Harald Sandve
b4a7b6157b Use well to name mapping when copying the old well state to the new
With the introduction of shut wells the same ordering in the well states
can no longer be assumed. The well names is instead used to map the old
well state to the new. Also the partial_copying is moved into the
initialization.

Tested on SPE1, SPE3, SPE9 and Norne. (Do not change the SPEs and is
nessesary for the Norne)
2014-11-10 08:47:42 +01:00
Tor Harald Sandve
0ff3322786 Use the same relative threshold for drs and drv update
The drs_max_rel param is renamed to dr_max_rel and used to restrict both
drs and drv.
2014-11-05 13:03:00 +01:00
Tor Harald Sandve
2e77d429ad do not keep oil/gas saturated if privious sg/so is sufficient large 2014-11-05 13:01:07 +01:00
Tor Harald Sandve
662a2faf76 Move the update of rs and rv after the phase transitions
The old rs and rv values are used in the phase transitions calculations.
The update of rs and rv to the state is therefore moved after the phase
transitions in order for the code to use the old values.
2014-11-05 12:35:32 +01:00
Robert K
05608a6145 stick to previous method of parameter extraction. grouping is not what we wanted here. 2014-10-22 15:29:20 +02:00
Robert K
2a7f951e25 provide default for parameter group. 2014-10-22 15:00:10 +02:00
Robert Kloefkorn
937555bb3b use group for timestep parameters. 2014-10-20 15:18:14 +02:00
Robert Kloefkorn
e68c58fb59 added linear to docu. 2014-10-20 14:47:45 +02:00
Robert Kloefkorn
42e4043c18 remove unused variable. 2014-10-20 14:47:33 +02:00
Robert Kloefkorn
fb32376d8f throw exception when convergence failed, also in NewtonSolver. 2014-10-17 12:40:25 +02:00
Robert Kloefkorn
cd7b6ce7f0 remove blank at end of line. 2014-10-17 12:25:13 +02:00
Robert Kloefkorn
28bac5ebc9 Merge remote-tracking branch 'upstream/master' into timestepcontrol 2014-10-17 12:24:00 +02:00
Bård Skaflestad
55226c3b86 Merge pull request #220 from qilicun/fix_phase_idx
phaseIdx in this for statement is actual active phase index, should not active once again.
2014-10-11 11:14:16 +02:00
Liu Ming
b183fdfa6d if all the phase are stagnate then stagnate will be true. 2014-10-11 13:46:24 +08:00
Liu Ming
5b28b38056 make the for statement more readable. 2014-10-10 17:01:05 +08:00
Liu Ming
66bb1fae8f phaseIdx in this for statement is actual active phase index, should not
active once again.
2014-10-10 16:21:29 +08:00
Robert Kloefkorn
c9859f6293 Merge remote-tracking branch 'upstream/master' into timestepcontrol 2014-10-09 15:45:43 +02:00
Robert Kloefkorn
9f58ad5476 bugfix, Mismatched free() / delete / delete [] in DuneMatrix due to use of new instead
of the matrix internal allocators.

This fix also avoid the copying of the BCRSMatrix by providing a contructor that creates
the DuneMatrix for a given Eigen SparseMatrix.
2014-10-09 14:06:02 +02:00
Robert Kloefkorn
ed75a02ac0 Merge remote-tracking branch 'upstream/master' 2014-10-09 14:03:42 +02:00
Robert Kloefkorn
62cefb3a3e print warning when off-diagonal element is found in Schur complement instead of OPM_THROW. 2014-10-07 10:00:38 +02:00
Robert K
c2e6b368ae revert Schur fix. 2014-10-06 15:59:01 +02:00
Robert K
a8c0f7df92 apply changes made in opm-core. 2014-10-06 15:53:17 +02:00
Robert K
c42eeffdeb remove unused output 2014-10-06 14:27:55 +02:00
Robert K
d4802121d3 moved the utility classes to opm-core. 2014-10-06 13:59:21 +02:00
Robert K
faf191b9f1 Merge remote-tracking branch 'upstream/master' into timestepcontrol 2014-10-06 13:58:54 +02:00
Bård Skaflestad
9124b6f56b Don't use 'typename' in non-template context
This fixes the build on GCC 4.4.

Pointy hat: @bska
2014-10-06 12:33:08 +02:00
Bård Skaflestad
9b10f7827b Merge pull request #210 from atgeirr/dune-matrix-hack
Add a horrible hack: DuneMatrix class.
2014-10-06 11:43:05 +02:00
Atgeirr Flø Rasmussen
304e0a7bfc Remove unneeded template argument. 2014-10-06 11:08:44 +02:00
Atgeirr Flø Rasmussen
0186d95d0b Fix usage of result from computePressures(). 2014-10-06 10:55:53 +02:00
Atgeirr Flø Rasmussen
328477e521 Merge pull request #208 from qilicun/fvf_phase_pressure
use phase pressure to compute FVF.
2014-10-06 09:08:45 +02:00
Robert K
2295718f59 enabled solver restart again. 2014-10-03 16:01:59 +02:00
Robert K
9e9ef0155c moved TimeStepControl to Simulator::run and make it work again. 2014-10-03 14:31:57 +02:00
Robert K
a723a01f72 some revision, time step control is now completly in the Simulator run method.
The solver simply returns a number of iterations.
2014-10-03 14:18:31 +02:00
Robert K
fcf6cd5f90 implemented the PID controler, seems to work fine. More testing needed. 2014-10-02 14:04:59 +02:00
Robert K
d3bc836536 make sub stepping a parameter. 2014-10-01 16:36:38 +02:00
Robert K
2602ae7baf enable substepping. 2014-10-01 15:45:27 +02:00
Robert K
f535761a17 only warn when non-diagonal block is found. 2014-10-01 15:45:11 +02:00
Robert K
d03f9411b6 first attempt to implement a time step control. 2014-10-01 13:50:08 +02:00
Robert K
ce996c2a6c intialialize parameter with given param. 2014-10-01 13:04:23 +02:00
Robert K
21593cf7eb only initialize solver parameters once to avoid default parameter output. 2014-10-01 12:57:17 +02:00
Robert K
739be5a873 revert to upstream/master. 2014-10-01 12:54:30 +02:00
Robert K
23a12421a8 revert changes. 2014-10-01 12:50:46 +02:00
Robert K
2a33063966 added solver parameters to void reading in every step. 2014-10-01 12:48:41 +02:00
Robert K
b337873e7f First version of time step control. Not really fully functioning yet. 2014-09-30 15:53:43 +02:00
Atgeirr Flø Rasmussen
31197e268f Remove unused code. 2014-09-30 10:12:10 +02:00
Atgeirr Flø Rasmussen
e256be267c Compile fix for Dune 2.2.
Some BCRSMatrix members are new in 2.3.
2014-09-30 09:57:45 +02:00
Atgeirr Flø Rasmussen
1602fce6b9 Add DuneMatrix class.
This is a hack to get a more efficient constructor for dune-istl
matrices from Eigen matrices.
2014-09-26 15:03:59 +02:00
Atgeirr Flø Rasmussen
6c7061096a Improve performance of subset() and superset().
Using a different construction method for the sparse matrix
used makes the methods a little faster. There is probably
still room for improvement by refactoring to avoid the
sparse matrix products.
2014-09-25 11:38:48 +02:00
Liu Ming
5657d32884 use phase pressure to compute FVF. 2014-09-25 14:34:04 +08:00
Atgeirr Flø Rasmussen
5d59a97972 Add parameters controlling amg usage in cpr preconditioner.
New parameters are:
 - cpr_use_amg      (default false) if true, use AMG preconditioner for elliptic part
 - cpr_use_bicgstab (default true)  if true, use BiCGStab (else use CG) for elliptic part
2014-09-22 10:10:11 +02:00
Atgeirr Flø Rasmussen
25c9b36d4f Use new location of warning suppression header. 2014-09-20 10:39:34 +02:00
Atgeirr Flø Rasmussen
fe7e408e46 Merge pull request #204 from bska/fix-oob-pix
Fix out-of-bounds indexing into PVT function table
2014-09-20 08:45:26 +02:00
Joakim Hove
2a9f6e8d35 Merge pull request #203 from andlaus/table_improvements
dapt the the table related API changes of opm-parser
2014-09-19 15:27:35 +02:00
Andreas Lauser
0f436e12c9 adapt the the table related API changes of opm-parser 2014-09-18 16:49:29 +02:00
Robert Kloefkorn
f299b5f5d0 apply nitpicks comments and avoid delete. 2014-09-18 15:11:50 +02:00
Robert Kloefkorn
f4129742a5 Merge remote-tracking branch 'upstream/master' 2014-09-18 14:56:50 +02:00
Bård Skaflestad
a0567cc887 Fix out-of-bounds indexing into PVT function table
The 'props_' table of PVT functions has one entry for each active
phase.  Fix four instances of indexing into the table using the
canonical rather than active phase indices.

This is necessary, but not sufficient, to run two-phase problems
without a "dummy" third phase.
2014-09-18 00:19:35 +02:00
Tor Harald Sandve
bde173a1d3 Add comments and change order for readability. 2014-09-10 14:31:51 +02:00
Tor Harald Sandve
bbf6d56000 Calculate oil saturation from changes in water and gas saturation
First the change in oil saturation is calculated from changes in water
and oil saturation. Then oil saturation is updated based on this change
instead of just fixed to 1-sw-sg. With this change the oil saturation is
less sensitive towards numerical errors that may cause very small oil
saturations. Witch again may cause the simulator to think that the gas
phase is saturation with vaporized oil when it is not.
2014-09-10 14:19:34 +02:00
Robert Kloefkorn
d46fbe6728 enabled DUNE-ISTL::AMG and DUNE-ISTL::CGSolver.
The default is the same as before, i.e. DUNE-ISTL::ILU0 and DUNE-ISTL::BiCGSolver
for solving the elliptic problem.
2014-09-04 17:06:00 +02:00
Atgeirr Flø Rasmussen
65ce6b4d22 Merge pull request #196 from totto82/bugfix_thpress
Apply threshold pressure for all dp
2014-09-04 15:26:19 +02:00
Atgeirr Flø Rasmussen
e597bbeca6 Merge pull request #193 from blattms/fix-176
Makes distinction between functions more clear. (#176)
2014-09-04 08:37:33 +02:00
Tor Harald Sandve
024fe9c7b6 Apply threshold pressure for all dp
The threshold pressure is applied for all dp.
The sign of the threshold pressure is given by the sign of the dp.
2014-09-03 11:05:14 +02:00
Tor Harald Sandve
e4dc5c28b3 Add output of RS and RV to outputStateMatlab 2014-09-02 15:08:22 +02:00
Bård Skaflestad
d0b677920a Merge pull request #190 from atgeirr/threshold-pressure
Threshold pressure
2014-08-29 09:14:24 +02:00
Markus Blatt
7127101c1c Makes distinction between functions more clear.
Currently, there are two abstract interface for the grids. One that
usually returns pods and arrays of them that also can be used by C
and is used also in opm-core, and one that returns Eigen datastructures
 needed within opm-autodiff.

This commit adds a postfix ToEigen to those functions (faceCells, and
cellCentroidsZ) one could imagine to also return pods and arrays of them.
This should at least resolve the confusion about the two faceCells functions.

The next step will be issue #192
Fixes #176
2014-08-28 14:44:13 +02:00
Atgeirr Flø Rasmussen
971e01fdd7 Suppress warnings of various kinds. 2014-08-27 19:56:13 +02:00
Atgeirr Flø Rasmussen
a48ab0188a Fix bug: exactly the wrong potentials were nullified. 2014-08-27 18:23:11 +02:00
Atgeirr Flø Rasmussen
efbf42120b Resize array before assigning elements. 2014-08-27 18:23:10 +02:00