Skip to content
Snippets Groups Projects
user avatar
Oliver Sander authored
In the truncated monotone multigrid method, the coarse grid matrices change from
one iteration to the next.  Therefore, they need to be reassembled before every
iteration.  That is pretty expensive, therefore the MonotoneMG class and
corresponding transfer operators have always included a mechanism to only reassemble
parts of the coarse grid matrices.  That saves quite a bit of time.

Previously, a matrix entry would only be recomputed if the hasObstacle field
was set for its row or column.  That works nicely for contact problems,
where the hasObstacle field has only very few bits set.

However, for problems with many obstacles the coarse matrix reassembly becomes
expensive again.  Therefore, the code is now a bit smarter about what to reassemble.
Matrix entries really only need reassemble if the corresponding dofs changed
from non-critical to critical (or vice versa), or if the next-finer matrix
changed in the corresponding entries.

For my Cosserat shell problem, which has 6x6 blocks and all hasObstacle entries
set, I measure a speedup of about 30% for each MMG iteration.

Note that after this patch, code should yield precisely the same output as before.
If you get different results compare to before, then that's a bug.
481ad413
History
Preparing the Sources
=========================

Additional to the software mentioned in README you'll need the
following programs installed on your system:

  automake >= 1.9

  autoconf >= 2.62

  libtool

Getting started
---------------

If these preliminaries are met, you should run 

  dunecontrol all

which will find all installed dune modules as well as all dune modules 
(not installed) which sources reside in a subdirectory of the current 
directory. Note that if dune is not installed properly you will either
have to add the directory where the dunecontrol script resides (probably 
./dune-common/bin) to your path or specify the relative path of the script.

On your project and all uninstalled DUNE source modules found the script 
will then calls the GNU autoconf/automake to create a ./configure-script 
and the Makefiles. Afterwards that configure script will be called and the
modules will be build using make all

Most probably you'll have to provide additional information to dunecontrol 
(e. g. compilers, configure options) and/or make options. 

The most convenient way is to use options files in this case. The files
defining three variables:

AUTOGEN_FLAGS    flags passed to autogen
CONFIGURE_FLAGS  flags passed to configure
MAKE_FLAGS       flags passed to make

An example options file might look like this:

#use this options to autogen, configure and make if no other options are given
AUTOGEN_FLAGS="--ac=2.50 --ac=1.8" #Forces automake 2,50 and autoconf 1.8
CONFIGURE_FLAGS="CXX=g++-3.4 --prefix=/install/path" #force g++-3.4 as compiler
MAKE_FLAGS=install #Per default run make install instead of simply make

If you save this information into example.opts you can path the opts file to
dunecontrol via the --opts option, e. g.

  dunecontrol --opts=example.opts all

To get a full list of available configure flags just run

  dunecontrol configure --help

after running at least 
  dunecontrol autogen

More info
---------

See

     dunecontrol --help
   
for further options.


The full build-system is described in the dune-common/doc/buildsystem (SVN version) or under share/doc/dune-common/buildsystem if you installed DUNE!

$Id$