Commit Graph

64 Commits

Author SHA1 Message Date
Arne Morten Kvarving
13b575eae9 tasklets: introduce translation unit 2024-09-04 12:06:21 +02:00
Arne Morten Kvarving
d35d80427e tasklets.hh: rename to tasklets.hpp 2024-09-04 12:06:21 +02:00
Arne Morten Kvarving
fcd0168691 mpiutil.hh: rename to mpiutil.hpp 2024-09-04 12:06:21 +02:00
Lisa Julia Nebel
c92bad8cfe Change asserts to BOOST_REQUIRE_* in test_tasklets_failure 2024-07-15 14:56:26 +02:00
Lisa Julia Nebel
c78a629528 Fix indentation 2024-07-15 14:52:47 +02:00
Lisa Julia Nebel
0a70296eb9 Change pointer to tasklet runners to smart pointer and add comment about why they are created on the heap 2024-07-15 14:51:52 +02:00
Lisa Julia Nebel
c73a51650f Change lock mechanism to std::lock_guard 2024-07-15 14:22:28 +02:00
Lisa Julia Nebel
4d0179cffc Implement a more polling-based interface for the tasklets failure mechanism 2024-07-12 15:12:41 +02:00
Lisa Julia Nebel
f86623a70c Add test for failing tasklets 2024-07-09 09:44:13 +02:00
Arne Morten Kvarving
a7249bee65 test_quadrature: remove support for dune < 2.6 2022-11-14 16:35:42 +01:00
Arne Morten Kvarving
c906b55a64 fix test with dune-alugrid 2.7 2022-11-14 16:34:30 +01:00
Arne Morten Kvarving
d6c378e6a9 remove use of Unused.hpp 2022-08-02 11:24:40 +02:00
Bernd Flemisch
d72de0f308 [cleanup] replace typedef by using 2020-06-10 13:49:42 +02:00
Bernd Flemisch
bdb7bac3e8 [properties] replace remaining macro calls 2020-06-10 13:07:19 +02:00
Bernd Flemisch
725c022e69 [properties] replace BEGIN/END_PROPERTIES macro calls 2020-06-08 17:11:48 +02:00
Bernd Flemisch
880c5223ac [properties] replace macro calls by native C++ 2020-06-08 16:41:02 +02:00
Bernd Flemisch
5e411a8665 fix test suite 2020-05-18 15:52:45 +02:00
Atgeirr Flø Rasmussen
4a0effe8cc Add and use gatherStrings() for exception messages.
Ensures user sees any useful exception messages during
initialization.
2020-01-21 15:33:31 +01:00
Markus Blatt
f9c4f870c3 Fixes g++-8's problems with return type deduction (ALUGrid master).
Fixes the following compile error in the tests for ALUGrid master.
Tested with DUNE 2.4-2.7
```
/home/mblatt/src/dune/opm-release-master/opm-models/tests/test_quadrature.cc: In function ‘void testTetrahedron()’:
/home/mblatt/src/dune/opm-release-master/opm-models/tests/test_quadrature.cc:191:32: error: unable to deduce ‘auto*’ from ‘Dune::ALU3dGridFactory< <template-parameter-1-1> >::createGrid() [with ALUGrid = Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)0, (Dune::ALUGridRefinementType)1>; Dune::ALU3dGridFactory< <template-parameter-1-1> >::GridPtrType = Dune::ToUniquePtr<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)0, (Dune::ALUGridRefinementType)1> >]()’
     auto *grid = gf.createGrid();
                                ^
/home/mblatt/src/dune/opm-release-master/opm-models/tests/test_quadrature.cc:191:32: note:   mismatched types ‘auto*’ and ‘Dune::ToUniquePtr<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)0, (Dune::ALUGridRefinementType)1> >’
/home/mblatt/src/dune/opm-release-master/opm-models/tests/test_quadrature.cc:196:12: error: type ‘<type error>’ argument given to ‘delete’, expected pointer
     delete grid;
            ^~~~
/home/mblatt/src/dune/opm-release-master/opm-models/tests/test_quadrature.cc: In function ‘void testCube()’:
/home/mblatt/src/dune/opm-release-master/opm-models/tests/test_quadrature.cc:286:32: error: unable to deduce ‘auto*’ from ‘Dune::ALU3dGridFactory< <template-parameter-1-1> >::createGrid() [with ALUGrid = Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)1, (Dune::ALUGridRefinementType)1>; Dune::ALU3dGridFactory< <template-parameter-1-1> >::GridPtrType = Dune::ToUniquePtr<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)1, (Dune::ALUGridRefinementType)1> >]()’
     auto *grid = gf.createGrid();
                                ^
/home/mblatt/src/dune/opm-release-master/opm-models/tests/test_quadrature.cc:286:32: note:   mismatched types ‘auto*’ and ‘Dune::ToUniquePtr<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)1, (Dune::ALUGridRefinementType)1> >’
/home/mblatt/src/dune/opm-release-master/opm-models/tests/test_quadrature.cc:291:12: error: type ‘<type error>’ argument given to ‘delete’, expected pointer
     delete grid;
            ^~~~
```
2019-10-24 15:54:18 +02:00
Arne Morten Kvarving
474ae4ded8 changed: ewoms/disc -> opm/models/discretization 2019-09-19 10:28:26 +02:00
Arne Morten Kvarving
e01f712294 changed: ewoms/common -> opm/models/utils 2019-09-19 10:14:17 +02:00
Arne Morten Kvarving
d8723dc9ce changed: ewoms/parallel -> opm/models/parallel 2019-09-16 09:48:55 +02:00
Arne Morten Kvarving
799585f9d7 changed: namespace Ewoms -> namespace Opm 2019-09-05 16:21:10 +02:00
Andreas Lauser
aed7e15d2e fix extra compiler warnings
this is only relevant people who are masochistic enough to go beyond
`-Wall`. (note that at this warning level, there is plenty of noise from
Dune and other upstream dependencies.)
2018-07-02 09:17:56 +02:00
Andreas Lauser
6dde43dc0b tasklets: allow to dispatch raw functions 2018-06-21 14:56:10 +02:00
Andreas Lauser
acc93ff6e7 do explicit put properties into the the Ewoms::Properties namespace anymore
instead, do it implicitly by using the BEGIN_PROPERTIES and
END_PROPERTIES macros.
2018-06-15 20:22:07 +02:00
Andreas Lauser
25e952fb49 tasklets test: guard against garbled output
Use a mutex to ensures that only a single prints at the same
time. this should prevent garbled terminal output and thus makes the
it much easier to read. on the flipside, some race conditions may go
unnoticed.
2018-04-23 13:24:59 +02:00
Andreas Lauser
5c9e20c00e tasklets: introduce the concept of "worker thread index"
if the current thread is not a worker thread, this returns -1.
2018-04-23 13:24:59 +02:00
Andreas Lauser
2cb0176754 add an example for tasklets
it is IMO not good as a unit test because it does not excercise the
mechanism at all, but it shows how the mechanism is supposed to be
used.
2018-04-19 14:35:24 +02:00
Andreas Lauser
d8792f36a0 fix a few "unused variable" warnings that occur on more uncommon compilers
i.e. on ICC. the compiler is right in producing warnings here, though.
2018-03-03 13:27:48 +01:00
Andreas Lauser
e5344a2add adapt to the move of code from opm-common to opm-material 2018-02-08 12:11:20 +01:00
Andreas Lauser
f5cfd8f768 fix compiler warnings and errors on dune 2.6 2018-01-03 18:53:03 +01:00
Andreas Lauser
1107b39c77 remove support for dune < 2.4
this allows quite a substantial amount of code decluttering, mainly
because Dune 2.4 renamed mapper.map() to mapper.index().
2017-07-13 14:08:02 +02:00
Andreas Lauser
99304f9689 change the order of OPM_UNUSED and variable name
it seems like some compilers (GCC 4.9.2?) are picky about this and
require

```c++
TypeName VariableName __attribute__ ((__unused__))
```
2017-01-17 13:28:56 +01:00
Andreas Lauser
0724855289 adapt forgotten #include statement for Unused.hpp 2016-11-30 14:35:14 +01:00
Andreas Lauser
ec4b6c82dd fix most pedantic compiler warnings in the basic infrastructure
i.e., using clang 3.8 to compile the test suite with the following
flags:

```
-Weverything
-Wno-documentation
-Wno-documentation-unknown-command
-Wno-c++98-compat
-Wno-c++98-compat-pedantic
-Wno-undef
-Wno-padded
-Wno-global-constructors
-Wno-exit-time-destructors
-Wno-weak-vtables
-Wno-float-equal
```

should not produce any warnings anymore. In my opinion the only flag
which would produce beneficial warnings is -Wdocumentation. This has
not been fixed in this patch because writing documentation is left for
another day (or, more likely, year).

note that this patch consists of a heavy dose of the OPM_UNUSED macro
and plenty of static_casts (to fix signedness issues). Fixing the
singedness issues were quite a nightmare and the fact that the Dune
API is quite inconsistent in that regard was not exactly helpful. :/

Finally this patch includes quite a few formatting changes (e.g., all
occurences of 'T &t' should be changed to `T& t`) and some fixes for
minor issues which I've found during the excercise.

I've made sure that all unit tests the test suite still pass
successfully and I've made sure that flow_ebos still works for Norne
and that it did not regress w.r.t. performance.

(Note that this patch does not fix compiler warnings triggered `ebos`
and `flow_ebos` but only those caused by the basic infrastructure or
the unit tests.)

v2: fix the warnings that occur if the dune-localfunctions module is
    not available. thanks to [at]atgeirr for testing.
v3: fix dune 2.3 build issue
2016-11-09 14:54:22 +01:00
Andreas Lauser
b31e0c3d2f fix build for the unit tests if dune-alugrid is available
it failed because the stencils now require to specify the DOF-mapper
externally...
2016-11-02 13:33:22 +01:00
Robert Kloefkorn
a6d8748105 [feature] Make mapper inside stencil a reference to avoid re-computation of offsets when ElementContext is created. 2016-10-30 15:33:20 +01:00
Andreas Lauser
4d37a50c83 remove support for the legacy ALUGrid library provided by dune-grid
now, the dune-alugrid module is required if these tests are to be
run. (note that due to the fact that the OPM build system has not been
detecting the legacy alugrid library for a while, the practical
implications of this patch should be small to non-existant.)
2016-05-04 13:22:51 +02:00
Andreas Lauser
290584dddc clean up the licensing preable of source files
the in-file lists of authors has been removed in favor of a global
list of authors in the LICENSE file. this is done because (a)
maintaining a list of authors at the beginning of a file is a major
pain in the a**, (b) the list of authors was not accurate in about 85%
of all cases where more than one person was involved and (c) this list
is not legally binding in any way (the copyright is at the person who
authored a given change, if these lists had any legal relevance, one
could "aquire" the copyright of the module by forking it and removing
the lists...)

the only exception of this is the eWoms fork of dune-istl's solvers.hh
file. This is beneficial because the authors of that file do not
appear in the global list. Further, carrying the fork of that file is
required because we would like to use a reasonable convergence
criterion for the linear solver. (the solvers from dune-istl do
neither support user-defined convergence criteria not do the
developers want support for it. (my patch was rejected a few years
ago.))
2016-03-17 13:20:20 +01:00
Andreas Lauser
4b3d2edad1 remove support for Dune 2.2
this has slowly become a hassle to support (i.e., it cluttered the
source with many #if's and in particularly the code was not tested
with Dune 2.2 on a regular basis). Also, Dune 2.3 has been out since
more than two years, so IMO it is not asked too much to ask people who
want to use the latest and greatest version of ewoms to upgrade their
Dune.
2016-02-28 00:36:08 +01:00
Andreas Lauser
2c97e90a79 make most indices unsigned
(instead of using 'int'.) This triggered quite a few compiler warnings
which are also dealt-with by this patch.
2015-11-18 18:09:56 +01:00
Andreas Lauser
d9e3a6d919 re-add the emacs and vim modelines to all source files
this makes things easier and IMHO these two lines do not cause any
disturbance.
2015-06-18 13:43:59 +02:00
Andreas Lauser
216508ef13 use the infrastructural code using its new locations 2015-04-28 13:38:28 +02:00
Andreas Lauser
a74a4d2f6e fix the dune 2.4 deprecation warnings
mainly this boils down to mapper.map(e) -> mapper.index(e)
2014-12-12 14:32:29 +01:00
Andreas Lauser
6d6640fc9d use dune-alugrid instead of the old version from dune-grid if the module is available 2014-07-30 12:42:32 +02:00
Andreas Lauser
86bc13912d fix quite a few warnings that occur on clang when using -Weverything
most warnings were in DUNE and ALUGrid, but these have been
ignored. Also fixing some of these warnings (in particular the
"parameter foo is unused" ones) would make the code harder to read and
understand, so they have been ignored, too...
2014-02-24 18:17:09 +01:00
Andreas Lauser
e876e32c36 remove all vim and emacs modelines
for emacs, add a toplevel .dir-locals.el file instead...
2014-01-16 17:58:10 +01:00
Andreas Lauser
bf32eb0010 Implement the element centered finite volume spatial discretization
This makes eWoms multi-discretization capable. Along the way, this
fixes some bugs and does a medium sized reorganization of the source tree.

This is a squashed patch of the following commits:

--------
1st commit message:

add initial version of the element centered finite volume discretization

currently, it is a misnomer as it is just a copy of the vertex
centered discretization plus some renames...

--------
2nd commit message:

rename [VE]cfvModel -> [VE]cfvDiscretization

--------
3rd commit message:

ecfv: prelimary changes required to make it compile

but not work yet...

--------
4th commit message:

Rename *FvElementGeometry to *Stencil

"Stencil" seems to be the standard expression for this concept...

(also, it is not specific to finite volume methods and is shorter.)

--------
5th commit message:

refactor the stencil class for the element centered finite volume discretization

--------
6th commit message:

ECFV: some work on the stencil class

--------
7th commit message:

ECFV: make the boundary handling code compile

--------
8th commit message:

rename elemContext() to elementContext()

--------
9th commit message:

ECFV: make the VTK output modules compile

--------
10th commit message:

stencil: introduce the concept of primary DOFs

also save an vector of all element pointers in the stencil.

--------
11th commit message:

ECFV: try to fix assembly; add missing timeIdx arguments to the num*() methods

--------
12th commit message:

ECFV: fix stupid mistake in the assembler

--------
13th commit message:

ECFV: remove a few implicit DOF == vertex assumptions

the black-oil example now runs without valgrind complaints until it encounters
a negative oil mole fraction.

--------
14th commit message:

VCFV: make everything compile again

all vertex centered FV examples should now work again...

--------
15th commit message:

rename [ev]cfvmodel.hh to [ev]cfvdiscretization.hh

the classes have already been renamed.

--------
16th commit message:

ECFV: make it work to the point where it can write out the initial solution.

--------
17th commit message:

ECFV: make it work

the local residual/jacobian needed some work in distinguishing primary
and secondary DOFs and there was an minor issue with the serialization
code.

for some reason, it seems still not correct. (-> convergence is too slow.)

--------
18th commit message:

VCFV: make it compile for the black oil model again

--------
19th commit message:

VCFV: make it compile with the remaining models again

--------
20th commit message:

flash model: make it work with ECFV

although this breaks its compatibility with VCFV. (-> next commit)

--------
21st commit message:

adapt the VCFV to make it compatible with the flash model again

--------
22nd commit message:

make all models compile with VCFV again

--------
23rd commit message:

VCFV: more cleanups of the stencil

VcfvStencil now does not have any public attributes anymore. TODO: do
not export attributes in the SubControlVolume and SubControlVolumeFace
classes.

--------
24th commit message:

VCFV: actually update the element pointer

--------
25th commit message:

change the blackoil model back to ECFV

--------
26th commit message:

immiscible model: make it compatible with the ECFV discretization

--------
27th commit message:

PVS model: make it work with ECFV

--------
28th commit message:

NCP model: make it work with ECFV

--------
29th commit message:

rename Vcfv*VelocityModule to *VelocityModule

--------
30th commit message:

richards model: make it work with ECFV

--------
31st commit message:

unify the ECFV and the VCFV VTK output modules

and other cleanups

--------
32nd commit message:

unify the common code of the VCFV and the ECFV disctretizations

--------
33rd commit message:

unify the element contexts between element and vertex centered finite volumes

--------
34th commit message:

unify the local jacobian class of the finite volume discretizations

--------
35th commit message:

replace [VE]vcf(LocalResidual|ElementContext|BoundaryContext|ConstraintsContext) by generic code

--------
36th commit message:

replace the [EV]cfvLocalResidual by generic code

--------
37th commit message:

unify the MultiPhaseProblem and Problem classes, introduce NullBorderListCreator

--------
38th commit message:

remove the discretization specific boundary context

--------
39th commit message:

unify the [EV]cfvDiscretization classes

--------
40th commit message:

Unify [EV]cfvMultiPhaseFluxVariables

--------
41st commit message:

Unify the [EC]cfvNewton* classes

--------
42nd commit message:

Unify [EV]cfvVolumeVariables

--------
43rd commit message:

unify [EV]cfvAssembler

--------
44th commit message:

unified flux variables: fix stupid mistake when calculating pressure gradients

--------
45th commit message:

unify what's to unify for the [EV]CFV properties

--------
46th commit message:

make the method to calculate gradients and values at flux approximation points changeable

Currently, this is used by the vertex centered finite volume method to
be able to use P1-finite element gradients instead of two-point
ones...

--------
47th commit message:

make the restart code work correctly, use the correct DofMapper for VCFV

--------
48th commit message:

actually use the gradient calculator in a model

the immiscible model in this case

--------
49th commit message:

move some files around to where they belong, use the new gradient calculation code in all models

TODO: proper handling of boundary gradients

--------
50th commit message:

fix the stokes model

currently it only works with the vertex centered finite volume
discretization, but the plan is to soon move it to a staggered grid
scheme anyway...

--------
51st commit message:

move all models back to using the vertex centered finite volume discretization by default

--------
52nd commit message:

models: some variable renames and documentation fixes

- scv -> dof
- vert -> dof
- vertex -> dof
- replace 'VCFV'
- fix some typos

--------
53rd commit message:

don't expect UG anymore

since it is quite non-free and hard to get. we now use ALUGrid instead!

--------
54th commit message:

temporarily disable jacobian recycling

--------
55th commit message:

fix writing/reading restart files using the generic code

--------
56th commit message:

fix bug where fluxes were only counted once in the stencil

this only affected the vertex centered finite volumes discretization...

--------
57th commit message:

boundary gradients: use the center of the sub-control volume adjacent to a boundary segment

--------
58th commit message:

make it compile on GCC

--------
59th commit message:

get rid of most hacks

for this, partial reassemble and jacobian recycling was brought
back. For the this and the remaining stuff the main trick is the
introduction of the GridCommHandleFactory concept which constructs
communication handles suited for the respective spatial
discretization...

--------
60th commit message:

fix a few annoying bugs

first, default the convergence criterion for the linear solver did not
honor the initial residual which lead to linear solver breakdowns,
then some debugging code was left in the discrete fracture model and
then there was a bug in the TP gradient approximation class...

this has the consequence that we need a new reference solution for the
discrete fracture problem...

--------
61st commit message:

iterative linear solver: remove the code for the non-default convergence criteria

--------
62nd commit message:

provide the FE cache instead of the local FE

this fixes a segfault in the stokes model caused by the fact that the
local FE was not initialized at this point.

--------
63rd commit message:

(Navier-)Stokes: fix bug due to the transition to unit normals

now, all tests pass for this branch. The only things which need to be
fixed are some annoying performance regressions compared to master and
some bug in the splices feature of the property system...

--------
64th commit message:

some fix for the local residual of the immiscible model

--------
65th commit message:

Navier-Stokes: implement SCV center gradients

There seems to be a bug in the previous implementation (the jacobian
inverse transposed is evaluated using the local, not the global
geometry), so the reference solution for the stokes2c test problem has
also been updated...

--------
66th commit message:

remove the ALUGrid specialization of the LensGridCreator and the YaspGrid one for the fingerproblem

using different grid seems to sometimes cause a different vertex
order, which in turn causes the respective test to fail if the
reference solution was computed using the other grid...

--------
67th commit message:

VCFV: use the correct BorderListCreator

this makes MPI parallel computations work again. apart from
performance regressions, this branch does not exhibit any known
regressions compared to master anymore...

--------
68th commit message:

make verything compile with the element centered finite volume discretization

except the Navier-Stokes and the two-phase DFM models, of course...

--------
69th commit message:

minor fixes

- make the navier-stokes model slighly more generic by using the
  proper (in,ex)teriorIndex() methods on sub-control volumes
- make the signature of the calculateValue() template method of the
  common two-point gradient approximator match the one of the vertex
  centered finite volume one

--------
70th commit message:

fix fallout from the Big Rebase

--------
71st commit message:

ECFV: some bugs in the boundary

--------
72nd commit message:

make computeFlux() compute area-specific quantities

--------
73rd commit message:

fix more bugs in the element centered FV discretization

now eWoms should match Dumux pretty closely...

--------
74th commit message:

coalesce the common code of the multi phase porous medium models into "MultiPhaseBaseModel"

--------
75th commit message:

update reference solutions

these were changed because of the screw-up with the area of boundary
segments...

--------
76th commit message:

rename "ImplicitBase" to "FvBase"

because in eWoms, everything is implicit and these are currently the
base classes for all finite volume discretizations.

--------
77th commit message:

make the spatial discretization selectable using a splice

This requires an opm-core with a the patches from
https://github.com/OPM/opm-core/pull/446 merged...

--------
78th commit message:

rename the properties used for splices to *Splice

--------
79th commit message:

move the files in 'tests/models' to 'tests'

since 'tests' was empty except for the 'models' subdirectory...

--------
80th commit message:

improve and fix the tutorial

--------
81st commit message:

remove the -fno-strict-aliasing flag from the provided option files

seems like recent versions of Dune have been adapted...

--------
82nd commit message:

also compile all CO2 injection simulations using the element centered finite volume discretization

--------
83rd commit message:

PVS model: make it work properly with the element-centered finite volume discretiation

because DOF != number of vertices
2013-12-12 12:52:44 +01:00
Andreas Lauser
3f7d617237 fix forgotten lonely Dune 2.3 deprecation warning 2013-12-03 11:45:39 +01:00