I'm trying to write and resume from a checkpoint with the current development versions of deal.ii and aspect. I have verified that I can do this successfully using deal.ii-9.2 and aspect from February, but that this functionality is broken. The model setup in question has prescribed surface velocity boundary conditions.
I suspect that the error is associated with a recent change in deal.ii. I do not understand the classes being used in core.cc:1872-1909. Maybe it is necessary to call map->initialize when resuming from snapshot?
-- This is ASPECT, the Advanced Solver for Problems in Earth's ConvecTion.
-- . version 2.3.0-pre (master, 5d2ce34ea)
-- . using deal.II 9.3.0-pre (master, dd40ea034d)
-- . with 32 bit indices and vectorization level 1 (128 bits)
-- . using Trilinos 12.10.1
-- . using p4est 2.0.0
-- . running in DEBUG mode
-- . running with 192 MPI processes
-----------------------------------------------------------------------------
Setting up GPlates boundary velocity plugin.
Loading GPlates data boundary file ZZ+S200/velo_ZZ+S200_458.gpml.
Loading new gplates velocity file did not succeed.
Assuming constant boundary conditions for rest of model run.
-----------------------------------------------------------------------------
-- For information on how to cite ASPECT, see:
-- https://aspect.geodynamics.org/citing.html?ver=2.3.0-pre&dg=1&sha=5d2ce34ea&src=code
-----------------------------------------------------------------------------
*** Resuming from snapshot!
Number of active cells: 49,152 (on 4 levels)
Number of degrees of freedom: 3,001,642 (1,216,710+52,258+405,570+1,327,104)
--------------------------------------------------------
An error occurred in line <721> of file </tmp/unpack/deal.II-master/source/fe/mapping_q_cache.cc> in function
std::vector<dealii::Point<spacedim> > dealii::MappingQCache<<anonymous>, <anonymous> >::compute_mapping_support_points(const typename dealii::Triangulation<dim, spacedim>::cell_iterator&) const [with int dim = 3; int spacedim = 3; typename dealii::Triangulation<dim, spacedim>::cell_iterator = dealii::TriaIterator<dealii::CellAccessor<3, 3> >]
--------------------------------------------------------
--------------------------------------------------------
An error occurred in line <721> of file </tmp/unpack/deal.II-master/source/fe/mapping_q_cache.cc> in fu
nction
std::vector<dealii::Point<spacedim> > dealii::MappingQCache<<anonymous>, <anonymous> >::compute_map
ping_support_points(const typename dealii::Triangulation<dim, spacedim>::cell_iterator&) const [with in
t dim = 3; int spacedim = 3; typename dealii::Triangulation<dim, spacedim>::cell_iterator = dealii::Tri
aIterator<dealii::CellAccessor<3, 3> >]
The violated condition was:
support_point_cache.get() != nullptr
Additional information:
Must call MappingQCache::initialize() before using it or after mesh
has changed!
Stacktrace:
-----------
#0 /home/rudolph/sw/dealii-toolchain-openmpi-4.0.5-mpiio-04252021/deal.II-master/lib/libdeal_II.g.so.9.3.0-pre: dealii::MappingQCache<3, 3>::compute_mapping_support_points(dealii::TriaIterator<dealii::CellAccessor<3, 3> > const&) const
#1 /home/rudolph/sw/dealii-toolchain-openmpi-4.0.5-mpiio-04252021/deal.II-master/lib/libdeal_II.g.so.9.3.0-pre: dealii::MappingQGeneric<3, 3>::fill_fe_face_values(dealii::TriaIterator<dealii::CellAccessor<3, 3> > const&, unsigned int, dealii::hp::QCollection<2> const&, dealii::Mapping<3, 3>::InternalDataBase const&, dealii::internal::FEValuesImplementation::MappingRelatedData<3, 3>&) const
#2 /home/rudolph/sw/dealii-toolchain-openmpi-4.0.5-mpiio-04252021/deal.II-master/lib/libdeal_II.g.so.9.3.0-pre: dealii::FEFaceValues<3, 3>::do_reinit(unsigned int)
#3 /home/rudolph/sw/dealii-toolchain-openmpi-4.0.5-mpiio-04252021/deal.II-master/lib/libdeal_II.g.so.9.3.0-pre: void dealii::FEFaceValues<3, 3>::reinit<false>(dealii::TriaIterator<dealii::DoFCellAccessor<3, 3, false> > const&, unsigned int)
#4 /home/rudolph/sw/dealii-toolchain-openmpi-4.0.5-mpiio-04252021/deal.II-master/lib/libdeal_II.g.so.9.3.0-pre: void dealii::hp::FEFaceValues<3, 3>::reinit<false>(dealii::TriaIterator<dealii::DoFCellAccessor<3, 3, false> > const&, unsigned int, unsigned int, unsigned int, unsigned int)
#5 /home/rudolph/sw/dealii-toolchain-openmpi-4.0.5-mpiio-04252021/deal.II-master/lib/libdeal_II.g.so.9.3.0-pre: void dealii::VectorTools::compute_nonzero_normal_flux_constraints<3, 3>(dealii::DoFHandler<3, 3> const&, unsigned int, std::set<unsigned int, std::less<unsigned int>, std::allocator<unsigned int> > const&, std::map<unsigned int, dealii::Function<3, double> const*, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, dealii::Function<3, double> const*> > > const&, dealii::AffineConstraints<double>&, dealii::Mapping<3, 3> const&)
#6 /home/rudolph/sw/dealii-toolchain-openmpi-4.0.5-mpiio-04252021/deal.II-master/lib/libdeal_II.g.so.9.3.0-pre: void dealii::VectorTools::compute_no_normal_flux_constraints<3, 3>(dealii::DoFHandler<3, 3> const&, unsigned int, std::set<unsigned int, std::less<unsigned int>, std::allocator<unsigned int> > const&, dealii::AffineConstraints<double>&, dealii::Mapping<3, 3> const&)
#7 ./aspect-mpiio: aspect::Simulator<3>::compute_initial_velocity_boundary_constraints(dealii::AffineConstraints<double>&)
#8 ./aspect-mpiio: aspect::Simulator<3>::setup_dofs()
#9 ./aspect-mpiio: aspect::Simulator<3>::resume_from_snapshot()
#10 ./aspect-mpiio: aspect::Simulator<3>::run()
#11 ./aspect-mpiio: void run_simulator<3>(std::__cxx11::basic_string<char, std::char_traits<char>, std
::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<cha
r> > const&, bool, bool, bool)
#12 ./aspect-mpiio: main```
Thanks for reporting! I opened a PR with a fix in #4022. Do you want to give that branch a try? I am pretty sure it fixes your issue (I could reproduce it with a simple test model).
I'm trying to write and resume from a checkpoint with the current development versions of deal.ii and aspect. I have verified that I can do this successfully using deal.ii-9.2 and aspect from February, but that this functionality is broken. The model setup in question has prescribed surface velocity boundary conditions.
I suspect that the error is associated with a recent change in deal.ii. I do not understand the classes being used in
core.cc:1872-1909
. Maybe it is necessary to callmap->initialize
when resuming from snapshot?