[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