periodic.orientation[2] == false,
ExcNotImplemented());
- // TODO: might need to fix the case with corners where several PBC
- // meet (in most cases it will get fixed eventually because we visit
- // corner dofs more than once, and each time we pass around we connect
- // two more vertices; in the worst case of 3 periodicity connects in
- // 3D, we are safe after three levels)
for (unsigned int v=0; v<GeometryInfo<ITERATOR::AccessorType::dimension-1>::vertices_per_cell; ++v)
{
const unsigned int vi0 = topological_vertex_numbering[periodic.cell[0]->face(periodic.face_idx[0])->vertex_index(v)];
// conditions. we used to forget to enforce the 2:1 level balance over
// periodic boundaries in artificial cells, which lead to the case where the
// coarser MG level did not provide the correct ghost layer. This test
-// explicitly looks into the ghost layer on an adaptive case for processor 0
+// explicitly lists all cells on all processors (processor 1 used to miss a
+// few cells in the implementation before January 2016).
#include "../tests.h"
#include <deal.II/distributed/tria.h>
-// This is C++:
-#include <fstream>
-#include <sstream>
-
template <int dim>
tria(MPI_COMM_WORLD, dealii::Triangulation<dim>::limit_level_difference_at_vertices,
parallel::distributed::Triangulation<dim>::construct_multigrid_hierarchy);
GridGenerator::subdivided_hyper_cube (tria, 3);
- // set periodic boundary conditions in x and z directions
+
+ // set periodic boundary conditions in all directions
for (typename Triangulation<dim>::cell_iterator cell=tria.begin();
cell != tria.end(); ++cell)
for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
GridTools::collect_periodic_faces(tria, 0+10, 1+10, 0, periodic_faces);
GridTools::collect_periodic_faces(tria, 2+10, 3+10, 1, periodic_faces);
tria.add_periodicity(periodic_faces);
- //tria.refine_global(3);
- // adaptively refine into the corner on proc 0
+ // adaptively refine into the lower left corner
for (unsigned int i=0; i<2; ++i)
{
for (typename Triangulation<dim>::active_cell_iterator cell = tria.begin_active();
for (typename Triangulation<dim>::cell_iterator cell=tria.begin();
cell != tria.end(); ++cell)
deallog << cell->id().to_string() << " " << cell->level_subdomain_id() << std::endl;
- if (1)
+
+ if (0)
{
std::ofstream grid_output (("out"+Utilities::to_string(myid)+".svg").c_str());
GridOut grid_out;