[dune-fem] petsc branch

Dedner, Andreas A.S.Dedner at warwick.ac.uk
Thu Jul 4 22:27:25 CEST 2013


Hi.

I would like to merge the petsc branch in dune-fem back to master sometime soon (if I
can figure out how to do that...).

I've run the school codes with that branch (both the updated version in the petsc branch of
the school-code-generator and with the original to check downward compatibility).
Headercheck and make check work (well almost but at least better than in the master
brranch I think - what's not working is dune/fem/test/lagrangeinterpolation_quadratic
and I have not really figured out why - something with the adaptiveindexset I gues...

Tobias has added the branch to the nightly builds today. So hopefully we're set.
-------------------------------------------------------------------
Changes:
--------------
1) we now have a directory dune/fem/operator/linear with
         istloperator.hh  petscoperator.hh  spoperator.hh
    These contain the classes
         class ISTLLinearOperator (former ISTLMatrixOperator in operator/matrix/istlmatrix.hh)
         class PetscLinearOperator (former PetscLinearOperator in operator/common)
         class SparseRowLinearOperator
             (former SparseRowMatrixOperator in operator/matrix/spmatrix.hh)
    So one needs to include the new headers and move from XXXMatrixOperator to
    XXXLinearOperator.
2) These classes do not require MatrixTraits anymore, i.e., one does not need to include
     dgmatrixtraits.hh or lagrangematrixtraits.hh anymore
3) The stencil is passed to the linear operator in the reserve method. The interface method
     has thus changed from
        reserve(bool verbose=false)
     to
        template <class Stencil> void reserve(const Stencil &stencil, bool verbose = false )
     The interface for a stencil and some standard implementations (DG and Lagrange and a
     simple version only providing an estimate for the number of non-zeros) is provided
     in dune/fem/operator/stencil.hh.
     For example for a poisson operator using Lagrange DFS:
        linop.reserve( Dune::Fem::DiagonalStencil<DFST,DFSP>() );
     should work.
4) To setup a special type of stencil use the Dune::Fem::Stencil class and its
       fill ( const DomainEntityType &dEntity, const RangeEntityType &rEntity )
     method for each pair of entities for which the localMatrix method will be called in
     the assembly.
5)  petsc now seems to work reasonably well in parallel and with dg and lagrange.
    There is definitely still room for improvement in getting the most out of petsc.
6)  What I haven't done yet is update petsc.m4 to include all flags for different petsc
     configuration (mumps, superlu-dist,ml and what not).
     I do not know how to figure out the correct include paths and libs
     from the Petsc installation there seems to be no nice .pc file available -
     if somebody knows how to do this....

I think thats it.
Please test if you have time and if you don't tell me to postpone the merge
or don't complain when I merge in a week or two.

Best
Andreas




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dune-project.org/pipermail/dune-fem/attachments/20130704/42db3f16/attachment.htm>


More information about the dune-fem mailing list