Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue with free surface, development version of ASPECT and deal.II 9.4.0/9.4.2 #5357

Open
naliboff opened this issue Aug 7, 2023 · 1 comment

Comments

@naliboff
Copy link
Contributor

naliboff commented Aug 7, 2023

@sibiaoliu pointed out in the ASPECT forums (link) that the continental extension cookbook crashes when run with a recent version of ASPECT (version 2.6.0-pre (master, 69faf25)) and deal.II 9.4.2.

The error is located at the bottom of the post, and I was able to reproduce it with deal.II 9.4.0. However, it does not appear in deal.II 9.5.0. Briefly, the error is related to deal.II not being able to access DoF indices on artificial cells.

Oddly, the error is not encountered at the same time step for the continental extension cookbook test case, which has a lower resolution.

My guess is the error was likely introduced sometime during the hackathon, but will investigate further.

For now, the solution is to use deal.II 9.5.0. I suspect the issue will affect most models with a free surface.

*** Timestep 1:  t=20000 years, dt=20000 years
   Solving mesh surface diffusion
   Solving mesh displacement system... 7 iterations.

--------------------------------------------------------
An error occurred in line <2721> of file </home/naliboff/software/dealii/v9.4.0/install/tmp/unpack/deal.II-v9.4.0/include/deal.II/dofs/dof_accessor.templates.h> in function
    void dealii::DoFCellAccessor<dim, spacedim, lda>::get_dof_values(const InputVector&, ForwardIterator, ForwardIterator) const [with InputVector = dealii::TrilinosWrappers::MPI::Vector; ForwardIterator = double*; int dimension_ = 2; int space_dimension_ = 2; bool level_dof_access = false]
The violated condition was: 
    this->is_artificial() == false
Additional information: 
    Can't ask for DoF indices on artificial cells.

Stacktrace:
-----------
#0  /home/naliboff/software/dealii/v9.4.0/install/deal.II-v9.4.0/lib/libdeal_II.g.so.9.4.0: void dealii::DoFCellAccessor<2, 2, false>::get_dof_values<dealii::TrilinosWrappers::MPI::Vector, double*>(dealii::TrilinosWrappers::MPI::Vector const&, double*, double*) const
#1  /home/naliboff/software/dealii/v9.4.0/install/deal.II-v9.4.0/lib/libdeal_II.g.so.9.4.0: void dealii::DoFCellAccessor<2, 2, false>::get_dof_values<dealii::TrilinosWrappers::MPI::Vector, double>(dealii::TrilinosWrappers::MPI::Vector const&, dealii::Vector<double>&) const
#2  /home/naliboff/software/dealii/v9.4.0/install/deal.II-v9.4.0/lib/libdeal_II.g.so.9.4.0: dealii::MappingQ1Eulerian<2, dealii::TrilinosWrappers::MPI::Vector, 2>::get_vertices(dealii::TriaIterator<dealii::CellAccessor<2, 2> > const&) const
#3  /home/naliboff/software/dealii/v9.4.0/install/deal.II-v9.4.0/lib/libdeal_II.g.so.9.4.0: dealii::MappingQ1Eulerian<2, dealii::TrilinosWrappers::MPI::Vector, 2>::compute_mapping_support_points(dealii::TriaIterator<dealii::CellAccessor<2, 2> > const&) const
#4  /home/naliboff/software/dealii/v9.4.0/install/deal.II-v9.4.0/lib/libdeal_II.g.so.9.4.0: dealii::MappingQ<2, 2>::get_bounding_box(dealii::TriaIterator<dealii::CellAccessor<2, 2> > const&) const
#5  /home/naliboff/software/dealii/v9.4.0/install/deal.II-v9.4.0/lib/libdeal_II.g.so.9.4.0: dealii::GridTools::Cache<2, 2>::get_cell_bounding_boxes_rtree() const
#6  /home/naliboff/software/dealii/v9.4.0/install/deal.II-v9.4.0/lib/libdeal_II.g.so.9.4.0: std::tuple<std::vector<dealii::Triangulation<2, 2>::active_cell_iterator, std::allocator<dealii::Triangulation<2, 2>::active_cell_iterator> >, std::vector<std::vector<dealii::Point<2, double>, std::allocator<dealii::Point<2, double> > >, std::allocator<std::vector<dealii::Point<2, double>, std::allocator<dealii::Point<2, double> > > > >, std::vector<std::vector<unsigned int, std::allocator<unsigned int> >, std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >, std::vector<unsigned int, std::allocator<unsigned int> > > dealii::GridTools::compute_point_locations_try_all<2, 2>(dealii::GridTools::Cache<2, 2> const&, std::vector<dealii::Point<2, double>, std::allocator<dealii::Point<2, double> > > const&, dealii::Triangulation<2, 2>::active_cell_iterator const&)
#7  /home/naliboff/software/dealii/v9.4.0/install/deal.II-v9.4.0/lib/libdeal_II.g.so.9.4.0: dealii::Functions::FEFieldFunction<2, dealii::TrilinosWrappers::MPI::BlockVector, 2>::compute_point_locations(std::vector<dealii::Point<2, double>, std::allocator<dealii::Point<2, double> > > const&, std::vector<dealii::TriaActiveIterator<dealii::DoFCellAccessor<2, 2, false> >, std::allocator<dealii::TriaActiveIterator<dealii::DoFCellAccessor<2, 2, false> > > >&, std::vector<std::vector<dealii::Point<2, double>, std::allocator<dealii::Point<2, double> > >, std::allocator<std::vector<dealii::Point<2, double>, std::allocator<dealii::Point<2, double> > > > >&, std::vector<std::vector<unsigned int, std::allocator<unsigned int> >, std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >&) const
#8  /home/naliboff/software/dealii/v9.4.0/install/deal.II-v9.4.0/lib/libdeal_II.g.so.9.4.0: dealii::Functions::FEFieldFunction<2, dealii::TrilinosWrappers::MPI::BlockVector, 2>::vector_value_list(std::vector<dealii::Point<2, double>, std::allocator<dealii::Point<2, double> > > const&, std::vector<dealii::Vector<do
--------------------------------------------------------
An error occurred in line <2721> of file </home/naliboff/software/dealii/v9.4.0/install/tmp/unpack/deal.II-v9.4.0/include/deal.II/dofs/dof_accessor.templates.h> in function
    void dealii::DoFCellAccessor<dim, spacedim, lda>::get_dof_values(const InputVector&, ForwardIterator, ForwardIterator) const [with InputVector = dealii::TrilinosWrappers::MPI::Vector; ForwardIterator = double*; int dimension_ = 2; int space_dimension_ = 2; bool level_dof_access = false]
The violated condition was: 
    this->is_artificial() == false
Additional information: 
    Can't ask for DoF indices on artificial cells.

@tjhei
Copy link
Member

tjhei commented Aug 8, 2023

Can you run inside gdb and give the output of backtrace? That should give us a more accurate call stack.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants