[dune-pdelab] Dune::UGGrid<2>::communicate() codim=1 requested

Bernd Flemisch bernd at iws.uni-stuttgart.de
Tue Nov 8 11:46:57 CET 2011


Hey Alex,

On 11/08/2011 11:01 AM, Jö Fahlke wrote:
> Am Tue,  8. Nov 2011, 10:22:32 +0100 schrieb Alexander Schlaich:
>> I have a well-tested working finite element code for my problem
>> using P1 elements provided by pdelab:
>> Dune::PDELab::P1LocalFiniteElementMap<ctype,Real,dim>
>> I'm using UG and this code runs fine in parallel, too.
>>
>> When switching to higher order elements using
>> Dune::PDELab::Pk2DLocalFiniteElementMap<GV, ctype, Real, elementorder>
>> sequential runs behave as expected, but for the parallel case I get
>> the following error:
>>
>> Dune reported error: NotImplemented [communicate:/scratch/schlaich/dune/dune-grid/dune/grid/uggrid.hh:709]:
>> Dune::UGGrid<2>::communicate(): Only supported for codim=0 and
>> codim=dim(=2), but codim=1 was requested
>>
>> Could you please give me a hint what exactly causes this problems
>> and if possible how to circumvent?
> UG doesn't support communication for anything but codim=0 and codim=dim.
> Unfortunately, as far as I knowif you want a parallel unstructured gridmanager
> in 2D then UG is the only one available.  For 3D there is also ALUSimplexGrid,
> and that suppoert communicating all codimensions.  See
> http://users.dune-project.org/projects/main-wiki/wiki/Grid-Manager_Features
>
> As far as I know, UG can in principle communicate other codimensions as well,
> the functionality is just not provided by the dune interface.  If you decide
> to implement this yourself, we welcome patches :)
Since you are working in 2D, this really might be possible, since there 
is a UG_NS< UG_DIM >::Edge. I think there is no UG_NS< UG_DIM >::Side 
which you would need for 3D.

If you are lucky, this should be a fairly local adaptation of uggrid.hh:

- Implement the missing case (dim == 2 && codim == 1) in the routines 
ugGather_, ugScatter_, communicate (there are 2), and 
findDDDInterfaces_. Copy from another case and replace e.g. UG_NS< 
UG_DIM >::Node by UG_NS< UG_DIM >::Edge.

and of ugwrapper.hh:

- Implement the missing analogs of NodeVIF... for the edges by comparing 
with ug/include/parallel.h.

Before you start, you should check whether EDGE_WITH_DDDHDR is really 
set in ug.

You can contact me directly if you need help. I am not far away.

As Jö mentioned, in case you succeed, everybody would be happy about a 
patch to include this in dune-grid.

Kind regards
Bernd


-- 
_____________________________________________________________________

Bernd Flemisch                               phone: +49 711 685 69162
IWS, Universität Stuttgart                   fax:   +49 711 685 60430
Pfaffenwaldring 61                  email: bernd at iws.uni-stuttgart.de
D-70569 Stuttgart                  url: www.hydrosys.uni-stuttgart.de
_____________________________________________________________________





More information about the dune-pdelab mailing list