Commit Graph

150 Commits

Author SHA1 Message Date
Arne Morten Kvarving
e8c3389b80 update petsc code
- api changes in newer versions
- do not manually destroy the preconditioner. this is, and has always
  been, owned by the ksp object and dies with its destruction.
2016-09-29 14:19:48 +02:00
babrodtk
466e721e0b Fixed warnings 2016-09-06 07:50:02 +02:00
Atgeirr Flø Rasmussen
d9c33cbcb6 Merge pull request #1039 from atgeirr/fix-compile-maxabs-unsigned
Avoid ambiguous calls to abs with unsigned integers.
2016-06-17 08:02:20 +02:00
Atgeirr Flø Rasmussen
89cb2680a1 Make specialization for all unsigned integer types. 2016-06-16 08:47:21 +02:00
Bård Skaflestad
6fdfcefaa0 Merge pull request #1040 from atgeirr/fix-linsolverfactory-default-solver
Set default solver depending on configuration.
2016-06-15 17:34:41 +02:00
Atgeirr Flø Rasmussen
8b2ebc690b Address review comments. 2016-06-15 15:01:45 +02:00
Atgeirr Flø Rasmussen
e6da69575a Set default solver depending on configuration. 2016-06-15 14:32:00 +02:00
Atgeirr Flø Rasmussen
291b13c2d4 Avoid ambiguous calls to abs with unsigned integers. 2016-06-15 10:55:42 +02:00
Arne Morten Kvarving
ba255d89d3 Revert "Check for HAVE_UMFPACK in LinearSolverFactory"
This reverts commit f54c74db06.
2016-06-13 10:43:21 +02:00
Jørgen Kvalsvik
f54c74db06 Check for HAVE_UMFPACK in LinearSolverFactory
Check for the right preprocessor define to enable umfpack support.
Matches the directive set in config.h
2016-06-10 17:00:34 +02:00
Markus Blatt
c94cdb0de8 Make ParallelIstlInformation::ownerMask_ accessible.
This is needed in opm-simulator to calculate the parallel euclidian
product of the saturations.
2016-06-08 11:02:13 +02:00
Markus Blatt
324e60171c Added utilities to compute a real L-infinity norm in parallel. 2016-06-07 15:00:57 +02:00
Markus Blatt
8d253606fc Return a constant reference to the mask for ParallelISTLInformation::updateOwnerMask
Thus we can actually access the mask in external code. This is for
example needed when calculating averages in RateConverter of opm-autodiff.
2015-11-02 15:02:32 +01:00
Markus Blatt
8b7ccd9b19 [bugfix] Fixes copyOwnerToAll.
Previously, we copied owner/overlap to all which is clearly wrong.
Now we copy from owner to all as the function name says.
2015-10-26 23:45:12 +01:00
Andreas Lauser
c8000272bf use the error macros from opm-common 2015-10-08 11:42:15 +02:00
Joakim Hove
c8649896f8 Relocated warning headers. 2015-10-06 11:39:14 +02:00
Atgeirr Flø Rasmussen
8a0010527c Suppress warnings. 2015-08-10 16:07:45 +02:00
Atgeirr Flø Rasmussen
596eba610a Define the UF_long type if necessary.
The UF_long type is deprecated in UMFPack, and actually seems
to be removed from the latest versions.
2015-08-06 09:54:05 +02:00
Atgeirr Flø Rasmussen
a645c82a00 Silence multiple warnings.
Also add more warnings to the disabling list of disable_warnings.h.
2015-05-28 14:05:09 +02:00
Markus Blatt
bc0e842ac8 Fix creation of initial value for computing the max (Fixes PR #805).
Bård spotet a bug after PR #805 was merged. Indead returning
-numeric_limits<type>::min() does not make sense for integral
values. This commit resorts to returning numeric_limits<type>::min().

Kudos to Bård for his attention.
2015-05-27 15:03:28 +02:00
Markus Blatt
95fa515a5a Adds the possibility to compute a parallel inner product. 2015-05-27 11:07:15 +02:00
Markus Blatt
3224450b5d Do not use the masked value of the first container entry as initial value.
This behaviour does not work for computing a global inner product.
Therfore this commit introduces a new function to the functor that
returns an appropriate initial value.
2015-05-27 11:07:15 +02:00
Markus Blatt
83798c9f3a Use correct type get the maximum value.
Previously we hardcoded float. Now we use the result_type of
the binary_function without any qualifiers. With any cv or reference
qualifiers std::numeric_limits uses a default implementation which
produces nonesense (e.g. numeric_limits<const int>::max() returns 0).
2015-05-27 11:07:15 +02:00
Markus Blatt
9da18a14e1 Use more accurate name for the size of the global components.
The new name is num_global_components, which actually is an upper bound
for the the number of global components (1 plus the maximum global index).
2015-05-19 19:58:05 +02:00
Markus Blatt
f0a71e8898 Add spaces around binaries and explicit braces. 2015-05-19 19:56:37 +02:00
Markus Blatt
40fec324d5 Rename no_components to num_components. 2015-05-19 19:53:37 +02:00
Markus Blatt
3b359df534 Update copyright information. 2015-05-19 16:20:57 +02:00
Markus Blatt
e8ebf0840b Allow to create the correct communication information if there are several unknowns.
In this case the parallel index set might represent N entries (this might be the number of
cells of grid). Nevertheless, there several (n) equations/unknowns attached to each index.
In this case we construct a larger index set representing N*n unknows, where each unknown
is attached to an index.

This change only affects parallel runs.
2015-05-19 16:18:14 +02:00
Markus Blatt
8ced45959f Correct documentation of why we use operator[] to initialize map.
This commit updates the source code comment about using operator[] to
initialize the unordered map. Thanks to Bard's persistence we found
out that the cause is not the construction of the key value of type
std::string from const char* but the mapped type being a (mutable)
char* (due to C?).

This completes the PR #784.
2015-04-14 09:36:47 +02:00
Markus Blatt
5347ac5aa3 Deactivate PETSc's KSPCHEBYSHEV (not available in 3.2!) 2015-04-13 11:01:24 +02:00
Markus Blatt
760cea8b44 Use operator[] to populize unordered_map with string as the key
g++-4.4 has problems converting const char* to char*
which it thinks is needed for constructing std::string.
Using operator[] circumvents this problem.

The compiler error fixed here was:
/usr/include/c++/4.4/bits/stl_pair.h: In constructor ‘std::pair<_T1, _T2>::pair(std::pair<_U1, _U2>&&) [with _U1 = const char*, _U2 = const char*, _T1 = const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _T2 = char*]’:
/home/mblatt/src/dune/opm/opm-core/opm/core/linalg/LinearSolverPetsc.cpp:40:   instantiated from here
/usr/include/c++/4.4/bits/stl_pair.h:107: error: invalid conversion from ‘const char*’ to ‘char*’
make[2]: *** [CMakeFiles/opmcore.dir/opm/core/linalg/LinearSolverPetsc.cpp.o] Fehler 1
2015-04-13 10:58:31 +02:00
Markus Blatt
d5180c793a Prevents unsigned-signed-comparison warnings for container with signed size.
Well, you never know. There are containers that use a signed integer
for storing its size. This results in a warning about comparing signed with
unsigned integers. This commit prevents this by explicitly casting the size
to std::size_t.
2015-02-19 09:13:39 +01:00
Markus Blatt
a1e5b55c3b [fixup] Use the correct function.
This should have been in the las commit and should be added there before
merging.
2015-02-13 11:00:28 +01:00
Markus Blatt
a31fae4507 Makes right hand side passed to linear solver consistent.
Due to the size of the overlap layer and the discretization scheme
the rhs might not contain correct values for overlap cells. This
commit makes sure they are correct by an additional communication step.
2015-02-12 21:00:32 +01:00
Markus Blatt
086c405e9d Do not rely on begin()/end() of the containers to compute reductions.
One would think that such an assumption is safe in any case,
wouldn't one? But foen Eigen'S container this does not hold.
They do not provide STL compliant iterators, and access to them.
With this patch make the even stricter assumption that the containers
are random access and use operator[] instead of iterators.
2015-01-30 16:10:41 +01:00
Markus Blatt
f544ccf308 Constified the compute reduction functions.
These should and have to be used with a const object.
2015-01-28 21:55:35 +01:00
Markus Blatt
8810c3e7fe Correctly compute the minimum and maximum values.
As there are no functors for computing the minimum and maximum,
we convert the std::max and std::min function pointers to
functors (which is not really nice.) Previously we were somehow
tricked into using std::greater and std::less, which of course do
return true or false and not what we need. Additionally, do more
excessive testing with different ranges.
2015-01-23 20:48:53 +01:00
Markus Blatt
2f211f5469 Do recurse in the recursive funtion computeGlobalReduction!
Somehow this was missed and only the first entry in the tuple
was computed globally.
2015-01-23 20:46:46 +01:00
Markus Blatt
0fb801dadc Add missing return statements. 2015-01-23 16:38:08 +01:00
Markus Blatt
420586d40c Calm warnings about excessive semi-colons, unused variables, and missing declarations. 2015-01-23 16:36:48 +01:00
Markus Blatt
d5ea991847 Fixes formatting according to Atgeirr's coding style. 2015-01-23 14:56:15 +01:00
Markus Blatt
566aee7896 Added methods for computing global reductions.
We need to compute quite a few global reductions in the
Newton method of opm-autodiff. This commit adds the functionality
to compute several reductions combined using only one global
communication. Compiles and test succeeds with one or more process.
2015-01-21 16:19:35 +01:00
Atgeirr Flø Rasmussen
060a2fea0f Merge pull request #702 from jorgekva/linsolver_petsc
PETSc support in OPM
2014-12-19 11:25:58 +01:00
Jørgen Kvalsvik
31fbb2f58d Sets initial guess to zero.
Setting it to nonzero means starting to approximate from memory garbage values.
2014-12-10 18:15:33 +01:00
Jørgen Kvalsvik
ed18b283f1 Adds missing VecCreate. 2014-12-10 18:15:13 +01:00
Jørgen Kvalsvik
e2e6299ee6 Adds missing preconditoner destruction. 2014-12-10 18:09:13 +01:00
Jørgen Kvalsvik
33c7b48d06 Renamed variables to match Ax = b 2014-12-10 18:09:01 +01:00
Jørgen Kvalsvik
ef59c5afdb Vector construction is now value oriented.
No longer initialised and constructed in two places.
2014-12-10 18:07:45 +01:00
Jørgen Kvalsvik
2db194aca6 Removes unecessary whitespace. 2014-12-10 18:06:28 +01:00
Jørgen Kvalsvik
c6f42a63bd Fixes performance bug in matrix construction.
At the same time changes the construction to be value-oriented, not
constructing it in OEM_DATA, but rather in to_petsc_mat
2014-12-10 18:05:04 +01:00