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
Atgeirr Flø Rasmussen
d821afe11f
Whitespace fix.
2014-03-17 10:14:45 +01:00
Markus Blatt
c82778b3a9
Implemented VTK output for CpGrid using DUNE's VTKWriter and activated Matlab for CpGrid.
2014-03-13 16:33:36 +01:00
Markus Blatt
4e39c7dad1
[bugfix] Fixes elementAt of CentroidIterator.
2014-03-13 16:33:36 +01:00
Markus Blatt
340da4cd7f
Added function for querying the face area to the helpers.
2014-03-13 16:33:36 +01:00
Markus Blatt
f4812c21eb
Add an example program of FIBOS that uses CpGrid.
2014-03-13 16:33:36 +01:00
Markus Blatt
5112b8af26
Removes the dependency of FullyImpliciteBlackoilSolver onto UnstructuredGrid.
...
With these changes it will be possible to use CpGrid with FIBOS except for the
output routines.
2014-03-13 16:33:36 +01:00
Markus Blatt
0a5262b7c3
Added implementation of free function interface grid interface for CpGrid.
...
This implements a superset of the interface as proposed in pull request
opm-core#496 for use with CpGrid.
It also adds some additional functionality needed in opm-autodiff.
2014-03-13 15:27:45 +01:00
Andreas Lauser
0ce6093b69
go back to incrementing the current simulation time first, then calling EclipseWriter::writeSolution()
...
for this not to trigger an assertation after the last time step, the
changes of OPM/opm-parser#141 are required.
2014-03-11 16:05:00 +01:00
Andreas Lauser
1383eadf8f
fix the fallout of the SimulatorTimer::currentTime() -> SimulatorTimer::simulationTimeElapsed() rename
2014-03-11 16:01:59 +01:00
Tor Harald Sandve
a19aff63e7
Adds new well formulation
...
Todo: incorporate WellDensitySegment. Currently values of the pressure
drop is hardcoded to make the rest of the code work
Todo: make it possible to shut perforation with crossflow.
2014-03-11 14:30:54 +01:00
Tor Harald Sandve
9cb7e8635e
Adds -= operator
...
An elementwise -= operator is added to the autodiff class.
2014-03-11 14:30:54 +01:00
Joakim Hove
0c36af631f
Using well_controls_well_is_open() function
2014-03-04 14:49:54 +01:00
Atgeirr Flø Rasmussen
5bcca58d31
Make BlackoilPropsAdInterface pure virtual again.
...
Done by adding (throwing) implementation to BlackoilPropsAd class.
2014-03-04 13:09:23 +01:00
Atgeirr Flø Rasmussen
3de050b19f
Merge pull request #87 from osae/hysteresis
...
Hysteresis.
2014-03-04 10:30:07 +01:00
Atgeirr Flø Rasmussen
3627d9ec02
Make spline interpolation possible.
...
This restores the logic for choosing monotone splines for dead oil/gas pvt
tables, but the option is inactive (samples set to zero at top).
2014-03-03 10:31:21 +01:00
Atgeirr Flø Rasmussen
2cc5f0b421
Bugfix: PVDCO->PVCDO.
2014-03-03 10:30:39 +01:00
Atgeirr Flø Rasmussen
b4fe41249a
Fix error output. Also very minor whitespace issues.
2014-03-03 10:29:13 +01:00
Joakim Hove
3208c61472
Merge pull request #89 from andlaus/parser-integrate_new_simulatortimer
...
Parser integrate new simulatortimer
2014-02-27 14:43:00 +01:00
Andreas Lauser
dd080c4515
first write out the result of a time step, then increment the timer
...
if done the other way round we would make an assertation in TimeMap
false and also the values returned by SimulationTimer would be for the
next time step and not the current one...
2014-02-21 16:06:26 +01:00
osae
305512cc21
Hysteresis.
...
SimulatorFullyImplicitBlackoil reports saturation values at each
completed time-step, allowing detection of hysteris behavior.
2014-02-18 14:50:29 +01:00
Andreas Lauser
f7541aa27a
BlackoilPropsAdFromDeck: Add support for PVTO
2014-02-14 17:56:20 +01:00
Andreas Lauser
198f805c2a
switch to the new parser's table utility classes
2014-02-14 17:56:08 +01:00
Andreas Lauser
2deeeef4e4
really use the new parser
...
in the previous commit this was #if 0'ed...
2014-02-14 17:56:08 +01:00
Andreas Lauser
7f485626a2
use the new parser to read the PVT and grid data from the deck
...
the old code has not yet been removed, but in the long term, this is
probably the way to go.
2014-02-14 17:56:07 +01:00
Andreas Lauser
627b1f3906
make the deck from opm-parser available to the black-oil PVT property classes
2014-02-14 17:56:07 +01:00
Atgeirr Flø Rasmussen
a14cff7834
Use new linear solver interface in fully implicit solver.
...
This includes:
- Using the class FullyImplicitBlackoilResidual instead of
in-class definition for the residual object.
- Changing residual field name mass_balance to material_balance_eq.
- Letting the simulator and solver classes accept a
FullyImplicitSystemSolverInterface instead of a LinearSolverInterface.
- In sim_fibo_ad and test_implicit_ad, instantiate class
FullyImplicitSystemSolverSimple, replicating existing behaviour.
2014-02-10 10:47:21 +01:00
Atgeirr Flø Rasmussen
8850868f50
Interface and simple implementation of fully implicit system solver.
...
This is done in preparation for adding a cpr-preconditioning solver
for the fully implicit black-oil system. The existing implementation
that concatenates the whole system and passes it to some linear solver
has been moved from a private function of FullyImplicitBlackoilSolver
to the class FullyImplicitSolverSimple.
To enable this decoupling, the residual struct has been copied out
of the FullyImplicitBlackoilSolver class and is now an independent
struct: FullyImplicitBlackoilResidual. The opportunity has been used
to replace the field mass_balance with material_balance_eq, which is
more precise.
2014-02-10 10:41:18 +01:00
Atgeirr Flø Rasmussen
615a88ad90
Made Residual struct definition public, and documented.
...
This is in anticipation of implementing CPR preconditioning.
2014-02-07 17:15:48 +01:00
Atgeirr Flø Rasmussen
f84b0a6a4d
Remove rs_or_sg_eq from the residual.
...
This has not been used since the introduction of live gas changed
the treatment of rs (and rv) values to make a more compact system.
2014-02-07 16:33:19 +01:00
Atgeirr Flø Rasmussen
0b14af943b
Forward declare PhaseUsage as struct, not class.
2014-02-07 14:38:57 +01:00
Markus Blatt
e05675bd41
Fixes warning about initialization order in FullyImpliciteBlackOilSolver.
2014-02-03 18:14:49 +01:00
Atgeirr Flø Rasmussen
614c3f35af
Removed dead code.
...
The code was partially kept as a reminder to implement
proper well reporting and mass balance reporting. Now
well reporting has been taken care of, so we remove
the code.
2014-01-31 09:07:53 +01:00
Atgeirr Flø Rasmussen
436624f662
Write initial values to eclipse format output.
...
This yields output files that have the same behaviour as
eclipse in terms of number of steps, and what the steps mean.
2014-01-30 14:57:58 +01:00
Atgeirr Flø Rasmussen
38a48dd149
Fix indexing error in if-test.
2014-01-27 10:42:17 +01:00
Atgeirr Flø Rasmussen
f9ea03fe67
Renamed SegmentedWellModel->WellDensitySegmented.
2014-01-24 15:54:01 +01:00
Atgeirr Flø Rasmussen
2f7697e00d
Merge branch 'master' into seg-well-model
2014-01-24 15:48:49 +01:00
Tor Harald Sandve
cdd312fa55
Comment out unused code
...
Part of the code that is no longer in use is commented out.
2014-01-24 13:35:04 +01:00
Tor Harald Sandve
825c9be0db
Fixed white spaces
2014-01-24 13:27:32 +01:00
Tor Harald Sandve
19f0a81db1
Fixed from bitwise to logical operator
...
The && is used instead of &
2014-01-24 13:15:29 +01:00
Tor Harald Sandve
b2ac4c7aac
Fixed missing documentation
2014-01-24 13:14:08 +01:00
Atgeirr Flø Rasmussen
5d386f2a49
Bugfixes in treatment of perforation depths and final accumulation.
2014-01-23 12:42:57 +01:00
Atgeirr Flø Rasmussen
98371f660f
Fix mixture calculation for volatile oil case.
2014-01-23 12:40:54 +01:00
Atgeirr Flø Rasmussen
ac6209640b
Documented interface for SegmentedWellModel.
2014-01-22 13:55:22 +01:00
Atgeirr Flø Rasmussen
ad81cc6a37
Initial version of segmented well model.
...
This computes pressure differences with respect to the bottom-hole pressure
for each well perforation, based on the well flows. It is explicit and not
implicit, using the previous time step's flow rates to calculate the necessary
densities.
2014-01-22 12:53:05 +01:00
Tor Harald Sandve
ed02b4a91f
Implementation of live gas
...
The simulator now handles live gas as well as live oil.
The primary variables are Po,Sw and Rs,Rv or Sg depending on fluid
condition
State 1 Gas only (Undersaturated gas): Po, Sw and Rv
State 2 Gas and oil: Po, Sw and Sg
State 3 Oil only (Undersaturated oil): Po, Sw and Rs
This commit includes:
1. New interfaces for the vapor oil/gas ratios (Rv)
2. Modifications in the equations to handle rvs
3. New definition of ADI variable to handle changing primary variables
4. Modifications in the solution updates to handle changing primary
variable
5. Some changes in the appleyard process to sync with Mrsts livegas
implementation.
NOTE:
The implementation is tested on the liveoil cases SPE1 and a simplified
SPE9 and produces the same results as the old code.
The simulator is not yet able to converge on SPE3 with livegas present.
For SPE3 to converge a more robust well implementation is needed. The
current simulator reproduce the results of Mrst when a similar well
model is used in Mrst as is currently implemented OPM.
2014-01-10 16:07:32 +01:00
Tor Harald Sandve
3c5b0b9e73
Add interface for wet gas
...
The pvt interface is extened to handle wet gas
1. A function for rvSat is added to the interface
2. An interface that takes rv and the fluid condition as an input for
the gas properties is added. The old interface without rv and the fluid
condition is kept in the file.
3. The new interface is implemented in BlackoilPropsAd and
BlackoilPropsAdFromDeck.
A simulator that tests wet gas is not yet implemented.
2014-01-10 16:07:32 +01:00
Joakim Hove
bd1417b164
Changed to use well_controls_get_current_distr().
2014-01-09 12:09:19 +01:00
Joakim Hove
427f55940e
Changed direct access to struct WellControls to use well_controls_get_xxx() api. NB: Do check the calls to well_control_iget_distr().
2014-01-09 09:39:16 +01:00
Joakim Hove
37274035bc
Changed direct access to struct WellControls to rather use well_controls_get_xxx() api.
2014-01-09 09:39:08 +01:00
Andreas Lauser
58afaa5069
fix the rebase fallout
2013-12-06 10:33:58 +01:00
Andreas Lauser
6f2fd5ae69
use the reference pressure to calculate the transmiscibility factors
2013-12-06 10:19:08 +01:00
Andreas Lauser
977395fccd
include capillary pressure in the PDEs
...
I'm neither sure that this is fully correct nor that I found all
occurences (so far, the output writing code is missing in this patch),
but it seems to work for SPE1...
2013-12-06 10:17:58 +01:00
Andreas Lauser
65d86c4dec
make the phase-presence docstring understandable for mere mortals
2013-12-04 12:35:21 +01:00
Bård Skaflestad
cb483e92cc
Switch condition interface to phase presence facility
...
Commit 4aa0eaf
introduced density and viscosity evaluators into the
BlackoilPropsAdInterface that accepted an externally assignable
condition to distinguish saturated from unsaturated cases. As a
result of a few low-level technical problems with that approach,
this commit changes those affected interfaces to use the black-oil
specific 'PhasePresence' facility of opm-core's commit a033329.
Update callers accordingly.
2013-12-03 18:12:54 +01:00
Bård Skaflestad
fc25415066
Merge branch 'mrst' of github.com:totto82/opm-autodiff into match-reference/properties
2013-12-02 17:00:15 +01:00
Tor Harald Sandve
4aa0eaff67
Whether the fluid is saturated or not is explicitly passed to the pvts
...
The criteria for whether the fluid is saturated or not is moved from the
within the pvt calculations to the solver, and passed to the pvt
calculations as a array of boolean values.
2013-11-28 15:57:00 +01:00
Andreas Lauser
2cf32b6f4f
Use EclipseWriter from opm-core
...
Note: The interface here requires opm/opm-core#424 .
2013-11-27 15:45:45 +01:00
Andreas Lauser
1c62934034
fix some clang 3.3 warnings
...
The most severe change probably is the removal of the AutoDiff
debugging helper functions which were useful from within a debugger
but unfortunately had to rely on a presumed linker bug in order not to
be removed in the final binary.
Also, some private attributes were unused. These have been removed and
the constructors of their respective classes have been adapted. Once
their intended functionality is actually implemented, they should be
brought back on an as-needed basis.
Thanks to @bska for the review!
2013-11-14 14:33:38 +01:00
Atgeirr Flø Rasmussen
258d8e0e24
Avoid infinite loop with two constant operands.
2013-10-24 13:41:55 +02:00
Atgeirr Flø Rasmussen
1eec8b16d6
Fix bug in operator+ introduced by previous commit.
...
Also make documentation clearer.
2013-10-24 00:17:15 +02:00
Atgeirr Flø Rasmussen
46a17945a3
Fix minor whitespace issue.
2013-10-23 22:42:32 +02:00
Atgeirr Flø Rasmussen
b996959c61
Add new AutoDiffBlock::constant() overload without block sizes.
...
This should simplify some uses of the autodiff code. The internals
have been changed to allow for objects to have an empty vector of
Jacobians, always treating that object as a constant.
2013-10-23 20:09:55 +02:00
Bård Skaflestad
faa3646a52
Fix convergence failure exception message
...
The message was a leftover from the ImpesTPFA solver and should
reflect the actual location.
Noticed by: qilicun (Liu Ming)
Fixes: Issue #50
2013-10-22 10:11:53 +02:00
Atgeirr Flø Rasmussen
f40271d96c
Minimal fix for Eigen versions lacking pow(Eigen::Array).
2013-10-20 22:02:32 +02:00
Bård Skaflestad
7b395fabbb
Guard against null-pointer dereference.
...
This restores the check that was lost in commit 79562ca
.
2013-10-03 16:30:54 +02:00
Atgeirr Flø Rasmussen
e50033e3a2
Merge pull request #39 from atgeirr/master
...
Fix boundary condition checking bug.
2013-10-03 07:21:54 -07:00
Atgeirr Flø Rasmussen
79562ca3cc
Fix boundary condition checking bug.
2013-10-03 16:19:21 +02:00
Bård Skaflestad
8ad532c5b8
Fix warnings about "unused" parameters and typedefs.
...
CLang and recent GCC warn about the "typedef" 'OneColInt' in
AutoDiffHelpers.hpp being unused. Similarly, GCC warns about unused
parameters in various place at level "-Wunused". This change-set
either removes ('OneColInt') or suppresses those messages.
2013-09-26 19:21:45 +02:00
Bård Skaflestad
cf9d417cad
Merge pull request #34 from totto82/bugfixes
...
Changes in gravity potential to match Eclipse and Mrst
2013-09-24 04:02:55 -07:00
Bård Skaflestad
243432142e
Merge pull request #32 from atgeirr/minor_improvements
...
A collection of minor improvements
2013-09-24 01:31:15 -07:00
Tor Harald Sandve
34cc4f7da0
1. The geo_.z() is now called directly instead of first converted to ADB
...
vector
2. Added some whitespaces fro readability
2013-09-24 09:33:33 +02:00
Atgeirr Flø Rasmussen
cc58bc3cef
Fix minor issues pointed out by bska.
2013-09-23 13:02:56 +02:00
Atgeirr Flø Rasmussen
edd7e1487b
Documented class FullyImplicitBlackoilSolver.
2013-09-20 14:55:43 +02:00
Atgeirr Flø Rasmussen
cb892d6a18
Documented class DerivedGeology.
2013-09-20 14:55:24 +02:00
Atgeirr Flø Rasmussen
56e50f02fd
Documented BlackoilPropsAdFromDeck.
2013-09-20 14:42:12 +02:00
Atgeirr Flø Rasmussen
a10eb61b66
Require deck and remove simple source term in fully implicit sim.
2013-09-20 14:32:29 +02:00
Atgeirr Flø Rasmussen
ad78cb8713
Document class BlackoilPropsAd.
2013-09-20 14:31:57 +02:00
Tor Harald Sandve
5dcc4aab3a
Added an option to write well reports to a .mat file
2013-09-19 15:43:11 +02:00
Tor Harald Sandve
f3d51c4a22
Compute gravity potensial using the face average as in Eclipse and Mrst
2013-09-19 15:43:11 +02:00
Atgeirr Flø Rasmussen
9337a6227b
Renamed misleading adfi -> fi.
...
Some classes and a program were renamed since they were not fully implicit
solvers despite their names indicating it.
2013-09-19 14:52:39 +02:00
Atgeirr Flø Rasmussen
0aa96af329
Documentation refinement. Added main doc file.
2013-09-19 14:45:40 +02:00
Atgeirr Flø Rasmussen
9a20c1ee02
Documented AutoDiffBlock.
2013-09-19 14:07:05 +02:00
Atgeirr Flø Rasmussen
85f79c0e84
Rename AutoDiff::ForwardBlock -> Opm::AutoDiffBlock.
...
Also moved AutoDiffHelpers.hpp content to Opm namespace, and modified other
files as required by these two changes.
2013-09-19 12:53:28 +02:00
Atgeirr Flø Rasmussen
e9b933bf4f
Rename AutoDiff::Forward -> Opm::AutoDiff.
2013-09-19 11:32:47 +02:00
Atgeirr Flø Rasmussen
86e9e04d2f
Remove unnecessary include statement.
2013-09-19 11:32:29 +02:00
Tor Harald Sandve
5a88259da4
The porevolume was multiplied twice in computeAccum for the gas phase dissolved in the oil
2013-09-19 10:44:10 +02:00
Atgeirr Flø Rasmussen
a33f7e964b
Let sim_2p_comp_ad throw if not given an input deck.
...
There is some code in place now to create wells for the no-deck case,
but since it does not work correctly yet, the simulator intercepts this
and throws.
2013-09-19 10:09:53 +02:00
Atgeirr Flø Rasmussen
6e2cdfc33f
Add helpers grad, fullngrad, fulldiv.
2013-09-18 14:32:09 +02:00
Andreas Lauser
0582ef08d8
explicitly include <iostream>
...
instead of relying on relying that some header includes it...
2013-09-05 12:28:16 +02:00
Andreas Lauser
8ee63106c5
Replace THROW by OPM_THROW
2013-09-05 12:28:16 +02:00
Andreas Lauser
a26483b51d
Replace the ASSERT and ASSERT2 macros by assert
2013-09-03 15:27:08 +02:00
Jens Olav Nygaard
383b88252a
Modified according to comments in pull-request discussion.
2013-08-05 09:47:47 +02:00
Jens Olav Nygaard
d3a02e4891
Added ForwardBlock operator* for scalars.
2013-08-02 12:24:12 +02:00
Bård Skaflestad
a43fe760c1
Use the shared_ptr<> from Boost.
...
Not all implementations support the TR1, and if they do, the type
might not be in a namespace called std::tr1 . Favour the
implementation from Boost for reasons of portability.
This is inspired (and necessitated) by commit OPM/opm-core@68eb3fb
which, incidentally, cleaned up some header pollution on which we
inadvertently depended.
2013-07-04 20:59:29 +02:00
Atgeirr Flø Rasmussen
baf11ec591
Bugfix: perforation parts must be mapped to wells.
2013-06-07 14:03:17 +02:00
Atgeirr Flø Rasmussen
07027d3a09
Added rock compressibility to fully implicit solver.
2013-06-03 14:14:48 +02:00
Atgeirr Flø Rasmussen
20079f763a
Merge remote-tracking branch 'bska/fully-implicit' into fully-implicit
2013-06-03 09:01:17 +02:00
Atgeirr Flø Rasmussen
04eb340a3b
Fix two bugs in solver.
...
- Using x/x.abs() instead of a proper sign function led to problems
when x = 0. Solved by using new sign() utility.
- Pass pressure instead of rs as parameter to fluidRsMax().
2013-06-03 00:33:05 +02:00
Atgeirr Flø Rasmussen
90f3886d20
Add sign() utility function.
2013-06-03 00:32:44 +02:00
Bård Skaflestad
8bab9f9ff8
Merge remote-tracking branch 'atgeirr/fully-implicit' into fully-implicit
2013-06-03 00:16:04 +02:00
Bård Skaflestad
a67ca87fd3
Encapsulate DUMP contents in "do { ... } while (0)"
...
This makes the macro more function-like and easier to read.
2013-06-03 00:15:40 +02:00
Atgeirr Flø Rasmussen
0376cb0fff
Initialize and update qs primary variable.
2013-06-02 23:50:21 +02:00
Atgeirr Flø Rasmussen
b23e622a61
Remove accidentally added file.
2013-06-02 08:59:00 +02:00
Atgeirr Flø Rasmussen
765ce23c3e
Work in progress on well flux equations.
2013-06-02 08:58:30 +02:00
Atgeirr Flø Rasmussen
74a5e10f7b
Renames variables dtpv->pvdt and Rs->rs.
2013-06-02 08:19:21 +02:00
Atgeirr Flø Rasmussen
adf291a30c
Work in progress on well flux equations.
2013-06-02 08:17:13 +02:00
Bård Skaflestad
2606d94935
Merge remote-tracking branch 'atgeirr/fully-implicit' into fully-implicit
2013-05-31 16:07:12 +02:00
Bård Skaflestad
7a44eb8254
Remove blank lines at EOF
2013-05-31 16:07:03 +02:00
Atgeirr Flø Rasmussen
9a3bad000a
Do not evaluate properties at well perforation pressures.
...
Always use quantities derived from cell properties.
2013-05-31 16:03:00 +02:00
Atgeirr Flø Rasmussen
adbbebeeea
Properly compute well pressure differentials.
...
Properly here means using a simple algorithm like
in CompressibleTpfa and ImpesTPFAAD.
2013-05-31 15:02:03 +02:00
Atgeirr Flø Rasmussen
514c48aa31
Use DUMP macro in useful places.
2013-05-31 15:01:28 +02:00
Atgeirr Flø Rasmussen
d49be41cae
Corrected fluidDensity() function to account for dissolved gas.
2013-05-31 14:59:56 +02:00
Atgeirr Flø Rasmussen
59e36f72b3
Add DUMP macro for debugging.
2013-05-31 14:59:24 +02:00
Atgeirr Flø Rasmussen
526b4d26e3
Actually initialize densities_ member.
2013-05-31 14:57:04 +02:00
Bård Skaflestad
bac1a3a364
Add a couple of debugging aids to assist in FIBO development.
2013-05-30 18:43:11 +02:00
Bård Skaflestad
d23a1c3066
Coalesce two adjacent '!NDEBUG' sections into one.
2013-05-30 17:56:49 +02:00
Atgeirr Flø Rasmussen
932660a18c
New updateState() method, changes to fluid interfaces.
...
- updateState() is a new method that modifies the state object after solution,
this was formerly done in solveJacobianSystem().
- Implemented Appleyard chop (not verified yet) for handling variable switching.
- Added rs as input to fluid interfaces to include rs-derivatives.
2013-05-30 14:43:32 +02:00
Atgeirr Flø Rasmussen
62d0ad85b8
Use BlackoilPropsAdFromDeck in fully implicit simulator.
2013-05-27 22:28:17 +02:00
Atgeirr Flø Rasmussen
e3f39504f4
Fixed error in include guard macros.
...
Header file started life as a copy of another header, but include
guard macro was not changed. Time to go for #pragma once?
2013-05-27 22:26:52 +02:00
Atgeirr Flø Rasmussen
f26207d430
Fixes in BlackoilPropsAdFromDeck. Now compiles.
2013-05-27 22:01:20 +02:00
Atgeirr Flø Rasmussen
a6dba405dd
Merge remote-tracking branch 'totto82/newfluid' into fully-implicit
2013-05-27 15:46:22 +02:00
Tor Harald Sandve
1cf1e3383b
Add new interface to BlackoilPropsAdFromDeck
...
-- not finished --
2013-05-27 14:55:32 +02:00
Atgeirr Flø Rasmussen
2c206e0cd4
Finished initial attempt at miscibility support.
...
Not yet tested. Also, no way to initialize gas-oil ratio yet.
2013-05-27 11:32:35 +02:00
Atgeirr Flø Rasmussen
cbb7b07496
Added method fluidRsMax(), added rs as a primary variable.
...
Also increased amount of whitespace between methods for readability.
2013-05-27 10:29:04 +02:00
Atgeirr Flø Rasmussen
5f4167d800
New interface methods rsMax() in BlackoilPropsAdInterface.
...
Notes:
- Interface was already present, just disabled.
- Class BlackoilPropsAd cannot properly implement rsMax() with derivatives,
and implements only a throw statement.
2013-05-27 10:26:41 +02:00
Atgeirr Flø Rasmussen
78fa581417
Fix some bugs: referring to the wrong phase in two places.
2013-05-27 00:24:38 +02:00
Atgeirr Flø Rasmussen
09c4362e3c
Added solveJacobianSystem() method, finished step().
...
Code is now functionally complete apart from lacking miscibility,
not writing to all promised output variables and not writing the
promised output to disk. Initial testing has been unsuccessful,
so there are bugs in the code.
2013-05-26 11:49:44 +02:00
Atgeirr Flø Rasmussen
1d4af250ac
Add well contributions to mass balance residuals.
2013-05-26 09:52:58 +02:00
Atgeirr Flø Rasmussen
8a740eeab4
Merge remote-tracking branch 'bska/fully-implicit' into fully-implicit
2013-05-25 10:50:00 +02:00
Atgeirr Flø Rasmussen
b88dfd6af2
Added assembly of well equations.
...
This has not been tested.
Well contributions to mass balance equations are not done yet.
2013-05-25 10:47:22 +02:00
Atgeirr Flø Rasmussen
2ebd58fad2
Added bhp as a primary variable.
...
Changed interface of constantState() and variableState() to also
take a WellState as input. Some comments added with minor layout
changes.
2013-05-24 23:20:15 +02:00
Atgeirr Flø Rasmussen
dfbf8dd80e
Commented the assemble() function.
2013-05-24 22:30:54 +02:00
Atgeirr Flø Rasmussen
9894fdc2d4
Renamed residual_.reservoir -> residual_.mass_balance.
...
Also initialize in initializer list, eliminating the need for
the allocateResidual() method.
2013-05-24 22:16:06 +02:00
Bård Skaflestad
7432ca215f
Include <cassert> for assert() macro.
2013-05-24 22:04:58 +02:00
Bård Skaflestad
eee8c27346
Merge remote-tracking branch 'atgeirr/fully-implicit' into fully-implicit
2013-05-24 21:49:27 +02:00
Atgeirr Flø Rasmussen
a3be33a312
Merge remote-tracking branch 'bska/fully-implicit' into fully-implicit
2013-05-24 21:46:11 +02:00
Atgeirr Flø Rasmussen
dc83ecb18e
Merge remote-tracking branch 'bska/fully-implicit' into fully-implicit
2013-05-24 21:11:41 +02:00
Bård Skaflestad
2dffbb3a70
Add gather/scatter support for wells
2013-05-24 17:22:35 +02:00
Atgeirr Flø Rasmussen
cd42d4af34
Added missing dereference operator.
2013-05-24 16:07:27 +02:00
Bård Skaflestad
747badaea8
Merge remote-tracking branch 'atgeirr/fully-implicit' into fully-implicit
2013-05-24 15:56:23 +02:00
Atgeirr Flø Rasmussen
fa02639dbf
Use Span.
2013-05-24 15:38:31 +02:00
Atgeirr Flø Rasmussen
535a1fd272
Added Span.
2013-05-24 15:38:19 +02:00
Bård Skaflestad
c5ad446a0a
Include well support in FIBOSolver interface.
...
Update callers accordingly.
2013-05-24 15:27:19 +02:00
Bård Skaflestad
520a6a0a11
Merge remote-tracking branch 'atgeirr/fully-implicit' into fully-implicit
2013-05-24 12:24:42 +02:00
Atgeirr Flø Rasmussen
a94f1921dd
Added simulator class for fully implicit blackoil.
2013-05-24 11:40:58 +02:00
Bård Skaflestad
3a31a1a61f
Implement residualNorm() for reservoir part.
...
This is a prerequisite to having a working Newton loop.
This is a forward-port of commit 604f866
.
2013-05-24 11:38:17 +02:00
Atgeirr Flø Rasmussen
e367f08732
Moved implementation to .cpp file.
2013-05-24 11:14:05 +02:00
Atgeirr Flø Rasmussen
3d008c033d
Class FullyImplicitBlackoilSolver is no longer a template.
2013-05-24 11:00:55 +02:00
Atgeirr Flø Rasmussen
f916153747
Added (empty) implementation file.
2013-05-24 10:52:49 +02:00
Atgeirr Flø Rasmussen
57a3bd2113
Renamed ImplicitBOStep -> FullyImplicitBlackoilSolver.
2013-05-24 10:49:59 +02:00
Atgeirr Flø Rasmussen
6f55996441
Merge branch 'master' into fully-implicit
2013-05-24 10:40:35 +02:00
Atgeirr Flø Rasmussen
394a851b41
Clarify some variables' purposes.
2013-05-24 10:39:10 +02:00
Atgeirr Flø Rasmussen
9277e10552
Temporarily ignore viscosity derivatives.
2013-05-24 10:38:23 +02:00
Atgeirr Flø Rasmussen
8afdef61b6
Merge remote-tracking branch 'bska/master'
2013-05-24 09:06:50 +02:00
Atgeirr Flø Rasmussen
542b7eb03d
Removed qs from the set of primary variables.
2013-05-24 08:14:43 +02:00
Bård Skaflestad
12e4557b08
Add first cut at fully implicit system assembly.
...
Compile-tested only.
At this point, we only include reservoir effects--i.e., we don't
consider wells.
2013-05-23 18:28:50 +02:00
Bård Skaflestad
0c9cd6b901
Expose PhaseUsage to clients
...
This is likely to be a hack, but it does facilitate creating the fully
implicit solver for arbitrary two- and three-phase fluid systems.
2013-05-23 18:26:25 +02:00
Bård Skaflestad
2621283f1d
Add operator+=
...
This simplifies updating residuals.
2013-05-23 18:24:37 +02:00
Atgeirr Flø Rasmussen
07fbdf7608
Fix initialization issue with gpot_.
2013-05-23 16:39:15 +02:00
Atgeirr Flø Rasmussen
70ebd21cfd
Moved some calculations to computeExplicitData() method.
2013-05-23 15:08:21 +02:00
Atgeirr Flø Rasmussen
e5bd6547ae
Add gravity() method.
2013-05-23 14:48:34 +02:00
Bård Skaflestad
e2b5586b31
Merge remote-tracking branch 'atgeirr/master'
2013-05-23 13:25:20 +02:00
Atgeirr Flø Rasmussen
d171f043e5
Added simulator class and program using ImpesTPFAAD.
...
This copies similar code from opm-core and replaces
CompressibleTpfa with ImpesTPFAAD. Produces same results
for initial simple test cases.
2013-05-22 22:53:40 +02:00
Atgeirr Flø Rasmussen
52dc5799cc
Now computeFluxes() also sets well quantities.
...
Namely well_state.perfRates() and well_state.perfPress().
In the process, some overloads of fluid methods were added to
take V arrays instead of ADB arrays.
Simultaneously, coarsened tolerances a bit. Still hardcoded, though.
2013-05-22 22:51:14 +02:00
Atgeirr Flø Rasmussen
3e8bb53730
Moved implementation of class ImpesTPFAAD to separate file.
...
Also cleaned up header usage in ImpesTPFAAD.hpp, making some
new inclusions necessary in test program.
2013-05-22 15:49:55 +02:00
Atgeirr Flø Rasmussen
abc23b8009
ImpesTPFAAD is no longer a template class.
2013-05-22 15:27:16 +02:00
Atgeirr Flø Rasmussen
e86aa3324c
Moved DerivedGeology class to GeoProps.hpp.
...
Also, it is no longer a template (but its constructor is).
2013-05-22 15:16:24 +02:00
Bård Skaflestad
04e48cf615
Merge remote-tracking branch 'atgeirr/master'
2013-05-22 13:00:03 +02:00
Bård Skaflestad
6d0202d529
collapseJacs(): Don't assume column-major ordering
...
The 'InnerIterator' is ordering agnostic, so there is no need to
assume that the Jacobians are stored in a particular ordering.
2013-05-22 11:26:49 +02:00
Atgeirr Flø Rasmussen
8cc16466a9
Make ImpesTPFAAD use abstract fluid interface instead of template.
...
Follow-up changes to test program. Also while there, input correct
number of perforations to add_well() calls.
2013-05-22 11:13:14 +02:00
Atgeirr Flø Rasmussen
27cd7cf19e
Added abstract class BlackoilPropsAdInterface.
...
Also made BlackoilPropsAd (the class wrapping opm-core BlackoilPropertiesInterface)
inherit from it.
2013-05-22 10:56:14 +02:00
Atgeirr Flø Rasmussen
f2f83fee32
Remove unused experimental AD class.
2013-05-22 08:39:09 +02:00
Atgeirr Flø Rasmussen
89bd40f81e
Removed unused experiment with armadillo replacing Eigen.
2013-05-22 08:34:06 +02:00
Atgeirr Flø Rasmussen
edc08c0679
Now accepts both BHP and SURFACE_RATE wells.
2013-05-22 00:09:57 +02:00
Atgeirr Flø Rasmussen
c8bde19a01
Use all eqns for residual evaluations.
...
Use new wellRates() member of WellState.
2013-05-21 23:26:55 +02:00
Atgeirr Flø Rasmussen
8938459f7b
Added well equations.
...
Residuals are not yet used for loop control.
2013-05-21 15:42:35 +02:00
Atgeirr Flø Rasmussen
3929688756
Added utilitied collapseJacs() and vertcat().
...
The utilities are not optimized for speed, but make it easy
to construct a linear system from all the jacobian blocks.
2013-05-21 15:40:45 +02:00
Atgeirr Flø Rasmussen
bd1af1f53a
Make float accuracy fix the main path. Remove alternative path.
2013-05-21 13:54:28 +02:00
Atgeirr Flø Rasmussen
a147ff93d0
Can now solve with bhp-controlled wells.
...
Simple initial code. Assumes that well_state.bhp() contains
well bhp targets, does not check control structures.
2013-05-21 09:33:52 +02:00
Atgeirr Flø Rasmussen
4d794b79dc
Added Selector class.
...
Used to choose element-by-element between two (potentially AD) vectors,
depending on signs of elements of a third vector. Simple and not optimized.
2013-05-21 09:29:51 +02:00