Commit Graph

438 Commits

Author SHA1 Message Date
Andreas Lauser
b10f332c47 fixup! Always use the reduction of the maximum of the weighted residual as convergence criterion 2014-03-04 18:23:46 +01:00
Andreas Lauser
eac638d21a parallel iterative solvers: doc update, add missing solvers and precoditioners 2014-03-04 18:06:56 +01:00
Andreas Lauser
59a82a0a40 Always use the reduction of the maximum of the weighted residual as convergence criterion
This should make things a much more robust, partially because now the
linear and the non-linear solvers use the same convergence criterion.

Also, this patch includes some collateral indentation improvements.
2014-03-04 18:06:56 +01: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
b39910eb34 shorten all lines to at most 100 characters
well, if there is no good way to do so, accept a slightly larger
number. Anyway, the longest line is now at 104 characters...
2014-02-11 00:46:17 +01:00
Andreas Lauser
9f3aa104bb ecfv: syncronize the values of overlap and ghost elements from their master process prior to assembling
the algebraic overlap stuff still has a few bugs which prevent the
ECFV discretization from working in parallel mode. (these will be
fixed soon.)
2014-02-03 18:23:43 +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
d98dd5a309 remove some unused typedefs and constant, some indentation fixes 2013-12-27 19:13:15 +01:00
Andreas Lauser
29926a7d06 rename "bbox" to "boundingBox" 2013-12-27 18:55:46 +01:00
Andreas Lauser
3278f66be5 porous media models: derive them from MultiPhaseModel
instead of directly from the discretization. this should make the
generic quantities re-appear in the output for visualization.

this implies that the reference solutions for the models which
directly derived from the discretization also had to be updated.
2013-12-14 22:06:28 +01:00
Andreas Lauser
46fca5437c fix lonely DUNE 2.3 deprecation warning
now akvarium should be fully happy build-wise...
2013-12-14 11:32:50 +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
Andreas Lauser
3c8229586f update the in-file copyright holder statements
this patch is quite large as there were various bug fixes to the
script which generates these statements
2013-12-02 17:20:09 +01:00
Andreas Lauser
10d80f01f9 replace in-file copyright notices by OPM the standard one 2013-12-02 15:53:54 +01:00
Andreas Lauser
98c5b8fba7 reformat the source code
this was done semi-automatically. The line length has been set to 80
characters, but with a quite low penalty for crossing this limit.
2013-12-01 20:47:02 +01:00
Andreas Lauser
d47687be5d fix some dune 2.3 deprecation warnings
also use the actual grid headers for grids, not the corresponding DGF
parser header.
2013-12-01 11:51:05 +01:00
Andreas Lauser
d9c4d1058e revert the output redirection stuff of ebdcba686ea10c5da5dd4f4da98f19ef388c2af4
it seems like shellcheck complains about this but once the order of
'>' and '2>&1' is reversed, bash does not like it anymore. since
making bash happy is way more important than shellcheck, let's revert
this part of the change...
2013-11-26 12:20:26 +01:00
Andreas Lauser
79bfc102cc runtest.sh: fix shellcheck warninings
at least the ones which were no false positives
2013-11-25 15:04:16 +01:00
Andreas Lauser
71ebee78e7 Revert "discrete fracture test: do not set the end time"
This reverts commit d8fafe9541.
2013-11-23 11:14:09 +01:00
Andreas Lauser
d8fafe9541 discrete fracture test: do not set the end time
I was lost in testing, so the reference solution was produced without
the --end-time=1000 argument...
2013-11-22 18:26:45 +01:00
Andreas Lauser
531d287eda adapt to the changes in opm-material 2013-11-12 18:36:42 +01:00
Andreas Lauser
1145e39559 remove duplicate empty lines 2013-11-07 16:09:28 +01:00
Andreas Lauser
921540d001 fix the end of namespace comments
this was done semi-automatically by a python script
2013-11-04 14:17:32 +01:00
Andreas Lauser
54a66718bd blackoil: rename gasFormationFactor to gasDissolutionFactor
that was a thinko/reado on my side...
2013-11-04 13:59:36 +01:00
Andreas Lauser
ea30ffc7be rename fluidmatrixinteractions/mp/* to fluidmatrixinteractions/* 2013-11-04 13:58:43 +01:00
Andreas Lauser
f1c516f1c9 fix Dune 2.3 related deprecation warnings 2013-10-27 14:43:11 +01:00
Andreas Lauser
537bf6a1bd parameter system: fix handling of --help/-h flag 2013-09-24 18:58:47 +02:00
Andreas Lauser
8276063c68 test driver: test -> tests 2013-09-24 18:33:28 +02:00
Andreas Lauser
3d0a4c0e17 adapt the tutorial and the handbook to the brave new world
we do not have a decoupled tutorial anymore since, well, the decoupled
models have been removed. Also since the move to the Opm CMake based
build system, the "How to create a new folder" section in the handbook
was obsolete.
2013-09-23 20:38:20 +02:00
Andreas Lauser
c906d5931d use opm property system, improvments to the parameter system 2013-09-23 20:37:11 +02:00
Andreas Lauser
7cf471162e some renames to draw the eWoms directory structure nearer to the the one of the remaining OPM modules
this renames the 'test' directory to 'tests' and 'test/implicit' to
'tests/models'. the latter change reflects the fact that in eWoms all
models are implicit since the IMPET models have been removed.
2013-09-23 18:56:30 +02:00
Andreas Lauser
e50fe7715f adapt to the new opm-material file names 2013-09-23 15:09:51 +02:00
Andreas Lauser
b3a687c83b use the opm-material module instead of using an internal material framework 2013-08-28 17:28:26 +02:00
Andreas Lauser
74c3290296 remove the autotools based build system 2013-08-28 17:28:26 +02:00
Andreas Lauser
2b4f07e18a make the tests work
i.e., update the CMakeLists* and tweak runtest.sh
2013-08-28 17:28:26 +02:00
Andreas Lauser
d566001dd8 replace the custom cmake based build system by the one from OPM 2013-08-28 17:24:05 +02:00
Andreas Lauser
84becd65d2 remove the code of the IMPET ("decoupled") models
there was no interest in using them and the maintainance burden grew
pretty large as the Dumux and eWoms code-bases continued to diverge.
2013-07-08 20:36:22 +02:00
Andreas Lauser
6ac5cecdc0 relax the python script to check the reference solutions
now, we only compare pressure, saturation, mass/mole fractions and
velocity fields and we only do a qualitative comparison (i.e., much
higher tolerances). Hopefully this should avoid issues with sightly
different reference solutions in the future.
2013-07-07 19:02:28 +02:00
Bernd Flemisch
ccdf1c742b decoupled: renaming according to refined naming rules, this time for local variables.
Reviewed by Benjamin.

Dumux-Svn-Revison: 10776
Ported-By: Andreas Lauser <andreas.lauser@iws.uni-stuttgart.de>
2013-06-02 16:43:43 +02:00
Bernd Flemisch
20f514984c Perform changes resulting from our refined naming rules, see FS#180.
Only public member names have been treated so far. Local variables
will be done shortly, classes maybe not before the next release
cycle. Everything old could be marked deprecated.

Reviewed by Benjamin and Christoph.

Dumux-Svn-Revison: 10761
Ported-By: Andreas Lauser <andreas.lauser@iws.uni-stuttgart.de>
2013-06-02 16:43:43 +02:00
Bernd Flemisch
99cc53ca66 Partially implements FS#180 - Inconsistent naming
- special status of saturation. In particular, it deals with the
  capitalized "S"-indices:
   S0Idx -> s0Idx
   SnIdx -> snIdx
   SwIdx -> swIdx
   SOrX1Idx -> sOrX1Idx
   SOrX2Idx -> sOrX2Idx
   SnOrXidx -> snOrXIdx
   SwOrXIdx -> swOrXIdx

Reviewed by Christoph.

Dumux-Svn-Revison: 10756
Ported-By: Andreas Lauser <andreas.lauser@iws.uni-stuttgart.de>
2013-06-02 16:43:43 +02:00
Markus Wolff
475b50fb31 Extended the IMPES scheme to allow for local time-stepping for each flux face of the finite-volume transport model
- time steps for the pressure model can be choosen larger than for the
     transport model
   - locally small time steps of the std::explicit scheme are less
     restrictive

   - reviewed by Bernd

Dumux-Svn-Revison: 10700
Ported-By: Andreas Lauser <andreas.lauser@iws.uni-stuttgart.de>
2013-05-19 00:02:22 +02:00
Andreas Lauser
cf74236d32 fix headercheck and compile
they failed because of the new MpiHelper...
2013-03-15 15:05:11 +01:00
Andreas Lauser
ec369207bc test runner script: be more verbose if something goes wrong 2013-02-07 19:44:15 +01:00
Andreas Lauser
bff2b8c72d add a third reference solution for the tutorial_coupled test 2013-02-07 19:44:15 +01:00
Andreas Lauser
75cbe3f132 test runner: more verbose output 2013-02-06 15:48:03 +01:00
Andreas Lauser
4a2b4ceb3b write the newton convergence for the restart test.
this slightly increases test coverage, and raises an alarm if
something goes horribly wrong in the code writing the convergence.
2013-01-30 22:46:24 +01:00
Andreas Lauser
973e5349f0 test runner: print some infos to ease debugging before comparing the simulation results 2013-01-30 15:39:10 +01:00
Andreas Lauser
f5d6db8bc8 improvements to the CMake build system
- it now can generate and install the API documentation ('make install-html')
- the information of the dune.module file is now used much more extensively
- presence of the valgrind headers is tested
- tests which cannot be run for a configuration will now appear as
  'skipped' in CDash
- adding tests does not require modifying the toplevel CMakeList.txt anymore
- introduction of the 'EwomsAddTest' cmake macro which removes quite a bit of the
  copy-and-paste from the CMakeLists.txt.
- various small loose ends have been fixed
2013-01-27 00:07:12 +01:00