[Dune] Use of partition iterators

Ganesh Diwan gcdiwan83 at gmail.com
Wed Sep 16 18:30:40 CEST 2015


Hi
Thank you for your replies.

It appears that I can iterate through only the Ghost and InteriorEntity for
codim 0 for a given partition. This is OK as I am concerned about the
elements that are truly interior to a partition.
I however need more information: how to extract all the vertices and edges
(marked as blue in grid-howto) only on the border of the partition using
this?

The border of partition must include the domain boundary if any (If I
understand correctly, as per howto some of the edges/vertices can be of
partitiontype interior and be on the domain boundary- aptly therefore
marked red).

As of now, I am able to extract only the domain boundary edges in the
partition this way.

    const Dune::PartitionIteratorType pit_all=Dune::All_Partition  ;
    typedef typename GridType::template Codim<0>::template
Partition<pit_all>::LeafIterator AllElementIterator;
    typedef typename GridView::IntersectionIterator IntersectionIterator;

    int all_ElmCount = 0;
    for (AllElementIterator it = grid.template leafbegin<0,pit_all>();
it!=grid.template leafend<0,pit_all>(); ++it) {
        if (it->partitionType() == Dune::GhostEntity)
            continue;
        IntersectionIterator isIt = gv.ibegin(*it);
        const IntersectionIterator &isEndIt = gv.iend(*it);
        int numedges_on_domain_boundary = 0;
        std::cout << "coe: " << it->geometry().center() << std::endl;
        for (; isIt != isEndIt; ++isIt) {
            if(isIt->boundary()) ++ numedges_on_domain_boundary;
        }
        std::cout << "edges on domain boundary = " <<
numedges_on_domain_boundary << std::endl;
        ++all_ElmCount;
    }


One way to probe the border entities, I thought was to follow
test-parallel-ug.cc code:

typedef Dune::MultipleCodimMultipleGeomTypeMapper<GridView,
LayoutWrapper<0>::template Layout>
    MapperType;
    MapperType mapper(gv);


and then probe the entity as:

for (AllElementIterator it = grid.template leafbegin<0,pit_all>();
it!=grid.template leafend<0,pit_all>(); ++it) { // element loop 2001
        int numberOfSubEntities = it->template count<1>();
        std::cout << "no of subentities = " << numberOfSubEntities <<
std::endl;
        for (int k = 0; k < numberOfSubEntities; k++)
        {
            typedef typename GridView::template Codim<0>::Entity Element;
            typedef typename Element::template Codim<0>::EntityPointer
EntityPointer;
            const EntityPointer entityPointer(it->template
subEntity<1>(k)); // <<========= compilation error occurs here
            entityIndex[mapper.map(*entityPointer)]   =
mapper.map(*entityPointer);
}
}

But I have problem compiling this where I define the EntityPointer, the
error is:

 error: no matching function for call to ‘Dune::EntityPointer<const
Dune::UGGrid<2>, Dune::UGGridEntityPointer<0, const Dune::UGGrid<2> >
>::EntityPointer(Dune::Entity<0, 2, const Dune::UGGrid<2>,
Dune::UGGridEntity>::subentity_return_info<1>::type)’
    const EntityPointer entityPointer(it->template subEntity<1>(k));


Thank you,
Ganesh

On Tue, Sep 15, 2015 at 5:38 PM, Markus Blatt <markus at dr-blatt.de> wrote:

> On Tue, Sep 15, 2015 at 02:42:47PM +0200, Jö Fahlke wrote:
> >
> > To unify things, and to make using the vertices() and elements()
> functions
> > easier, recently a new scheme for naming partitions was introduced[4].
> The
> > new scheme makes it possible to name name all possible combinations, even
> > though not all combinations are supported or are even meaningful in the
> > context of entity iterators or communication.
>
> Isn't that against the principles DUNE ("one algorithm to use them
> (grids) all"?)?
>
> Can one query what combinations are supported by a grid?
>
> Markus
> --
> Join us at the DUNE User Meeting Sept. 28-29, 2015, Heidelberg, Germany
> http://users.dune-project.org/projects/dune-user-meeting-2015/wiki
>
> Dr. Markus Blatt - HPC-Simulation-Software & Services
> http://www.dr-blatt.de
> Hans-Bunte-Str. 8-10, 69123 Heidelberg, Germany
> Tel.: +49 (0) 160 97590858
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dune-project.org/pipermail/dune/attachments/20150916/f731f88a/attachment.html>


More information about the Dune mailing list