Commit Graph
100 Commits
Author SHA1 Message Date
Tor Harald Sandve ebaaa2c51c Include goc and woc in the span for the phase pressure calculation 2018-01-02 14:28:06 +01:00
Tor Harald Sandve 4923b9968e Remove fix for GOC and WOC above/below reservoir 2018-01-02 14:28:06 +01:00
Tor Harald Sandve a03a4e112f Fix sign error in the specified oil pressures at at WOC and GOC
The oil pressure at the contact for the special cases:

contact	location	po(contact)
GOC 	above 	-inf
GOC 	below 	+inf
WOC 	above 	-inf
WOC 	below 	+inf
2018-01-02 14:28:06 +01:00
Tor Harald Sandve b389f40849 Currectly handling GOC below and WOC above the reservoir The phase pressure of water and gas is set to inf when WOC and GOC is above and below the reservoir. This make sure the minimum saturation values are picked for these cases. 2018-01-02 14:28:06 +01:00
Tor Harald Sandve ba54cd84c2 Fixes issues pointed out in the PR comments 2018-01-02 14:28:06 +01:00
Tor Harald Sandve b1d20aa83d The water/gas pressures are only calculated if woc and goc lies within
the reservoar
The water/gas pressure is set to -inf when woc and goc is above or below
the reservoar.
2018-01-02 14:28:06 +01:00
Tor Harald Sandve 480f5337b6 BUGFIX
Wrong placement of parentes
2018-01-02 14:28:06 +01:00
Tor Harald Sandve 70dc519539 Implements initialization for constant capillary pressure functions 2018-01-02 14:28:06 +01:00
Tor Harald Sandve c61fb736fa Computes saturations based on depths
For constant capillar pressure function the saturation is
    determined by cell depths:

    Sg_max, Sw_min
    ----- goc ----
    Sg_min, Sw_min
    ----- woc ----
    Sg_min, Sw_max
2018-01-02 14:28:06 +01:00
Tor Harald Sandve 6d28f19009 Change default values
- use time stepping algorithm pid instead of pid + iter
Adjusting the time-steps on the number of linear iterations does
currently not give any improvents on the time-stepping.
- Change the pid tolerance. The time-stepper will take longer time-steps
and thus reduce the simulation time significantly. The Norne and the SPE
results does not degrade
- Less aggressive reduction of time-steps after convergence problems
2015-09-08 10:56:58 +02:00
Tor Harald Sandve 18d429ebff Use CPR as fall back if use_interleaved=false 2015-09-07 06:08:13 +02:00
Tor Harald Sandve dbce88aa2c Limit the timestep growth for all timestepping algorithm
The time step restriction is moved to AdaptiveTimeStepping_impl.hpp to
make it apply to all time-stepping algorithms.
2015-09-03 12:52:47 +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 0227165bd5 Rename last_timestep_ to suggested_next_timestep_ 2015-08-25 11:16:36 +02:00
Tor Harald Sandve 81b8b631a6 Use estimated time-step instead of average in next report step 2015-08-25 06:32:39 +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 9272f2d8bf Add dune/istl/istlexception.hh to header
Fix to make it compile with dune-istl 2.2
2015-04-10 14:03:27 +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 880026e893 Fix comments. 2015-01-09 09:10:10 +01:00
Tor Harald Sandve 1718800e55 Add warning to c solvers when stopped wells occur
Stopped wells are treated as shut wells in the c solvers in opm-core.
I.e they are completly isolated from the domain.
2015-01-09 09:10:10 +01:00
Tor Harald Sandve 82eafbb510 Renaming well is shut to well is stopped.
Rename the the meaning for shut as whats used in Eclipse.
STOP: Well stopped off above the formation. I.e. allow for flow in the
well.
SHUT: Well completely isolated from the formation. The well is removed
from the well list.
2015-01-09 09:10:10 +01:00
Tor Harald Sandve d50ec0d4d1 Modify the well manager test as we now support stopped wells.
We no longer expect an exception when we meet stopped wells.
2015-01-09 09:10:10 +01:00
Tor Harald Sandve b8bf45d24d Support stopped wells
The given control is applied to the stopped well, and the status is set
to not open. (i.e closed, but currently named shut)
2015-01-09 09:10:10 +01:00
Tor Harald Sandve 0d044eada0 Add test case for stopped wells
The test check that the rates are set to zero for stopped wells.
2015-01-09 09:10:10 +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 a59044bd93 The wellmanager test is modified to account for not adding shut wells
Shut wells are not added to the well list and the well manager test is
modified accordinly.
2014-10-27 07:23:58 +01:00
Tor Harald Sandve 3fe61bfb1b BUGFIX. Do not increase well index for shut wells.
Shut wells are not added to the well list and the well index should
therefore not be increased when well control is set. This is similar to
whats is done for shut wells in createWellsFromSpecs.
2014-10-27 07:20:03 +01:00
Tor Harald Sandve ef9bbe4ce7 Make the comment in test_wellsmanager more precise
The comment now precisly says that Shut wells are not added instead to
the well list instead of removed.
2014-10-24 07:05:43 +02:00
Tor Harald Sandve 4585446e5a Fix SHUT wells
Shut wells are not added to the well list and thus not considered in the
simulator.

The shut well test in test_wellsmanager is modified to assert this
behaviour.

BUG: This change provokes an assert in the EclipeWriter as number of
wells in wellstate is different from number of wells in the schedule.
2014-10-24 06:57:38 +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
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 5c244bd94e Include goc and woc in the span for the phase pressure calculation 2014-09-02 14:49:09 +02:00
Tor Harald Sandve f960de4b0b Remove fix for GOC and WOC above/below reservoir 2014-09-02 14:49:09 +02:00
Tor Harald Sandve 18de1c190a Fix sign error in the specified oil pressures at at WOC and GOC
The oil pressure at the contact for the special cases:

contact	location	po(contact)
GOC 	above 	-inf
GOC 	below 	+inf
WOC 	above 	-inf
WOC 	below 	+inf
2014-08-27 14:35:01 +02:00
Tor Harald Sandve 193872a1fe Currectly handling GOC below and WOC above the reservoir The phase pressure of water and gas is set to inf when WOC and GOC is above and below the reservoir. This make sure the minimum saturation values are picked for these cases. 2014-08-27 10:10:55 +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 c1fc8aeb7d Fixes issues pointed out in the PR comments 2014-08-18 08:57:23 +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 f3a9dac5bb The water/gas pressures are only calculated if woc and goc lies within
the reservoar
The water/gas pressure is set to -inf when woc and goc is above or below
the reservoar.
2014-08-15 08:56:35 +02:00
Tor Harald Sandve dfa2c42233 Changes in the ref. solution in the DeakAllDead test 2014-08-12 07:08:57 +02:00
Tor Harald Sandve 51b8b44e35 BUGFIX
Wrong placement of parentes
2014-08-11 12:45:52 +02:00
Tor Harald Sandve 91bdb7dde2 Implements initialization for constant capillary pressure functions 2014-08-11 11:23:15 +02:00