Commit Graph

257 Commits

Author SHA1 Message Date
Robert K
be69c4c10e Introduce an interface for SimulatorTimer and AdaptiveSimulatorTimer.
currentDateTime and currentPosixTime are default implementations.
2015-01-09 16:21:20 +01:00
Robert K
aa9fe2a631 EclipseWriter: allow for writing of substeps in addition to report steps. 2015-01-09 16:21:03 +01:00
Andreas Lauser
349a24fab1 PVT properties: allow them to be temperature dependent
Note that this patch does not introduce any real temperature
dependence but only changes the APIs for the viscosity and for the
density related methods. Note that I also don't like the fact that
this requires so many changes to so many files, but with the current
design of the property classes I cannot see a way to avoid this...
2014-12-01 20:06:31 +01:00
Atgeirr Flø Rasmussen
1c5e4e9ef3 Suppress unused argument warning. 2014-11-05 07:51:21 +01:00
Robert K
f16f4a2e98 fix problem with solver reastart, variable was not reset.
Also, the time step does only grow moderately after a solver restart.
2014-10-24 12:32:00 +02:00
Robert Kloefkorn
16624f6f4e address Atgeirs comments. 2014-10-20 12:32:11 +02:00
Robert Kloefkorn
40d851e89f also catch std::runtime_error, i.e. convergence of linear solver failed. 2014-10-14 15:18:36 +02:00
Robert Kloefkorn
1bda36b251 added initial fraction to initialize last_timestep. 2014-10-13 11:17:37 +02:00
Robert Kloefkorn
3b58ad9aa4 Two small adjustments that came up when running in debug mode. 2014-10-10 13:55:28 +02:00
Robert Kloefkorn
246acea765 use unit::convert::to instead of hard coded 86400 factor. 2014-10-07 09:48:57 +02:00
Robert K
0e133f2cca move implementation to .cpp files. 2014-10-06 14:26:23 +02:00
Robert K
294b899ee8 the adaptive time stepping utility classes. 2014-10-06 14:06:07 +02:00
Robert K
8a17e5e5d6 move protected area to the bottom and remove unused lines as well as halfTimeStep method. 2014-10-03 15:53:18 +02:00
Robert K
67b42fd4f4 remove white spaces. 2014-10-03 14:14:01 +02:00
Robert K
e99158faa9 reset to old state. 2014-10-03 14:10:56 +02:00
Robert K
bfbd488e3e renamed and split advance method. 2014-10-03 13:44:05 +02:00
Robert K
0a03aea874 class for handling adaptive time steps. 2014-10-03 13:33:13 +02:00
Robert K
02e346d8cc improvement of the time step adjustment. 2014-10-02 14:04:32 +02:00
Robert K
455b066b2a sub step simulator timer. 2014-10-01 13:56:27 +02:00
Robert K
9c86ddc6bb reset master. 2014-10-01 13:55:42 +02:00
Robert K
ade58e64b9 SubStepSimulationTimer for time step control. Needs documentation and cleanup. 2014-09-30 15:55:26 +02:00
Atgeirr Flø Rasmussen
8cd6be1244 Fix minor typo in comment. 2014-08-27 18:13:15 +02:00
Atgeirr Flø Rasmussen
a21f20f462 New free function thresholdPressures(). 2014-08-27 18:07:46 +02:00
Andreas Lauser
0fe2d04708 remove EclipseGridParser compatibility methods from all classes 2014-05-21 11:22:43 +02:00
Kai Bao
500053d6aa A new SimulatorTimer Class 2014-03-26 15:53:54 +01:00
Kai Bao
54316c19c8 Output correct information for temporary use.
Change the SimulatorTimer class a little bit to output the totaltime and
current time correctly.
2014-03-24 16:41:02 +01:00
Andreas Lauser
f2e9016bd0 SimulatorTimer: allow it to be limited to a sub-range of all report steps 2014-03-19 11:36:39 +01:00
Andreas Lauser
4db4494329 SimulatorTimer: rename currentTime() to simulationTimeElapsed()
because the name "currentTime()" can be mistaken for the point in
real-life time at which the simulation is run (e.g. March 11, 2014,
15:07:45.123), the _point_ in time which the simulator timer currently
represents (e.g. Jun 5, 1985, 02:33:12.345) instead of the simulator
time in seconds which elapsed since the START date
(e.g. 52633.345 s).

this rename may lead to some fallout in other modules. I'll
fix them after this PR has been merged...
2014-03-12 19:01:58 +01:00
Andreas Lauser
caf10e0e7f SimulatorTimer: rename currentTime() to simulationTimeElapsed()
because the name "currentTime()" can be mistaken for the point in
real-life time at which the simulation is run (e.g. March 11, 2014,
15:07:45.123), the _point_ in time which the simulator timer currently
represents (e.g. Jun 5, 1985, 02:33:12.345) instead of the simulator
time in seconds which elapsed since the START date
(e.g. 52633.345 s).

this rename may lead to some fallout in other modules. I'll
fix them after this PR has been merged...
2014-03-12 19:01:58 +01:00
Joakim Hove
890cc8a188 Changed open / close behaviour of well_controls: 1) well_controls has an explicit open_close flag. 2) Will NOT flip current value to change open|close status 2014-03-04 20:23:19 +01:00
Andreas Lauser
85a0032247 SimulatorTimer: make it possible to base it on opm-parser's TimeMap
Since SimulatorTimer is a fairly shallow shim if using the TimeMap, it
can also be removed relatively easily. Having said this, that would
trigger _many_ changes in _a lot_ of places and I'm not motivated at
all to fight that battle as long as the old parser needs to be
supported. I thus decided that the best way is to add a "wrapper mode"
to SimulationTimer...
2014-02-27 12:56:23 +01:00
Joakim Hove
25750c693e Implemented well_controls based on well_controls_get_xxx() functions. 2014-01-06 15:02:19 +01:00
Roland Kaufmann
f30ab55974 Provide routine to return the step length taken
The output routine needs to know which step that has been taken in the
past (to arrive at this result), not which step to take next going
forward.
2013-11-27 00:36:17 +01:00
Roland Kaufmann
73dfe849d6 Replace unclear constant with better documentation
The step number is zero before the first timestep has been taken, and
one after. The step number is one before the second timestep has been
taken, and two after. This was not clear from the text.
2013-11-27 00:23:00 +01:00
Roland Kaufmann
29afd2c378 Report after the timestep really is completed
If we report before we increment the timer, then we will report at
a time which is at the beginning and not at the end of the timestep.
2013-11-27 00:04:45 +01:00
Roland Kaufmann
2ba7b3329d Make starting timestep more explicitly known
One-based or zero-based? Better be documented (in a way that doesn't
promote hard-coding in the clients!)
2013-11-26 12:44:37 +01:00
Roland Kaufmann
e1823dc9a7 Disable output to console if parameter quiet = true
If the standard output is not desirable, it can be suppressed and
custom output can be written through the timestep_completed event
instead.
2013-09-26 12:37:02 +02:00
Andreas Lauser
8a6b30ac74 fix headers
make all non-implementation headers includable without
preconditions. Also, this removes the GravityColumnSolver.hpp file,
because it tried to include a non-existing file and it was thus unused.
2013-09-11 13:11:47 +02:00
Andreas Lauser
2cfe79f664 convert users of the ASSERT and the ASSERT2 macros to standard assert() 2013-09-05 13:04:37 +02:00
Andreas Lauser
1605b88d66 convert THROW to OPM_THROW 2013-09-05 13:04:37 +02:00
Andreas Lauser
f4a22486ef convert THROW to OPM_THROW 2013-09-05 13:04:37 +02:00
Andreas Lauser
5bb9053206 include iostream in the files which use std::cerr or std::cout
for some of these files this is needed to make to keep it compiling
after the next patch because the new ErrorMacros.hpp file will no
longer implicitly includes <iostream>. for the remaining files it is
just good style.

While at it, the includes for most of these files have been ordered in
order of decreasing abstraction level.
2013-09-05 13:04:37 +02:00
Roland Kaufmann
b03e238d45 Provide protocol for exchanging state with client
The state that is passed to the simulator object is directly
accessible without any encapsulation towards the client. After
the notification callback was introduced, this allows the client
to observe the state in the middle of a simulation.

However, it may be that the simulator has some internal state
which is not reflected in the state object because there is a
cost associated by flushing it into the TwophaseState format.

The notification is called back on every timestep, not just the
ones that will do reporting. It may even be that reporting is
done dynamically and is not known at the time of setup. (It is
more like a condition variable).

Consequently, flushing the state in every timestep is a bad
idea. This patch sets up a new method sync() which it is expected
that the notification will call if it needs the state for
reporting purposes.

Currently it is a no-op. It just establishes a protocol that
other, compatible implementations can also use.
2013-08-30 15:14:22 +02:00
Roland Kaufmann
c1eadadb72 Replace old timestep completed event with new scheme 2013-08-26 13:08:49 +02:00
Andreas Lauser
2a26964c7d replace boost::scoped_ptr by std::unique_ptr
thanks to Bård Skaflestad, Atgeirr Rasmusen and Roland Kaufmann for
the hint.
2013-08-08 15:21:38 +02:00
Andreas Lauser
8afc71db57 use std::shared_ptr instead of boost::shared_ptr
our policy is that we only use boost if necessary, i.e., if the oldest
supported compiler does not support a given feature but boost
does. since we recently switched to GCC 4.4 or newer, std::shared_ptr
is available unconditionally.
2013-08-08 13:25:58 +02:00
Andreas Lauser
69bf6401b2 fix new 'unused variable' warnings on GCC
that one was due to the fact that the constructor arguments were no
longer used to initialize (unused) private member variables. These
warnings did not appear in CLang for some reason. Again, thanks to
Bård Skaflestad for the review.
2013-07-30 19:07:46 +02:00
Andreas Lauser
5c4c44812d fix a few CLang warnings
most of them quite insignificant, but still annoying. The only
exception is the warning about the changed alignment for the 'work'
argument of spu_implicit_assemble(). AFAICT, the only reason why it
worked was that the pointer produced by malloc() was passed
directly. (malloc() seems to fulfill all alignment criteria.) To fix
this, I've changed that argument's type from char* to double*.
2013-07-30 16:27:20 +02:00
Júlio Hoffimann
43438b2bf8 Remove trailing whitespaces 2013-07-28 08:34:13 -03:00
Bård Skaflestad
147dabc3ce Merge from upstream 2013-05-23 09:50:46 +02:00