You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This means that FEEvaluation::read_dof_values_plain() applies constraints (here PBC), what is not what I expect from DoFAccessor::get_interpolated_dof_values.
I would say that replacing DoFs in the case of identity constraints is valid for FEEvaluation::read_dof_values() but not for FEEvaluation::read_dof_values_plain(). @kronbichler What do you think?
The automatic resolution of identity constrains during FEEvaluation::read_dof_values_plain() is often what one wants. But in the case of FEEvaluation::set_values_plain() this leads to unexpected behavior: zero velues at constrained entries.
In my opinion we should fix the particular case of periodic boundary conditions with simple identity constraints (no transformation matrix) in DoFHandler/DoFAccessor, as fewer DoFs in the vectors are better and I can't see any application wanting something different. It's an incompatible change, but I would believe that it's less work on the user's side than many other incompatible changes we keep introducing over the years.
The problem is that with the current code we would need to change several places to actually go to the plain dof values, not just the code you are using, as the check here
The following program:
gives the following output:
although what I have expected is:
This means that
FEEvaluation::read_dof_values_plain()
applies constraints (here PBC), what is not what I expect fromDoFAccessor::get_interpolated_dof_values
.The reason for this behavior is:
dealii/include/deal.II/matrix_free/dof_info.templates.h
Lines 158 to 169 in 37b1cca
with the result that
dealii/include/deal.II/matrix_free/dof_info.templates.h
Lines 250 to 253 in 37b1cca
is false.
I would say that replacing DoFs in the case of identity constraints is valid for
FEEvaluation::read_dof_values()
but not forFEEvaluation::read_dof_values_plain()
. @kronbichler What do you think?The automatic resolution of identity constrains during
FEEvaluation::read_dof_values_plain()
is often what one wants. But in the case ofFEEvaluation::set_values_plain()
this leads to unexpected behavior: zero velues at constrained entries.FYI @vovannikov @mschreter
The text was updated successfully, but these errors were encountered: