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

Alexander Schlaich schlaich at icp.uni-stuttgart.de
Tue Nov 8 12:13:58 CET 2011

Hey Bernd,

thanks for your hints, I'll try and contact you if I need advice :-)
As I see this seems to be related to FS#95?



On 11/08/2011 11:46 AM, Bernd Flemisch wrote:
> 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

Alexander Schlaich
Institut für Computerphysik
Universität Stuttgart
Pfaffenwaldring 27
D-70569 Stuttgart

Tel: +49-711 685-60458
Fax: +49-711 685-63658

e-mail: schlaich at icp.uni-stuttgart.de


More information about the dune-pdelab mailing list