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

Reply via email to