Gridtools::find_active_cell_around_point and parallel::shared::Triangulation<dim>

73 views
Skip to first unread message

Gennadiy Rishkin

unread,
Dec 7, 2015, 9:54:36 AM12/7/15
to dea...@googlegroups.com
Hello,

It seems that Gridtools::find_active_cell_around_point does not work with parallel::shared::Triangulation. Is this the case?

#include <deal.II/grid/grid_tools.h> is included.

I get the error:

test.cc:(.text._ZN4testILi3EE9make_gridEv[_ZN4testILi3EE9make_gridEv]+0x1f75): undefined reference to `dealii::parallel::shared::Triangulation<3, 3>::active_cell_iterator dealii::GridTools::find_active_cell_around_point<3, dealii::parallel::shared::Triangulation, 3>(dealii::parallel::shared::Triangulation<3, 3> const&, dealii::Point<3, double> const&)'
collect2: error: ld returned 1 exit status

Gennadiy

Gennadiy Rishkin

unread,
Dec 7, 2015, 1:41:49 PM12/7/15
to dea...@googlegroups.com
Hello,


Was this a deliberate design? I'm using the development sources.

Could I please get some suggestions on how to implement this with parallel::shared::Triangulation.

Thank you.

Gennadiy

Bruno Turcksin

unread,
Dec 7, 2015, 2:36:30 PM12/7/15
to deal.II User Group
Gennadiy,

as far as I know it's not a deliberate design. It's just that the function is not explicitly instantiated. This is done in source/grid/grid_tools.inst.in. I think the first thing to try is to add parallel::shared::Triangulation to the list of TRIANGULATION_AND_DOFHANDLERS  in cmake/config/template-arguments.in If that doesn't work you can to try to instantiate only the functions that you need.

Best,

Bruno


On Monday, December 7, 2015 at 12:41:49 PM UTC-6, Gennadiy Rishkin wrote:
Hello,


Was this a deliberate design? I'm using the development sources.

Could I please get some suggestions on how to implement this with parallel::shared::Triangulation.

Thank you.

Gennadiy

Wolfgang Bangerth

unread,
Dec 7, 2015, 3:10:49 PM12/7/15
to dea...@googlegroups.com

Gennadiy,
It's a bug. I've opened this report here:
https://github.com/dealii/dealii/issues/1958

I'll have a bug in a couple of days.

Best
W.

--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@math.tamu.edu
www: http://www.math.tamu.edu/~bangerth/

Wolfgang Bangerth

unread,
Dec 7, 2015, 4:54:49 PM12/7/15
to dea...@googlegroups.com

Gennadiy,
Can you try this:
https://github.com/dealii/dealii/pull/1959
?

Gennadiy Rishkin

unread,
Dec 8, 2015, 9:59:02 AM12/8/15
to dea...@googlegroups.com
Hello,

I made all the changes. The error is now

CMakeFiles/test.dir/source/test.cc.o: In function `test<1>::make_grid()':
test.cc:(.text._ZN4testILi1EE9make_gridEv[_ZN4testILi1EE9make_gridEv]+0x4fd): undefined reference to `dealii::parallel::shared::Triangulation<1, 1>::active_cell_iterator dealii::GridTools::find_active_cell_around_point<1, dealii::parallel::shared::Triangulation, 1>(dealii::parallel::shared::Triangulation<1, 1> const&, dealii::Point<1, double> const&)'
CMakeFiles/test.dir/source/test.cc.o: In function `test<2>::make_grid()':
test.cc:(.text._ZN4testILi2EE9make_gridEv[_ZN4testILi2EE9make_gridEv]+0x528): undefined reference to `dealii::parallel::shared::Triangulation<2, 2>::active_cell_iterator dealii::GridTools::find_active_cell_around_point<2, dealii::parallel::shared::Triangulation, 2>(dealii::parallel::shared::Triangulation<2, 2> const&, dealii::Point<2, double> const&)'
CMakeFiles/test.dir/source/test.cc.o: In function `test<3>::make_grid()':
test.cc:(.text._ZN4testILi3EE9make_gridEv[_ZN4testILi3EE9make_gridEv]+0x5bb): undefined reference to `dealii::parallel::shared::Triangulation<3, 3>::active_cell_iterator dealii::GridTools::find_active_cell_around_point<3, dealii::parallel::shared::Triangulation, 3>(dealii::parallel::shared::Triangulation<3, 3> const&, dealii::Point<3, double> const&)'
/home/gennadiy/deal.II/lib/libdeal_II.so.8.4.0-pre: undefined reference to `std::vector<dealii::parallel::shared::Triangulation<1, 1>::active_cell_iterator, std::allocator<dealii::parallel::shared::Triangulation<1, 1>::active_cell_iterator> > dealii::GridTools::compute_active_cell_halo_layer<dealii::parallel::shared::Triangulation<1, 1> >(dealii::parallel::shared::Triangulation<1, 1> const&, std::function<bool (dealii::parallel::shared::Triangulation<1, 1>::active_cell_iterator const&)> const&)'
/home/gennadiy/deal.II/lib/libdeal_II.so.8.4.0-pre: undefined reference to `std::vector<dealii::parallel::shared::Triangulation<1, 3>::active_cell_iterator, std::allocator<dealii::parallel::shared::Triangulation<1, 3>::active_cell_iterator> > dealii::GridTools::compute_active_cell_halo_layer<dealii::parallel::shared::Triangulation<1, 3> >(dealii::parallel::shared::Triangulation<1, 3> const&, std::function<bool (dealii::parallel::shared::Triangulation<1, 3>::active_cell_iterator const&)> const&)'
/home/gennadiy/deal.II/lib/libdeal_II.so.8.4.0-pre: undefined reference to `std::vector<dealii::parallel::shared::Triangulation<1, 2>::active_cell_iterator, std::allocator<dealii::parallel::shared::Triangulation<1, 2>::active_cell_iterator> > dealii::GridTools::compute_active_cell_halo_layer<dealii::parallel::shared::Triangulation<1, 2> >(dealii::parallel::shared::Triangulation<1, 2> const&, std::function<bool (dealii::parallel::shared::Triangulation<1, 2>::active_cell_iterator const&)> const&)'
/home/gennadiy/deal.II/lib/libdeal_II.so.8.4.0-pre: undefined reference to `std::vector<dealii::parallel::shared::Triangulation<3, 3>::active_cell_iterator, std::allocator<dealii::parallel::shared::Triangulation<3, 3>::active_cell_iterator> > dealii::GridTools::compute_active_cell_halo_layer<dealii::parallel::shared::Triangulation<3, 3> >(dealii::parallel::shared::Triangulation<3, 3> const&, std::function<bool (dealii::parallel::shared::Triangulation<3, 3>::active_cell_iterator const&)> const&)'
/home/gennadiy/deal.II/lib/libdeal_II.so.8.4.0-pre: undefined reference to `std::vector<dealii::parallel::shared::Triangulation<2, 2>::active_cell_iterator, std::allocator<dealii::parallel::shared::Triangulation<2, 2>::active_cell_iterator> > dealii::GridTools::compute_active_cell_halo_layer<dealii::parallel::shared::Triangulation<2, 2> >(dealii::parallel::shared::Triangulation<2, 2> const&, std::function<bool (dealii::parallel::shared::Triangulation<2, 2>::active_cell_iterator const&)> const&)'
/home/gennadiy/deal.II/lib/libdeal_II.so.8.4.0-pre: undefined reference to `std::vector<dealii::parallel::shared::Triangulation<2, 3>::active_cell_iterator, std::allocator<dealii::parallel::shared::Triangulation<2, 3>::active_cell_iterator> > dealii::GridTools::compute_active_cell_halo_layer<dealii::parallel::shared::Triangulation<2, 3> >(dealii::parallel::shared::Triangulation<2, 3> const&, std::function<bool (dealii::parallel::shared::Triangulation<2, 3>::active_cell_iterator const&)> const&)'


--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en
--- You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Wolfgang Bangerth

unread,
Dec 8, 2015, 11:07:13 AM12/8/15
to dea...@googlegroups.com

Gennadiy,
do you have a small test you could share that demonstrates the problem?
Best
W.
> <mailto:bang...@tamu.edu>> wrote:
>
>
> Gennadiy,
>
> It seems that Gridtools::find_active_cell_around_point does not
> work with
> parallel::shared::Triangulation. Is this the case?
>
> #include <deal.II/grid/grid_tools.h> is included.
>
> I get the error:
>
> test.cc:(.text._ZN4testILi3EE9make_gridEv[_ZN4testILi3EE9make_gridEv]+0x1f75):
> undefined reference to `dealii::parallel::shared::Triangulation<3,
> 3>::active_cell_iterator
> dealii::GridTools::find_active_cell_around_point<3,
> dealii::parallel::shared::Triangulation,
> 3>(dealii::parallel::shared::Triangulation<3, 3> const&,
> dealii::Point<3,
> double> const&)'
> collect2: error: ld returned 1 exit status
>
>
> Can you try this:
> https://github.com/dealii/dealii/pull/1959
> ?
>
>
> Best
> W.
>
> --
> ------------------------------------------------------------------------
> Wolfgang Bangerth email: bang...@math.tamu.edu
> <mailto:bang...@math.tamu.edu>
> www:
> http://www.math.tamu.edu/~bangerth/
>
> --
> The deal.II project is located at http://www.dealii.org/
> For mailing list/forum options, see
> https://groups.google.com/d/forum/dealii?hl=en
> --- You received this message because you are subscribed to the
> Google Groups "deal.II User Group" group.
> To unsubscribe from this group and stop receiving emails from it,
> send an email to dealii+un...@googlegroups.com
> <mailto:dealii%2Bunsu...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> The deal.II project is located at http://www.dealii.org/
> For mailing list/forum options, see
> https://groups.google.com/d/forum/dealii?hl=en
> ---
> You received this message because you are subscribed to the Google
> Groups "deal.II User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to dealii+un...@googlegroups.com
> <mailto:dealii+un...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout.


Gennadiy Rishkin

unread,
Dec 8, 2015, 12:02:43 PM12/8/15
to dea...@googlegroups.com
Hi Wolfgang,

Here's a small test:

#include <deal.II/base/logstream.h>
#include <deal.II/base/multithread_info.h>
#include <deal.II/base/conditional_ostream.h>
#include <deal.II/base/utilities.h>
#include <deal.II/distributed/shared_tria.h>
#include <deal.II/grid/tria.h>
#include <deal.II/grid/grid_generator.h>
#include <deal.II/grid/tria_accessor.h>
#include <deal.II/grid/tria_iterator.h>
#include <deal.II/grid/grid_tools.h>
#include <deal.II/base/utilities.h>

#include <iostream>

using namespace dealii;

int main (int argc, char **argv)
{
    try
    {
        Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1);

        parallel::shared::Triangulation<3> triangulation( MPI_COMM_WORLD );

        const unsigned int this_mpi_process = Utilities::MPI::this_mpi_process(MPI_COMM_WORLD);
               
        std::vector< unsigned int > repetitions(3); repetitions[0] = 10/10; repetitions[1] = 60/10; repetitions[2] = 10/10;
        Point<3> p1(-1.0,0.0, 0.0);
        Point<3> p2(1.0, 3.0, 1.0);
        GridGenerator::subdivided_hyper_rectangle( triangulation, repetitions, p1, p2 );
   
        std::cout << "Number of active cells  : " << triangulation.n_active_cells() << std::endl;
        std::cout << "Total number of cells   : " << triangulation.n_cells() << std::endl;
        std::cout << "total number of vertices: " << triangulation.n_vertices() << std::endl;
       
        Point<3> p( 0.0, 0.75, 0.5 );
       
        typename Triangulation<3>::active_cell_iterator cell = triangulation.begin_active();
       
        // Offending Line
        cell = GridTools::find_active_cell_around_point( triangulation, p );
    }
    catch (std::exception &exc)
    {
        std::cerr << std::endl << std::endl
                << "----------------------------------------------------"
                << std::endl;
        std::cerr << "Exception on processing: " << std::endl
                << exc.what() << std::endl
                << "Aborting!" << std::endl
                << "----------------------------------------------------"
                << std::endl;

        return 1;
    }
    catch (...)
    {
        std::cerr << std::endl << std::endl
                << "----------------------------------------------------"
                << std::endl;
        std::cerr << "Unknown exception!" << std::endl
                << "Aborting!" << std::endl
                << "----------------------------------------------------"
                << std::endl;
        return 1;
    };

    return 0;
}

To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.
test.cc

Wolfgang Bangerth

unread,
Dec 8, 2015, 12:20:53 PM12/8/15
to dea...@googlegroups.com

Gennadyi,
your test compiles, links, and runs find on my system with the patch I
linked to previously:
https://github.com/dealii/dealii/pull/1959/files
Does it not for you?
Best
W.
> <mailto:bang...@math.tamu.edu <mailto:bang...@math.tamu.edu>>
> www:
> http://www.math.tamu.edu/~bangerth/
>
> --
> The deal.II project is located at http://www.dealii.org/
> For mailing list/forum options, see
> https://groups.google.com/d/forum/dealii?hl=en
> --- You received this message because you are subscribed to the
> Google Groups "deal.II User Group" group.
> To unsubscribe from this group and stop receiving emails
> from it,
> send an email to dealii+un...@googlegroups.com
> <mailto:dealii%2Bunsu...@googlegroups.com>
> <mailto:dealii%2Bunsu...@googlegroups.com
> <mailto:dealii%252Buns...@googlegroups.com>>.
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> The deal.II project is located at http://www.dealii.org/
> For mailing list/forum options, see
> https://groups.google.com/d/forum/dealii?hl=en
> ---
> You received this message because you are subscribed to the Google
> Groups "deal.II User Group" group.
> To unsubscribe from this group and stop receiving emails from
> it, send
> an email to dealii+un...@googlegroups.com
> <mailto:dealii%2Bunsu...@googlegroups.com>
> <mailto:dealii+un...@googlegroups.com

Gennadiy Rishkin

unread,
Dec 8, 2015, 12:31:04 PM12/8/15
to dea...@googlegroups.com
The requested URL kept failing. I may have applied the patch incorreclty. How do I apply it?

Gennadiy


To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.

Wolfgang Bangerth

unread,
Dec 8, 2015, 12:43:27 PM12/8/15
to dea...@googlegroups.com
On 12/08/2015 11:31 AM, Gennadiy Rishkin wrote:
> The requested URL kept failing. I may have applied the patch
> incorreclty. How do I apply it?

If you have a current checkout from the git repository, do this:

git checkout -b bangerth-fix-instantiations master
git pull https://github.com/bangerth/dealii.git fix-instantiations

Best
W.

--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@math.tamu.edu
www: http://www.math.tamu.edu/~bangerth/

Gennadiy Rishkin

unread,
Dec 8, 2015, 12:58:40 PM12/8/15
to dea...@googlegroups.com
Thanks Wolfgang. That worked. Code's running fine now.

Gennadiy

                                www: http://www.math.tamu.edu/~bangerth/

Reply all
Reply to author
Forward
0 new messages