Commit Graph
88 Commits
Author SHA1 Message Date
Tor Harald Sandve 18d429ebff Use CPR as fall back if use_interleaved=false 2015-09-07 06:08:13 +02:00
Tor Harald Sandve fd48a6e004 Change defaults
Use the more stable interleaved solver instead of CPR as default
Solve well equation initially as default
2015-09-03 12:38:03 +02:00
Tor Harald Sandve 53c1195b64 Rename variable from i to injector 2015-09-03 11:29:12 +02:00
Tor Harald Sandve 944092bd89 Add support for WCONINJH
Explicitly adds bhp control on rate controlled history matching
injector.The default bhp limit is a large number to make sure that the
well does not switch. Alternativly bhp limit can be specified using
WELTARG. This is typically done to make sure the bhp limit stays within
the pressure limits in the PVT tables. Support for WELTARG is also added
to the history matching producers (WCONHIST)
2015-09-03 11:26:07 +02:00
Tor Harald Sandve 3a78cd4635 BUGFIX Fix out of bounds error 2015-09-03 09:33:46 +02:00
Tor Harald Sandve 03ce274c59 Add missing file in the cmake list 2015-08-18 07:28:25 +02:00
Tor Harald Sandve 554f1ec9c6 Add comments to the well equations
Gas and solvent is combinded and solved together
The input in the well equation is then the
total gas phase = hydro carbon gas + solvent gas
This may need to be reconsidered later, as the model
is tested.
2015-08-18 07:24:08 +02:00
Tor Harald Sandve cca5410ebb Fix minor comments in PR#425 2015-08-18 07:24:08 +02:00
Tor Harald Sandve 3b99338bd0 Rename Extended to Solvent
- classes and files are renamed to use solvent instead of extended in
their names.
2015-08-18 07:24:08 +02:00
Tor Harald Sandve 7c3f184d43 Rename simulator from flow_extended to flow_solvent 2015-08-18 07:24:08 +02:00
Tor Harald Sandve 86afb1bbf6 Update to new parserMode interface 2015-08-18 07:24:08 +02:00
Tor Harald Sandve 332ded52e8 Add support for ssfn
The SSFN keyword is used in the solvent model to modify the gas/solvent
rel.perm values.
2015-08-18 07:24:08 +02:00
Tor Harald Sandve a5f625f541 Add parsermode to EclipseState 2015-08-18 07:24:08 +02:00
Tor Harald Sandve 17cddaf126 Add support for solvent properties
-surface density are specified using the Eclipse keyword SDENSITY
and the pvt properties (viscosity (mu) and formation volume factor (b)
using PVDS
2015-08-18 07:24:08 +02:00
Tor Harald Sandve 76fae686c7 Supporting changes in WSOLVENT during simulations 2015-08-18 07:24:08 +02:00
Tor Harald Sandve b596637c95 Add missing files 2015-08-18 07:24:08 +02:00
Tor Harald Sandve 971e7e19cb Add simple solvent model
assumes:
- solvent is immiscible in the oil phase
- gas pvt and relperms are used for the solvent
- no initial solvent in the model

Solvent is injected using the WSOLVENT keyword
TODO: Make it possible to change WSOLVENT
2015-08-18 07:24:08 +02:00
Tor Harald Sandve ab872b15e3 Remove old constructor
Pass Null pointer as default argument for the EclipseState to enable all
users to use the new constructor.
2015-07-10 10:30:29 +02:00
Tor Harald Sandve 662849637c Change size_t to int to avoid comparison warnings
and add some white spaces
2015-07-10 05:08:04 +02:00
Tor Harald Sandve f1e91b8b87 Use the gridhelpers to make it run with cp-grid 2015-07-09 12:18:52 +02:00
Tor Harald Sandve 065b2f595c Add support for NNC in the simulator
1) NNC are added the grad, div and average operators
2) NNC are added the upwindSelector
3) NNC transmissibilities are added to the face transmissibilities
2015-07-09 12:15:59 +02:00
Tor Harald Sandve 8a166ebbd6 Add option for solving the wellEq seperatly
The well equations is solved seperatly in order to provide more accurate
initinal values to the reservoir model.
2015-06-16 17:03:52 +02:00
Tor Harald Sandve 86922e45e6 Seperate wells stuff from the reservoir stuff
The seperation is done in order to better accommodate solving the well
equation seperatly.
2015-06-16 17:03:52 +02:00
Tor Harald Sandve d7c67f10de Change default tolerance for well residuals 2015-05-06 08:55:49 +02:00
Tor Harald Sandve 43b8f9851e Change to maximum norm for the well residuals 2015-05-06 08:55:49 +02:00
Tor Harald Sandve b4369cade8 Check well_flow tolerance pr phase
The phase rate residuals are scaled by the average volume factor to
avoid too large weight on the gas phase rates.
This also makes the well convergence criteria more consistent with the
mass-balance residuals for the cells.
2015-05-06 08:55:49 +02:00
Tor Harald Sandve f1d7e0c7ea Only add contribution from positive phase rates to the wellbore mixture
Instead of adding contribution from all wells with positive total rates,
each phase in each well are checked seperatly.
2015-05-04 10:22:43 +02:00
Tor Harald Sandve a860361217 Cleaning addWellEq
1) Comments are added
2) Variable names are made more descriptive
3) Unecessary usage of subset are removed by extracting needed
quantities for the perforation cells once in advance
2015-04-29 09:22:23 +02:00
Tor Harald Sandve 1cec10ce05 Clean updateWellControls
The function is simplified by removing the update of the primal
variables (the ADBs). As a consequence updateWellControls must be
called prior to the creation of the primal variables.
2015-04-29 09:22:23 +02:00
Tor Harald Sandve 302bc71d2c Use target values as initial conditions for BHP and SURFACE_RATE
BHP and SURFACE_RATE values are updated every step and not only when the
well controll has switched.
2015-04-29 09:22:23 +02:00
Tor Harald Sandve b3f9997f6a BUGFIX Wellbore mixture calculations for multiphase injectors
Add phase rates and not total rates when calculating the wellbore rates.
2015-04-29 09:22:23 +02:00
Tor Harald Sandve 388ce7548e Averaging multiple layers of NTG values 2015-03-19 12:27:08 +01:00
Tor Harald Sandve 65199735e2 Use average NTG values for merged cells due to MINPV algorithm
The volume weighted averaged NTG values are used to get more
reasonable x and y transmissibilities for the cells effected by the
MINPV grid processing algorithm.

This commit starts the process of supporting the MINPV-FILL keyword
where upscaled properties are used for the merged/filled cells.
2015-03-19 11:37:03 +01:00
Tor Harald Sandve 70a6a2ebf8 Use the average well block pressure when evaluating the properties
The average well block pressure is used instead of the well cell
pressure when the well properties are evaluated.
Temperature, rs, rv, phase conditions are still well cells values.

Perforation pressures are stored in the well state
2015-02-19 09:58:17 +01:00
Tor Harald Sandve 44e9d2a34e Fix PR comments
1) swatinit() is changed to setSwatInitScaling() to make it obvious that
we are modifying the props.
2) the descriptions of saturation and pc now makes more sense
3) the method is removed from the sibling class and the interface and
the type of new_props is changed from BlackoilPropsAdInterface to
BlackoilPropsAdFromDeck
5) The same modification is added to sim_fibo_ad_cp
2015-02-19 08:34:55 +01:00
Tor Harald Sandve 013d1d3499 Apply the swatinit scaling to new_props
The capillary pressure function in new_props is scaled to match the
capillary pressure function in props.

This is a temporary workaround while the simulator uses two different
property object.
2015-02-19 08:18:39 +01:00
Tor Harald Sandve 2f32afd36d Hardcode bhp limit for WCONHIST/RESV to 1 atm.
TODO: Allow WELTARG to change the bhp limit
2015-02-05 09:41:37 +01:00
Tor Harald Sandve b57ddf1b2d Include derivatives of vappars
The derivatives of the vappars are included in the Jacobian.
To avoid inf derivatives for vap<1, the oil saturation is restricted
from below by sqrt(epsilon).
2015-01-29 13:08:52 +01:00
Tor Harald Sandve 7bf7b52dd8 Only copy perfPhaseRates if number of perforations is equal.
The number of perforations may change due to completions beeing shut.
If the number of perforations changes the perfPhaseRates are set to
equal the wellRates/(number of perforations) instead of the values from
the previous time step.
2015-01-23 14:10:10 +01:00
Tor Harald Sandve 088cac6801 BUGFIX: Avoid inclusion of disgas in the vapoil contribution
A temporary copy is added to avoid inclusion of dissolved gas when the
vaporized oil contribution is added in the accumulation term for the oil
phase.
2015-01-12 07:19:18 +01:00
Tor Harald Sandve eefac9584e Add on overload of computePressure() that accepts explicit saturations
The overload is used direcly in variableState() to clean the code as
well as in the orignal computePressures(state) implementation.
2015-01-07 12:46:12 +01:00
Tor Harald Sandve 23f1f443fc Fix the fall out in case of missing gas phase 2015-01-07 08:34:08 +01:00
Tor Harald Sandve 5572a14c20 Account for the renaming in the wellsManager
Shut is renamed to stopped in the wellsManager in order to better
reflect the name logic in the deck. This PR implements the nessesary
change in opm-autodiff
2014-12-19 07:18:36 +01:00
Tor Harald Sandve 0a0a3b2ba6 Use phase pressures for the fluid properties
There has been an inconsitancy in which pressure to use in the
evaluation of the fluid properties.
With this commit the phase pressure is used for all the evaluation of
the fluid properties.
2014-12-18 08:51:08 +01:00
Tor Harald Sandve 25a4bb5fbe Add contribution from region multipliers
The multiplier contribution from the getRegionMultiplier is added to the
face multipliers. The getRegionMultiplier method is called with the cell
index on both side of the face in order to return the correct region
multiplier across faults.
2014-12-10 11:46:49 +01:00
Tor Harald Sandve 6ae7f460ff Implement code style comments 2014-12-10 07:34:56 +01:00
Tor Harald Sandve 02724b7f7a Implement comments for PR#249
1) Add the possibility for the user to chose between local and global
coordinate permeability in the transmissibility calculations.
2) Trow for CpGrid
3) Add default for switch
2014-12-10 07:29:05 +01:00
Tor Harald Sandve b11534b137 Compute half transmissibilities based on local coordinate system
hTrans(cellFaceIdx) = K(cellNo,j) * sum( C(:,i) .* N(:,j), 2) /
sum(C.*C, 2),
Only for diagonal tensors, off-diagonal permeability values are ignored
without warning
2014-12-10 07:29:05 +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
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
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
Tor Harald Sandve d0fc3eba77 Remove the check if porv is present in the Eclipsestate
The porv is computed if needed and the Eclipsestate will return false on
this test before it is called.

This commit applies the change to the sim_fibo_ad_cp.cpp
2014-10-27 08:11:27 +01:00
Tor Harald Sandve 0979346430 Remove the check if porv is present in the Eclipsestate.
The porv is computed if needed and the Eclipsestate will return false on
this test before it is called.

Tested on Norne
2014-10-27 08:01:20 +01: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
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
Tor Harald Sandve 6ae3212341 Use default primary variable (Sg) for cells almost full of water 2014-08-18 12:28:25 +02:00
Tor Harald Sandve 7e297dfaf9 Output rs and rv
The Rs and Rv values for each timestep are written to files
2014-08-18 08:51:14 +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
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
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
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
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
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
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
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
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
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
Tor Harald Sandve 512d49c41a Use MultiArch-unaware path for dune.module
As of 2013-09 the DUNE code that reads dune.module is not MultiArch-
aware. Thus, for a 64-bit platform it will look in lib/ on Debian and
lib64/ on RHEL.
2013-09-19 10:25:37 +02:00
Tor Harald Sandve 1cadc5af6d Add special variable for MultiArch-unaware components
Some components are not yet MultiArch-aware and installs to either
lib/ (Debian) or lib64/ (RHEL) on 64-bit platforms. If we need to
interface with these components, then it is nice to have such a
variable set together with the regular detection code.
2013-09-19 10:25:37 +02:00
Tor Harald Sandve 1cf1e3383b Add new interface to BlackoilPropsAdFromDeck
-- not finished --
2013-05-27 14:55:32 +02:00