Commit Graph

1206 Commits

Author SHA1 Message Date
Bård Skaflestad
d0866c39b5 Implement first cut at upwind-mobility weighting for transport
Specifically,

  - Introduce a new class, UpwindSelector<Scalar> which provides a
    selection service (method select()) to pick out a quantity across
    an interface in the upwind direction.

    Method select() is implemented only for the case of no
    counter-current flow (i.e., no effects of gravity and/or capillary
    pressure).  The selector is affected through applying an explicit
    sparse matrix to each quantity.  This may be inefficient, but only
    measurements will tell.

  - Split function fluxFunc<ADB>() into two components,
    phaseMobility<ADB>() and fluxFunc<ADB>().  The former computes
    phase mobilities (per cell) for water and oil in a subset of the
    grid cells and the latter computes the flux function (for water,
    i.e., the first phase) based on a (2-) vector of phase
    mobilities--either per cell or per internal interface.

  - Compute explicit phase mobilities (per cell) in the non-linear
    loop before employing the upwind selector to pick out proper
    upwind mobilities per (internal) interface to define the quantity
    'fw_face' which was previously computed by an arithmetic average.
2013-05-03 17:48:33 +02:00
Bård Skaflestad
bd240a31cb Declare operator?() as 'const'.
None of operator+(), operator-(), operator*() or operator/() modify
their object.  These methods are thus naturally declared as 'const'.
2013-05-03 16:24:20 +02:00
Bård Skaflestad
0a43fe68dd Complete Addition tests. 2013-05-03 12:53:51 +02:00
Bård Skaflestad
d6cfe8ab6f Clarify diagnostic message in pressure solve.
Word missing in commit a95fbf0.
2013-05-03 12:39:24 +02:00
Bård Skaflestad
a95fbf0e8e Terminate process in case of factorisation/solution failure.
Provide moderately informative diagnostic message in this case.
2013-05-03 12:33:48 +02:00
Bård Skaflestad
dddb30b5a5 Use regularised Jacobian when solving pressure system. 2013-05-03 12:26:02 +02:00
Bård Skaflestad
cd9c9d5cde Don't require initialiser lists.
These were introduced into GCC as recently as edition 4.7 .  Ubuntu
10.04 LTS features GCC 4.4 only.
2013-05-03 11:28:08 +02:00
Bård Skaflestad
e4cbc2c7f2 Merge remote-tracking branch 'atgeirr/master' 2013-05-03 11:08:37 +02:00
Bård Skaflestad
4ffea931e3 Add test for addition of ADB::variable()s. 2013-05-03 11:08:06 +02:00
Atgeirr Flø Rasmussen
9deca26fae Merge remote-tracking branch 'bska/master' 2013-05-03 11:01:46 +02:00
Atgeirr Flø Rasmussen
7e240913a4 Now doing a single transport step as well. 2013-05-03 11:00:17 +02:00
Bård Skaflestad
9e55006229 Implement a custom comparator for Eigen::SparseMatrix<double>
Use it to simplify the 'FunctionInitialisation' test.
2013-05-03 10:46:46 +02:00
Bård Skaflestad
6794577301 Add stub test for ADB::operator+()
Doesn't actually test anything at the moment.
2013-05-02 18:00:36 +02:00
Bård Skaflestad
49396b6079 Don't include <iostream> in tester.
It is not needed and was only added for convenience during test
development.
2013-05-02 15:40:59 +02:00
Bård Skaflestad
b1b245ccab Don't include <iostream> in public header. 2013-05-02 15:16:48 +02:00
Bård Skaflestad
b6834de662 Don't rely on header pollution to provide <iostream> 2013-05-02 15:16:21 +02:00
Bård Skaflestad
2b5d49bea9 Merge remote-tracking branch 'atgeirr/master' 2013-05-02 14:48:33 +02:00
Bård Skaflestad
e15c389daf Rename typedef ADV -> ADB to reflect reality.
We're working with *Block*s here.
2013-05-02 13:57:05 +02:00
Atgeirr Flø Rasmussen
62e321d069 Moved topological matrix operators into separate struct. 2013-05-02 13:51:03 +02:00
Bård Skaflestad
567d3a80b3 Add various initialisation tests using Boost.Test . 2013-05-02 13:39:33 +02:00
Bård Skaflestad
36f2dd6403 Merge remote-tracking branch 'atgeirr/master' 2013-05-02 11:28:32 +02:00
Atgeirr Flø Rasmussen
9a9e6fb7b7 Fix slow setup of cdiff etc. Also add timing, make case 3d. 2013-05-02 11:27:02 +02:00
Atgeirr Flø Rasmussen
63aae9a232 Avoid unused variable warning in release build. 2013-05-02 11:26:06 +02:00
Bård Skaflestad
a496c2d668 Merge remote-tracking branch 'atgeirr/master' 2013-05-02 10:52:36 +02:00
Atgeirr Flø Rasmussen
42511ad2e3 Removed unused variables sw and so. 2013-05-02 09:27:58 +02:00
Atgeirr Flø Rasmussen
169557111d Simple simulator-like test program added.
So far it only computes a single pressure solution.
2013-05-02 08:51:36 +02:00
Bård Skaflestad
3c00b0528a Sort list of ignored executables for easy reference 2013-05-02 00:35:40 +02:00
Atgeirr Flø Rasmussen
8e7ae33724 Fixed wrong assert() in operator*(sparse matrix, AD block).
Also removed unnecessary debug output (that was wrong anyway).
2013-05-01 21:25:50 +02:00
Atgeirr Flø Rasmussen
f85e74bcff Added operator* that allows A*x for sparse A and x an AD object. 2013-05-01 09:05:53 +02:00
Atgeirr Flø Rasmussen
92f56f6d92 Removed variable index from ForwardBlock class.
Feature was in the way of having (for example) face variables depending on cell variables.
2013-05-01 09:03:56 +02:00
Bård Skaflestad
633de102c2 Fix misprint in operator*() chain rule. 2013-04-30 22:51:29 +02:00
Atgeirr Flø Rasmussen
30c8acfaf4 Updated ignore patterns. 2013-04-30 20:29:57 +02:00
Atgeirr Flø Rasmussen
d046b9e97a Completed simple block AD class. 2013-04-30 20:28:32 +02:00
Atgeirr Flø Rasmussen
d518b5c787 Initial work in progress on block AD class. 2013-04-30 16:15:40 +02:00
Atgeirr Flø Rasmussen
069e878b0e Completed basic version of AD vector class and test. 2013-04-30 16:15:00 +02:00
Bård Skaflestad
6ed2b129cb Implement constant() and variable() in terms of function()
Specifically,

  - A constant is a function with zero derivative
  - A variable is a function with unit derivative with respect to
    itself.
2013-04-30 13:41:13 +02:00
Bård Skaflestad
70996fb195 Remove two instances of EOL whitespace. 2013-04-30 13:35:34 +02:00
Bård Skaflestad
86eb29b4c3 variable(): Avoid memory overhead of identity constructor. 2013-04-30 12:48:02 +02:00
Bård Skaflestad
c276592ca5 Don't #include <iostream>. It's not needed. 2013-04-30 12:37:08 +02:00
Bård Skaflestad
06d2c078fa Use documented include statements for Eigen 2013-04-30 12:36:43 +02:00
Bård Skaflestad
134b9b1a7f Readjust whitespace to original conventions. 2013-04-30 11:52:03 +02:00
Atgeirr Flø Rasmussen
e2d8b77ec5 Initial vector AD type experimentation. 2013-04-30 11:48:04 +02:00
Atgeirr Flø Rasmussen
0bf693e8c0 Merge remote-tracking branch 'bska/master' 2013-04-30 11:07:13 +02:00
Atgeirr Flø Rasmussen
42cdfa27a0 Use named constructor pattern.
Made AutoDiff::Forward constructor private.
Added static methods constant(), variable(x) and function(x, dx).
2013-04-30 11:05:59 +02:00
Bård Skaflestad
6319c428a3 Don't return values from update operators.
Statements like

   a = b += c

make no sense
2013-04-30 10:47:00 +02:00
Bård Skaflestad
0ff3b721ee Rename members to better reflect purpose.
Specifically,

  - x_  -> val_
  - dx_ -> der_
2013-04-30 09:25:37 +02:00
Bård Skaflestad
e17447d6cd Add further test cases
- Polynomials (including mixed mode arithmetic)
  - Cosines (including mixed mode arithmethic)
  - Square roots (including mixed mode arithmetic)
2013-04-30 00:08:02 +02:00
Bård Skaflestad
011ab5ee93 Operator *=(): Use correct derivative chain rule
Updating the derivative using '*=' is just plain wrong.
2013-04-29 23:53:31 +02:00
Bård Skaflestad
72d6d32095 Don't use updated values for computing derivatives
We must not overwrite the current evaluation point until all the
derivative values have been calculated.  Otherwise, the derivatives
will differ from that of the actual values.
2013-04-29 23:28:49 +02:00
Bård Skaflestad
72e2b1f5ca Ignore executables. 2013-04-29 15:01:03 +02:00