Dear deal.ii group users, I am debugging a program using the function *'get_generalized_support_points()' *( where has_support_points()=0, while has_generalized_support_points()=1*)*. My FE system is defined as *'FESystem<3> fe(FE_Nedelec<3>(0), 2);'*, therefore, each active cell has 12*2 dofs. So I would also expect 'get_generalized_support_points()' can return the support points with a vector of size 24 (of course the value will repeat once). However, it only has 12 valid Point<3> values, the other 12 are zero or some crazy number.
My question is, is this reasonable, or there is sth wrong with my understand on this. For reference, attached pls find a script and its output results. To simplify the problem, the mesh has only one cell . Best regards, Longying & Jochen -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/780295d4-435a-4bcd-a107-7ed23f80dea8n%40googlegroups.com.
#include <deal.II/grid/tria_accessor.h> #include <deal.II/grid/tria_iterator.h> #include <deal.II/grid/grid_tools.h> #include <deal.II/grid/grid_generator.h> #include <deal.II/distributed/tria.h> #include <deal.II/numerics/data_out.h> #include <deal.II/fe/fe_nedelec.h> #include <deal.II/fe/fe_system.h> #include <deal.II/base/conditional_ostream.h> #include <deal.II/base/mpi.h> #include <deal.II/distributed/grid_refinement.h> // For parallelization #include <string> #include <iostream> using namespace dealii; int main(int argc, char *argv[]) { // MPI Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1); MPI_Comm mpi_communicator (MPI_COMM_WORLD); ConditionalOStream pcout (std::cout,Utilities::MPI::this_mpi_process(mpi_communicator) == 0); const unsigned int this_mpi_process = Utilities::MPI::this_mpi_process(mpi_communicator); // make the grid parallel::distributed::Triangulation<3> triangulation( mpi_communicator, typename Triangulation<3>::MeshSmoothing ( Triangulation<3>::limit_level_difference_at_vertices )); DoFHandler<3> dof_handler(triangulation); std::vector<unsigned int> repetitions(3, 1); GridGenerator::subdivided_hyper_rectangle(triangulation, repetitions, Point<3>(0,0,0), Point<3>(100,100,100)); pcout << "\t\tNumber of active cells : " << triangulation.n_global_active_cells() << std::endl ; FESystem<3> fe(FE_Nedelec<3>(0), 2); const unsigned int dofs_per_cell = fe.dofs_per_cell; std::vector< Point< 3 > > g_support_points = fe.get_generalized_support_points(); unsigned int cell_counter = 1 ; for (auto &cell : triangulation.active_cell_iterators()){ for (unsigned int i=0; i<dofs_per_cell; ++i) { std::cout << " cell id: " << cell_counter <<" generalized support point " << i << " " << g_support_points[i] << std::endl; } ++ cell_counter; } } // Output resut: // Number of active cells : 1 // cell id: 1 support point 0 0 0.5 0 // cell id: 1 support point 1 1 0.5 0 // cell id: 1 support point 2 0.5 0 0 // cell id: 1 support point 3 0.5 1 0 // cell id: 1 support point 4 0 0.5 1 // cell id: 1 support point 5 1 0.5 1 // cell id: 1 support point 6 0.5 0 1 // cell id: 1 support point 7 0.5 1 1 // cell id: 1 support point 8 0 0 0.5 // cell id: 1 support point 9 1 0 0.5 // cell id: 1 support point 10 0 1 0.5 // cell id: 1 support point 11 1 1 0.5 // cell id: 1 support point 12 6.94991e-310 2.42092e-322 6.94992e-310 // cell id: 1 support point 13 4.64589e-310 4.64589e-310 4.64589e-310 // cell id: 1 support point 14 2.37152e-322 2.42092e-322 3.95253e-323 // cell id: 1 support point 15 4.64589e-310 0 -5.31401e+303 // cell id: 1 support point 16 4.94066e-324 2.42092e-322 6.94992e-310 // cell id: 1 support point 17 4.64589e-310 2.122e-314 0 // cell id: 1 support point 18 2.37152e-322 2.42092e-322 3.95253e-323 // cell id: 1 support point 19 4.64589e-310 0 -5.31401e+303 // cell id: 1 support point 20 1.4822e-323 9.53547e-322 4.64589e-310 // cell id: 1 support point 21 4.64589e-310 0 0 // cell id: 1 support point 22 0 4.64589e-310 4.64589e-310 // cell id: 1 support point 23 0 0 0