> A really neat extension would be to make the PointHistory class a part of > deal.ii. So each cell would have a (pointer to a) std::vector of > PointHistory. One would then provide the PointHistory base class with a > virtual function that describes how to project quadrature point data upon > coarsening / refinement. The projection matrix is already well defined (as > mentioned in tut 18). All the built in machinery for mesh adaptivity could > then be utilised to project quadrature point data between meshes.
You can already do that if you register yourself as a refinement listener of the triangulation. You would just have to implement the exact same steps that you describe above in the listener. > The next challenge is reconstructing the std::vector > quadrature_point_history between refinement steps. This is a non-issue if > each cell has a std::vector of PointHistory to hold the quadrature point > data. Thus one could extend it to parallel problems. I think it isn't quite that easy for parallel computations because not all processes in a parallel computation would have the necessary data if the mesh is partitioned differently before and after refinement. That said, I think the way to implement is as follows: call prepare_coarsening_and_refinement and then loop over all cells. If a non-active cell has all children marked for coarsening, then do the projection from the children and store the result in the user_pointer of the parent cell. Then call execute_coarsening_and_refinement and in a final step loop over all cells and see if any have a non-NULL user_pointer -- these are the cells that have been refined, and so you need to interpolate from these cells to their children and set the user_pointer of the parent cell to NULL. Does that make sense? W. ------------------------------------------------------------------------- Wolfgang Bangerth email: [email protected] www: http://www.math.tamu.edu/~bangerth/ _______________________________________________ dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii
