Commit Graph

545 Commits

Author SHA1 Message Date
Atgeirr Flø Rasmussen
80b0921ce3 Use generic WellsManager constructor.
Also fix minor whitespace issues.
2014-08-12 12:54:16 +02:00
Atgeirr Flø Rasmussen
2aff3e3750 Fix template argument of solver class. 2014-08-12 12:26:26 +02:00
Atgeirr Flø Rasmussen
b85ba1bcc0 Clean up files and streams for timing output.
Total time will be written to walltime.txt, and single step times to
step_timing.txt (changed suffix from param to txt). This did not work
properly before this fix (step_timing file was overwritten each step).
2014-08-12 09:28:28 +02:00
Atgeirr Flø Rasmussen
120e9d02d4 Remove unused pore volume calculations. 2014-08-11 15:06:45 +02:00
Atgeirr Flø Rasmussen
d170de43cb Merge remote-tracking branch 'GitPaean/New_BLACKOIL_SIMULATOR' into restructure-sim
Conflicts:
	examples/sim_fibo_ad.cpp
	opm/autodiff/SimulatorFullyImplicitBlackoil_impl.hpp
2014-08-11 14:01:54 +02:00
osae
3ff807edc4 Revert "Re-introduced tempoary fix for singular matrix."
Seems not to be needed any more ...
This reverts commit bb12bdd1fd.
2014-08-08 16:10:03 +02:00
osae
4ce61b7c7c Support for kw VAPPARS.
When this kw is active, BlackoilPropsAdFromDeck now modifies rvSat
and rsSat curves cell-wise by a power of (sat_oil_cell /
sat_oil_cell_historical_max).   Currently, the associated jacobians do
not reflect terms of type d/d_sat_oil, but code for doing this is given
as comments to BlackoilPropsAdFromDeck::applyVap(ADB& r, ...).
2014-08-08 13:17:33 +02:00
osae
bb12bdd1fd Re-introduced tempoary fix for singular matrix. 2014-08-08 12:44:55 +02:00
Bård Skaflestad
a3bc595a91 Aesthetics: Turn if-else into switch()
This commit replaces an if-else-based query of the primaryVariable_
with the equivalent switch() statement for uniformity with the rest
of the implementation.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
0f663dfe9f Implement RESV control mode for producers
This commit introduces support for the RESV control mode of
prediction (WCONPROD) and history-matching (WCONHIST) alike.  The
implementation uses class SurfaceToReservoirVoidage<> to compute
coefficients that convert component rates at surface conditions
(i.e., the primary degrees of freedom in the well residual) to phase
rates at reservoir condition.  The resulting coefficients can be
entered directly into system matrix of the linearised residual.

Note: We abuse the "distr" mechanism of struct WellControls to store
the conversion coefficients.  This may require refactorisation and
clarification at a later stage.  In the meantime, it allows for
transparent assembly of well equations--irrespective of surface- or
reservoir (voidage) rates.

Note: We do not yet support injectors controlled by total reservoir
voidage rate--either in history-matching (WCONINJH) or
prediction-scenario capacity.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
23520be41a RESV: Prepare for dynamic rate distribution calculation
This commit changes the API of class SimulatorFullyImplicitBlackoil<>
in order to support wells controlled by (total) reservoir voidage
volume rates.  Specifically, we switch to holding a mutable Wells
object (backed by a std::shared_ptr<>) in class Impl rather than a
reference to a WellsManager.  This allows dynamically updating rate
distributions and targets of individual well controls.  That, in
turn, is a prerequisite to supporting ECL-style "RESV" control
modes--be it in prediction or history matching capacity.

While in the process of API changes, also prepare for the second
stage of "WCONHIST/RESV" support: Accept a ScheduleConstPtr that
holds the input deck's notion of the history matching vs. prediction
controls.  We need to distinguish the two in order to support the
exact semantics of "WCONHIST/RESV".

Update SimFIBO<> clients accordingly.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
91567a9857 Remove long-disabled parameter setup code
This was copy-pasted into the class at its inception (a94f1921) and
never used thereafter.  If we need it we can bring it back in
modified form at a later stage.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
1e7967aeb1 Prune unused header
The column-extraction feature was not used in this module.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
82fc769922 RESV: Add facility for surface-to-reservoir rate conversion
This commit adds a simple facility for converting component rates at
surface conditions to voidage rates at reservoir conditions.  It is
intentionally limited in scope and meant to be employed only in the
context of class FullyImplicitBlackoilSolver<> or something very
similar.  In particular, class SurfaceToReservoirVoidage<> assumes
that it will be used to compute conversion coefficients for
component rates to voidage rates, and that those coefficients will
typically be entered into the coefficient matrix of a linearised
residual.

Add a trivial test just to demonstrate the setup and calling
process.  This is not a feature or correctness test.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
252fdc3720 Time loop: Remove unused variable 2014-08-08 11:40:50 +02:00
Bård Skaflestad
5f7adfa341 Time loop: Remove control mode switching
The solver (class FullyImplicitBlackoilSolver<>) gained the ability
to do control mode switching/updating in commit 4a22c56 at which
point using WellsManager::conditionsMet() ceased to be useful.  This
is a preparatory step towards adding support for RESV-type control
modes.

If we need this type of behaviour in the Simulator*, we can bring it
back (in modified form) at a later time.
2014-08-08 11:40:50 +02:00
Bård Skaflestad
88bb04c72f Fix contextual misprint: face -> phase 2014-08-08 11:40:50 +02:00
Atgeirr Flø Rasmussen
cc5fa94e46 Remove unused grav_ member and function used to compute it.
This is a relic of the way we originally handled gravity. The member
remained after the change, and is now a major time-consumption sink
due to the unfortunate fact that it is computed every time step
(unnecessary), and because the gravityOperator() function (now removed)
was very unperformant after changing to use the faceCells() function.
2014-08-05 11:27:00 +02:00
Kai Bao
2ac5146cfc Adding ErrorMacros.hpp to GeoProps.hpp
#include <opm/core/utility/ErrorMacros.hpp>
2014-07-29 11:40:52 +02:00
Andreas Lauser
e07ef16a45 implement pore volume and transmissibility multipliers
this means that the NTG, MULTPV and MULT[XYZ]-? keywords are now
supported.

Actually FAULTS and MULTFAULT are supported too, but that's abstracted
away by opm-parser's TransMult class. (Kudos to [at]joakim-hove for
implementing this.)
2014-07-28 11:30:13 +02:00
Kai Bao
eb3445e6a1 Finishing compliation. 2014-07-27 17:31:00 +02:00
Kai Bao
1e8d5e65b7 Finishing changing. Testing Later 2014-07-25 19:13:23 +02:00
Kai Bao
013e4e452a Merge remote-tracking branch 'upstream/master' into New_BLACKOIL_SIMULATOR 2014-07-25 15:56:52 +02:00
Kai Bao
8da842d1f3 Commit for saving. 2014-07-24 17:06:43 +02:00
Andreas Lauser
63eaecf246 DerivedGeology: pass the EclipseState object to its constructor
this is required to implement pore volume and permeability multipliers
as discussed with [at]bska and [at]joakim-hove.

Note that this implies that the DerivedGeology class can't be
instantiated anymore if there is no EclipseState object. Thus all code
paths and tests that don't load a deck are removed by this patch. If
this is undesireable, there are two options: First, don't require
EclipseState for DerivedGeology which would imply to make the about 10
required multiplier functions part of the
BlackoilPropertiesAdInterface, or second, one can copy-and-paste the
DerivedGeology class as it was before this patch, derive from a newly
introduced DerivedGeologyInterface and pass DerivedGeologyInterface
objects to the simulator. IMHO, the second solution would be a bit
better but it would involve substantial overhead to implement and to
maintain it.

Anyway, in the mean time simulators cannot be instantiated without
decks.
2014-07-24 16:37:38 +02:00
Andreas Lauser
543d8d75b6 pass the DerivedGeology to the simulators
this was decided to be a good idea by [at]bska. (If I interpreted him
correctly, obviously.)
2014-07-24 16:37:38 +02:00
Atgeirr Flø Rasmussen
1faf5da05b Added test to ensure active gas phase. 2014-07-23 11:41:06 +02:00
Atgeirr Flø Rasmussen
92f20c6040 Update phase condition vector from primary variables.
This is necessary as an interim measure, since the phase condition vectors are
still used in property calculations.
2014-07-17 14:34:07 +02:00
Atgeirr Flø Rasmussen
cc4504c405 Merge pull request #159 from bska/fix-gpot
Fix one-sided gravity potential calculation
2014-07-07 15:36:41 +02:00
Bård Skaflestad
1257c03d26 Fix one-sided gravity potential calculation
Commit 5112b8a misinterpreted the role of index 'i' and, as a result,
installed code that would only define one-sided gravity potentials of
the first cell (roughly)--albeit eventually using the geometry of the
last active cell.

This commit restores the original, intended behaviour.
2014-07-03 00:27:39 +02:00
Bård Skaflestad
a5d3017062 assemble: Fix out-of-bounds indexing
The 'material_balance_eq' is indexed by active, not canonical, phase
indices.  Replace 'Oil' and 'Gas' with the appropriate 'phase_pos'
values.
2014-07-03 00:27:18 +02:00
Bård Skaflestad
78b87b8857 variableState: Don't form objects when references suffice
There's no need to form new objects, especially for the 'xvar', when
there are existing objects to which read-only references can be
bound.
2014-07-03 00:27:17 +02:00
Bård Skaflestad
eccc5c9694 variableState: Use pre-computed list of "all cells"
Class FullyImplicitBlackoilSolver<Grid> already features a list of
"all" cells, built at object construction time.  There's no need to
re-compute that list on every call to variableState() (when Gas is
active).
2014-07-03 00:27:17 +02:00
Bård Skaflestad
f69530a7d4 variableState: Defer r{s,v}Sat calculation
Quantities rsSat and rvSat are not needed unless we have an active
Gas phase.  Don't calculate them until we know that they are
actually needed.
2014-07-03 00:27:17 +02:00
Bård Skaflestad
35d883319b variableState: Don't reference non-existing variable
The "xvar" exists only if Gas is active.  Therefore, we cannot
extract that variable from "vars" unless we know that Gas is an
active phase.  Failing to do so would wrongfully increment 'nextvar'
whence the final BHP variable would be an out-of-bounds access.
2014-07-03 00:27:17 +02:00
Bård Skaflestad
13d3a42448 Fix phase property references
Methods 'computeRelperm()' and 'computePressures()' *always* return
a three-element vector of phase properties.  We must therefore
translate to canonical phase indices before indexing into the
results.
2014-07-03 00:27:17 +02:00
Tor Harald Sandve
02ce468c01 Support Oil/Water case
The updatePrimalVariableFromState is now only called when
the gas phase is active.
2014-06-13 14:44:21 +02:00
Tor Harald Sandve
3e3b39df07 Introduce primaryVariable_ and use it to switch primary variables 2014-06-13 14:31:40 +02:00
Tor Harald Sandve
8a600747fa Read DISGAS and VAPOIL from deck and pass them to the simulator 2014-06-13 14:29:52 +02:00
Bård Skaflestad
aecfa3ed50 Merge pull request #150 from andlaus/enable_property_modifiers
glue in support for property modifiers
2014-06-11 22:46:36 +02:00
Andreas Lauser
776f5e9005 explicitly include <array>
it _seems_ like this causes the build  failures of the RHEL 5 build at
statoil: http://opm-project.org/CDash/viewBuildError.php?buildid=18933
2014-06-09 13:22:40 +02:00
Andreas Lauser
0219f83563 glue in support for property modifiers
i.e. reading the grid properties from EclipseState instead of from the
raw deck. This requires that all deck files exhibit a GRID and a
SCHEDULE section or else EclipseState will throw in the constructor.
2014-06-09 12:36:46 +02:00
Bård Skaflestad
c834177897 Merge pull request #131 from andlaus/implement_multi-region_pvt_tables
implement multi-region PVT
2014-06-06 14:38:35 +02:00
Kai Bao
51fae6ca70 Removing some comments. 2014-05-23 14:55:54 +02:00
Kai Bao
f516bd6ce3 Removing some comments and debugging output. 2014-05-23 14:53:54 +02:00
Kai Bao
c96637ab96 Changing detectNewtonOscillations() a little bit.
Changing detectNewtonOscillations() a little bit for ease in reading.
2014-05-23 14:50:49 +02:00
Kai Bao
508a0c11ef Adding some comments before calling stablizeNewton. 2014-05-23 14:25:58 +02:00
Kai Bao
bb22f3572d Adding size function in LinearisedBlackoilResidual.
int sizeNonLinear() const;
To compute the size of the non-linear system.
2014-05-23 13:40:44 +02:00
Kai Bao
9fe98514c0 Changing the location of & when defining reference. 2014-05-23 11:39:26 +02:00
Kai Bao
1da24f3c3c Changing the way of string comparison to ==. 2014-05-23 10:07:02 +02:00
Kai Bao
cb48d185b9 The reference is used for residual_histroy.
In the detectNewtonOscillations().
2014-05-23 09:55:29 +02:00
Kai Bao
f2518b6647 Removing the output of the size of system. 2014-05-22 22:15:55 +02:00
Kai Bao
cd174c5ba4 Merge branch 'specifying_maximum_iterations' into oscillation_treatment_withlimitedupdate
Conflicts:
	opm/autodiff/FullyImplicitBlackoilSolver.hpp
	opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp
2014-05-22 22:13:14 +02:00
Kai Bao
6e6339d8c3 Adding user-specifying max iteration. 2014-05-22 22:09:54 +02:00
Kai Bao
fdb201d365 Restoring maxit to be 15. 2014-05-22 21:59:27 +02:00
Kai Bao
8a905535ce Removing some spaces. 2014-05-22 21:58:44 +02:00
Kai Bao
6ac95ac7a8 Removing some debugging output. 2014-05-22 21:56:00 +02:00
Kai Bao
5c409173b4 Removing some debugging output. 2014-05-22 20:56:22 +02:00
Kai Bao
95cd33185b Correcting the determination of stagnate. 2014-05-22 20:25:58 +02:00
Kai Bao
f597e2117d Rewriting the detection function with for loop.
It is more automatic while it remains to change to some more flexible
form.
2014-05-22 16:07:17 +02:00
Kai Bao
d7aa21dc03 Merge branch 'master' into oscillation_treatment_withlimitedupdate
Conflicts:
	opm/autodiff/FullyImplicitBlackoilSolver.hpp
2014-05-22 09:59:50 +02:00
Atgeirr Flø Rasmussen
cb327ce63a Warning removal: const on return types not needed. 2014-05-21 19:49:29 +02:00
Bård Skaflestad
f0d908d104 Merge pull request #140 from atgeirr/cpr-preconditioning
Cpr preconditioner
2014-05-21 15:36:12 +02:00
Atgeirr Flø Rasmussen
f48ee55c0d Change error message. 2014-05-21 13:15:42 +02:00
Atgeirr Flø Rasmussen
e9ab64fd18 Remove usage of DUNE_UNUSED_PARAMETER. 2014-05-21 13:14:02 +02:00
Kai Bao
2733b5459e Removing the space before (). 2014-05-21 11:02:04 +02:00
Kai Bao
252048b30a Removing one blank line. 2014-05-21 11:00:24 +02:00
Kai Bao
0178bd1b8c Removing the bool paramters calling stablizeNewton. 2014-05-21 10:47:55 +02:00
Kai Bao
5277fa389d Removing two input paramters in stablizeNewton().
Removing the bool input parameters osicllate and stagnate from the
stablizeNewton(). Basically, the value omega will decide if the
relaxation will be applied.
2014-05-21 10:44:20 +02:00
Kai Bao
578abe3b78 Merge branch 'master' into oscillation_treatment_withlimitedupdate
Conflicts:
	opm/autodiff/FullyImplicitBlackoilSolver.hpp
2014-05-21 10:12:49 +02:00
Atgeirr Flø Rasmussen
3e956a9659 Merge pull request #139 from GitPaean/limited_variable_update
Limited variable update
2014-05-20 21:52:22 +02:00
Kai Bao
827cd7e8e4 Removing the param.has() if condition. 2014-05-20 19:53:39 +02:00
Kai Bao
44a3dbd732 Finishing the workflow. 2014-05-20 19:52:15 +02:00
Atgeirr Flø Rasmussen
fec6154d81 Remove unused data members and parameters. 2014-05-20 15:23:04 +02:00
Kai Bao
63c53096cd Using param.getDefault() instead of param.get().
And also remove the space in dsMax (), drsMaxRel (), dpMaxRel ().
2014-05-20 15:17:37 +02:00
Kai Bao
0e244a4845 Commit to save changes. 2014-05-20 15:00:49 +02:00
Atgeirr Flø Rasmussen
023a46fa12 Put creation of elliptic system in separate function. 2014-05-20 14:24:24 +02:00
Atgeirr Flø Rasmussen
b823324e59 Cite CPR article by Gries, Stuben et al. 2014-05-20 14:23:49 +02:00
Kai Bao
9557db4c15 Merge branch 'limited_variable_update' of github.com:GitPaean/opm-autodiff into oscillation_treatment_withlimitedupdate
Conflicts:
	opm/autodiff/FullyImplicitBlackoilSolver.hpp
2014-05-20 13:45:13 +02:00
Kai Bao
c617623eb1 Adding debugging output. 2014-05-20 13:31:13 +02:00
Kai Bao
79916078f2 Changing the defalut value for the paramters.
Add reordering the intialization order to removing the reordered
warning.
2014-05-20 13:05:11 +02:00
Kai Bao
8dcae05a7b Revising the function stablizeNewton().
For the SOR type relaxation, we need the dx from the previous iteration.
2014-05-20 11:25:04 +02:00
Kai Bao
5b6c325a32 Finish the first stablizeNewton(). 2014-05-19 18:41:38 +02:00
Kai Bao
ab8636b57d Add function detectNewtonOscillations. 2014-05-19 15:43:56 +02:00
Kai Bao
341f727467 Add the residuals() function. 2014-05-19 13:06:44 +02:00
Atgeirr Flø Rasmussen
307cd6ef33 Add convergence check, local whitespace cleanup. 2014-05-19 11:21:23 +02:00
Atgeirr Flø Rasmussen
ec03062b51 Remove unused code. 2014-05-19 11:13:17 +02:00
Kai Bao
a969025c5e Add a residuals function prototype. 2014-05-19 10:41:23 +02:00
Kai Bao
2b31ab6111 Removing one blank line. 2014-05-16 18:27:23 +02:00
Kai Bao
d461eb9e76 Cleaning up some debugging output. 2014-05-16 18:15:42 +02:00
Kai Bao
f2ecbf163e Cleaning up some debugging output. 2014-05-16 18:13:36 +02:00
Kai Bao
cd50b54ddf Finishing the modification for solver class. 2014-05-16 18:02:55 +02:00
Atgeirr Flø Rasmussen
d9d5074dd2 Initial implementation of CPR preconditioner done.
With some caveats:
  - scaling factors for material balance equations and pressure are hardcoded.
  - pressure system is formed from sum of material balance equations, with
    no check for diagonal dominance.
2014-05-16 14:21:14 +02:00
Kai Bao
94e3fd3fcb Add more residual output in getConvergence.
Output the residualWellFlux, residualWell, MB to monitor the convergence
process.
2014-05-16 13:52:33 +02:00
Kai Bao
55b0164d4a Apply dpmaxrel to the update of bhp
And also change the default value for dpmaxrel.
2014-05-16 13:46:00 +02:00
Kai Bao
b001c580b9 Add drsmaxrel for the update of rs.
drsmaxrel is a relative limit.
2014-05-16 13:32:34 +02:00
Kai Bao
4cef151091 Add dsmax for the update of saturations.
dsmax is the absolute limit for saturation update.
2014-05-16 13:26:44 +02:00
Atgeirr Flø Rasmussen
52746a6455 Fix two bugs in updateWellControls().
The bugs were:
  - Not accounting for the different storage orders used for the
    state.qs variable and the WellState*::wellRates() field.
  - When switching to rate control, well rates for phases other
    than that to be controlled by were set to zero.
2014-05-16 09:07:43 +02:00
Atgeirr Flø Rasmussen
bbf11c42c6 Pass elliptic matrix part to CPR preconditioner.
For now, the top left part is passed with no summing of equations or checks
for diagonal dominance.
2014-05-15 15:49:14 +02:00
Atgeirr Flø Rasmussen
c10a6f0804 Instantiate new preconditioner.
Using it so far only for comparing to existing solver.
2014-05-14 15:53:54 +02:00
Atgeirr Flø Rasmussen
c0ce5a13b4 Add preliminary version of CPR preconditioner class.
This version simply does ILU(0) preconditioning.
2014-05-14 15:52:01 +02:00
Atgeirr Flø Rasmussen
b73367deda Let computeNewtonIncrement() eliminate well equations.
In its current state, we still don't do CPR, but eliminate the well equations,
solve the resulting system and finally recover the eliminated well unknowns.
2014-05-13 15:02:11 +02:00
Atgeirr Flø Rasmussen
c60a080a73 Added some utility functions for the CPR preconditioner.
The new functions are:
    - eliminateVariable()
    - recoverVariable()
    - isDiagonal()
2014-05-13 14:58:13 +02:00
Andreas Lauser
2fda604c3b fix a few annoying but harmless warnings appearing on newish compilers
(i.e. clang 3.3 in my case.)
2014-05-13 13:39:27 +02:00
Andreas Lauser
756de358c0 implement multi-region PVT
this requires the multi-region PVT patch for opm-core
2014-05-13 13:39:26 +02:00
Atgeirr Flø Rasmussen
3e41bf11e9 Enable user control of linear solver for full and elliptic system.
This is done by using parameter subgroups 'cpr_elliptic' and 'cpr_full'.
If groups are not present, parent (root) group will be queried.
2014-05-12 17:12:04 +02:00
Atgeirr Flø Rasmussen
54c07f3d0c Add choice of solution strategies to simulators.
The following is changed in this commit:
 - The constructor for NewtonIterationBlackoilSimple now takes
   a parameter object instead of a linear solver.
 - The fully implicit black-oil simulators can now use the CPR
   preconditioning strategy (by passing use_cpr=true) or the
   simple strategy (the default).
Note that as of this commit, the CPR preconditioning still has
not been implemented properly, and behaves just like the simple
strategy.
2014-05-12 11:10:59 +02:00
Atgeirr Flø Rasmussen
46e4ea7736 Add initial skeleton of CPR preconditioning class.
Implementation is identical to NewtonIterationBlackoilSimple for now.
2014-05-12 11:10:06 +02:00
Atgeirr Flø Rasmussen
9e170a3f96 Fix missing template keyword.
When invoking a member template in a template function one must in most
cases use the template keyword as a qualifier to indicate that the member
is a template.

I do not understand why this did not trigger a compiler error for the
original author though.
2014-05-12 09:28:15 +02:00
Atgeirr Flø Rasmussen
96610704c4 Merge pull request #132 from atgeirr/remove-old-well-eq
Remove unused function addOldWellEq().
2014-05-09 21:28:54 +02:00
Atgeirr Flø Rasmussen
a89d67d8cb Merge pull request #133 from GitPaean/fixing_spe3_newConvergence
Fixing spe3 new convergence
2014-05-09 21:27:29 +02:00
Kai Bao
8d51dac6c6 Deleting some unused variables.
In FullyImplicitBlackoilSolver_impl.hpp
atol, rtol, resTooLarge
Not setting the converged to be false for the first iteration.
2014-05-09 12:48:04 +02:00
Kai Bao
02ab5b0f22 Cleaning up some commented lines. 2014-05-08 17:19:02 +02:00
Kai Bao
a8ddf7477d Cleaningup and ready for push. 2014-05-08 14:38:09 +02:00
Tor Harald Sandve
3143333b69 Update perfPressure
The secondary variable perfpressure is updated when the well
equation is assembled. The perfpressure is used to calculate the
welldensity.
2014-05-08 13:32:49 +02:00
Kai Bao
aec38e503d Using the updated rq_ instead of recomputing them. 2014-05-08 11:41:54 +02:00
Kai Bao
3798e3f69b Add return converged for the getConvergence_b; 2014-05-08 11:21:47 +02:00
Kai Bao
5ef4976f4a Using the units from the opm-core.
And a new interface for getConvergence based on x and xw.
2014-05-08 11:03:42 +02:00
Kai Bao
ccc1577f09 Deleting some spaces.
FullyImplicitBlackoilSolver_impl.hpp
2014-05-07 14:54:44 +02:00
Kai Bao
930beabd21 Cleaning up FullyImplicitBlackoilSolver_impl.hpp. 2014-05-07 14:52:06 +02:00
Kai Bao
be30504daa Cleaning up debugging information.
NewtonIterationBlackoilSimple.cpp
SimulatorFullyImplicitBlackoil_impl.hpp
2014-05-07 14:45:10 +02:00
Kai Bao
4f006cad78 Merge remote-tracking branch 'upstream/master' into fixing_debugging 2014-05-07 14:34:43 +02:00
Atgeirr Flø Rasmussen
3e2dd11641 Remove unused function addOldWellEq(). 2014-05-07 14:34:20 +02:00
Kai Bao
414032220b Commit before cleaning up. 2014-05-07 14:23:55 +02:00
Kai Bao
9cd7620121 Comment out the unused np and sat
In function getConvergence()
2014-05-06 17:13:24 +02:00
Kai Bao
65350426f7 Finishing the first version of the getConvergence. 2014-05-06 17:09:00 +02:00
Kai Bao
7bb7e5fbb4 Finish the first version of getConvergence.
The determination of disgas and vapoil is omitted and should be added
later.
2014-05-06 15:47:08 +02:00
Kai Bao
cfc589b453 Add some outputing information 2014-05-05 17:54:32 +02:00
Andreas Lauser
ebb1da0662 replace all boost:: smart pointers by their std:: equivalents
The std variants are part of c++-2011 and it's 2014 now. (they are
also available in GCC 4.4.)
2014-05-02 16:17:54 +02:00
Andreas Lauser
b7f3ee7b79 rename "newParserDeck" to "deck" 2014-05-02 15:48:04 +02:00
Andreas Lauser
dbb19403fc completely remove the EclipseGridParser from the module 2014-05-02 15:47:52 +02:00
Kai Bao
fecc161d7e The output for the first Newton iteration
output the matrix, residual and the solution for the first Newton
iteration in opm/autodiff/NewtonIterationBlackoilSimple.cpp
2014-05-02 10:49:44 +02:00
Kai Bao
820e65e772 Merge remote-tracking branch 'atgeirr/spe9-fixes' 2014-04-28 14:09:06 +02:00
Atgeirr Flø Rasmussen
17400cebaf Fix bug in use of capillary pressure.
Pcow must be subtracted, not added to oil pressure to obtain water pressure.
2014-04-28 13:19:18 +02:00
Atgeirr Flø Rasmussen
4b4bb07d71 Changed the well control equations for dead wells.
This is now done in the same way as in MRST.
Also added a minor debugging macro, and (commented out) uses of it.
2014-04-24 18:50:49 +02:00
Bård Skaflestad
15a585106b Merge pull request #124 from atgeirr/well-variable-updating
Changed well variable updating
2014-04-24 13:32:43 +02:00
Atgeirr Flø Rasmussen
939489a534 Use v.data() instead of &v[0]. 2014-04-23 13:05:51 +02:00
Atgeirr Flø Rasmussen
ca8115c532 Add missing #include.
While version.hh is included transitively via other dune includes,
this may change. So for future-proofing we include it here.
2014-04-23 12:26:07 +02:00
Atgeirr Flø Rasmussen
57a5b4bc02 Use #if guards to handle different dune versions. 2014-04-23 11:12:55 +02:00
Atgeirr Flø Rasmussen
d7ba3b0fbc Merge branch 'master' into suppress-warnings
Conflicts:
	cmake/Modules/UseWarnings.cmake
2014-04-22 14:50:15 +02:00
Atgeirr Flø Rasmussen
9e5d98dddd Make updateWellControls() update well variables, too.
Formerly only the control was changed. Now both well state and primary variables
will be modified to match control targets that were switched to (bhp or rates).
2014-04-22 13:52:42 +02:00
Kai Bao
3bdfbfd78c Merge remote-tracking branch 'upstream/master' 2014-04-22 09:27:50 +02:00
Atgeirr Flø Rasmussen
e9d6a0e8e0 Fix bugs relating to misused face_cells variable. 2014-04-15 20:49:47 +02:00
Atgeirr Flø Rasmussen
e4a6ab1c86 Use non-deprecated leafGridView() method. 2014-04-15 20:49:17 +02:00
Atgeirr Flø Rasmussen
b0b206e9b8 Remove unused variable. 2014-04-15 20:48:50 +02:00
Atgeirr Flø Rasmussen
7a1d221da3 The reference phase is always the oil phase. Removed explicit warning. 2014-04-15 20:48:15 +02:00
Atgeirr Flø Rasmussen
1e75efd097 Add generation and use of warning-suppressing headers. 2014-04-15 20:46:45 +02:00
Atgeirr Flø Rasmussen
dc622c6a7a Add forgotten #include <config.h>. 2014-04-15 12:10:43 +02:00
Atgeirr Flø Rasmussen
9ae24f9380 Merge branch 'master' into cpr-preconditioning-again
Conflicts:
	CMakeLists_files.cmake
	examples/test_implicit_ad.cpp
2014-04-15 11:48:36 +02:00
Bård Skaflestad
03218f5470 Merge pull request #100 from blattms/master-refactor-for-cpgrid-support
Adds fully implicite black oil solver working with CpGrid
2014-04-15 00:03:16 +02:00
Andreas Lauser
e92cac6d0c fix typo: it's PVCDO, not PVDCO 2014-04-11 11:54:56 +02:00
Atgeirr Flø Rasmussen
148e6e78cb Fix typo in #include (Autodiff -> AutoDiff). 2014-04-10 09:37:52 +02:00
Bård Skaflestad
c3bb686600 Annotate end of namespace and "#if"
This commit adds a few annotations to closing braces on namespaces
and one "#ifdef" conditional.  This is an aid to (hopefully) avoid
the problem fixed in commit 688d65e.
2014-04-09 23:53:20 +02:00
Bård Skaflestad
11e6bc4ad2 Bring a definition of OPM_THROW into scope.
The template version of outputStateMatlab() uses OPM_THROW so we need
a definition of the macro.
2014-04-09 16:33:24 +02:00
Bård Skaflestad
688d65e7ef GridHelpers: Fix build when !HAVE_DUNE_CORNERPOINT
This commit fixes an incorrectly nested "#ifdef..#endif" block that
leads to build failures when opm-autodiff is being used without
dune-cornerpoint.
2014-04-09 16:07:59 +02:00
Markus Blatt
327f1b003d Merge branch 'tester' into master-refactor-for-cpgrid-support
Resolved conflicts:
	examples/sim_fibo_ad.cpp
	opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp
2014-04-09 14:39:19 +02:00
Markus Blatt
42fbe3b612 Revert "Activate paralle istl solvers if there is more than one process computing."
This reverts commit 9598a990df.
The commit slipped in by accident and should be part of a separate branch.
2014-04-09 13:32:28 +02:00
Markus Blatt
bccc7c1350 Updates interface to fix issues not resolved in the latest merge.
Namely the template parameter was missing for the added methods.
In addition there were still various instances where the grid was
used directly rather than via the functions in GridHelpers.hh.
2014-04-09 12:16:33 +02:00
Kai Bao
84b98d5f31 add some breakpoints for debug 2014-04-09 09:45:59 +02:00
Bård Skaflestad
a784d50f1e Merge branch 'master' into blattms-master-refactor-for-cpgrid-support
Conflicts:
	examples/sim_fibo_ad.cpp
	opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp

This brings the "CpGrid support" branch up to date with respect to
recent changes in opm-autodiff master.
2014-04-08 16:31:17 +02:00
Atgeirr Flø Rasmussen
9fec84312f Rename method linearSolve()->computeNewtonIncrement(). 2014-04-08 16:16:54 +02:00
Atgeirr Flø Rasmussen
bd44127bd6 Renamed more classes.
FullyImplicitSystemSolver{Interface, Simple} -> NewtonIterationBlackoil{Interface, Simple}.
Change suggested by B. Skaflestad.
2014-04-08 16:11:08 +02:00
Atgeirr Flø Rasmussen
9e7ab6d1d2 Renamed class {FullyImplicit->Linearised}BlackoilResidual. 2014-04-08 15:56:08 +02:00
Atgeirr Flø Rasmussen
a19344efa9 Changed docs/comments after review suggestions.
Suggestions from B. Skaflestad and A. Lauser.
2014-04-08 15:28:10 +02:00
Atgeirr Flø Rasmussen
f1956f05f9 Merge branch 'cpr-preconditioning' into cpr-preconditioning-again
Conflicts:
	examples/sim_fibo_ad.cpp
	examples/test_implicit_ad.cpp
	opm/autodiff/FullyImplicitBlackoilSolver.cpp
	opm/autodiff/SimulatorFullyImplicitBlackoil.cpp
	opm/autodiff/SimulatorFullyImplicitBlackoil.hpp
2014-04-08 15:06:01 +02:00
Atgeirr Flø Rasmussen
e699f9e135 Remove unnecessary argument, and minor formatting corrections. 2014-04-05 00:12:03 +02:00
Tor Harald Sandve
a905eade7a Use preferred phase to compute wellbore mix for dead wells
The wellmore mix is set to preferred phase for dead wells, where the
total volumetric rates are zero. This sets the phase of the flow out of
perforations in dead wells and thus avoids zero volumerats for injecting
preforations in dead wells.
2014-04-04 11:36:02 +02:00
Atgeirr Flø Rasmussen
6c4114ea69 Add more options for Selector class.
You can now choose which comparison to do for the indicator vector
to find when to choose the left argument. Only >= before (still default).
2014-04-01 15:49:01 +02:00
Markus Blatt
46f3607641 Merge remote-tracking branch 'upstream/master' into master-refactor-for-cpgrid-support
Resolved conflicts:
	opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp
2014-03-31 11:39:37 +02:00
Atgeirr Flø Rasmussen
4b53f88685 Fix timer usage.
This makes the simulator produce proper summary output again.
2014-03-28 14:31:30 +01:00
Atgeirr Flø Rasmussen
faba01f917 Merge pull request #112 from GitPaean/fix_using_new_timer
A small fix to make sim_fibo_ad use the new SimulatorTimer.
2014-03-28 13:51:22 +01:00
Atgeirr Flø Rasmussen
9d9576c955 Merge pull request #110 from atgeirr/new_well_formulation
New well formulation
2014-03-28 12:47:29 +01:00
Markus Blatt
b279a174db Merge remote-tracking branch 'upstream/master' into master-refactor-for-cpgrid-support
Conflicts:
	examples/sim_fibo_ad.cpp
	opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp
2014-03-27 16:17:44 +01:00
Markus Blatt
9598a990df Activate paralle istl solvers if there is more than one process computing. 2014-03-27 11:31:17 +01:00
Kai Bao
0914841823 A small fixing to make the sim_fibo_ad using the new timer. 2014-03-27 11:15:55 +01:00
Atgeirr Flø Rasmussen
d4f1a89370 Merge pull request #111 from andlaus/FullyImplicitBlackoilSolver_throw_exception_uppon_non-finite_residual
FullyImplicitBlackoilSolver: Throw an exception uppon encountering a non-finite residual
2014-03-26 15:29:34 +01:00
Andreas Lauser
8cd93bf70a FullyImplicitBlackoilSolver: cleanup the residualNorm() method 2014-03-26 15:16:43 +01:00
Atgeirr Flø Rasmussen
2db726268b Merge pull request #108 from andlaus/FullyImplicitBlackoilSolver_unify_state_conversion
FullyImplicitBlackoilSolver: unify the state conversion routines
2014-03-26 14:29:08 +01:00
Atgeirr Flø Rasmussen
8663c5b604 Merge branch 'FullyImplicitBlackoilSolver_unify_state_conversion' of https://github.com/andlaus/opm-autodiff into test_andlaus
Conflicts:
	opm/autodiff/FullyImplicitBlackoilSolver.cpp

Resolved by using the new, reduced version of constantState().
2014-03-26 14:21:23 +01:00
Andreas Lauser
2f84156b91 FullyImplicitBlackoilSolver: Throw an exception uppon encountering a non-finite residual 2014-03-26 12:54:46 +01:00
Atgeirr Flø Rasmussen
3bc57780aa Fix bug in -= operator. 2014-03-26 11:44:49 +01:00
Atgeirr Flø Rasmussen
5e4dff401c Merge branch 'master' into new_well_formulation
Needed to avoid compile errors with updated opm-core.
2014-03-26 11:02:52 +01:00
Atgeirr Flø Rasmussen
41fd953ba2 Fix bugs relating to wells versus perforations.
Two kinds of bugs: correct usage of wops_.w2p vs. wops_.p2w, and
correct sizes for some variables (nw vs. nperf).
2014-03-25 18:44:37 +01:00
Atgeirr Flø Rasmussen
dcb59a2fab Fix bug in access order for state.qs.
State.qs is called well_phase_flow_rate in this function.

It is stored with wells running fastest, not phases.
2014-03-25 17:42:14 +01:00
Atgeirr Flø Rasmussen
cb50728ac2 Add end-of-line to switching message. 2014-03-25 17:41:41 +01:00
Atgeirr Flø Rasmussen
4a22c560c7 Implemented updateWellControls(). 2014-03-25 14:31:06 +01:00
Andreas Lauser
168b4379d5 don't pass the eclipsewriter to the simulator anymore
i.e., the simulator does not deal with any output operations
anymore. This makes sense because report steps are handled by
Opm::TimeMap and the constructor for the simulator already needs more
arguments than appropriate even without this...
2014-03-25 13:17:30 +01:00
Andreas Lauser
9237aa2443 FullyImplicitBlackoilSolver: make constantState() and variableState() consistent
With this, constantState() just calls variableState() and throws away
the derivatives. This might be a bit slower than necessary, but it
makes these two methods automatically consistent and constantState()
is only called once per timestep anyway...

thanks to @atgeirr for the suggestion!
2014-03-25 11:55:13 +01:00
Atgeirr Flø Rasmussen
20ecd37709 Use currentControls() field of well state class.
Now the well state is consulted for the controls to use when assembling
the well control equations, instead of the (immutable) wells_ struct.

Also, added dummy implementation of updateWellControls().
2014-03-25 11:14:11 +01:00
Atgeirr Flø Rasmussen
bad64de4f2 Add currentControls() field to well state class.
This is done since the solver will need to be able to switch well controls
during Newton iterations. The current control specified in the Wells struct
will be used as default and initial value for currentControls().
2014-03-25 11:11:19 +01:00
Markus Blatt
8df314e90f Merge remote-tracking branch 'upstream/master' into master-refactor-for-cpgrid-support
Manually resolved conficts in the following files
	examples/sim_fibo_ad.cpp
	opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp
	opm/autodiff/SimulatorFullyImplicitBlackoil_impl.hpp

In additions examples/sim_fibo_ad_cp.cpp was adapted to compile again.
2014-03-25 11:11:08 +01:00
Atgeirr Flø Rasmussen
33d58792de Fix sign bug in well contribution to mass balance. 2014-03-24 15:28:46 +01:00
Atgeirr Flø Rasmussen
fd4f5f5a26 Merge branch 'master' into new_well_formulation
Conflicts:
	opm/autodiff/FullyImplicitBlackoilSolver.cpp

To resolve conflicts, WellState was changed to WellStateFullyImplicitBlackoil
in multiple places, and perfRate() changed to perfPhaseRate() in
WellDensitySegmented.
2014-03-20 10:04:45 +01:00
Atgeirr Flø Rasmussen
f99b9b90a4 Merge pull request #101 from andlaus/sim_fibo_ad_use_new_wellmanager
sim_fibo_ad: convert to the new-style wells manager
2014-03-20 09:07:03 +01:00
Atgeirr Flø Rasmussen
d21e310d01 Merge pull request #98 from andlaus/reverse_increment_write_order_again
go back to incrementing the current simulation time first, then calling EclipseWriter::writeSolution()
2014-03-20 09:04:10 +01:00
Andreas Lauser
49a5b67137 sim_fibo_ad: fix writing
the initial condition was written multiple times. We now fix this by
not writing anything in the simulator and moving this logic to the
main loop..
2014-03-19 17:40:51 +01:00
Atgeirr Flø Rasmussen
295677c8c1 Use WellStateFullyImplicitBlackoil class instead of WellState. 2014-03-18 11:27:40 +01:00
Atgeirr Flø Rasmussen
e7f4637461 Add WellStateFullyImplicitBlackoil class.
This is intended to be used instead of the WellState class in the fully
implicit blackoil simulator. It contains a WellState to reuse the init()
method and to enable users to call functions requiring a WellState.
This is done with containment and an access member function,
basicWellState(), instead of with inheritance to minimize surprises.
2014-03-18 11:23:05 +01:00
Atgeirr Flø Rasmussen
e8ee805717 Work in progress: use WellDensitySegmented class.
This is work in progress since it is non-working: phaseRates() is
not used correctly, and changes must be made to WellState or equivalent.
2014-03-18 08:48:34 +01:00
Atgeirr Flø Rasmussen
737affb077 Minor whitespace adjustments. 2014-03-17 10:23:40 +01:00