Hi all !

I am trying to renumber the degrees of freedom globally using code like 
this:

   vector<unsigned int> new_number(dof_handler.n_dofs());
   for (unsigned int i = 0; i < dof_handler.n_dofs(); i++)
      new_number[i] = dof_handler.n_dofs() - i - 1; // simple example

   vector<unsigned int> local_new_number;
   for (unsigned int dof : info.locally_owned)
      local_new_number.push_back(new_number[dof]);

   dof_handler.renumber_dofs(local_new_number);

   info.locally_owned = dof_handler.locally_owned_dofs();
   DoFTools::extract_locally_relevant_dofs(dof_handler, 
info.locally_relevant);

with a dofhandler built upon a parallel::shared::Triangulation.

However, this seems to break the solution of TrilinosWrappers::SolverDirect:

   LA::MPI::Vector tmp_newton, tmp_rhs;

   tmp_newton.reinit(info.locally_owned, MPI_COMM_WORLD);
   tmp_rhs.reinit(info.locally_owned, MPI_COMM_WORLD);

   tmp_newton = newton_update;
   tmp_rhs = system_rhs;

   solver.solve(system_matrix, tmp_newton, tmp_rhs);

   cout << fmt::format("[{:d}] mat = {:e}", rank, system_matrix.l1_norm()) 
<< endl;
   cout << fmt::format("[{:d}] rhs = {:e}", rank, tmp_rhs.l2_norm()) << 
endl;
   cout << fmt::format("[{:d}] sol = {:e}", rank, tmp_newton.l2_norm()) << 
endl;

which returns 0 for for the solution of the linear system (the other two 
values are the same as without the renumbering step).

Also, I am not sure if I set up the vectors and matrices correct:
   solution.reinit(info.locally_owned, info.locally_relevant, 
MPI_COMM_WORLD); // ghosted for fe_values
   old_timestep_solution.reinit(info.locally_owned, info.locally_relevant, 
MPI_COMM_WORLD); // same as solution
   newton_update.reinit(info.locally_owned, info.locally_relevant, 
MPI_COMM_WORLD); // ghosted, bc of solution += newton_update

   system_rhs.reinit(info.locally_owned, MPI_COMM_WORLD); // ghosted / 
non-ghosted ?

   DynamicSparsityPattern dsp(info.locally_relevant);
   DoFTools::make_flux_sparsity_pattern(dof_handler, dsp, constraints, 
false); 

   SparsityTools::distribute_sparsity_pattern(dsp, 
dof_handler.n_locally_owned_dofs_per_processor(), MPI_COMM_WORLD, 
info.locally_relevant);

   system_matrix.reinit(info.locally_owned, info.locally_owned, dsp, 
MPI_COMM_WORLD);


I am a bit clueless on where to look for the error, so any suggestions are 
welcome.


Best regards

Daniel Jodlbauer

-- 
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.

Reply via email to