Hi all,

I have written the following failing minimal example (also attached) where 
I create a single element parallel distributed triangulation and try to 
write and read a double. 

*using namespace dealii;*
*int main (int argc, char *argv[])*
*{*
*  Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv);*

*  const double L=20;*
*  parallel::distributed::Triangulation<3> triangulation(MPI_COMM_WORLD);*
*  GridGenerator::hyper_cube (triangulation, -L, L);*

*  unsigned int offset = triangulation.register_data_attach*
*           (sizeof(double),*
*    [&](const typename 
dealii::parallel::distributed::Triangulation<3>::cell_iterator &cell,*
*        const typename 
dealii::parallel::distributed::Triangulation<3>::CellStatus status,*
*        void * data) -> void*
*        {*

*      double* dataStore = reinterpret_cast<double*>(data);*
*      *dataStore=0.0;*
*        }*
*    );*

*  std::cout<< "offset=" << offset << std::endl;*
*  std::string filename="triangulationChk";*
*  triangulation.save(filename.c_str());*

*  triangulation.load(filename.c_str());*
*  triangulation.notify_ready_to_unpack*
*       (offset,[&](const typename 
dealii::parallel::distributed::Triangulation<3>::cell_iterator &cell,*
*         const typename 
dealii::parallel::distributed::Triangulation<3>::CellStatus status,*
*         const void * data) -> void*
*         {*
*         }*
*        );*
*}*


I get the following error:

*An error occurred in line <3236> of file 
</home/vikramg/DFT-FE-softwares/softwareCentos/dealiiDev/dealii/source/distributed/tria.cc>
 
in function*
*    void dealii::parallel::distributed::Triangulation<dim, 
spacedim>::notify_ready_to_unpack(unsigned int, const std::function<void 
(const dealii::Triangulation<dim, spacedim>::cell_iterator &, 
dealii::Triangulation<dim, spacedim>::CellStatus, const void *)> &) [with 
int dim = 3, int spacedim = 3]*
*The violated condition was: *
*    offset < sizeof(CellStatus)+attached_data_size*
*Additional information: *
*    invalid offset in notify_ready_to_unpack()*

I am wondering if I am missing something in my implementation.

Thanks,
Sambit

-- 
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+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
//Include all deal.II header file
#include <deal.II/base/quadrature.h>
#include <deal.II/base/function.h>
#include <deal.II/base/logstream.h>
#include <deal.II/base/timer.h>
#include <deal.II/base/table.h>
#include <deal.II/lac/vector.h>
#include <deal.II/lac/full_matrix.h>
#include <deal.II/lac/constraint_matrix.h>
#include <deal.II/fe/fe_system.h>
#include <deal.II/fe/fe_q.h>
#include <deal.II/fe/fe_values.h>
#include <deal.II/fe/mapping_q1.h>
#include <deal.II/grid/tria.h>
#include <deal.II/grid/tria_accessor.h>
#include <deal.II/grid/tria_iterator.h>
#include <deal.II/grid/grid_generator.h>
#include <deal.II/dofs/dof_tools.h>
#include <deal.II/dofs/dof_handler.h>
#include <deal.II/numerics/data_out.h>
#include <deal.II/numerics/vector_tools.h>
#include <deal.II/base/tensor_function.h>
#include <deal.II/base/point.h>
#include <deal.II/base/conditional_ostream.h>
#include <deal.II/base/utilities.h>
#include <deal.II/lac/lapack_full_matrix.h>
#include <deal.II/numerics/matrix_tools.h>
#include <deal.II/numerics/error_estimator.h>
#include <deal.II/base/parameter_handler.h>
#include <deal.II/grid/grid_refinement.h>
#include <deal.II/grid/tria_boundary_lib.h>
#include <deal.II/grid/grid_tools.h>
#include <deal.II/grid/grid_in.h>
#include <deal.II/grid/grid_out.h>
#include <deal.II/dofs/dof_renumbering.h>
#include <deal.II/dofs/dof_accessor.h>
#include <deal.II/lac/solver_cg.h>
#include <deal.II/lac/solver_gmres.h>
#include <deal.II/lac/solver_bicgstab.h>
#include <deal.II/lac/precondition.h>
#include <deal.II/distributed/tria.h>
#include <deal.II/lac/parallel_vector.h>
#include <deal.II/matrix_free/matrix_free.h>
#include <deal.II/matrix_free/fe_evaluation.h>
#include <deal.II/lac/slepc_solver.h>
#include <deal.II/base/config.h>
#include <deal.II/base/smartpointer.h>
//Include generic C++ headers
#include <fstream>
#include <iostream>


using namespace dealii;
int main (int argc, char *argv[])
{
  Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv);

  const double L=20;
  parallel::distributed::Triangulation<3> triangulation(MPI_COMM_WORLD);
  GridGenerator::hyper_cube (triangulation, -L, L);

  unsigned int offset = triangulation.register_data_attach
	          (sizeof(double),
		   [&](const typename dealii::parallel::distributed::Triangulation<3>::cell_iterator &cell,
		       const typename dealii::parallel::distributed::Triangulation<3>::CellStatus status,
		       void * data) -> void
		       {

			     double* dataStore = reinterpret_cast<double*>(data);
			     *dataStore=0.0;
		       }
		   );

  std::cout<< "offset=" << offset << std::endl;
  std::string filename="triangulationChk";
  triangulation.save(filename.c_str());

  triangulation.load(filename.c_str());
  triangulation.notify_ready_to_unpack
	      (offset,[&](const typename dealii::parallel::distributed::Triangulation<3>::cell_iterator &cell,
	        const typename dealii::parallel::distributed::Triangulation<3>::CellStatus status,
	        const void * data) -> void
	        {
	        }
	       );
}

Reply via email to